那现在我假定你已经知道midi的格式了。
你把midi格式丝毫不差地赋值给一段你申请的内存空间上,一种方法是申请char数组,之后把你的midi源抄写到char的基地址(用memcpy函数)。
之后打开或创建你的mid文件,用文件写函数(Write)写入你的char内存。
//-----------------------------播放音乐------------------------------MCI_OPEN_PARMS OpenParms
OpenParms.lpstrDeviceType =
(LPCSTR) MCI_DEVTYPE_SEQUENCER
OpenParms.lpstrElementName = (LPCSTR) "你播放的音乐.mid"
OpenParms.wDeviceID = 0
mciSendCommand (NULL, MCI_OPEN,
MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &OpenParms)
MCI_PLAY_PARMS PlayParms
PlayParms.dwFrom = 0
mciSendCommand (OpenParms.wDeviceID, MCI_PLAY,
MCI_FROM, (DWORD)(LPVOID)&PlayParms)
1.发声,有两种:一种主板的小扬声器,可以发出指定频率的声音;
二是通过声卡的MIDI,发出指定频率的声音;
2.标准的C语言不支持发声的,要调用WINDOWS API子程序才能发声;
所以,要知道你用的是什么C语言;
我用的是C++BUILDER,发声子程序网上可搜到。