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

📄 masnddrv.h

📁 是一个手机功能的模拟程序
💻 H
字号:
/****************************************************************************
 *
 *		Copyright (C) 2002-2003	YAMAHA CORPORATION. All rights reserved.
 *
 *		Module		: masnddrv.h
 *
 *		Description	: MA Sound Driver
 *
 *		Version		: 2.7.13 	2003.06.13
 *
 ****************************************************************************/

#ifndef __MASNDDRV_H__
#define __MASNDDRV_H__

#include "mamachdep.h"
#include "madebug.h"
#include "madefs.h"

/* for MaSndDrv_Create */
#define MASMW_SEQTYPE_DELAYED				(0)
#define MASMW_SEQTYPE_DIRECT				(1)
#define MASMW_SEQTYPE_HV					(2)
#define MASNDDRV_MAX_SEQTYPE				(2)			/* maximum value of sequence type */

#define MASNDDRV_MIN_DLY_BASETIME			(4)
#define MASNDDRV_MAX_DLY_BASETIME			(10)
#define MASNDDRV_DIRECT_BASETIME			(20)
#define MASMW_DIRECT_BASETIME				(20)
#define MASNDDRV_HV_BASETIME				(20)

#define MASNDDRV_RESOURCE_MODE_HV			(0)
#define MASNDDRV_RESOURCE_MODE_PHRASE		(1)
#define MASNDDRV_RESOURCE_MODE_AUDIO		(1)
#define MASNDDRV_RESOURCE_MODE_MA3			(2)
#define MASNDDRV_RESOURCE_MODE_MA2			(3)
#define MASNDDRV_RESOURCE_MODE_V50			(4)
#define MASNDDRV_RESOURCE_MODE_V64			(5)

#define MASNDDRV_FM_MODE_2OP				(0x00)
#define MASNDDRV_FM_MODE_4OP				(0x01)
#define MASNDDRV_DRUM_MODE_GMX				(0x00)
#define MASNDDRV_DRUM_MODE_GML1				(0x02)
#define MASNDDRV_WTVOLUME_MODE_MA3			(0x00)
#define MASNDDRV_WTVOLUME_MODE_MA5			(0x04)
#define MASNDDRV_HVTYPE_0					(0x00)
#define MASNDDRV_HVTYPE_1					(0x10)

/* for MaSndDrv_ControlSequencer */
#define MASNDDRV_SEQUENCER_STOP				(0)
#define MASNDDRV_SEQUENCER_START			(1)
#define MASNDDRV_SEQUENCER_ENTERREPEAT		(2)
#define MASNDDRV_SEQUENCER_LEAVEREPEAT		(3)
#define MASNDDRV_SEQUENCER_SEEK				(4)

/* cannel */
#define MASNDDRV_NUM_CHANNEL				(MA_MAX_CHANNEL)		/* number of channels */
#define MASNDDRV_MAX_CHANNEL				(MASNDDRV_NUM_CHANNEL-1)	/* maximum value of channle */
#define MASNDDRV_STM_CH						(16)
#define MASMW_NUM_CHANNEL					(MA_MAX_CHANNEL)		/* number of channel */

#define MASNDDRV_NUM_STREAM					(MA_MAX_STREAM_AUDIO)	/* number of stream audio */

/* ram */
#define MASNDDRV_MIN_RAMADRS				(0x4000)	/* minimum value of ram address */
#define MASNDDRV_MAX_RAMADRS				(0x5FFF)	/* maximum value of ram address */

/* for MaSndDrv_UpdateSequencer */
#define MASNDDRV_UPDATE_FIFO				(0)
#define MASNDDRV_UPDATE_TIMER2A				(3)
#define MASNDDRV_UPDATE_TIMER2B				(4)

/* for MaSndDrv_SetSpeed */
#define MASNDDRV_MIN_SPEED					(25)
#define MASNDDRV_MAX_SPEED					(400)

/* for MaSndDrv_SetVolume / MaSndDrv_SetVolShift */
#define MASNDDRV_MAX_VOICE_TYPE				(0x7F)
#define MASNDDRV_FM_FLAG_BIT				(0x01)
#define MASNDDRV_WT_FLAG_BIT				(0x02)
#define MASNDDRV_ST_FLAG_BIT				(0x04)
#define MASNDDRV_HV_FLAG_BIT				(0x08)
#define MASNDDRV_MASTERL_FLAG_BIT			(0x20)
#define MASNDDRV_MASTERR_FLAG_BIT			(0x40)
#define MASNDDRV_MAX_VOLUME_SHIFT			(3)

/* for MaSndDrv_SetKey */
#define MASNDDRV_MIN_KEYCTRL				(-12)
#define MASNDDRV_MAX_KEYCTRL				(12)

/* for MaSndDrv_SetKeyControl */
#define MASNDDRV_KEYCTRL_NONE				(0)
#define MASNDDRV_KEYCTRL_OFF				(1)
#define MASNDDRV_KEYCTRL_ON					(2)

/* for MaSndDrv_SetHvVoice */
#define MASNDDRV_MAX_HVVOICE_SIZE			(46)

/* for MaSndDrv_SetCommand */
#define MASNDDRV_CMD_NOTE_ON				(0)
#define MASNDDRV_CMD_NOTE_ON_MA2			(1)
#define MASNDDRV_CMD_NOTE_ON_MA2EX			(2)
#define MASNDDRV_CMD_NOTE_OFF				(3)
#define MASNDDRV_CMD_NOTE_OFF_MA2			(4)
#define MASNDDRV_CMD_NOTE_OFF_MA2EX			(5)
#define MASNDDRV_CMD_PROGRAM_CHANGE			(6)
#define MASNDDRV_CMD_MODULATION_DEPTH		(7)
#define MASNDDRV_CMD_CHANNEL_VOLUME			(8)
#define MASNDDRV_CMD_PANPOT					(9)
#define MASNDDRV_CMD_EXPRESSION				(10)
#define MASNDDRV_CMD_HOLD1					(11)
#define MASNDDRV_CMD_ALL_SOUND_OFF			(12)
#define MASNDDRV_CMD_RESET_ALL_CONTROLLERS	(13)
#define MASNDDRV_CMD_ALL_NOTE_OFF			(14)
#define MASNDDRV_CMD_MONO_MODE_ON			(15)
#define MASNDDRV_CMD_POLY_MODE_ON			(16)
#define MASNDDRV_CMD_PITCH_BEND				(17)
#define MASNDDRV_CMD_BEND_RANGE				(18)
#define MASNDDRV_CMD_STREAM_ON				(19)
#define MASNDDRV_CMD_STREAM_OFF				(20)
#define MASNDDRV_CMD_STREAM_SLAVE			(21)
#define MASNDDRV_CMD_STREAM_PANPOT			(22)
#define MASNDDRV_CMD_MASTER_VOLUME			(23)
#define MASNDDRV_CMD_SYSTEM_ON				(24)
#define MASNDDRV_CMD_USER_EVENT				(29)
#define MASNDDRV_CMD_NOP					(30)
#define MASNDDRV_CMD_SET_LED_SYNC_CH		(31)
#define MASNDDRV_CMD_SET_MOTOR_SYNC_CH		(32)
#define MASNDDRV_CMD_STREAM_PAUSE			(33)
#define MASNDDRV_CMD_STREAM_RESTART			(34)
#define MASNDDRV_CMD_VOL_DIRECT				(35)
#define MASNDDRV_CMD_SET_LPFQ				(36)
#define MASNDDRV_CMD_SET_LPFCOF				(37)
#define MASNDDRV_CMD_HV_NOTE_ON				(40)
#define MASNDDRV_CMD_HV_NOTE_OFF			(41)
#define MASNDDRV_CMD_HV_PROGRAM_CHANGE		(42)
#define MASNDDRV_CMD_HV_PITCH_BEND			(43)
#define MASNDDRV_CMD_HV_BEND_RANGE			(44)
#define MASNDDRV_CMD_HV_PROSODIC_BEND_RANGE	(45)
#define MASNDDRV_CMD_HV_CHANNEL_VOLUME		(47)
#define MASNDDRV_CMD_HV_PANPOT				(48)
#define MASNDDRV_CMD_HV_ALL_SOUND_OFF		(50)
#define MASNDDRV_CMD_STREAM_SEEK			(51)
#define MASNDDRV_CMD_HV_EVENT				(52)
#define MASNDDRV_CMD_COASE_TUNE				(53)
#define MASNDDRV_CMD_FINE_TUNE				(54)

#define MASNDDRV_NUM_COMMAND				(55)
#define MASNDDRV_MAX_COMMAND				MASNDDRV_CMD_FINE_TUNE

#define MASNDDRV_CTRL_OFF					(0)
#define MASNDDRV_CTRL_ON					(1)

#define MASNDDRV_MAX_NOPTYPE				(1)			/* maximum value of nop type */
#define MASNDDRV_MAX_USEREVENT				(127)		/* maximum value of user event */
#define MASMW_MAX_USEREVENT					(127)		/* maximum value of user event */
#define MASNDDRV_MAX_KEY					(127)		/* maximum value of key */
#define MASNDDRV_MAX_VELOCITY				(127)		/* maximum value of velocity */
#define MASNDDRV_MAX_BANK					(255)		/* maximum value of bank number */
#define MASNDDRV_MAX_PROGRAM				(127)		/* maximum value of program number */
#define MASNDDRV_MAX_DEPTH					(4)			/* maximum value of modulation depth */
#define MASNDDRV_MAX_VOLUME					(127)		/* maximum value of volume */
#define MASNDDRV_MAX_PAN					(127)		/* maximum value of panpot */
#define MASNDDRV_MAX_HOLD1					(1)			/* maximum value of hold1 */
#define MASNDDRV_MAX_BEND					(0x3FFF)	/* maximum value of pitch bend */
#define MASNDDRV_MAX_BENDRANGE				(24)		/* maximum value of bend range */
#define MASNDDRV_MAX_FORMAT					(3)			/* maximum value of format */
#define MASNDDRV_MAX_STREAMPAN				(255)		/* maximum value of stream panpot */
#define MASNDDRV_MIN_STREAMFS				(4000)		/* minimum value of stream frequency */
#define MASNDDRV_MAX_STREAMFS				(48000)		/* maximum value of stream frequency */
#define MASNDDRV_MAX_LPFQREL				(127)		/* maximum relative value of lpf q */
#define MASNDDRV_MAX_LPFCOFREL				(127)		/* maximum relative value of cutoff frequency */
#define MASNDDRV_MAX_HV_PROGRAM_NO			(31)		/* maximum value of program number for HV */
#define MASNDDRV_MAX_HV_EFFECTIVE_PROGNO	(15)		/* maximum value of program number without bit7 */
#define MASNDDRV_MAX_HV_PROSODIC_BENDRANGE	(60)		/* maximum value of prosodic bend range for HV */
#define MASNDDRV_MAX_WAVEID					(31)		/* maximum value of wave ID */
#define MASNDDRV_MAX_HVSID					(63)		/* maximum value of HV-Script ID */
#define MASNDDRV_HV_SOUND_OFF				(127)		/* HV sound off ID */
#define MASNDDRV_MAX_COASETUNE				(0x7F)		/* maximum value of coase tune */
#define MASNDDRV_MAX_FINETUNE				(0x3FFF)	/* maximum value of fine tune */


/* struct definitions for MaSound_Control */

typedef struct _MASMW_CONTENTSINFO
{
	UINT16	code;						/* code type */
	UINT8	tag[2];						/* tag name */
	UINT8*	buf;						/* pointer to read buffer */
	UINT32	size;						/* size of read buffer */
} MASMW_CONTENTSINFO, *PMASMW_CONTENTSINFO;

typedef struct _MASMW_PHRASELIST
{
	UINT8	tag[2];						/* tag name */
	UINT32	start;						/* start point */
	UINT32	stop;						/* stop point */
} MASMW_PHRASELIST, *PMASMW_PHRASELIST;

typedef struct _MASMW_EVENTNOTE
{
	UINT8	ch;							/* channel number */
	UINT8	note;						/* note number */
} MASMW_EVENTNOTE, *PMASMW_EVENTNOTE;

typedef struct _MASMW_HVDICTIONARY
{
	UINT8 *	pbBuf;						/* pointer to dictionary buffer */
	UINT32	dSize;						/* size of dictionary buffer */
} MASMW_HVDICTIONARY, *PMASMW_HVDICTIONARY;

typedef struct _MASMW_HVVOICEPARAM
{
	UINT8 	bProgNo;					/* Program No */
	UINT8*	pbBuf;						/* pointer to dictionary buffer */
	UINT32	dSize;					/* size of dictionary buffer */
} MASMW_HVVOICEPARAM, *PMASMW_HVVOICEPARAM;

typedef struct _MASMW_HVSCRIPT
{
	UINT8 *pbBuf;
	UINT32 dSize;
} MASMW_HVSCRIPT, *PMASMW_HVSCRIPT;


SINT32 MaSndDrv_Initialize		( void );
SINT32 MaSndDrv_End				( void );
SINT32 MaSndDrv_Create			( UINT32 dSeqType, UINT32 dTimeBase, UINT32 dResMode, UINT32 dCnvMode, UINT32 dStream, 
								  UINT32 dAlCh, SINT32 (*pFunc)(void), UINT32 *pdRamAdrs, UINT32 *pdRamSize );
SINT32 MaSndDrv_Free			( SINT32 sdSeqId );
SINT32 MaSndDrv_GetPos			( SINT32 sdSeqId );
SINT32 MaSndDrv_SetSpeed		( SINT32 sdSeqId, UINT32 dVal );
SINT32 MaSndDrv_SetKey			( SINT32 sdSeqId, SINT32 sdVal );
SINT32 MaSndDrv_SetKeyControl	( SINT32 sdSeqId, UINT32 dCh, UINT32 dVal );
SINT32 MaSndDrv_SetFmExtWave	( SINT32 sdSeqId, UINT32 dWaveNo, UINT32 dRamAdrs );
SINT32 MaSndDrv_SetVolume		( SINT32 sdSeqId, UINT32 dVolume, UINT32 dCtrl );
SINT32 MaSndDrv_SetVoice		( SINT32 sdSeqId, UINT32 dBank, UINT32 dProg, UINT32 dSynth, UINT32 dKey, UINT32 dAddress );
SINT32 MaSndDrv_GetVoice		( SINT32 sdSeqId, UINT32 dBank, UINT32 dProg );
SINT32 MaSndDrv_SetStream		( SINT32 sdSeqId, UINT32 dWaveId, UINT32 dFormat, UINT32 dFrequency, UINT8 * pbWave, UINT32 dWaveSize );
SINT32 MaSndDrv_SetHVVoice		( SINT32 sdSeqId, UINT32 dProgNo, UINT8 *pbVoice, UINT32 dSize );
SINT32 MaSndDrv_SetHVDictionary	( SINT32 sdSeqId, UINT8 *pbDict, UINT32 dSize, UINT32 dMode, void *pvExtArgs );
SINT32 MaSndDrv_SetALVoice		( SINT32 sdSeqId, UINT32 dBankNo, UINT32 dProgNo, UINT8 *pbParam, UINT32 dParamSize );
SINT32 MaSndDrv_SetBalance		( SINT32 sdSeqId, UINT32 dLVol, UINT32 dRVol );
SINT32 MaSndDrv_SetVolShift		( SINT32 sdSeqId, UINT32 dVal, UINT32 dCtrl );
SINT32 MaSndDrv_SetCommand		( SINT32 sdSeqId, SINT32 sdDeltaTime, UINT32 dCmd, UINT32 dParam1, UINT32 dParam2, UINT32 dParam3 );
SINT32 MaSndDrv_ControlSequencer( SINT32 sdId, UINT32 dCtrl );

SINT32 MaSndDrv_DeviceControl	( UINT32 dCmd, UINT32 dParam1, UINT32 dParam2, UINT32 dParam3 );
SINT32 MaSndDrv_UpdateSequence	( SINT32 sdId, UINT8 * pbBuf, UINT32 dBufSize );
SINT32 MaSndDrv_ResetPos		( SINT32 sdSeqId );
UINT32 MaSndDrv_Mix40LogVol		( UINT32 dVol1, UINT32 dVol2);
UINT32 MaSndDrv_Convert20to40Log( UINT32 dVol );


#endif /*__MASNDDRV_H__*/

⌨️ 快捷键说明

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