⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awe_voice.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
📖 第 1 页 / 共 2 页
字号:
/*#define AWE_SAMPLE_INFO_SIZE	32*/#define AWE_SAMPLE_INFO_SIZE	sizeof(awe_sample_info)/*---------------------------------------------------------------- * voice preset mapping *----------------------------------------------------------------*/typedef struct awe_voice_map {	int map_bank, map_instr, map_key;	/* key = -1 means all keys */	int src_bank, src_instr, src_key;} awe_voice_map;#define AWE_VOICE_MAP_SIZE	sizeof(awe_voice_map)/*---------------------------------------------------------------- * awe hardware controls *----------------------------------------------------------------*/#define _AWE_DEBUG_MODE			0x00#define _AWE_REVERB_MODE		0x01#define _AWE_CHORUS_MODE		0x02#define _AWE_REMOVE_LAST_SAMPLES	0x03#define _AWE_INITIALIZE_CHIP		0x04#define _AWE_SEND_EFFECT		0x05#define _AWE_TERMINATE_CHANNEL		0x06#define _AWE_TERMINATE_ALL		0x07#define _AWE_INITIAL_VOLUME		0x08#define _AWE_INITIAL_ATTEN	_AWE_INITIAL_VOLUME#define _AWE_RESET_CHANNEL		0x09#define _AWE_CHANNEL_MODE		0x0a#define _AWE_DRUM_CHANNELS		0x0b#define _AWE_MISC_MODE			0x0c#define _AWE_RELEASE_ALL		0x0d#define _AWE_NOTEOFF_ALL		0x0e#define _AWE_CHN_PRESSURE		0x0f/*#define _AWE_GET_CURRENT_MODE		0x10*/#define _AWE_EQUALIZER			0x11/*#define _AWE_GET_MISC_MODE		0x12*//*#define _AWE_GET_FONTINFO		0x13*/#define _AWE_MODE_FLAG			0x80#define _AWE_COOKED_FLAG		0x40	/* not supported */#define _AWE_MODE_VALUE_MASK		0x3F/*----------------------------------------------------------------*/#define _AWE_SET_CMD(p,dev,voice,cmd,p1,p2) \{((char*)(p))[0] = SEQ_PRIVATE;\ ((char*)(p))[1] = dev;\ ((char*)(p))[2] = _AWE_MODE_FLAG|(cmd);\ ((char*)(p))[3] = voice;\ ((unsigned short*)(p))[2] = p1;\ ((unsigned short*)(p))[3] = p2;}/* buffered access */#define _AWE_CMD(dev, voice, cmd, p1, p2) \{_SEQ_NEEDBUF(8);\ _AWE_SET_CMD(_seqbuf + _seqbufptr, dev, voice, cmd, p1, p2);\ _SEQ_ADVBUF(8);}/* direct access */#define _AWE_CMD_NOW(seqfd,dev,voice,cmd,p1,p2) \{struct seq_event_rec tmp;\ _AWE_SET_CMD(&tmp, dev, voice, cmd, p1, p2);\ ioctl(seqfd, SNDCTL_SEQ_OUTOFBAND, &tmp);}/*----------------------------------------------------------------*//* set debugging mode */#define AWE_DEBUG_MODE(dev,p1)	_AWE_CMD(dev, 0, _AWE_DEBUG_MODE, p1, 0)/* set reverb mode; from 0 to 7 */#define AWE_REVERB_MODE(dev,p1)	_AWE_CMD(dev, 0, _AWE_REVERB_MODE, p1, 0)/* set chorus mode; from 0 to 7 */#define AWE_CHORUS_MODE(dev,p1)	_AWE_CMD(dev, 0, _AWE_CHORUS_MODE, p1, 0)/* reset channel */#define AWE_RESET_CHANNEL(dev,ch) _AWE_CMD(dev, ch, _AWE_RESET_CHANNEL, 0, 0)#define AWE_RESET_CONTROL(dev,ch) _AWE_CMD(dev, ch, _AWE_RESET_CHANNEL, 1, 0)/* send an effect to all layers */#define AWE_SEND_EFFECT(dev,voice,type,value) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,type,value)#define AWE_ADD_EFFECT(dev,voice,type,value) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,((type)|0x80),value)#define AWE_UNSET_EFFECT(dev,voice,type) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,((type)|0x40),0)/* send an effect to a layer */#define AWE_SEND_LAYER_EFFECT(dev,voice,layer,type,value) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,((layer+1)<<8|(type)),value)#define AWE_ADD_LAYER_EFFECT(dev,voice,layer,type,value) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,((layer+1)<<8|(type)|0x80),value)#define AWE_UNSET_LAYER_EFFECT(dev,voice,layer,type) _AWE_CMD(dev,voice,_AWE_SEND_EFFECT,((layer+1)<<8|(type)|0x40),0)/* terminate sound on the channel/voice */#define AWE_TERMINATE_CHANNEL(dev,voice) _AWE_CMD(dev,voice,_AWE_TERMINATE_CHANNEL,0,0)/* terminate all sounds */#define AWE_TERMINATE_ALL(dev) _AWE_CMD(dev, 0, _AWE_TERMINATE_ALL, 0, 0)/* release all sounds (w/o sustain effect) */#define AWE_RELEASE_ALL(dev) _AWE_CMD(dev, 0, _AWE_RELEASE_ALL, 0, 0)/* note off all sounds (w sustain effect) */#define AWE_NOTEOFF_ALL(dev) _AWE_CMD(dev, 0, _AWE_NOTEOFF_ALL, 0, 0)/* set initial attenuation */#define AWE_INITIAL_VOLUME(dev,atten) _AWE_CMD(dev, 0, _AWE_INITIAL_VOLUME, atten, 0)#define AWE_INITIAL_ATTEN  AWE_INITIAL_VOLUME/* relative attenuation */#define AWE_SET_ATTEN(dev,atten)  _AWE_CMD(dev, 0, _AWE_INITIAL_VOLUME, atten, 1)/* set channel playing mode; mode=0/1/2 */#define AWE_SET_CHANNEL_MODE(dev,mode) _AWE_CMD(dev, 0, _AWE_CHANNEL_MODE, mode, 0)#define AWE_PLAY_INDIRECT	0	/* indirect voice mode (default) */#define AWE_PLAY_MULTI		1	/* multi note voice mode */#define AWE_PLAY_DIRECT		2	/* direct single voice mode */#define AWE_PLAY_MULTI2		3	/* sequencer2 mode; used internally *//* set drum channel mask; channels is 32bit long value */#define AWE_DRUM_CHANNELS(dev,channels) _AWE_CMD(dev, 0, _AWE_DRUM_CHANNELS, ((channels) & 0xffff), ((channels) >> 16))/* set bass and treble control; values are from 0 to 11 */#define AWE_EQUALIZER(dev,bass,treble) _AWE_CMD(dev, 0, _AWE_EQUALIZER, bass, treble)/* remove last loaded samples */#define AWE_REMOVE_LAST_SAMPLES(seqfd,dev) _AWE_CMD_NOW(seqfd, dev, 0, _AWE_REMOVE_LAST_SAMPLES, 0, 0)/* initialize emu8000 chip */#define AWE_INITIALIZE_CHIP(seqfd,dev) _AWE_CMD_NOW(seqfd, dev, 0, _AWE_INITIALIZE_CHIP, 0, 0)/* set miscellaneous modes; meta command */#define AWE_MISC_MODE(dev,mode,value) _AWE_CMD(dev, 0, _AWE_MISC_MODE, mode, value)/* exclusive sound off; 1=off */#define AWE_EXCLUSIVE_SOUND(dev,mode) AWE_MISC_MODE(dev,AWE_MD_EXCLUSIVE_SOUND,mode)/* default GUS bank number */#define AWE_SET_GUS_BANK(dev,bank) AWE_MISC_MODE(dev,AWE_MD_GUS_BANK,bank)/* change panning position in realtime; 0=don't 1=do */#define AWE_REALTIME_PAN(dev,mode) AWE_MISC_MODE(dev,AWE_MD_REALTIME_PAN,mode)/* extended pressure controls; not portable with other sound drivers */#define AWE_KEY_PRESSURE(dev,ch,note,vel) SEQ_START_NOTE(dev,ch,(note)+128,vel)#define AWE_CHN_PRESSURE(dev,ch,vel) _AWE_CMD(dev,ch,_AWE_CHN_PRESSURE,vel,0)/*----------------------------------------------------------------*//* reverb mode parameters */#define	AWE_REVERB_ROOM1	0#define AWE_REVERB_ROOM2	1#define	AWE_REVERB_ROOM3	2#define	AWE_REVERB_HALL1	3#define	AWE_REVERB_HALL2	4#define	AWE_REVERB_PLATE	5#define	AWE_REVERB_DELAY	6#define	AWE_REVERB_PANNINGDELAY 7#define AWE_REVERB_PREDEFINED	8/* user can define reverb modes up to 32 */#define AWE_REVERB_NUMBERS	32typedef struct awe_reverb_fx_rec {	unsigned short parms[28];} awe_reverb_fx_rec;/*----------------------------------------------------------------*//* chorus mode parameters */#define AWE_CHORUS_1		0#define	AWE_CHORUS_2		1#define	AWE_CHORUS_3		2#define	AWE_CHORUS_4		3#define	AWE_CHORUS_FEEDBACK	4#define	AWE_CHORUS_FLANGER	5#define	AWE_CHORUS_SHORTDELAY	6#define	AWE_CHORUS_SHORTDELAY2	7#define AWE_CHORUS_PREDEFINED	8/* user can define chorus modes up to 32 */#define AWE_CHORUS_NUMBERS	32typedef struct awe_chorus_fx_rec {	unsigned short feedback;	/* feedback level (0xE600-0xE6FF) */	unsigned short delay_offset;	/* delay (0-0x0DA3) [1/44100 sec] */	unsigned short lfo_depth;	/* LFO depth (0xBC00-0xBCFF) */	unsigned int delay;	/* right delay (0-0xFFFFFFFF) [1/256/44100 sec] */	unsigned int lfo_freq;		/* LFO freq LFO freq (0-0xFFFFFFFF) */} awe_chorus_fx_rec;/*----------------------------------------------------------------*//* misc mode types */enum {/* 0*/	AWE_MD_EXCLUSIVE_OFF,	/* obsolete *//* 1*/	AWE_MD_EXCLUSIVE_ON,	/* obsolete *//* 2*/	AWE_MD_VERSION,		/* read only *//* 3*/	AWE_MD_EXCLUSIVE_SOUND,	/* 0/1: exclusive note on (default=1) *//* 4*/	AWE_MD_REALTIME_PAN,	/* 0/1: do realtime pan change (default=1) *//* 5*/	AWE_MD_GUS_BANK,	/* bank number for GUS patches (default=0) *//* 6*/	AWE_MD_KEEP_EFFECT,	/* 0/1: keep effect values, (default=0) *//* 7*/	AWE_MD_ZERO_ATTEN,	/* attenuation of max volume (default=32) *//* 8*/	AWE_MD_CHN_PRIOR,	/* 0/1: set MIDI channel priority mode (default=1) *//* 9*/	AWE_MD_MOD_SENSE,	/* integer: modwheel sensitivity (def=18) *//*10*/	AWE_MD_DEF_PRESET,	/* integer: default preset number (def=0) *//*11*/	AWE_MD_DEF_BANK,	/* integer: default bank number (def=0) *//*12*/	AWE_MD_DEF_DRUM,	/* integer: default drumset number (def=0) *//*13*/	AWE_MD_TOGGLE_DRUM_BANK, /* 0/1: toggle drum flag with bank# (def=0) *//*14*/	AWE_MD_NEW_VOLUME_CALC,	/* 0/1: volume calculation mode (def=1) *//*15*/	AWE_MD_CHORUS_MODE,	/* integer: chorus mode (def=2) *//*16*/	AWE_MD_REVERB_MODE,	/* integer: chorus mode (def=4) *//*17*/	AWE_MD_BASS_LEVEL,	/* integer: bass level (def=5) *//*18*/	AWE_MD_TREBLE_LEVEL,	/* integer: treble level (def=9) *//*19*/	AWE_MD_DEBUG_MODE,	/* integer: debug level (def=0) *//*20*/	AWE_MD_PAN_EXCHANGE,	/* 0/1: exchange panning direction (def=0) */	AWE_MD_END,};/*----------------------------------------------------------------*//* effect parameters */enum {/* modulation envelope parameters *//* 0*/	AWE_FX_ENV1_DELAY,	/* WORD: ENVVAL *//* 1*/	AWE_FX_ENV1_ATTACK,	/* BYTE: up ATKHLD *//* 2*/	AWE_FX_ENV1_HOLD,	/* BYTE: lw ATKHLD *//* 3*/	AWE_FX_ENV1_DECAY,	/* BYTE: lw DCYSUS *//* 4*/	AWE_FX_ENV1_RELEASE,	/* BYTE: lw DCYSUS *//* 5*/	AWE_FX_ENV1_SUSTAIN,	/* BYTE: up DCYSUS *//* 6*/	AWE_FX_ENV1_PITCH,	/* BYTE: up PEFE *//* 7*/	AWE_FX_ENV1_CUTOFF,	/* BYTE: lw PEFE *//* volume envelope parameters *//* 8*/	AWE_FX_ENV2_DELAY,	/* WORD: ENVVOL *//* 9*/	AWE_FX_ENV2_ATTACK,	/* BYTE: up ATKHLDV *//*10*/	AWE_FX_ENV2_HOLD,	/* BYTE: lw ATKHLDV *//*11*/	AWE_FX_ENV2_DECAY,	/* BYTE: lw DCYSUSV *//*12*/	AWE_FX_ENV2_RELEASE,	/* BYTE: lw DCYSUSV *//*13*/	AWE_FX_ENV2_SUSTAIN,	/* BYTE: up DCYSUSV */	/* LFO1 (tremolo & vibrato) parameters *//*14*/	AWE_FX_LFO1_DELAY,	/* WORD: LFO1VAL *//*15*/	AWE_FX_LFO1_FREQ,	/* BYTE: lo TREMFRQ *//*16*/	AWE_FX_LFO1_VOLUME,	/* BYTE: up TREMFRQ *//*17*/	AWE_FX_LFO1_PITCH,	/* BYTE: up FMMOD *//*18*/	AWE_FX_LFO1_CUTOFF,	/* BYTE: lo FMMOD *//* LFO2 (vibrato) parameters *//*19*/	AWE_FX_LFO2_DELAY,	/* WORD: LFO2VAL *//*20*/	AWE_FX_LFO2_FREQ,	/* BYTE: lo FM2FRQ2 *//*21*/	AWE_FX_LFO2_PITCH,	/* BYTE: up FM2FRQ2 *//* Other overall effect parameters *//*22*/	AWE_FX_INIT_PITCH,	/* SHORT: pitch offset *//*23*/	AWE_FX_CHORUS,		/* BYTE: chorus effects send (0-255) *//*24*/	AWE_FX_REVERB,		/* BYTE: reverb effects send (0-255) *//*25*/	AWE_FX_CUTOFF,		/* BYTE: up IFATN *//*26*/	AWE_FX_FILTERQ,		/* BYTE: up CCCA *//* Sample / loop offset changes *//*27*/	AWE_FX_SAMPLE_START,	/* SHORT: offset *//*28*/	AWE_FX_LOOP_START,	/* SHORT: offset *//*29*/	AWE_FX_LOOP_END,	/* SHORT: offset *//*30*/	AWE_FX_COARSE_SAMPLE_START,	/* SHORT: upper word offset *//*31*/	AWE_FX_COARSE_LOOP_START,	/* SHORT: upper word offset *//*32*/	AWE_FX_COARSE_LOOP_END,		/* SHORT: upper word offset *//*33*/	AWE_FX_ATTEN,		/* BYTE: lo IFATN */	AWE_FX_END,};#endif /* AWE_VOICE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -