--- np2/sound/vermouth/midvoice.h 2003/10/16 17:58:11 1.1.1.1 +++ np2/sound/vermouth/midvoice.h 2006/12/16 12:11:07 1.4 @@ -3,8 +3,9 @@ struct _midivoice; typedef struct _midivoice _VOICE; typedef struct _midivoice *VOICE; -typedef void (*MIXPROC)(VOICE v, SINT32 *dst, SAMPLE src, SAMPLE srcterm); -typedef SAMPLE (*RESPROC)(VOICE v, SAMPLE dst, SAMPLE dstterm); +typedef void (VERMOUTHCL *MIXPROC)(VOICE v, SINT32 *dst, SAMPLE src, + SAMPLE srcterm); +typedef SAMPLE (VERMOUTHCL *RESPROC)(VOICE v, SAMPLE dst, SAMPLE dstterm); enum { CHANNEL_MASK = 0x0f, @@ -30,6 +31,29 @@ enum { VOICE_FIXPITCH = 0x04 }; +#if !defined(MIDI_GMONLY) +enum { + GSRX0_PITCHBEND = 0x01, + GSRX0_CHPRESSURE = 0x02, + GSRX0_PROGRAMCHANGE = 0x04, + GSRX0_CONTROLCHANGE = 0x08, + GSRX0_POLYPRESSURE = 0x10, + GSRX0_NOTEMESSAGE = 0x20, + GSRX0_RPN = 0x40, + GSRX0_NRPN = 0x80, + GSRX1_MODULATION = 0x01, + GSRX1_VOLUE = 0x02, + GSRX1_PANPOT = 0x04, + GSRX1_EXPRESSION = 0x08, + GSRX1_HOLD1 = 0x10, + GSRX1_PORTAMENTO = 0x20, + GSRX1_SOSTENUTO = 0x40, + GSRX1_SOFT = 0x80, + GSRX2_BANKSELECT = 0x01, + GSRX2_BANKSELECTLSB = 0x02 +}; +#endif + typedef struct { UINT flag; int level; @@ -41,13 +65,20 @@ typedef struct { INSTRUMENT *rhythm; #endif - BYTE bank; - BYTE program; - BYTE volume; - BYTE expression; - BYTE panpot; - BYTE rpn_l; - BYTE rpn_m; +#if !defined(MIDI_GMONLY) + UINT8 bank; +#endif + UINT8 program; + UINT8 volume; + UINT8 expression; + UINT8 panpot; + UINT8 rpn_l; + UINT8 rpn_m; +#if defined(ENABLE_GSRX) + UINT8 keyshift; + UINT8 noterange[2]; + UINT8 gsrx[4]; +#endif } _CHANNEL, *CHANNEL; typedef struct { @@ -67,10 +98,10 @@ typedef struct { } VOICEVIB; struct _midivoice { - BYTE phase; - BYTE flag; - BYTE note; - BYTE velocity; + UINT8 phase; + UINT8 flag; + UINT8 note; + UINT8 velocity; CHANNEL channel; int frequency; @@ -103,11 +134,19 @@ struct _midivoice { }; -int envlope_setphase(VOICE v, int phase); -void envelope_updates(VOICE v); +#ifdef __cplusplus +extern "C" { +#endif + +int VERMOUTHCL envlope_setphase(VOICE v, int phase); +void VERMOUTHCL envelope_updates(VOICE v); + +void VERMOUTHCL voice_setphase(VOICE v, UINT8 phase); +void VERMOUTHCL voice_setmix(VOICE v); -void voice_setphase(VOICE v, BYTE phase); -void voice_setmix(VOICE v); +#ifdef __cplusplus +} +#endif // ---- macro