ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
pokey.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSì COM'è", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31#if defined(__atari__) || defined(__atarixl__)
32
33#include "../ugbc.h"
34
35static unsigned int SOUND_FREQUENCIES[] = {
36 // 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
37 // 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
38 // 256, 256, 256
39 256, 256, 256, 256, 256, 256, 256,
40 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
41 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
42 256, 256, 256, 256, 256, 256, 256, 256, 256, 243,
43 230, 217, 204, 193, 182, 172, 162, 153, 144, 136,
44 128, 121, 114, 108, 102, 96, 91, 85, 81, 76,
45 72, 68, 64, 60, 57, 53, 50, 47, 45, 42,
46 40, 37, 35, 33, 31, 30, 28, 26, 25, 23,
47 22, 21, 19, 18, 17, 16, 15, 14, 13, 12,
48 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
49 1
50};
51
52void pokey_initialization( Environment * _environment ) {
53
54 outline0("JSR POKEYSTARTUP");
55
56}
57
58void pokey_finalization( Environment * _environment ) {
59
60 if ( ! _environment->deployed.pokeystartup ) {
61 cpu_label( _environment, "POKEYSTARTUP" );
62 outline0( "RTS" );
63 }
64
65}
66
67void pokey_start( Environment * _environment, int _channels ) {
68
69 deploy( pokeyvars, src_hw_pokey_vars_asm );
70 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
71
72 if ( _channels & 0x01 ) {
73 outline0("JSR POKEYSTART0");
74 }
75 if ( _channels & 0x02 ) {
76 outline0("JSR POKEYSTART1");
77 }
78 if ( _channels & 0x04 ) {
79 outline0("JSR POKEYSTART2");
80 }
81 if ( _channels & 0x08 ) {
82 outline0("JSR POKEYSTART3");
83 }
84
85}
86
87void pokey_set_volume( Environment * _environment, int _channels, int _volume ) {
88
89 deploy( pokeyvars, src_hw_pokey_vars_asm );
90 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
91
92 // The lower 4 bits of the audio control register contain a 4-bit number
93 // that specifies the volume of the sound. A zero in these bits means
94 // zero volume, and a 15 means as loud as possible. The sum of the volumes
95 // of the four channels should not exceed 32, since this forces
96 // overmodulation of the audio output. The sound produced tends to actually
97 // lose volume and assume a buzzing quality.
98
99 outline1("LDA #$%2.2x", _channels );
100 outline1("LDX #$%2.2x", ( _volume >> 5 ) & 0x07 );
101 outline0("JSR POKEYSETVOL");
102
103}
104
105#define PROGRAM_FREQUENCY( c, f ) \
106 outline1("LDX #$%2.2x", ( f ) & 0xff ); \
107 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
108 if ( ( c & 0x01 ) ) \
109 outline0("JSR POKEYPROGFREQ0" ); \
110 if ( ( c & 0x02 ) ) \
111 outline0("JSR POKEYPROGFREQ1" ); \
112 if ( ( c & 0x04 ) ) \
113 outline0("JSR POKEYPROGFREQ2" ); \
114 if ( ( c & 0x08 ) ) \
115 outline0("JSR POKEYPROGFREQ3" );
116
117#define PROGRAM_FREQUENCY_V( c, f ) \
118 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
119 outline1("LDX %s", f ); \
120 outline1("LDY %s", address_displacement(_environment, f, "1") ); \
121 outline0("JSR POKEYFREQ" );
122
123#define PROGRAM_FREQUENCY_SV( c, f ) \
124 outline1("LDX #$%2.2x", ( f ) & 0xff ) ); \
125 outline1("LDY #$%2.2x", ( ( f ) >> 8 ) & 0xff ); \
126 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
127 outline0("JSR POKEYFREQ" );
128
129#define PROGRAM_PITCH( c, f ) \
130 outline1("LDX #$%2.2x", ( f & 0xff ) ); \
131 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
132 if ( ( c & 0x01 ) ) \
133 outline0("JSR POKEYPROGFREQ0" ); \
134 if ( ( c & 0x02 ) ) \
135 outline0("JSR POKEYPROGFREQ1" ); \
136 if ( ( c & 0x04 ) ) \
137 outline0("JSR POKEYPROGFREQ2" ); \
138 if ( ( c & 0x08 ) ) \
139 outline0("JSR POKEYPROGFREQ3" );
140
141#define PROGRAM_DURATION( c, d ) \
142 outline1("LDX #$%2.2x", ( d & 0xff ) ); \
143 if ( ( c & 0x01 ) ) \
144 outline0("JSR POKEYSETDURATION0" ); \
145 if ( ( c & 0x02 ) ) \
146 outline0("JSR POKEYSETDURATION1" ); \
147 if ( ( c & 0x04 ) ) \
148 outline0("JSR POKEYSETDURATION2" ); \
149 if ( ( c & 0x08 ) ) \
150 outline0("JSR POKEYSETDURATION3" );
151
152#define WAIT_DURATION( c ) \
153 if ( ( c & 0x01 ) ) \
154 outline0("JSR POKEYWAITDURATION0" ); \
155 if ( ( c & 0x02 ) ) \
156 outline0("JSR POKEYWAITDURATION1" ); \
157 if ( ( c & 0x04 ) ) \
158 outline0("JSR POKEYWAITDURATION2" ); \
159 if ( ( c & 0x08 ) ) \
160 outline0("JSR POKEYWAITDURATION3" );
161
162#define PROGRAM_PITCH_V( c, f ) \
163 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
164 outline1("LDX %s", f ); \
165 outline1("LDY %s", address_displacement(_environment, f, "1") ); \
166 outline0("JSR POKEYPROGFREQ" );
167
168#define PROGRAM_PITCH_SV( c, f ) \
169 outline1("LDX #$%2.2x", ( f & 0xff ) ); \
170 outline1("LDY #$%2.2x", ( ( f >> 8 ) & 0xff ) ); \
171 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
172 outline0("JSR POKEYPROGFREQ" );
173
174#define STOP_FREQUENCY( c ) \
175 if ( ( c & 0x01 ) ) \
176 outline0("JSR POKEYSTOP0" ); \
177 if ( ( c & 0x02 ) ) \
178 outline0("JSR POKEYSTOP1" ); \
179 if ( ( c & 0x04 ) ) \
180 outline0("JSR POKEYSTOP2" ); \
181 if ( ( c & 0x08 ) ) \
182 outline0("JSR POKEYSTOP3" );
183
184#define STOP_FREQUENCY_V( c ) \
185 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
186 outline0("JSR POKEYSTOP" );
187
188#define STOP_FREQUENCY_SV( c ) \
189 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
190 outline0("JSR POKEYSTOP" );
191
192#define PROGRAM_DISTORTION( c, v ) \
193 outline1("LDX #$%2.2x", v ); \
194 if ( ( c & 0x01 ) ) \
195 outline0("JSR POKEYPROGDIST0" ); \
196 if ( ( c & 0x02 ) ) \
197 outline0("JSR POKEYPROGDIST1" ); \
198 if ( ( c & 0x04 ) ) \
199 outline0("JSR POKEYPROGDIST2" ); \
200 if ( ( c & 0x08 ) ) \
201 outline0("JSR POKEYPROGDIST3" );
202
203#define PROGRAM_DISTORTION_SV( c, v ) \
204 outline1("LDA %s", ( c == NULL ? "#$f" : c ) ); \
205 outline1("LDX #$%2.2x", v ); \
206 outline0("JSR POKEYPROGDIST" );
207
208void pokey_set_program( Environment * _environment, int _channels, int _program ) {
209
210 deploy( pokeyvars, src_hw_pokey_vars_asm );
211 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
212
213 switch (_program) {
214
219 PROGRAM_PITCH( _channels, 0 );
220 PROGRAM_DISTORTION( _channels, 0x02 );
221 break;
222
224 PROGRAM_PITCH( _channels, 0 );
225 PROGRAM_DISTORTION( _channels, 0x02 );
226 break;
227
229 PROGRAM_PITCH( _channels, 0x80 );
230 PROGRAM_DISTORTION( _channels, 0x02 );
231 break;
232
244 PROGRAM_PITCH( _channels, 0x0 );
245 PROGRAM_DISTORTION( _channels, 0x09 );
246 break;
247
249 PROGRAM_PITCH( _channels, 0xd0 );
250 PROGRAM_DISTORTION( _channels, 0x0d );
251 break;
252
364 PROGRAM_DISTORTION( _channels, 0x0a );
365 break;
366
367 default:
368 break;
369
370 }
371
372}
373
374void pokey_set_parameter( Environment * _environment, int _channels, int _parameter, int _value ) {
375
376}
377
378void pokey_set_frequency( Environment * _environment, int _channels, int _frequency ) {
379
380 deploy( pokeyvars, src_hw_pokey_vars_asm );
381 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
382
383 PROGRAM_FREQUENCY( _channels, _frequency );
384
385}
386
387void pokey_set_pitch( Environment * _environment, int _channels, int _pitch ) {
388
389 deploy( pokeyvars, src_hw_pokey_vars_asm );
390 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
391
392 PROGRAM_PITCH( _channels, _pitch );
393
394}
395
396void pokey_set_duration( Environment * _environment, int _channels, int _duration ) {
397
398 deploy( pokeyvars, src_hw_pokey_vars_asm );
399 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
400
401 PROGRAM_DURATION( _channels, _duration );
402
403}
404
405void pokey_wait_duration( Environment * _environment, int _channels ) {
406
407 deploy( pokeyvars, src_hw_pokey_vars_asm );
408 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
409
410 WAIT_DURATION( _channels );
411
412}
413
414void pokey_set_note( Environment * _environment, int _channels, int _note ) {
415
416 pokey_set_pitch( _environment, _channels, SOUND_FREQUENCIES[_note] );
417
418}
419
420void pokey_stop( Environment * _environment, int _channels ) {
421
422 deploy( pokeyvars, src_hw_pokey_vars_asm );
423 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
424
425 STOP_FREQUENCY( _channels );
426
427}
428
429void pokey_start_var( Environment * _environment, char * _channels ) {
430
431 deploy( pokeyvars, src_hw_pokey_vars_asm );
432 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
433
434 outline1("LDA %s", ( _channels == NULL ? "#$f" : _channels ) );
435 outline0("JSR POKEYSTART");
436
437}
438
439void pokey_set_volume_vars( Environment * _environment, char * _channels, char * _volume ) {
440
441 deploy( pokeyvars, src_hw_pokey_vars_asm );
442 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
443
444 outline1("LDA %s", _volume );
445 outline0("LSR" );
446 outline0("LSR" );
447 outline0("LSR" );
448 outline0("LSR" );
449 outline0("LSR" );
450 outline0("TAX" );
451 outline0("JSR POKEYSETVOL");
452
453}
454
455void pokey_set_volume_semi_var( Environment * _environment, char * _channel, int _volume ) {
456
457 deploy( pokeyvars, src_hw_pokey_vars_asm );
458 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
459
460 outline1("LDA %s", _channel );
461 outline1("LDX #$%2.2x", _volume );
462 outline0("JSR POKEYSETVOL");
463
464}
465
466void pokey_set_program_semi_var( Environment * _environment, char * _channels, int _program ) {
467
468 deploy( pokeyvars, src_hw_pokey_vars_asm );
469 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
470
471 switch (_program) {
472
477 PROGRAM_PITCH_SV( _channels, 0 );
478 PROGRAM_DISTORTION_SV( _channels, 0x01 );
479 break;
480
482 PROGRAM_PITCH_SV( _channels, 0xff );
483 PROGRAM_DISTORTION_SV( _channels, 0x09 );
484 break;
485
487 PROGRAM_PITCH_SV( _channels, 0x80 );
488 PROGRAM_DISTORTION_SV( _channels, 0x09 );
489 break;
490
502 PROGRAM_PITCH_SV( _channels, 0x0 );
503 PROGRAM_DISTORTION_SV( _channels, 0x09 );
504 break;
505
507 PROGRAM_PITCH_SV( _channels, 0xd0 );
508 PROGRAM_DISTORTION_SV( _channels, 0x0d );
509 break;
510
622 PROGRAM_DISTORTION_SV( _channels, 0x0a );
623 break;
624
625 default:
626 break;
627
628 }
629
630}
631
632void pokey_set_frequency_vars( Environment * _environment, char * _channels, char * _frequency ) {
633
634 deploy( pokeyvars, src_hw_pokey_vars_asm );
635 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
636
637 if ( _channels ) {
638 outline1("LDA %s", _channels );
639 } else {
640 outline0("LDA #$f" );
641 }
642 outline1("LDX %s", _frequency );
643 outline1("LDY %s", address_displacement(_environment, _frequency, "1") );
644
645 outline0("JSR POKEYFREQ");
646
647}
648
649void pokey_set_pitch_vars( Environment * _environment, char * _channels, char * _pitch ) {
650
651 deploy( pokeyvars, src_hw_pokey_vars_asm );
652 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
653
654 if ( _channels ) {
655 outline1("LDA %s", _channels );
656 } else {
657 outline0("LDA #$f" );
658 }
659 outline1("LDX %s", _pitch );
660 outline1("LDY %s", address_displacement(_environment, _pitch, "1") );
661
662 outline0("JSR POKEYPROGFREQ");
663
664}
665
666void pokey_set_duration_vars( Environment * _environment, char * _channels, char * _duration ) {
667
668 deploy( pokeyvars, src_hw_pokey_vars_asm );
669 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
670
671 if ( _channels ) {
672 outline1("LDA %s", _channels );
673 } else {
674 outline0("LDA #$f" );
675 }
676
677 if ( _duration ) {
678 outline1("LDX %s", _duration );
679 } else {
680 outline0("LDX #50" );
681 }
682
683 outline0("JSR POKEYSETDURATION");
684
685}
686
687void pokey_wait_duration_vars( Environment * _environment, char * _channels ) {
688
689 deploy( pokeyvars, src_hw_pokey_vars_asm );
690 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
691
692 if ( _channels ) {
693 outline1("LDA %s", _channels );
694 } else {
695 outline0("LDA #$f" );
696 }
697
698 outline0("JSR POKEYWAITDURATION");
699
700}
701
702void pokey_set_note_vars( Environment * _environment, char * _channels, char * _note ) {
703
704 deploy( pokeyvars, src_hw_pokey_vars_asm );
705 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
706
707 outline0("LDA #<POKEYFREQTABLE");
708 outline0("STA TMPPTR");
709 outline0("LDA #>POKEYFREQTABLE");
710 outline0("STA TMPPTR+1");
711 outline1("LDY %s", _note);
712 outline0("TYA");
713 outline0("ASL");
714 outline0("TAY");
715 outline0("LDA (TMPPTR),Y");
716 outline0("TAX");
717 outline0("INY");
718 outline0("LDA (TMPPTR),Y");
719 outline0("TAY");
720
721 if ( _channels ) {
722 outline1("LDA %s", _channels );
723 } else {
724 outline0("LDA #$f" );
725 }
726
727 outline0("JSR POKEYPROGFREQ");
728
729}
730
731void pokey_stop_vars( Environment * _environment, char * _channels ) {
732
733 deploy( pokeyvars, src_hw_pokey_vars_asm );
734 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
735
736 if ( _channels ) {
737 outline1("LDA %s", _channels );
738 } else {
739 outline0("LDA #$f" );
740 }
741 outline0("JSR POKEYSTOP");
742
743}
744
745void pokey_music( Environment * _environment, char * _music, int _size, int _loop ) {
746
747 deploy( pokeyvars, src_hw_pokey_vars_asm );
748 deploy_preferred( pokeystartup, src_hw_pokey_startup_asm );
749 deploy( music, src_hw_pokey_music_asm );
750
751 outline0("SEI");
752 outline1("LDA #<%s", _music);
753 outline0("STA POKEYTMPPTR_BACKUP");
754 outline1("LDA #>%s", _music);
755 outline0("STA POKEYTMPPTR_BACKUP+1");
756 outline1("LDA #$%2.2x", ( _size>>8 ) & 0xff);
757 outline0("STA POKEYBLOCKS_BACKUP");
758 outline1("LDA #$%2.2x", _size & 0xff );
759 outline0("STA POKEYLASTBLOCK_BACKUP");
760 outline1("LDA #$%2.2x", _loop);
761 outline0("STA POKEYMUSICLOOP");
762 outline0("JSR MUSICPLAYERRESET");
763 outline0("CLI");
764
765}
766
767#endif
void cpu_label(Environment *_environment, char *_label)
Definition 6309.c:356
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
#define PROGRAM_DISTORTION_SV(c, v)
Definition pokey.c:203
#define PROGRAM_DURATION(c, d)
Definition pokey.c:141
void pokey_set_frequency_vars(Environment *_environment, char *_channels, char *_frequency)
Definition pokey.c:632
void pokey_set_note(Environment *_environment, int _channels, int _note)
Definition pokey.c:414
void pokey_stop(Environment *_environment, int _channels)
Definition pokey.c:420
void pokey_set_duration(Environment *_environment, int _channels, int _duration)
Definition pokey.c:396
void pokey_finalization(Environment *_environment)
Definition pokey.c:58
void pokey_set_volume_semi_var(Environment *_environment, char *_channel, int _volume)
Definition pokey.c:455
#define PROGRAM_FREQUENCY(c, f)
Definition pokey.c:105
#define PROGRAM_PITCH_SV(c, f)
Definition pokey.c:168
void pokey_set_pitch(Environment *_environment, int _channels, int _pitch)
Definition pokey.c:387
void pokey_start(Environment *_environment, int _channels)
Definition pokey.c:67
#define WAIT_DURATION(c)
Definition pokey.c:152
void pokey_set_duration_vars(Environment *_environment, char *_channels, char *_duration)
Definition pokey.c:666
void pokey_set_frequency(Environment *_environment, int _channels, int _frequency)
Definition pokey.c:378
void pokey_initialization(Environment *_environment)
Definition pokey.c:52
void pokey_music(Environment *_environment, char *_music, int _size, int _loop)
Definition pokey.c:745
void pokey_set_pitch_vars(Environment *_environment, char *_channels, char *_pitch)
Definition pokey.c:649
#define STOP_FREQUENCY(c)
Definition pokey.c:174
void pokey_set_program_semi_var(Environment *_environment, char *_channels, int _program)
Definition pokey.c:466
void pokey_set_program(Environment *_environment, int _channels, int _program)
Definition pokey.c:208
void pokey_set_parameter(Environment *_environment, int _channels, int _parameter, int _value)
Definition pokey.c:374
void pokey_start_var(Environment *_environment, char *_channels)
Definition pokey.c:429
#define PROGRAM_DISTORTION(c, v)
Definition pokey.c:192
void pokey_wait_duration_vars(Environment *_environment, char *_channels)
Definition pokey.c:687
#define PROGRAM_PITCH(c, f)
Definition pokey.c:129
void pokey_set_note_vars(Environment *_environment, char *_channels, char *_note)
Definition pokey.c:702
void pokey_wait_duration(Environment *_environment, int _channels)
Definition pokey.c:405
void pokey_stop_vars(Environment *_environment, char *_channels)
Definition pokey.c:731
void pokey_set_volume(Environment *_environment, int _channels, int _volume)
Definition pokey.c:87
void pokey_set_volume_vars(Environment *_environment, char *_channels, char *_volume)
Definition pokey.c:439
int pokeystartup
Definition ugbc.h:1831
Deployed deployed
Definition ugbc.h:2921
#define IMF_INSTRUMENT_LEAD_8_BASS_LEAD
Definition ugbc.h:4661
#define IMF_INSTRUMENT_MARIMBA
Definition ugbc.h:4586
#define IMF_INSTRUMENT_LEAD_6_VOICE
Definition ugbc.h:4659
#define IMF_INSTRUMENT_DRAWBAR_ORGAN
Definition ugbc.h:4590
#define IMF_INSTRUMENT_FRETLESS_BASS
Definition ugbc.h:4609
#define IMF_INSTRUMENT_PAD_1_NEW_AGE
Definition ugbc.h:4662
#define IMF_INSTRUMENT_VIOLIN
Definition ugbc.h:4614
#define IMF_INSTRUMENT_SYNTH_BASS_1
Definition ugbc.h:4612
#define IMF_INSTRUMENT_MELODIC_TOM
Definition ugbc.h:4691
#define IMF_INSTRUMENT_REVERSE_CYMBAL
Definition ugbc.h:4693
#define IMF_INSTRUMENT_ELECTRIC_BASS_FINGER
Definition ugbc.h:4607
#define IMF_INSTRUMENT_HARMONICA
Definition ugbc.h:4596
#define IMF_INSTRUMENT_BLOWN_BOTTLE
Definition ugbc.h:4650
#define IMF_INSTRUMENT_PAD_3_POLYSYNTH
Definition ugbc.h:4664
#define IMF_INSTRUMENT_FX_8_SCI_FI
Definition ugbc.h:4677
#define IMF_INSTRUMENT_RECORDER
Definition ugbc.h:4648
#define IMF_INSTRUMENT_FX_6_GOBLINS
Definition ugbc.h:4675
#define IMF_INSTRUMENT_FX_1_RAIN
Definition ugbc.h:4670
#define IMF_INSTRUMENT_SYNTH_VOICE
Definition ugbc.h:4628
#define IMF_INSTRUMENT_TENOR_SAX
Definition ugbc.h:4640
#define IMF_INSTRUMENT_PICCOLO
Definition ugbc.h:4646
#define IMF_INSTRUMENT_LEAD_7_FIFTHS
Definition ugbc.h:4660
#define IMF_INSTRUMENT_SLAP_BASS_1
Definition ugbc.h:4610
#define IMF_INSTRUMENT_MUSIC_BOX
Definition ugbc.h:4584
#define IMF_INSTRUMENT_SOPRANO_SAX
Definition ugbc.h:4638
#define IMF_INSTRUMENT_TRUMPET
Definition ugbc.h:4630
#define IMF_INSTRUMENT_BIRD_TWEET
Definition ugbc.h:4697
#define IMF_INSTRUMENT_PAD_8_SWEEP
Definition ugbc.h:4669
#define IMF_INSTRUMENT_CHURCH_ORGAN
Definition ugbc.h:4593
#define IMF_INSTRUMENT_HELICOPTER
Definition ugbc.h:4699
#define IMF_INSTRUMENT_BRIGHT_ACOUSTIC_PIANO
Definition ugbc.h:4575
#define IMF_INSTRUMENT_CELESTA
Definition ugbc.h:4582
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_NYLON
Definition ugbc.h:4598
#define IMF_INSTRUMENT_GLOCKENSPIEL
Definition ugbc.h:4583
#define IMF_INSTRUMENT_ORCHESTRAL_HARP
Definition ugbc.h:4620
#define IMF_INSTRUMENT_BREATH_NOISE
Definition ugbc.h:4695
#define IMF_INSTRUMENT_BAG_PIPE
Definition ugbc.h:4683
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_JAZZ
Definition ugbc.h:4600
#define IMF_INSTRUMENT_ELECTRIC_GRAND_PIANO
Definition ugbc.h:4576
#define IMF_INSTRUMENT_SITAR
Definition ugbc.h:4678
#define IMF_INSTRUMENT_APPLAUSE
Definition ugbc.h:4700
#define IMF_INSTRUMENT_WHISTLE
Definition ugbc.h:4652
#define IMF_INSTRUMENT_PERCUSSIVE_ORGAN
Definition ugbc.h:4591
#define IMF_INSTRUMENT_HONKY_TONK_PIANO
Definition ugbc.h:4577
#define IMF_INSTRUMENT_CHOIR_AAHS
Definition ugbc.h:4626
#define IMF_INSTRUMENT_SHANAI
Definition ugbc.h:4685
#define IMF_INSTRUMENT_CELLO
Definition ugbc.h:4616
#define IMF_INSTRUMENT_FX_3_CRYSTAL
Definition ugbc.h:4672
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_MUTED
Definition ugbc.h:4602
#define IMF_INSTRUMENT_HARPSICHORD
Definition ugbc.h:4580
#define IMF_INSTRUMENT_BRASS_SECTION
Definition ugbc.h:4635
#define IMF_INSTRUMENT_ELECTRIC_BASS_PICK
Definition ugbc.h:4608
#define IMF_INSTRUMENT_FX_5_BRIGHTNESS
Definition ugbc.h:4674
#define IMF_INSTRUMENT_FLUTE
Definition ugbc.h:4647
struct _Environment Environment
Structure of compilation environment.
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_CLEAN
Definition ugbc.h:4601
#define IMF_INSTRUMENT_ACOUSTIC_BASS
Definition ugbc.h:4606
#define IMF_INSTRUMENT_GUITAR_FRET_NOISE
Definition ugbc.h:4694
#define IMF_INSTRUMENT_SYNTHSTRINGS_2
Definition ugbc.h:4625
#define IMF_INSTRUMENT_PAD_4_CHOIR
Definition ugbc.h:4665
#define IMF_INSTRUMENT_LEAD_2_SAWTOOTH
Definition ugbc.h:4655
#define deploy_preferred(s, e)
Definition ugbc.h:4299
#define IMF_INSTRUMENT_DULCIMER
Definition ugbc.h:4589
#define IMF_INSTRUMENT_KOTO
Definition ugbc.h:4681
#define IMF_INSTRUMENT_TUBA
Definition ugbc.h:4632
#define IMF_INSTRUMENT_GUITAR_HARMONICS
Definition ugbc.h:4605
#define IMF_INSTRUMENT_CLAVI
Definition ugbc.h:4581
#define IMF_INSTRUMENT_BANJO
Definition ugbc.h:4679
#define IMF_INSTRUMENT_SYNTHBRASS_2
Definition ugbc.h:4637
#define IMF_INSTRUMENT_LEAD_4_CHIFF
Definition ugbc.h:4657
#define IMF_INSTRUMENT_VOICE_OOHS
Definition ugbc.h:4627
#define IMF_INSTRUMENT_TANGO_ACCORDION
Definition ugbc.h:4597
#define IMF_INSTRUMENT_FX_7_ECHOES
Definition ugbc.h:4676
#define IMF_INSTRUMENT_PAD_6_METALLIC
Definition ugbc.h:4667
#define IMF_INSTRUMENT_PAD_5_BOWED
Definition ugbc.h:4666
#define IMF_INSTRUMENT_GUNSHOT
Definition ugbc.h:4701
#define IMF_INSTRUMENT_REED_ORGAN
Definition ugbc.h:4594
#define IMF_INSTRUMENT_ORCHESTRA_HIT
Definition ugbc.h:4629
#define IMF_INSTRUMENT_SYNTH_DRUM
Definition ugbc.h:4692
#define IMF_INSTRUMENT_SEASHORE
Definition ugbc.h:4696
#define IMF_INSTRUMENT_OCARINA
Definition ugbc.h:4653
#define IMF_INSTRUMENT_TELEPHONE_RING
Definition ugbc.h:4698
#define IMF_INSTRUMENT_FX_2_SOUNDTRACK
Definition ugbc.h:4671
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_STEEL
Definition ugbc.h:4599
#define IMF_INSTRUMENT_SYNTHSTRINGS_1
Definition ugbc.h:4624
#define IMF_INSTRUMENT_MUTED_TRUMPET
Definition ugbc.h:4633
#define IMF_INSTRUMENT_PAN_FLUTE
Definition ugbc.h:4649
#define IMF_INSTRUMENT_TINKLE_BELL
Definition ugbc.h:4686
#define IMF_INSTRUMENT_VIBRAPHONE
Definition ugbc.h:4585
#define IMF_INSTRUMENT_KALIMBA
Definition ugbc.h:4682
#define IMF_INSTRUMENT_FIDDLE
Definition ugbc.h:4684
#define IMF_INSTRUMENT_PAD_7_HALO
Definition ugbc.h:4668
#define IMF_INSTRUMENT_TUBULAR_BELLS
Definition ugbc.h:4588
#define IMF_INSTRUMENT_LEAD_1_SQUARE
Definition ugbc.h:4654
#define IMF_INSTRUMENT_STRING_ENSEMBLE_1
Definition ugbc.h:4622
#define outline0(s)
Definition ugbc.h:4252
#define IMF_INSTRUMENT_DISTORTION_GUITAR
Definition ugbc.h:4604
#define IMF_INSTRUMENT_PAD_2_WARM
Definition ugbc.h:4663
#define IMF_INSTRUMENT_ACCORDION
Definition ugbc.h:4595
#define IMF_INSTRUMENT_SLAP_BASS_2
Definition ugbc.h:4611
#define IMF_INSTRUMENT_LEAD_5_CHARANG
Definition ugbc.h:4658
#define IMF_INSTRUMENT_OBOE
Definition ugbc.h:4642
#define IMF_INSTRUMENT_STEEL_DRUMS
Definition ugbc.h:4688
#define IMF_INSTRUMENT_BASSOON
Definition ugbc.h:4644
#define IMF_INSTRUMENT_TIMPANI
Definition ugbc.h:4621
#define IMF_INSTRUMENT_ROCK_ORGAN
Definition ugbc.h:4592
#define IMF_INSTRUMENT_SHAMISEN
Definition ugbc.h:4680
#define IMF_INSTRUMENT_CLARINET
Definition ugbc.h:4645
#define IMF_INSTRUMENT_ACOUSTIC_GRAND_PIANO
Definition ugbc.h:4574
#define IMF_INSTRUMENT_ALTO_SAX
Definition ugbc.h:4639
#define IMF_INSTRUMENT_EXPLOSION
Definition ugbc.h:4573
#define IMF_INSTRUMENT_PIZZICATO_STRINGS
Definition ugbc.h:4619
#define IMF_INSTRUMENT_WOODBLOCK
Definition ugbc.h:4689
#define IMF_INSTRUMENT_XYLOPHONE
Definition ugbc.h:4587
#define IMF_INSTRUMENT_AGOGO
Definition ugbc.h:4687
#define IMF_INSTRUMENT_SYNTHBRASS_1
Definition ugbc.h:4636
#define outline1(s, a)
Definition ugbc.h:4253
#define IMF_INSTRUMENT_LEAD_3_CALLIOPE
Definition ugbc.h:4656
#define IMF_INSTRUMENT_STRING_ENSEMBLE_2
Definition ugbc.h:4623
#define IMF_INSTRUMENT_SYNTH_BASS_2
Definition ugbc.h:4613
#define IMF_INSTRUMENT_ELECTRIC_PIANO2
Definition ugbc.h:4579
#define IMF_INSTRUMENT_FRENCH_HORN
Definition ugbc.h:4634
#define IMF_INSTRUMENT_TREMOLO_STRINGS
Definition ugbc.h:4618
#define IMF_INSTRUMENT_FX_4_ATMOSPHERE
Definition ugbc.h:4673
#define IMF_INSTRUMENT_ENGLISH_HORN
Definition ugbc.h:4643
#define IMF_INSTRUMENT_BARITONE_SAX
Definition ugbc.h:4641
#define IMF_INSTRUMENT_SHAKUHACHI
Definition ugbc.h:4651
#define IMF_INSTRUMENT_CONTRABASS
Definition ugbc.h:4617
#define IMF_INSTRUMENT_VIOLA
Definition ugbc.h:4615
#define deploy(s, e)
Definition ugbc.h:4288
#define IMF_INSTRUMENT_TROMBONE
Definition ugbc.h:4631
#define IMF_INSTRUMENT_OVERDRIVEN_GUITAR
Definition ugbc.h:4603
#define IMF_INSTRUMENT_ELECTRIC_PIANO1
Definition ugbc.h:4578
#define IMF_INSTRUMENT_TAIKO_DRUM
Definition ugbc.h:4690