以前、私がオリジナルで定義した音情報のフォーマットデータからMIDI音楽を再生するGUIプログラムを作成しました。また前回、MIDIファイルを保存するプログラムを紹介しました。今回はその2つを統合して、MIDIファイルを保存する機能をGUIプログラムに追加したので紹介しようと思います。

ソースコードはこちら

GUIプログラムの使い方

プログラムを実行した画面

使い方はいたってシンプルです。まずFileボタンを押して音楽を定義しているエクセルファイルを読み込みます。そのあとSaveボタンを押すと保存ダイアログが開き、ファイル名を指定してMIDIファイルを保存できます。

speedを変えると、指定した倍速に合わせて保存されるMIDIの速度も変わります。

※ 再生回数に関しては保存するMIDIファイルに影響しません。つまり、repeatに2以上の値を指定しても、保存される音の再生回数は1回のみです。

ソースコードの説明

以前紹介したGUIプログラムから、新たに追加した部分のソースコードを簡単に説明します。

GUIにSaveボタンを追加し、押されたときにsave_midi関数を実行するように指定しています。

save_midi関数では、保存するファイル名を尋ねるダイアログを表示し、ファイル名を取得します。その後は、前回紹介したプログラムとほぼ同じ内容の処理をしています。音の情報はグローバル変数doremi、octave、sharp、tempoに格納されているので、その内容に従って音情報をトラック変数trackに追加しています。

自分でいろいろな音楽を作って、気に入ったものができたらmidiファイルに保存してみてください。