/*********************************/
/* MIDI音源 */
/* アニーローリー */
/* リンク時に winmm.lib を追加 */
/*********************************/
#include <windows.h>
#include <stdio.h>
//--音階--
// 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出力デバイスを閉じる
}
|