|
|
| version 1.2, 2004/08/20 12:09:20 | version 1.4, 2008/06/02 20:07:32 |
|---|---|
| Line 1 | Line 1 |
| #define OPM_CLOCK 4000000L // X1 & X68000 OPM 4MHz | #define OPM_CLOCK 4000000L /* X1 & X68000 OPM 4MHz */ |
| #define OPMCH_MAX 8 | #define OPMCH_MAX 8 |
| enum { | enum { |
| Line 8 enum { | Line 8 enum { |
| FMVOL_SFTBIT = 5 | FMVOL_SFTBIT = 5 |
| }; | }; |
| #if !defined(_WIN32_WCE) | |
| #define SIN_BITS 10 | #define SIN_BITS 10 |
| #define EVC_BITS 10 | #define EVC_BITS 10 |
| #else | |
| #define SIN_BITS 8 | |
| #define EVC_BITS 7 | |
| #endif | |
| #define ENV_BITS 16 | #define ENV_BITS 16 |
| #define KF_BITS 6 | #define KF_BITS 6 |
| #define FREQ_BITS 20 | #define FREQ_BITS 20 |
| Line 17 enum { | Line 22 enum { |
| #define SINTBL_BIT 14 | #define SINTBL_BIT 14 |
| #define TL_BITS (FREQ_BITS + 2) | #define TL_BITS (FREQ_BITS + 2) |
| #define OPM_OUTSB (TL_BITS + 2 - 16) // OPM output 16bit | #define OPM_OUTSB (TL_BITS + 2 - 16) /* OPM output 16bit */ |
| #define SIN_ENT (1 << SIN_BITS) | #define SIN_ENT (1 << SIN_BITS) |
| #define EVC_ENT (1 << EVC_BITS) | #define EVC_ENT (1 << EVC_BITS) |
| #define EC_ATTACK 0 // ATTACK start | #define EC_ATTACK 0 /* ATTACK start */ |
| #define EC_DECAY (EVC_ENT << ENV_BITS) // DECAY start | #define EC_DECAY (EVC_ENT << ENV_BITS) /* DECAY start */ |
| #define EC_OFF ((2 * EVC_ENT) << ENV_BITS) // OFF | #define EC_OFF ((2 * EVC_ENT) << ENV_BITS) /* OFF */ |
| #define TL_MAX (EVC_ENT * 2) | #define TL_MAX (EVC_ENT * 2) |
| Line 42 enum { | Line 47 enum { |
| }; | }; |
| typedef struct { | typedef struct { |
| SINT32 *detune1; // detune1 | SINT32 *detune1; /* detune1 */ |
| SINT32 detune2; // detune2 | SINT32 detune2; /* detune2 */ |
| SINT32 totallevel; // total level | SINT32 totallevel; /* total level */ |
| SINT32 decaylevel; // decay level | SINT32 decaylevel; /* decay level */ |
| const SINT32 *attack; // attack ratio | const SINT32 *attack; /* attack ratio */ |
| const SINT32 *decay1; // decay1 ratio | const SINT32 *decay1; /* decay1 ratio */ |
| const SINT32 *decay2; // decay2 ratio | const SINT32 *decay2; /* decay2 ratio */ |
| const SINT32 *release; // release ratio | const SINT32 *release; /* release ratio */ |
| SINT32 freq_cnt; // frequency count | SINT32 freq_cnt; /* frequency count */ |
| SINT32 freq_inc; // frequency step | SINT32 freq_inc; /* frequency step */ |
| UINT8 keyscale; // key scale | UINT8 keyscale; /* key scale */ |
| UINT8 multiple; // multiple | UINT8 multiple; /* multiple */ |
| UINT8 env_mode; // envelope mode | UINT8 env_mode; /* envelope mode */ |
| UINT8 envratio; // envelope raito | UINT8 envratio; /* envelope raito */ |
| SINT32 env_cnt; // envelope count | SINT32 env_cnt; /* envelope count */ |
| SINT32 env_end; // envelope end count | SINT32 env_end; /* envelope end count */ |
| SINT32 env_inc; // envelope step | SINT32 env_inc; /* envelope step */ |
| SINT32 env_inc_attack; // envelope attack step | SINT32 env_inc_attack; /* envelope attack step */ |
| SINT32 env_inc_decay1; // envelope decay1 step | SINT32 env_inc_decay1; /* envelope decay1 step */ |
| SINT32 env_inc_decay2; // envelope decay2 step | SINT32 env_inc_decay2; /* envelope decay2 step */ |
| SINT32 env_inc_release; // envelope release step | SINT32 env_inc_release; /* envelope release step */ |
| } OPMSLOT; | } OPMSLOT; |
| typedef struct { | typedef struct { |
| OPMSLOT slot[4]; | OPMSLOT slot[4]; |
| UINT8 algorithm; // algorythm | UINT8 algorithm; /* algorythm */ |
| UINT8 feedback; // self feedback | UINT8 feedback; /* self feedback */ |
| UINT8 playing; | UINT8 playing; |
| UINT8 outslot; | UINT8 outslot; |
| SINT32 op1fb; // operator1 feedback | SINT32 op1fb; /* operator1 feedback */ |
| SINT32 *connect1; // operator1 connect | SINT32 *connect1; /* operator1 connect */ |
| SINT32 *connect3; // operator3 connect | SINT32 *connect3; /* operator3 connect */ |
| SINT32 *connect2; // operator2 connect | SINT32 *connect2; /* operator2 connect */ |
| SINT32 *connect4; // operator4 connect | SINT32 *connect4; /* operator4 connect */ |
| UINT32 keynote; // key note | UINT32 keynote; /* key note */ |
| UINT8 keyfunc; // key function | UINT8 keyfunc; /* key function */ |
| UINT8 kcode; // key code | UINT8 kcode; /* key code */ |
| UINT8 pan; // pan | UINT8 pan; /* pan */ |
| UINT8 padding; | UINT8 padding; |
| } OPMCH; | } OPMCH; |