1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム MIDI音源メロディ(うさぎ)

●パソコンに内蔵されたMIDI音源で音楽(メロディ)を演奏するプログラムです。
●リンク時にライブラリ winmm.lib の指定を追加する必要があります。
●童謡「うさぎ」は著作権の保護期間が過ぎてパブリックドメインとなっています。
 ≫ソースファイルのダウンロード: midi_usagi01-1.c

【問題】
●音色を変更してみよう。(鳴らない音もあります)
●コマンドライン引数で音色を渡せるようにしてみよう。
●曲を変更してみよう。
 ※著作権が有効な曲は権利侵害にならないよう注意しよう。

/*********************************/
/*  MIDI音源                 */
/*  うさぎ                       */
/*  リンク時に winmm.lib を追加  */
/*********************************/
#include <windows.h>
#include <stdio.h>

//--音階データ(-1 は最後の印)--
int   onkai [128]={  65,65,69,71,69,71,                // ファ,ファ,ラ,シ,ラ,シ,
                     65,65,65,69,71,69,71,             // ファ,ファ,ファ,ラ,シ,ラ,シ,
                     69,71,72,72,71,69,69,65,64,       // ラ,シ,ド,ド,シ,ラ,ラ,ファ,ミ,
                     69,65,64,65,64,62,64,-1           // ラ,ファ,ミ,ファ,ミ,レ,ミ
                  };

//--音の長さデータ(ミリ秒)--
int   nagasa[128]={ 1000,500,500,500,500,1000,
                    500,500,500,500,500,500,1000,
                    500,500,500,500,500,250,250,500,500,
                    500,500,1000,500,500,1000,1000
                  };

void  main( )
{
  HMIDIOUT hmo;     // MIDI出力デバイスのハンドル
  int   neiro=  4;  // 音色(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出力デバイスを閉じる
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: info@saeki-pe.com