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

📄 masnddrv.h

📁 YAMAHA的铃音芯片的测试程序
💻 H
字号:
#include "pccdef.h"
#include "predef.h"

typedef struct _MASNDDRVINFO
{
	UINT8	master_volume;				/* master volume */
	UINT8	ctrl_volume;				/* control volume */	
	UINT8	min_slot[3];				/* minimum slot number */
	UINT8	max_slot[3];				/* maximum slot number */
} MASNDDRVINFO;

typedef struct _MACHINFO
{
	UINT8	bank_no;					/* bank number */
	UINT8	prog_no;					/* program number */
	UINT8	poly;						/* poly/mono */
	UINT8	volume;						/* volume */
	UINT8   bend_range;                 /* bend range */
	UINT8	expression;					/* expression */
	UINT8   sfx;                        /* sfx */
	UINT8	note_on;					/* note on (used for MONO_POLY MODE) */
} MACHINFO;

typedef struct _MAVINFO
{
	UINT8	  synth;					/* synth type */
	UINT16	key;						/* key number */
	UINT16	address;					/* address */
} MAVINFO, * PMAVINFO;

typedef struct _MAVOICEINFO
{
	UINT8   synth;						  /* synth type */
	UINT16	key;						  /* key number */
	UINT16	ram_adrs;					  /* ram address */
} MAVOICEINFO, * PMAVOICEINFO;

typedef struct _MASLOTINFO
{
	UINT8	ch;							/* channel number */
	UINT32	key;						/* key number */
} MASLOTINFO;

typedef struct _MASLOTLIST
{
	UINT8	top[3];						/* top */
	UINT8	end[3];						/* end */
	UINT8	next[42];					/* next */
} MASLOTLIST, *PMASLOTLIST;

static MASNDDRVINFO		ma_snddrv_info;
static MACHINFO 		ma_channel_info[MASMW_NUM_CHANNEL];
static MAVOICEINFO		ma_voice_info[MA_MAX_REG_VOICE*2];
static MASLOTINFO		ma_slot_info[MASMW_MAX_SLOT];
static MASLOTLIST		ma_slot_list;

static UINT8			ma_voice_index[MA_MAX_RAM_BANK*2*128];	/* (Bank[16+16]) * Prog   */


/*static UINT8   bTimeBaseR=1;*/

static UINT32  pre_time=0;     /*Note ON*/
static UINT8   packet_buf[256];

static UINT8   con = 0 ;
static UINT8   channel[16];
static UINT32  reg[16];
static SINT32  dura[16];

SINT32 MaSndDrv_SetVoice(UINT8	bank_no, UINT8	program_no,	UINT32	key, UINT32	ram_adrs);
SINT32 MaSndDrv_Create(UINT8 timebase, UINT8 cnv_mode, UINT8 sa_num, 
                       UINT32 *ram_adrs, UINT32 *ram_size);

SINT32 MaSndDrv_Nop(SINT32	delta_time, UINT32	type);
UINT8 CalcChVolume(UINT32	ch);
SINT32 MaSndDrv_ChannelVolume(SINT32	delta_time,	UINT32	ch,	UINT32	vol);
SINT32 MaSndDrv_Panpot(SINT32	delta_time,	UINT32	ch,	UINT32	pan);
SINT32 MaSndDrv_Expression(SINT32	delta_time,	UINT32	ch,	UINT32	vol);
SINT32 MaSndDrv_ModulationDepth(SINT32	delta_time,	UINT32	ch,	UINT32	depth);
SINT32 MaSndDrv_Hold1(SINT32	delta_time,	UINT32	ch,	UINT32	val);
SINT32 MaSndDrv_ResetAllControllers(SINT32	delta_time,	UINT32	ch);
SINT32 MaSndDrv_MonoModeOn(SINT32	delta_time, UINT32	ch);
SINT32 MaSndDrv_PolyModeOn(SINT32	delta_time, UINT32	ch);
SINT32 MaSndDrv_BendRange(SINT32  delta_time,	UINT32	ch,	UINT32	bend_range);


SINT32 MaSndDrv_MasterVolume(SINT32	delta_time,	UINT32	vol);
SINT32 MaSndDrv_PitchBend(SINT32	delta_time,	UINT32	ch,	UINT32	bend);
void RemakeSlotList(UINT32	synth_type,	UINT32	slot_no, UINT32	type);
SINT32 MaSndDrv_AllSoundOff(SINT32	delta_time, UINT32 ch );
SINT32 MaSndDrv_AllSoundOff_EOS(SINT32	delta_time );

SINT32 GetSlotList(SINT32	synth_type);
UINT16 GetFmBlockFnum(UINT8	ch,	UINT8	key, UINT16	drum_key);
UINT16 GetWtBlockFnum(UINT8	ch,	UINT8	key, UINT16	base_fs);
UINT8 CalcVoiceVolume(UINT32	vol, UINT32	offset);
UINT32 MakeDeltaTime( UINT8 * packet_ptr, SINT32 delta_time );
SINT32 GetVoiceInfo(UINT8 ch,	UINT8 key, PMAVINFO	voice_info_ptr);
SINT32 MaSndDrv_NoteOn(SINT32	delta_time,	UINT8	 ch,	
                              UINT8	 key, UINT8	 velocity, SINT32  gatetime, SINT32 next_dura);

⌨️ 快捷键说明

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