亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? marmdcnv.c

?? 是一個(gè)手機(jī)功能的模擬程序
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
		gpRmdInfo->dFineTune[dCh] |= (dVal & 0x7f);
		return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_FINE_TUNE, dCh, gpRmdInfo->dFineTune[dCh], 0));
	}
	return (MASMW_SUCCESS);
}


/****************************************************************************
 *	SendAllSoundOff(UINT32 dCh)
 *
 *	Description
 *		Send AllSoundOff message
 *	Param
 *		dCh			...	#Channel(0..15)
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendAllSoundOff(UINT32 dCh)
{
	MARMDCNV_DBGMSG(("SendAllSoundOff[%ld] \n", dCh));

	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_ALL_SOUND_OFF, dCh, 0, 0));
}


/****************************************************************************
 *	SendAllNoteOff(UINT32 dCh)
 *
 *	Description
 *		Send AllNoteOff message
 *	Param
 *		dCh			...	#Channel(0..15)
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendAllNoteOff(UINT32 dCh)
{
	MARMDCNV_DBGMSG(("SendAllNoteOff[%ld] \n", dCh));

	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_ALL_NOTE_OFF, dCh, 0, 0));
}


/****************************************************************************
 *	SendResetAllCtl(UINT32 dCh)
 *
 *	Description
 *		Send ResetAllControllers message
 *	Param
 *		dCh			...	#Channel(0..15)
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendResetAllCtl(UINT32 dCh)
{
	MARMDCNV_DBGMSG(("SendResetAllCtl[%ld] \n", dCh));

	gpRmdInfo->dRPNTable[dCh] = 0x7F7F;
	gpRmdInfo->dExpressionTable[dCh] = 127;

	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_RESET_ALL_CONTROLLERS, dCh, 0, 0));
}


/****************************************************************************
 *	SendMonoOn(UINT32 dCh, UINT32 dVal)
 *
 *	Description
 *		Send MonoOn message
 *	Param
 *		dCh			...	#Channel(0..15)
 *		dVal		... 
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendMonoOn(UINT32 dCh, UINT32 dVal)
{
	MARMDCNV_DBGMSG(("SendMonoOn[%ld] \n", dCh));

	if (dVal != 1) return (MASMW_SUCCESS);

	MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_ALL_NOTE_OFF, dCh, 0, 0);
	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_MONO_MODE_ON, dCh, 0, 0));
}


/****************************************************************************
 *	SendPolyOn(UINT32 dCh, UINT32 dVal)
 *
 *	Description
 *		Send PolyOn message
 *	Param
 *		dCh			...	#Channel(0..15)
 *		dVal		... 
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendPolyOn(UINT32 dCh, UINT32 dVal)
{
	MARMDCNV_DBGMSG(("SendPolyOn[%ld] \n", dCh));

	if (dVal != 0) return (MASMW_SUCCESS);

	MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_ALL_NOTE_OFF, dCh, 0, 0);
	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_POLY_MODE_ON, dCh, 0, 0));
}


/****************************************************************************
 *	SendControl(UINT32 dCh, UNIT32 dMsg2, UINT32 dMsg3)
 *
 *	Description
 *		Control messages
 *	Param
 *		dCh			...	#Channel(0..15)
 *		dMsg2		...	Param-1
 *		dMsg3		...	Param-2
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendControl(UINT32 dCh, UINT32 dMsg2, UINT32 dMsg3)
{
	MARMDCNV_DBGMSG(("SendControl[%ld, %ld, %ld] \n", dCh, dMsg2, dMsg3));

	switch (dMsg2)
	{
	case 0x00:	/* Bank select(MSB) */
		gpRmdInfo->dBankTable[dCh] = (gpRmdInfo->dBankTable[dCh] & 0x00FF) | ((UINT32)dMsg3 << 8);
		break;
    
    case 0x20:	/* Bank select (LSB) */
		gpRmdInfo->dBankTable[dCh] = (gpRmdInfo->dBankTable[dCh] & 0xFF00) | ((UINT32)dMsg3);
		break;

	case 0x01:
		return (SendModDepth(dCh, dMsg3));

	case 0x06:
		return (DataEntryMSB(dCh, dMsg3));

	case 0x07:
		return (SendChVol(dCh, dMsg3));

	case 0x0A:
		return (SendPanpot(dCh, dMsg3));

	case 0x0B:
		return (SendExpression(dCh, dMsg3));

	case 0x26:
		return (DataEntryLSB(dCh, dMsg3));

	case 0x40:
		return (SendHold1(dCh, dMsg3));


	case 0x62:	/* NRPN (LSB) */
	case 0x63:	/* NRPN (MSB) */
		gpRmdInfo->dRPNTable[dCh] |= 0x8000;
		break;

	case 0x64:	/* RPN (LSB) */
		gpRmdInfo->dRPNTable[dCh] = (gpRmdInfo->dRPNTable[dCh] & 0x7F00) | ((UINT32)dMsg3);
		break;

	case 0x65:	/* RPN (MSB) */
		gpRmdInfo->dRPNTable[dCh] = (gpRmdInfo->dRPNTable[dCh] & 0x007F) | ((UINT32)dMsg3 << 8);
		break;

	case 0x78:
		return (SendAllSoundOff(dCh));

	case 0x7B:
		return (SendAllNoteOff(dCh));

	case 0x79:
		return (SendResetAllCtl(dCh));

	case 0x7e:
		return (SendMonoOn(dCh,dMsg3));
		
	case 0x7f:
		return (SendPolyOn(dCh, dMsg3));

	default:
		return (MASMW_SUCCESS);
	}
	return (MASMW_SUCCESS);
}


/****************************************************************************
 *	SendPitchBend(UINT32 dCh, UNIT32 dLl, UINT32 dHh)
 *
 *	Description
 *		Send PitchBend message
 *	Param
 *		dCh			...	#Channel(0..15)
 *		dLl			...	Lower 7bit of PitchBend (0..127)
 *		dHh			...	Upper 7bit of PitchBend (0..127)
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendPitchBend(UINT32 dCh, UINT32 dLl, UINT32 dHh)
{
	MARMDCNV_DBGMSG(("SendPitchBend[%ld] = %ld\n", dCh, dHh));

	return (MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_PITCH_BEND, dCh, ((dHh << 7) | (dLl)), 0));
}


/****************************************************************************
 *	SendGmOn(void)
 *
 *	Description
 *		Send GM_ON message
 *	Param
 *		none
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
static SINT32	SendGmOn(void)
{
	SINT32	sdRet;
	UINT32	dCh;
	
	MARMDCNV_DBGMSG(("SendGmOn\n"));

	gpRmdInfo->dMaxGain = RMD_MAX_GAIN;
	gpRmdInfo->dMasterVolume = 127;
	for (dCh = 0; dCh < 16; dCh++)
	{
		SendAllSoundOff(dCh);
		gpRmdInfo->dRPNTable[dCh] = 0x7f7f;
		gpRmdInfo->dBankTable[dCh] = (dCh == 9) ? 0x7800 : 0x7900;
		gpRmdInfo->dChVolumeTable[dCh] = 100;
		gpRmdInfo->dExpressionTable[dCh] = 127;
	}
	sdRet = MaSndDrv_SetCommand(gpRmdInfo->sdSeqID, -1, MASNDDRV_CMD_SYSTEM_ON, 0, 0, 0);
	if (sdRet < 0) return (sdRet);
	sdRet = SendMasterVolume(gpRmdInfo->dMaxGain);
	return (sdRet);
}


/****************************************************************************
 *	Decode7Enc(UINT8* pbSrc, UINT32 dSrcSize, UINT8* pbDst, UINT32 dDstSize)
 *
 *	Desc.
 *		7bit->8bit decoder
 *	Param
 *		pbSrc		Pointer to the source
 *		pbSrcSize	Size of the source[byte]
 *		pbDst		Pointer to the destination
 *		pbDstSize	Size of the destination[byte]
 *	Return
 *      size of decoded data
 ****************************************************************************/
static UINT32 Decode7Enc(UINT8* pbSrc, UINT32 dSrcSize, UINT8* pbDst, UINT32 dDstSize)
{
	UINT32	i, j;
	UINT8*	pbEnd;
	UINT8	bTag;
	
	i = 0;
	pbEnd = pbSrc + dSrcSize;

	while (i < dDstSize)
	{
		bTag = *(pbSrc++);
		if (pbSrc >= pbEnd) break;
		
		for (j = 0; j < 7; j++)
		{
			bTag <<= 1;
			pbDst[i++] = (UINT8)((bTag & 0x80) | *(pbSrc++));
			if (pbSrc >= pbEnd) break;
			if (i >= dDstSize) return (i);
		}
	}
	return (i);
}



/*---------------------------------------------------------------------------*/
/*   Functions                                                               */
/*---------------------------------------------------------------------------*/

/****************************************************************************
 *	MaRmdCnv_Initialize(void)
 *
 *	Description
 *		Initialize RealtimeMIDI converter
 *	Param
 *		none
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
SINT32	MaRmdCnv_Initialize(void)
{
	gpRmdInfo = &gRmdInfo;
	gpRmdInfo->sdSeqID = -1;						/* Sequence ID      */
	gpRmdInfo->sdFileID = -1;						/* File ID          */
	gpRmdInfo->dOpend = 0;							/* 0:disabed        */
	gpRmdInfo->dNumOfLoaded = 0;					/*                  */

	return (MASMW_SUCCESS);
}


/****************************************************************************
 *	MaRmdCnv_End(void)
 *
 *	Description
 *		Ending of RealtimeMIDI converter
 *	Param
 *		none
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
SINT32	MaRmdCnv_End(void)
{
	return (MASMW_SUCCESS);
}


/****************************************************************************
 *	MaRmdCnv_Convert(void)
 *
 *	Description
 *		No effect
 *	Param
 *		none
 *	Return
 *		1 : Continue
 ****************************************************************************/
static SINT32	MaRmdCnv_Convert(void)
{
	if ((gpRmdInfo->dIntervalTime > 0) && (gpRmdInfo->pfnCallbackFunc != NULL))
	{
		gpRmdInfo->pfnCallbackFunc(RMD_INTERVAL_CB);
	}
	return (1);
}


/****************************************************************************
 *	MaRmdCnv_Load(UINT8* pbFile, UINT32 dFileSize, 
 *					UINT32 dMode, SINT32 (*pfnFunc)(UINT8 bID), void* pvExtArgs)
 *
 *	Description
 *		Load MIDI settings
 *	Param
 *		pbFile		... pointer to the data
 *		dFileSize	... size fo the data
 *		dMode		... error check (0:No, 1:Yes, 2:Check)
 *		pfnFunc		... pointer of rhe callback function
 *		pvExtArgs	... NULL
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
SINT32	MaRmdCnv_Load(UINT8* pbFile, UINT32 dFileSize, UINT32 dMode, SINT32 (*pfnFunc)(UINT8 bID), void* pvExtArgs)
{
	(void)pbFile;
	(void)dFileSize;
	(void)pvExtArgs;

	MARMDCNV_DBGMSG(("MaRmdCnv_Load\n"));

	if (dMode > 1) return (MASMW_SUCCESS);
	if (gpRmdInfo->dNumOfLoaded > 0) return (MASMW_ERROR);
	gpRmdInfo->dNumOfLoaded++;
	gpRmdInfo->pfnCallbackFunc = pfnFunc;
	gpRmdInfo->sdFileID = gpRmdInfo->dNumOfLoaded;
	gpRmdInfo->dIntervalTime = 0;

	return ((SINT32)gpRmdInfo->sdFileID);
}


/****************************************************************************
 *	MaRmdCnv_Unload(SINT32 sdFileID, void* pvExtArgs)
 *
 *	Description
 *		Unload MIDI settings
 *	Param
 *		sdFileID		...	file ID
 *		pvExtArgs		...	NULL
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
SINT32	MaRmdCnv_Unload(SINT32 sdFileID, void* pvExtArgs)
{
	(void)pvExtArgs;

	MARMDCNV_DBGMSG(("MaRmdCnv_Unload[%ld] \n", sdFileID));

	if ((sdFileID < 0) || (sdFileID != (SINT32)gpRmdInfo->sdFileID))
	{
		return (MASMW_ERROR);
	}

	gpRmdInfo->dNumOfLoaded = 0;
	gpRmdInfo->sdFileID = -1;

	return (MASMW_SUCCESS);
}


/****************************************************************************
 *	MaRmdCnv_Open(SINT32 sdFileID, void* pvExtArgs)
 *
 *	Description
 *		Enable MIDI
 *	Param
 *		sdFileID		...	file ID
 *		pvExtArgs		...	NULL
 *	Return
 *		0 : NoError, < 0 : Error
 ****************************************************************************/
SINT32	MaRmdCnv_Open(SINT32 sdFileID, void* pvExtArgs)
{
	UINT32	i;
	UINT32	dRam;
	UINT32	dSize;

	(void)pvExtArgs;
	
	MARMDCNV_DBGMSG(("MaRmdCnv_Open[%ld] \n", sdFileID));

	if ((sdFileID < 0) || (sdFileID != gpRmdInfo->sdFileID))
	{
		return (MASMW_ERROR);
	}

	gpRmdInfo->sdSeqID = MaSndDrv_Create(
			MASMW_SEQTYPE_DIRECT,
			gpRmdInfo->dIntervalTime,				/* Interval Timer       */
			4L,										/* 16+16 Mode           */
			7L,										/* 4-OP,GML,MA5VOL      */
			0L,										/* No Streams           */
			255L,									/* No AL                */
			MaRmdCnv_Convert,						/*                      */
			&dRam,									/*                      */
			&dSize);								/*                      */

	MARMDCNV_DBGMSG(("MaRmdCnv_Open/SeqID=%ld \n", gpRmdInfo->sdSeqID));
	if (gpRmdInfo->sdSeqID < 0) return (gpRmdInfo->sdSeqID);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日产欧美一区二区三区| 成人国产精品免费观看动漫| 亚洲大片精品永久免费| 亚洲欧美另类久久久精品| 国产精品国模大尺度视频| 久久久久久久av麻豆果冻| 国产亚洲短视频| 国产三级精品三级在线专区| 中文字幕精品三区| 国产精品久久久久9999吃药| 亚洲欧美一区二区久久| 一区二区三区日韩在线观看| 亚洲电影在线免费观看| 婷婷夜色潮精品综合在线| 日本不卡在线视频| 久久精品免费观看| 丁香啪啪综合成人亚洲小说| 粉嫩欧美一区二区三区高清影视| 成人免费视频app| 一本一道波多野结衣一区二区| 欧美亚洲免费在线一区| 欧美一区二区私人影院日本| xfplay精品久久| 中文字幕一区免费在线观看| 亚洲最新视频在线观看| 麻豆精品在线看| 成人午夜av电影| 日本大香伊一区二区三区| 欧美美女黄视频| 久久久久久久久岛国免费| |精品福利一区二区三区| 天堂成人国产精品一区| 精品一二线国产| jlzzjlzz国产精品久久| 欧美人狂配大交3d怪物一区| 久久综合久久综合久久| 综合自拍亚洲综合图不卡区| 三级欧美在线一区| 国产成人精品亚洲777人妖| 在线观看亚洲a| 欧美tickling挠脚心丨vk| 综合色中文字幕| 美女诱惑一区二区| 99久久综合精品| 91精品国产高清一区二区三区蜜臀 | 99久久综合精品| 69av一区二区三区| 一区在线观看免费| 免费av成人在线| 91麻豆精东视频| 欧美变态tickle挠乳网站| 亚洲欧洲日韩一区二区三区| 亚洲午夜激情av| 成人综合婷婷国产精品久久蜜臀| 精品视频在线看| 欧美国产激情一区二区三区蜜月| 亚洲成a人v欧美综合天堂| 国产91综合一区在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 久久精品男人天堂av| 亚洲伊人伊色伊影伊综合网| 国产精品正在播放| 91麻豆精品国产无毒不卡在线观看| 中文字幕精品一区二区精品绿巨人| 天天综合天天做天天综合| 成人高清av在线| 26uuu另类欧美| 免费在线观看成人| 在线视频一区二区三区| 中文字幕精品三区| 精品无人区卡一卡二卡三乱码免费卡| 欧美午夜片在线观看| 欧美经典一区二区| 精品综合久久久久久8888| 欧美日本在线一区| 一区二区三区在线观看国产| 国产精品一区二区在线播放| 91精品国产福利在线观看| 亚洲精品免费在线观看| 成人永久看片免费视频天堂| 精品国产电影一区二区| 日韩电影在线看| 欧美日韩一区三区四区| 亚洲影视在线播放| 91黄色小视频| 亚洲欧洲国产专区| 成人午夜电影久久影院| 久久精品欧美日韩| 国产成人午夜视频| 亚洲在线视频一区| 99re6这里只有精品视频在线观看| 国产婷婷色一区二区三区四区| 精品在线你懂的| 日韩一卡二卡三卡四卡| 午夜精品福利一区二区三区蜜桃| 在线观看亚洲专区| 亚洲制服丝袜av| 欧美丝袜丝交足nylons| 亚洲一级在线观看| 欧美日韩国产小视频| 洋洋成人永久网站入口| 欧美网站一区二区| 午夜在线成人av| 欧美猛男gaygay网站| 午夜精品在线看| 欧美精品九九99久久| 免费在线看成人av| 日韩免费一区二区三区在线播放| 日本伊人色综合网| 91精品国产综合久久蜜臀| 奇米精品一区二区三区在线观看| 日韩一区二区视频| 国内精品伊人久久久久影院对白| 久久综合色鬼综合色| 丁香婷婷综合五月| 亚洲天堂久久久久久久| 91久久香蕉国产日韩欧美9色| 亚洲一卡二卡三卡四卡无卡久久 | 欧美在线999| 喷白浆一区二区| 欧美大肚乱孕交hd孕妇| 国产成人综合视频| 亚洲日本在线a| 欧美日韩日日摸| 蜜桃视频在线一区| 国产网站一区二区| 色综合一个色综合亚洲| 亚洲国产毛片aaaaa无费看| 欧美疯狂性受xxxxx喷水图片| 国模娜娜一区二区三区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲精品一区二区三区影院| 国产不卡高清在线观看视频| 亚洲精品视频一区二区| 日韩午夜在线播放| 国产成人综合自拍| 亚洲自拍偷拍图区| 精品成人私密视频| 色先锋资源久久综合| 日韩不卡手机在线v区| 欧美激情一区二区三区四区 | 国产精品丝袜一区| 欧美午夜精品一区二区蜜桃| 久久99精品久久只有精品| 亚洲欧洲成人av每日更新| 欧美久久一二区| 成人精品视频一区二区三区| 亚洲一区中文日韩| 久久久久国产精品麻豆ai换脸| 一本大道久久a久久综合婷婷| 久久精品免费观看| 又紧又大又爽精品一区二区| 精品精品欲导航| 色婷婷精品大在线视频 | 欧亚洲嫩模精品一区三区| 激情综合亚洲精品| 一区二区三区视频在线看| 亚洲精品一区二区三区四区高清| 色狠狠综合天天综合综合| 久草热8精品视频在线观看| 亚洲一区在线视频观看| 中文成人av在线| 日韩精品一区二区三区四区视频| 色乱码一区二区三区88| 国产成人精品免费视频网站| 日韩av在线发布| 一区二区三区免费网站| 国产欧美一区二区三区在线看蜜臀 | 欧美一二三区在线| 91福利资源站| 国产91丝袜在线播放0| 毛片av一区二区| 亚洲va天堂va国产va久| 国产精品国产成人国产三级 | 日韩av一二三| 亚洲精品久久久蜜桃| 国产婷婷色一区二区三区在线| 欧美精品丝袜久久久中文字幕| 99riav久久精品riav| 国产成人精品综合在线观看| 青青草伊人久久| 天堂一区二区在线免费观看| 亚洲视频图片小说| 国产精品久久久久影视| 欧美本精品男人aⅴ天堂| 91精品一区二区三区在线观看| 色婷婷激情久久| 99久久99久久精品国产片果冻| 国产成人在线免费| 韩国精品一区二区| 美女视频一区在线观看| 天天色 色综合| 午夜av区久久| 亚洲bt欧美bt精品777| 亚洲一区二区三区爽爽爽爽爽 | 麻豆精品一区二区av白丝在线| 图片区小说区区亚洲影院| 亚洲成av人片在线| 亚洲小说春色综合另类电影| 亚洲一区在线视频|