////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 //MIDIで音を鳴らす // INCLUDE mmsystem.h // LINK winmm.lib ////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 #include "mmsystem.h" void CShareDlg::OnButton97() { UINT nRc; //インストールされているMIDIの数を得る nRc = midiOutGetNumDevs(); if(nRc==0){ MessageBox("midiが使用できません"); return; } HMIDIOUT hMidiOut; //MIDIを開く nRc = midiOutOpen(&hMidiOut, -1, NULL, NULL, NULL); if(nRc != MMSYSERR_NOERROR ){ MessageBox("midiOutOpenでエラーが発生しました"); return; } DWORD dwCOMMAND; //コマンドを組み立てる dwCOMMAND = 0x7f3c90; //-- 7f → 音の強さ 00〜ff // -- 3c → 音 3c=ド 3d=ド# 3e=レ 3f=レ# 40=ミ 41=ファ // - 9 → 1001(b) = 音を鳴らす 1000(b) = 音を止める // - 0 → チャンネル番号 nRc = midiOutShortMsg(hMidiOut, dwCOMMAND); //コマンドを送って音を鳴らす(ここでは音を鳴らす) if(nRc != MMSYSERR_NOERROR ){ MessageBox("midiOutOpenでエラーが発生しました"); return; } dwCOMMAND = 0x7f3c80; //コマンドを組み立てる //-- 7f → 音の強さ 00〜ff // -- 3c → 音 3c=ド 3d=ド# 3e=レ 3f=レ# 40=ミ 41=ファ // - 8 → 1001(b) = 音を鳴らす 1000(b) = 音を止める // - 0 → チャンネル番号 nRc = midiOutShortMsg(hMidiOut, dwCOMMAND); //コマンドを送って音を鳴らす(ここでは音を止める) if(nRc != MMSYSERR_NOERROR ){ MessageBox("midiOutOpenでエラーが発生しました"); return; } //いきなりクローズすると音がまったく聞こえないのですこしSleepする Sleep(1000); //MIDIを閉じる nRc = midiOutClose(hMidiOut); if(nRc != MMSYSERR_NOERROR ){ MessageBox("midiOutCloseでエラーが発生しました"); return; } }