Built SDL2_image and _mixer static
This commit is contained in:
163
libsdl2_mixer/timidity/timidity.h
Normal file
163
libsdl2_mixer/timidity/timidity.h
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
|
||||
TiMidity -- Experimental MIDI to WAVE converter
|
||||
Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the Perl Artistic License, available in COPYING.
|
||||
*/
|
||||
|
||||
#ifndef TIMIDITY_H
|
||||
#define TIMIDITY_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef Sint16 sample_t;
|
||||
typedef Sint32 final_volume_t;
|
||||
|
||||
#define VIBRATO_SAMPLE_INCREMENTS 32
|
||||
|
||||
/* Maximum polyphony. */
|
||||
/* #define MAX_VOICES 48 */
|
||||
#define MAX_VOICES 256
|
||||
#define MAXCHAN 16
|
||||
/* #define MAXCHAN 64 */
|
||||
#define MAXBANK 128
|
||||
|
||||
typedef struct {
|
||||
Sint32
|
||||
loop_start, loop_end, data_length,
|
||||
sample_rate, low_freq, high_freq, root_freq;
|
||||
Sint32
|
||||
envelope_rate[6], envelope_offset[6];
|
||||
float
|
||||
volume;
|
||||
sample_t *data;
|
||||
Sint32
|
||||
tremolo_sweep_increment, tremolo_phase_increment,
|
||||
vibrato_sweep_increment, vibrato_control_ratio;
|
||||
Uint8
|
||||
tremolo_depth, vibrato_depth,
|
||||
modes;
|
||||
Sint8
|
||||
panning, note_to_use;
|
||||
} Sample;
|
||||
|
||||
typedef struct {
|
||||
int
|
||||
bank, program, volume, sustain, panning, pitchbend, expression,
|
||||
mono, /* one note only on this channel -- not implemented yet */
|
||||
pitchsens;
|
||||
/* chorus, reverb... Coming soon to a 300-MHz, eight-way superscalar
|
||||
processor near you */
|
||||
float
|
||||
pitchfactor; /* precomputed pitch bend factor to save some fdiv's */
|
||||
} Channel;
|
||||
|
||||
typedef struct {
|
||||
Uint8
|
||||
status, channel, note, velocity;
|
||||
Sample *sample;
|
||||
Sint32
|
||||
orig_frequency, frequency,
|
||||
sample_offset, sample_increment,
|
||||
envelope_volume, envelope_target, envelope_increment,
|
||||
tremolo_sweep, tremolo_sweep_position,
|
||||
tremolo_phase, tremolo_phase_increment,
|
||||
vibrato_sweep, vibrato_sweep_position;
|
||||
|
||||
final_volume_t left_mix, right_mix;
|
||||
|
||||
float
|
||||
left_amp, right_amp, tremolo_volume;
|
||||
Sint32
|
||||
vibrato_sample_increment[VIBRATO_SAMPLE_INCREMENTS];
|
||||
int
|
||||
vibrato_phase, vibrato_control_ratio, vibrato_control_counter,
|
||||
envelope_stage, control_counter, panning, panned;
|
||||
|
||||
} Voice;
|
||||
|
||||
typedef struct {
|
||||
int samples;
|
||||
Sample *sample;
|
||||
} Instrument;
|
||||
|
||||
/* Shared data */
|
||||
typedef struct {
|
||||
char *name;
|
||||
int note, amp, pan, strip_loop, strip_envelope, strip_tail;
|
||||
} ToneBankElement;
|
||||
|
||||
typedef struct {
|
||||
ToneBankElement *tone;
|
||||
Instrument *instrument[128];
|
||||
} ToneBank;
|
||||
|
||||
typedef struct {
|
||||
Sint32 time;
|
||||
Uint8 channel, type, a, b;
|
||||
} MidiEvent;
|
||||
|
||||
typedef struct {
|
||||
MidiEvent event;
|
||||
void *next;
|
||||
} MidiEventList;
|
||||
|
||||
typedef struct {
|
||||
int playing;
|
||||
SDL_RWops *rw;
|
||||
Sint32 rate;
|
||||
Sint32 encoding;
|
||||
float master_volume;
|
||||
Sint32 amplification;
|
||||
ToneBank *tonebank[MAXBANK];
|
||||
ToneBank *drumset[MAXBANK];
|
||||
Instrument *default_instrument;
|
||||
int default_program;
|
||||
void (*write)(void *dp, Sint32 *lp, Sint32 c);
|
||||
int buffer_size;
|
||||
sample_t *resample_buffer;
|
||||
Sint32 *common_buffer;
|
||||
Sint32 *buffer_pointer;
|
||||
/* These would both fit into 32 bits, but they are often added in
|
||||
large multiples, so it's simpler to have two roomy ints */
|
||||
/* samples per MIDI delta-t */
|
||||
Sint32 sample_increment;
|
||||
Sint32 sample_correction;
|
||||
Channel channel[MAXCHAN];
|
||||
Voice voice[MAX_VOICES];
|
||||
int voices;
|
||||
Sint32 drumchannels;
|
||||
Sint32 buffered_count;
|
||||
Sint32 control_ratio;
|
||||
Sint32 lost_notes;
|
||||
Sint32 cut_notes;
|
||||
Sint32 samples;
|
||||
MidiEvent *events;
|
||||
MidiEvent *current_event;
|
||||
MidiEventList *evlist;
|
||||
Sint32 current_sample;
|
||||
Sint32 event_count;
|
||||
Sint32 at;
|
||||
Sint32 groomed_event_count;
|
||||
} MidiSong;
|
||||
|
||||
/* Some of these are not defined in timidity.c but are here for convenience */
|
||||
|
||||
extern int Timidity_Init(void);
|
||||
extern int Timidity_Init_NoConfig(void);
|
||||
extern void Timidity_SetVolume(MidiSong *song, int volume);
|
||||
extern int Timidity_PlaySome(MidiSong *song, void *stream, Sint32 len);
|
||||
extern MidiSong *Timidity_LoadSong(SDL_RWops *rw, SDL_AudioSpec *audio);
|
||||
extern void Timidity_Start(MidiSong *song);
|
||||
extern void Timidity_Seek(MidiSong *song, Uint32 ms);
|
||||
extern Uint32 Timidity_GetSongLength(MidiSong *song); /* returns millseconds */
|
||||
extern void Timidity_FreeSong(MidiSong *song);
|
||||
extern void Timidity_Exit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* TIMIDITY_H */
|
Reference in New Issue
Block a user