35static unsigned int SOUND_FREQUENCIES[] = {
36 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
38 0, 0, 0, 268, 284, 301, 318, 337, 358, 379,
39 401, 425, 451, 477, 506, 536, 568, 602, 637, 675,
40 716, 758, 803, 851, 902, 955, 1012, 1072, 1136, 1204,
41 1275, 1351, 1432, 1517, 1607, 1703, 1804, 1911, 2026, 2145,
42 2273, 2408, 2551, 2703, 2864, 3034, 3215, 3406, 3608, 3823,
43 4050, 4291, 4547, 4817, 5103, 5407, 5728, 6069, 6430, 6812,
44 7217, 7647, 8101, 8583, 9094, 9634, 10207, 10814, 11457, 12139,
45 12860, 13625, 14435, 15294, 16203, 17167, 18188, 19269, 20415, 21629,
46 22915, 24278, 25721, 27251, 28871, 30588, 32407, 34334, 36376, 38539,
47 40830, 43258, 45830, 48556, 51443, 54502, 57743, 61176, 64814
52 cpu_call( _environment,
"SIDZSTARTUP" );
67 deploy( sidvars, src_hw_sidz_vars_asm );
68 deploy( sidstartup, src_hw_sidz_startup_asm );
70 if ( _channels & 0x01 ) {
73 if ( _channels & 0x02 ) {
76 if ( _channels & 0x04 ) {
84 deploy( sidvars, src_hw_sidz_vars_asm );
85 deploy( sidstartup, src_hw_sidz_startup_asm );
87 outline1(
"LD C, #%2.2x", ( _volume & 0x0f ) );
92#define WAVEFORM_TRIANGLE 0x10
93#define WAVEFORM_SAW 0x20
94#define WAVEFORM_RECTANGLE 0x40
95#define WAVEFORM_NOISE 0x80
97#define PROGRAM_FREQUENCY( c, f ) \
98 outline1("LD C, $%2.2x", ( ( ( f * 0xffff ) / 4000 ) & 0xff ) ); \
99 outline1("LD B, $%2.2x", ( ( ( ( f * 0xffff ) / 4000 ) >> 8 ) & 0xff ) ); \
100 if ( ( c & 0x01 ) ) \
101 outline0("CALL SIDZPROGFREQ0" ); \
102 if ( ( c & 0x02 ) ) \
103 outline0("CALL SIDZPROGFREQ1" ); \
104 if ( ( c & 0x04 ) ) \
105 outline0("CALL SIDZPROGFREQ2" );
107#define PROGRAM_FREQUENCY_V( c, f ) \
108 outline1("LD A, (%s)", f ); \
109 outline0("LD C, A" ); \
110 outline1("LD A, (%s)", address_displacement(_environment, f, "1") ); \
111 outline0("LD B, A" ); \
113 outline0("LD A, $7"); \
115 outline1("LD A, (%s)", c ); \
117 outline0("CALL SIDZFREQ" );
119#define PROGRAM_FREQUENCY_SV( c, f ) \
120 outline1("LD C, $%2.2x", ( ( ( f * 0xffff ) / 4000 ) & 0xff ) ); \
121 outline1("LD B, $%2.2x", ( ( ( ( f * 0xffff ) / 4000 ) >> 8 ) & 0xff ) ); \
122 outline1("LD A, (%s)", ( c == NULL ? "$7" : c ) ); \
123 outline0("CALL SIDZFREQ2" );
125#define PROGRAM_PITCH( c, f ) \
126 outline1("LD BC, $%4.4x", ( f & 0xffff ) ); \
127 if ( ( c & 0x01 ) ) \
128 outline0("CALL SIDZPROGFREQ0" ); \
129 if ( ( c & 0x02 ) ) \
130 outline0("CALL SIDZPROGFREQ1" ); \
131 if ( ( c & 0x04 ) ) \
132 outline0("CALL SIDZPROGFREQ2" );
134#define PROGRAM_PITCH_V( c, f ) \
135 outline1("LD HL, (%s)", f ); \
136 outline0("LD BC, HL" ); \
138 outline0("LD A, $7"); \
140 outline1("LD A, (%s)", c ); \
142 outline0("CALL SIDZPROGFREQ" );
144#define PROGRAM_PITCH_SV( c, f ) \
145 outline1("LD BC, $%4.4x", ( f & 0xffff ) ); \
147 outline0("LD A, $7"); \
149 outline1("LD A, (%s)", c ); \
151 outline0("CALL SIDZPROGFREQ" );
153#define PROGRAM_PULSE( c, p ) \
154 outline1("LD C, $%2.2x", ( p & 0xff ) ); \
155 outline1("LD B, $%2.2x", ( ( p >> 8 ) & 0xff ) ); \
156 if ( ( c & 0x01 ) ) \
157 outline0("CALL SIDZPROGPULSE0" ); \
158 if ( ( c & 0x02 ) ) \
159 outline0("CALL SIDZPROGPULSE1" ); \
160 if ( ( c & 0x04 ) ) \
161 outline0("CALL SIDZPROGPULSE2" );
163#define PROGRAM_PULSE_V( c, p ) \
164 outline1("LD A, (%s)", address_displacement(_environment, p, "1") ); \
165 outline0("LD B, A" ); \
166 outline1("LD A, (%s)", p ); \
167 outline0("LD C, A" ); \
169 outline0("LD A, $7"); \
171 outline1("LD A, (%s)", c ); \
173 outline0("CALL SIDZPROGPULSE" );
175#define PROGRAM_PULSE_SV( c, p ) \
176 outline1("LD C, $%2.2x", ( p & 0xff ) ); \
177 outline1("LD B, $%2.2x", ( ( p >> 8 ) & 0xff ) ); \
179 outline0("LD A, $7"); \
181 outline1("LD A, (%s)", c ); \
183 outline0("CALL SIDZPROGPULSE" );
185#define PROGRAM_WAVEFORM( c, w ) \
186 outline1("LD C, $%2.2x", w ); \
187 if ( ( c & 0x01 ) ) \
188 outline0("CALL SIDZPROGCTR0" ); \
189 if ( ( c & 0x02 ) ) \
190 outline0("CALL SIDZPROGCTR1" ); \
191 if ( ( c & 0x04 ) ) \
192 outline0("CALL SIDZPROGCTR2" );
194#define PROGRAM_WAVEFORM_V( c, w, p ) \
195 outline1("LD C, $%2.2x", w ); \
197 outline0("LD A, $7"); \
199 outline1("LD A, (%s)", c ); \
201 outline0("CALL SIDZPROGCTR" );
203#define PROGRAM_WAVEFORM_VV( c, w, p ) \
204 outline1("LD A, (%s)", w ); \
205 outline0("LD C, A" ); \
207 outline0("LD A, $7"); \
209 outline1("LD A, (%s)", c ); \
211 outline0("CALL SIDZPROGCTR" );
213#define PROGRAM_WAVEFORM_SV( c, w ) \
214 outline1("LD C, $%2.2x", w ); \
216 outline0("LD A, $7"); \
218 outline1("LD A, (%s)", c ); \
220 outline0("CALL SIDZPROGCTR" );
222#define PROGRAM_ATTACK_DECAY( c, a, d ) \
223 outline1("LD C, $%2.2x", ( a & 0x0f ) ); \
224 outline1("LD B, $%2.2x", ( d & 0x0f ) ); \
225 if ( ( c & 0x01 ) ) \
226 outline0("CALL SIDZPROGAD0" ); \
227 if ( ( c & 0x02 ) ) \
228 outline0("CALL SIDZPROGAD1" ); \
229 if ( ( c & 0x04 ) ) \
230 outline0("CALL SIDZPROGAD2" );
232#define PROGRAM_ATTACK_DECAY_V( c, a, d ) \
233 outline1("LD A, (%s)", d ); \
234 outline0("LD B, A" ); \
235 outline1("LD A, (%s)", a ); \
236 outline0("LD C, A" ); \
238 outline0("LD A, $7"); \
240 outline1("LD A, (%s)", c ); \
242 outline0("CALL SIDZPROGAD" );
244#define PROGRAM_ATTACK_DECAY_SV( c, a, d ) \
245 outline1("LD C, $%2.2x", ( a & 0x0f ) ); \
246 outline1("LD B, $%2.2x", ( d & 0x0f ) ); \
248 outline0("LD A, $7"); \
250 outline1("LD A, (%s)", c ); \
252 outline0("CALL SIDZPROGAD" );
254#define PROGRAM_SUSTAIN_RELEASE( c, s, r ) \
255 outline1("LD C, $%2.2x", ( s & 0x0f ) ); \
256 outline1("LD B, $%2.2x", ( r & 0x0f ) ); \
257 if ( ( c & 0x01 ) ) \
258 outline0("CALL SIDZPROGSR0" ); \
259 if ( ( c & 0x02 ) ) \
260 outline0("CALL SIDZPROGSR1" ); \
261 if ( ( c & 0x04 ) ) \
262 outline0("CALL SIDZPROGSR2" );
264#define PROGRAM_SUSTAIN_RELEASE_V( c, s, r ) \
265 outline1("LD A, (%s)", r ); \
266 outline0("LD B, A" ); \
267 outline1("LD A, (%s)", s ); \
268 outline0("LD C, A" ); \
270 outline0("LD A, $7"); \
272 outline1("LD A, (%s)", c ); \
274 outline0("CALL SIDZPROGSR" );
276#define PROGRAM_SUSTAIN_RELEASE_SV( c, s, r ) \
277 outline1("LD C, $%2.2x", ( s & 0x0f ) ); \
278 outline1("LD B, $%2.2x", ( r & 0x0f ) ); \
280 outline0("LD A, $7"); \
282 outline1("LD A, (%s)", c ); \
284 outline0("CALL SIDZPROGSR" );
286#define STOP_FREQUENCY( c ) \
287 if ( ( c & 0x01 ) ) \
288 outline0("CALL SIDZSTOP0" ); \
289 if ( ( c & 0x02 ) ) \
290 outline0("CALL SIDZSTOP1" ); \
291 if ( ( c & 0x04 ) ) \
292 outline0("CALL SIDZSTOP2" );
294#define STOP_FREQUENCY_V( c ) \
296 outline0("LD A, $7"); \
298 outline1("LD A, (%s)", c ); \
300 outline0("CALL SIDZSTOP" );
302#define STOP_FREQUENCY_SV( c ) \
304 outline0("LD A, $7"); \
306 outline1("LD A, (%s)", c ); \
308 outline0("CALL SIDZSTOP" );
310#define PROGRAM_DURATION( c, d ) \
311 outline1("LD C, $%2.2x", ( d & 0xff ) ); \
312 if ( ( c & 0x01 ) ) \
313 outline0("CALL SIDZSETDURATION0" ); \
314 if ( ( c & 0x02 ) ) \
315 outline0("CALL SIDZSETDURATION1" ); \
316 if ( ( c & 0x04 ) ) \
317 outline0("CALL SIDZSETDURATION2" ); \
319#define WAIT_DURATION( c ) \
320 if ( ( c & 0x01 ) ) \
321 outline0("CALL SIDZWAITDURATION0" ); \
322 if ( ( c & 0x02 ) ) \
323 outline0("CALL SIDZWAITDURATION1" ); \
324 if ( ( c & 0x04 ) ) \
325 outline0("CALL SIDZWAITDURATION2" ); \
346 deploy( sidvars, src_hw_sidz_vars_asm );
347 deploy( sidstartup, src_hw_sidz_startup_asm );
538 deploy( sidvars, src_hw_sidz_vars_asm );
539 deploy( sidstartup, src_hw_sidz_startup_asm );
547 deploy( sidvars, src_hw_sidz_vars_asm );
548 deploy( sidstartup, src_hw_sidz_startup_asm );
556 sidz_set_pitch( _environment, _channels, SOUND_FREQUENCIES[_note] );
562 deploy( sidvars, src_hw_sidz_vars_asm );
563 deploy( sidstartup, src_hw_sidz_startup_asm );
571 deploy( sidvars, src_hw_sidz_vars_asm );
572 deploy( sidstartup, src_hw_sidz_startup_asm );
585 deploy( sidvars, src_hw_sidz_vars_asm );
586 deploy( sidstartup, src_hw_sidz_startup_asm );
600 deploy( sidvars, src_hw_sidz_vars_asm );
601 deploy( sidstartup, src_hw_sidz_startup_asm );
610 deploy( sidvars, src_hw_sidz_vars_asm );
611 deploy( sidstartup, src_hw_sidz_startup_asm );
812 deploy( sidvars, src_hw_sidz_vars_asm );
813 deploy( sidstartup, src_hw_sidz_startup_asm );
816 outline0(
"LD B, A" ); \
817 outline1(
"LD A, (%s)", _frequency );
831 deploy( sidvars, src_hw_sidz_vars_asm );
832 deploy( sidstartup, src_hw_sidz_startup_asm );
835 outline0(
"LD BC, HL" ); \
848 deploy( sidvars, src_hw_sidz_vars_asm );
849 deploy( sidstartup, src_hw_sidz_startup_asm );
852 outline0(
"LD B, A" ); \
853 outline0(
"LD HL, SIDZFREQTABLE");
877 deploy( sidvars, src_hw_sidz_vars_asm );
878 deploy( sidstartup, src_hw_sidz_startup_asm );
891 deploy( sidvars, src_hw_sidz_vars_asm );
892 deploy( sidstartup, src_hw_sidz_startup_asm );
893 deploy( music, src_hw_sidz_music_asm );
897 outline0(
"LD (SIDZTMPPTR_BACKUP), HL");
898 outline1(
"LD A, $%2.2x", ( _size>>8 ) & 0xff);
899 outline0(
"LD (SIDZBLOCKS_BACKUP), A");
900 outline1(
"LD A, $%2.2x", _size & 0xff );
901 outline0(
"LA (SIDZLASTBLOCK_BACKUP), A");
911 deploy( sidvars, src_hw_sidz_vars_asm );
912 deploy( sidstartup, src_hw_sidz_startup_asm );
920 deploy( sidvars, src_hw_sidz_vars_asm );
921 deploy( sidstartup, src_hw_sidz_startup_asm );
929 deploy( sidvars, src_hw_sidz_vars_asm );
930 deploy( sidstartup, src_hw_sidz_startup_asm );
950 deploy( sidvars, src_hw_sidz_vars_asm );
951 deploy( sidstartup, src_hw_sidz_startup_asm );
void cpu_call(Environment *_environment, char *_label)
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
#define WAVEFORM_RECTANGLE
#define WAVEFORM_TRIANGLE
#define PROGRAM_ATTACK_DECAY_V(c, a, d)
void sidz_set_volume_semi_var(Environment *_environment, char *_channel, int _volume)
void sidz_wait_duration_vars(Environment *_environment, char *_channels)
#define PROGRAM_SUSTAIN_RELEASE_V(c, s, r)
#define PROGRAM_DURATION(c, d)
void sidz_set_pitch(Environment *_environment, int _channels, int _pitch)
#define PROGRAM_FREQUENCY(c, f)
#define PROGRAM_WAVEFORM_VV(c, w, p)
void sidz_set_program(Environment *_environment, int _channels, int _program)
void sidz_set_note_vars(Environment *_environment, char *_channels, char *_note)
void sidz_set_frequency(Environment *_environment, int _channels, int _frequency)
void sidz_start(Environment *_environment, int _channels)
void sidz_set_parameter(Environment *_environment, int _channels, int _parameter, int _value)
#define PROGRAM_PULSE_V(c, p)
void sidz_stop(Environment *_environment, int _channels)
void sidz_player_init(Environment *_environment, int _init_address)
#define STOP_FREQUENCY(c)
#define PROGRAM_ATTACK_DECAY(c, a, d)
void sidz_set_note(Environment *_environment, int _channels, int _note)
#define PROGRAM_WAVEFORM(c, w)
void sidz_music(Environment *_environment, char *_music, int _size, int _loop)
#define PROGRAM_SUSTAIN_RELEASE_SV(c, s, r)
void sidz_set_pitch_vars(Environment *_environment, char *_channels, char *_pitch)
#define PROGRAM_SUSTAIN_RELEASE(c, s, r)
void sidz_stop_vars(Environment *_environment, char *_channels)
void sidz_initialization(Environment *_environment)
void sidz_set_volume(Environment *_environment, int _channels, int _volume)
void sidz_set_duration(Environment *_environment, int _channels, int _duration)
void sidz_wait_duration(Environment *_environment, int _channels)
#define PROGRAM_PULSE_SV(c, p)
void sidz_set_duration_vars(Environment *_environment, char *_channels, char *_duration)
#define PROGRAM_PITCH(c, f)
#define PROGRAM_WAVEFORM_SV(c, w)
void sidz_finalization(Environment *_environment)
#define PROGRAM_PULSE(c, p)
void sidz_set_frequency_vars(Environment *_environment, char *_channels, char *_frequency)
void sidz_set_volume_vars(Environment *_environment, char *_channels, char *_volume)
void sidz_start_var(Environment *_environment, char *_channels)
void sidz_set_program_semi_var(Environment *_environment, char *_channels, int _program)
#define PROGRAM_ATTACK_DECAY_SV(c, a, d)
void sidz_wave(Environment *_environment, char *_voice, char *_bits, char *_pulse)
void sidz_player_play(Environment *_environment, int _play_address)
void sidz_attack_decay_sustain_release(Environment *_environment, char *_voice, char *_attack, char *_decay, char *_sustain, char *_release)
#define IMF_INSTRUMENT_LEAD_8_BASS_LEAD
#define IMF_INSTRUMENT_MARIMBA
#define IMF_INSTRUMENT_LEAD_6_VOICE
#define IMF_INSTRUMENT_DRAWBAR_ORGAN
#define IMF_INSTRUMENT_FRETLESS_BASS
#define IMF_INSTRUMENT_PAD_1_NEW_AGE
#define IMF_INSTRUMENT_VIOLIN
#define IMF_INSTRUMENT_SYNTH_BASS_1
#define IMF_INSTRUMENT_MELODIC_TOM
#define IMF_INSTRUMENT_REVERSE_CYMBAL
#define IMF_INSTRUMENT_ELECTRIC_BASS_FINGER
#define IMF_INSTRUMENT_HARMONICA
#define IMF_INSTRUMENT_BLOWN_BOTTLE
#define IMF_INSTRUMENT_PAD_3_POLYSYNTH
#define IMF_INSTRUMENT_FX_8_SCI_FI
#define IMF_INSTRUMENT_RECORDER
#define IMF_INSTRUMENT_FX_6_GOBLINS
#define IMF_INSTRUMENT_FX_1_RAIN
#define IMF_INSTRUMENT_SYNTH_VOICE
#define IMF_INSTRUMENT_TENOR_SAX
#define IMF_INSTRUMENT_PICCOLO
#define IMF_INSTRUMENT_LEAD_7_FIFTHS
#define IMF_INSTRUMENT_SLAP_BASS_1
#define IMF_INSTRUMENT_MUSIC_BOX
#define IMF_INSTRUMENT_SOPRANO_SAX
#define IMF_INSTRUMENT_TRUMPET
#define IMF_INSTRUMENT_BIRD_TWEET
#define IMF_INSTRUMENT_PAD_8_SWEEP
#define IMF_INSTRUMENT_CHURCH_ORGAN
#define IMF_INSTRUMENT_HELICOPTER
#define IMF_INSTRUMENT_BRIGHT_ACOUSTIC_PIANO
#define IMF_INSTRUMENT_CELESTA
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_NYLON
#define IMF_INSTRUMENT_GLOCKENSPIEL
#define IMF_INSTRUMENT_ORCHESTRAL_HARP
#define IMF_INSTRUMENT_BREATH_NOISE
#define IMF_INSTRUMENT_BAG_PIPE
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_JAZZ
#define IMF_INSTRUMENT_ELECTRIC_GRAND_PIANO
#define IMF_INSTRUMENT_SITAR
#define IMF_INSTRUMENT_APPLAUSE
#define IMF_INSTRUMENT_WHISTLE
#define IMF_INSTRUMENT_PERCUSSIVE_ORGAN
#define IMF_INSTRUMENT_HONKY_TONK_PIANO
#define IMF_INSTRUMENT_CHOIR_AAHS
#define IMF_INSTRUMENT_SHANAI
#define IMF_INSTRUMENT_CELLO
#define IMF_INSTRUMENT_FX_3_CRYSTAL
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_MUTED
#define IMF_INSTRUMENT_HARPSICHORD
#define IMF_INSTRUMENT_BRASS_SECTION
#define IMF_INSTRUMENT_ELECTRIC_BASS_PICK
#define IMF_INSTRUMENT_FX_5_BRIGHTNESS
#define IMF_INSTRUMENT_FLUTE
struct _Environment Environment
Structure of compilation environment.
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_CLEAN
#define IMF_INSTRUMENT_ACOUSTIC_BASS
#define IMF_INSTRUMENT_GUITAR_FRET_NOISE
#define IMF_INSTRUMENT_SYNTHSTRINGS_2
#define IMF_INSTRUMENT_PAD_4_CHOIR
#define IMF_INSTRUMENT_LEAD_2_SAWTOOTH
#define IMF_INSTRUMENT_DULCIMER
#define IMF_INSTRUMENT_KOTO
#define IMF_INSTRUMENT_TUBA
#define IMF_INSTRUMENT_GUITAR_HARMONICS
#define IMF_INSTRUMENT_CLAVI
#define IMF_INSTRUMENT_BANJO
#define IMF_INSTRUMENT_SYNTHBRASS_2
#define IMF_INSTRUMENT_LEAD_4_CHIFF
#define IMF_INSTRUMENT_VOICE_OOHS
#define IMF_INSTRUMENT_TANGO_ACCORDION
#define IMF_INSTRUMENT_FX_7_ECHOES
#define IMF_INSTRUMENT_PAD_6_METALLIC
#define IMF_INSTRUMENT_PAD_5_BOWED
#define IMF_INSTRUMENT_GUNSHOT
#define IMF_INSTRUMENT_REED_ORGAN
#define IMF_INSTRUMENT_ORCHESTRA_HIT
#define IMF_INSTRUMENT_SYNTH_DRUM
#define IMF_INSTRUMENT_SEASHORE
#define IMF_INSTRUMENT_OCARINA
#define IMF_INSTRUMENT_TELEPHONE_RING
#define IMF_INSTRUMENT_FX_2_SOUNDTRACK
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_STEEL
#define IMF_INSTRUMENT_SYNTHSTRINGS_1
#define IMF_INSTRUMENT_MUTED_TRUMPET
#define IMF_INSTRUMENT_PAN_FLUTE
#define IMF_INSTRUMENT_TINKLE_BELL
#define IMF_INSTRUMENT_VIBRAPHONE
#define IMF_INSTRUMENT_KALIMBA
#define IMF_INSTRUMENT_FIDDLE
#define IMF_INSTRUMENT_PAD_7_HALO
#define IMF_INSTRUMENT_TUBULAR_BELLS
#define IMF_INSTRUMENT_LEAD_1_SQUARE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_1
#define IMF_INSTRUMENT_DISTORTION_GUITAR
#define IMF_INSTRUMENT_PAD_2_WARM
#define IMF_INSTRUMENT_ACCORDION
#define IMF_INSTRUMENT_SLAP_BASS_2
#define IMF_INSTRUMENT_LEAD_5_CHARANG
#define IMF_INSTRUMENT_OBOE
#define IMF_INSTRUMENT_STEEL_DRUMS
#define IMF_INSTRUMENT_BASSOON
#define IMF_INSTRUMENT_TIMPANI
#define IMF_INSTRUMENT_ROCK_ORGAN
#define IMF_INSTRUMENT_SHAMISEN
#define IMF_INSTRUMENT_CLARINET
#define IMF_INSTRUMENT_ACOUSTIC_GRAND_PIANO
#define IMF_INSTRUMENT_ALTO_SAX
#define IMF_INSTRUMENT_EXPLOSION
#define IMF_INSTRUMENT_PIZZICATO_STRINGS
#define IMF_INSTRUMENT_WOODBLOCK
#define IMF_INSTRUMENT_XYLOPHONE
#define IMF_INSTRUMENT_AGOGO
#define IMF_INSTRUMENT_SYNTHBRASS_1
#define IMF_INSTRUMENT_LEAD_3_CALLIOPE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_2
#define IMF_INSTRUMENT_SYNTH_BASS_2
#define IMF_INSTRUMENT_ELECTRIC_PIANO2
#define IMF_INSTRUMENT_FRENCH_HORN
#define IMF_INSTRUMENT_TREMOLO_STRINGS
#define IMF_INSTRUMENT_FX_4_ATMOSPHERE
#define IMF_INSTRUMENT_ENGLISH_HORN
#define IMF_INSTRUMENT_BARITONE_SAX
#define IMF_INSTRUMENT_SHAKUHACHI
#define IMF_INSTRUMENT_CONTRABASS
#define IMF_INSTRUMENT_VIOLA
#define IMF_INSTRUMENT_TROMBONE
#define IMF_INSTRUMENT_OVERDRIVEN_GUITAR
#define IMF_INSTRUMENT_ELECTRIC_PIANO1
#define IMF_INSTRUMENT_TAIKO_DRUM