/*********************************/ /* MIDI音源 */ /* アニーローリー */ /* リンク時に winmm.lib を追加 */ /*********************************/ #include #include //--音階-- // 60 ド // 62 レ // 64 ミ // 65 ファ // 67 ソ // 69 ラ // 71 シ // 72 ド //--音階データ(-1 は最後の印)-- int onkai [128]={ 64,62, // ミレ 60,60,72,71, // ドドドシ 71,69,69, // シララ 67,64,64,62,60, // ソミミレド 62,64,62, // レミレ 60,60,72,71, // ドドドシ 71,69,69, // シララ 67,64,62,60, // ソミレド 60, 0,67, // ド・ソ 72,72,74,74, // ドドレレ 76,67, // ミソ 72,72,74,74, // ドドレレ 76,76,74, // ミミレ 72,71,69,72,69, // ドシラドラ 67,64,64,62, // ソミミレ 60,72,64,62,60, // ドドミレド 60, // ド -1 }; //--音の長さデータ(ミリ秒)-- int nagasa[128]={ 375,125, 750,250,750,250, 500,1000,500, 750,250,500,250,250, 1500,375,125, 750,250,750,250, 500,1000,500, 750,250,750,250, 1000,500,500, 750,250,750,250, 1500,500, 750,250,750,250, 1500,375,125, 750,250,500,250,250, 500,1000,375,125, 250,500,250,750,250, 1500, }; void main( ) { HMIDIOUT hmo; // MIDI出力デバイスのハンドル //int neiro= 1; // 音色(1〜128)ピアノ int neiro= 11; // 音色(1〜128)Music Box //int neiro= 12; // 音色(1〜128)Vibraphone //int neiro= 72; // 音色(1〜128)クラリネット //int neiro= 74; // 音色(1〜128)フルート int i; printf("\nアニーローリー\n"); midiOutOpen(&hmo,MIDI_MAPPER,0,0,CALLBACK_NULL); // MIDI出力デバイスを開く midiOutShortMsg(hmo,0x000000C0|(neiro<<8)); // 音色を設定する for( i=0; onkai[i]!=-1; i++ ) // データの最後まで { //--音を出す-- midiOutShortMsg(hmo,0x7F0090|(onkai[i]<<8)); // MID出力デバイスにメッセージ送信 Sleep(nagasa[i]); // ミリ秒単位で待機 //--音を消す-- midiOutShortMsg(hmo,0x80|(onkai[i]<<8)); // MID出力デバイスにメッセージ送信 } midiOutClose(hmo); // MIDI出力デバイスを閉じる }