/*********************************/
/*  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出力デバイスを閉じる
}
   
   |