gehe zur Dokumentation dieser Datei00001
00034
00035
00036
00037
00038
00039 #if ! defined (__INTERPRE_H_INCLUDED)
00040 #define __INTERPRE_H_INCLUDED
00041
00042 #include "Global.h"
00043
00044
00045
00046
00047 #define DOUBLE_TO_LONG(x) ((long int) ((x) * (1L<<24)))
00048
00049 void message_tasten_liste( void );
00050
00051
00052
00053 typedef struct TSYS
00054 {
00055 int anker;
00056 int breite;
00057 long periode;
00058 long ton[MAX_BREITE];
00059 } tone_system;
00060
00061 typedef struct PTRN
00062 {
00063 int tonigkeit[MAX_BREITE];
00064 } PATTERNN;
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 void HARMONIE_analyse(int instr,PATTERNN * pattern);
00096 void MIDI_analyse( int code );
00097 void KEYB_analyse( int key );
00098 void MAUS_analyse(int mx, int my);
00099
00100 void Add_Key(int instr, int key, int velo);
00101 void Delete_Key(int instr, int key);
00102
00103 tone_system * lz_get_tonsystem(int instr);
00104 PATTERNN * get_pattern(int instr);
00105
00106
00107
00108
00109
00110 enum ton_einstell_typ { einstell_stumm, einstell_gleich,
00111 einstell_absolut, einstell_relativ };
00112
00113 struct ton_einstell
00114 {
00115 enum ton_einstell_typ ton_einstell_typ;
00116 union {
00117
00118 struct {
00119 long wert;
00120 }
00121
00122 einstell_absolut;
00123
00124 struct {
00125 long wert;
00126 }
00127
00128 einstell_relativ;
00129 } u;
00130
00131 struct ton_einstell * next;
00132 };
00133
00134 struct case_element
00135 {
00136 int case_wert;
00137 char is_default;
00138
00139 struct do_aktion * case_aktion;
00140
00141 struct case_element * next;
00142 };
00143
00144
00145 struct interpreter_parameter_liste
00146 {
00147 int (* werte_feld) [MAX_BOX];
00148
00149 struct interpreter_parameter_liste * next;
00150 };
00151
00152
00153
00154
00155
00156
00157
00158 enum aufruf_typ { aufruf_logik, aufruf_tonsystem,
00159 aufruf_umst_taste_abs, aufruf_umst_breite_abs,
00160 aufruf_umst_wiederholung_abs,
00161 aufruf_umst_wiederholung_rel,
00162 aufruf_umst_taste_rel,
00163 aufruf_umst_breite_rel, aufruf_umst_toene_veraendert,
00164 aufruf_umst_umst_bund, aufruf_umst_umst_case,
00165 aufruf_midi_out };
00166
00167 struct do_aktion
00168 {
00169
00170
00171
00172
00173 const char * name;
00174
00175 enum aufruf_typ aufruf_typ;
00176
00177 union
00178 {
00179
00180 struct {
00181
00182 struct do_aktion * einstimmung;
00183
00184 struct harmonie_ereignis ** lokal_harmonie;
00185
00186 struct keyboard_ereignis ** lokal_keyboard;
00187
00188 struct midi_ereignis ** lokal_midi;
00189 }
00190
00191 aufruf_logik;
00192
00193 struct {
00194 tone_system * tonsystem;
00195 }
00196
00197 aufruf_tonsystem;
00198
00199 struct {
00200 int * wert;
00201 }
00202
00203 aufruf_umst_taste_abs;
00204
00205 struct {
00206 int * wert;
00207 }
00208
00209 aufruf_umst_breite_abs;
00210
00211 struct {
00212 long faktor;
00213 }
00214
00215 aufruf_umst_wiederholung_abs;
00216
00217 struct {
00218 long faktor;
00219 }
00220
00221 aufruf_umst_wiederholung_rel;
00222
00223 struct {
00224 int * wert;
00225 char rechenzeichen;
00226 }
00227
00228 aufruf_umst_taste_rel;
00229
00230 struct {
00231 int * wert;
00232 char rechenzeichen;
00233 }
00234
00235 aufruf_umst_breite_rel;
00236
00237 struct {
00238
00239 struct ton_einstell * tonliste;
00240 }
00241
00242 aufruf_umst_toene_veraendert;
00243
00244 struct {
00245 int * wert;
00246
00247 struct case_element * umst_case;
00248 }
00249
00250 aufruf_umst_umst_case;
00251
00252 struct {
00253
00254 struct midiliste * out_liste;
00255 }
00256
00257 aufruf_midi_out;
00258 }
00259
00260 u;
00261
00262 struct do_aktion * next;
00263 };
00264
00265
00266
00267 struct midi_ereignis
00268 {
00269 int * first_pos;
00270 int * scan_pos;
00271
00272 const char * name;
00273
00274 struct do_aktion * aktion;
00275
00276 struct logik * the_logik_to_expand;
00277
00278 struct midi_ereignis * next;
00279 };
00280
00281 struct keyboard_ereignis
00282 {
00283 char taste;
00284
00285 const char * name;
00286
00287 struct do_aktion * aktion;
00288
00289 struct logik * the_logik_to_expand;
00290
00291 struct keyboard_ereignis * next;
00292 };
00293
00294 struct harmonie_ereignis
00295 {
00296 PATTERNN * pattern;
00297 char ist_harmonieform;
00298 int vortaste;
00299 int nachtaste;
00300
00301 const char * name;
00302
00303 struct do_aktion * aktion;
00304
00305 struct logik * the_logik_to_expand;
00306
00307 struct harmonie_ereignis * next;
00308 };
00309
00310
00311
00312
00313
00314
00315 extern struct harmonie_ereignis * first_harmonie[MAX_BOX];
00316
00317 extern struct harmonie_ereignis ** last_global_harmonie[MAX_BOX];
00318
00319 extern struct harmonie_ereignis ** first_lokal_harmonie;
00320
00321 extern struct keyboard_ereignis * first_keyboard[MAX_BOX];
00322
00323 extern struct keyboard_ereignis ** last_global_keyboard[MAX_BOX];
00324
00325 extern struct keyboard_ereignis ** first_lokal_keyboard;
00326
00327 extern struct midi_ereignis * first_midi[MAX_BOX];
00328
00329 extern struct midi_ereignis ** last_global_midi[MAX_BOX];
00330
00331 extern struct midi_ereignis ** first_lokal_midi;
00332
00333 extern int laufzeit_abstand[256];
00334
00335 extern int laufzeit_zentrum[256];
00336
00337 extern int laufzeit_meldungen_erlaubt;
00338
00339
00340
00341
00342 extern int aktuelle_keyboard_box;
00343
00344 extern int liegende_tasten[MAX_BOX][64];
00345
00346 extern int liegende_tasten_max[MAX_BOX];
00347
00348 #define SYNTHESIZER_TYP_KEINER 0
00349 #define SYNTHESIZER_TYP_FB01 1
00350 #define SYNTHESIZER_TYP_MULTI16 2
00351 #define SYNTHESIZER_TYP_GIS 3
00352
00353
00354 #endif
00355
00356
00357