VL-BASICのPLAY(MML)をSMF(.mid)に変換(ver0.0002)

 

ver0.0001のtxt2mid.exeで.midを.txtに変換した際に、

17バイト/行の表示を16バイト/行に修正しました。

また、tron2txt.exeを廃止しtron2txt2.exeをtron2txt.exe

にしました。

 

変換サンプルのtron.basをVLBasic01.exeに重ねると

PLAY(MML)演奏を.midに変換して再生します。

tron2.txt.exeとtxt2mid.exeの使い方は以下を読んで

下さい。

 

N88-BASIC(PC-9801)、NL-BASIC、VL-BASICのPLAY(MML)

VL-BASICのMPU PLAY(MPU MIDI)などの

演奏データをSMF(Standard MIDI File)

~.midに変換する方法を紹介します。

(ただし、VL-BASICで動くものに限ります)

 

mid20712.zip(tron2txt.exe、txt2mid.exe、tron.bas)

とVL-BASICは以下からダウンロードして下さい。

VL-BASIC(N88-BASIC互換?)ホームページへのリンク

ホームページに書いてあるパスワードを入力して、

Readme.txtを読んで、遊んで見て下さい。

すべて、windows用です。

 

次の3Stepで変換します。

 

変換方法(MPU TRONの出力をa.txtで説明)

Step1

VL-BASICを起動し、

LOAD "ファイル名" で演奏プログラムをロードします。

CMD MPU ON

MPU TRON("a")

RUN 音はなりませんが演奏データ(MIDI)を出力します。

MPU TROFF ファイルをクローズします。

 

Step2

a.txtを

tron2txt.exe

に重ねる

 

Step3

a_txt.txtを

txt2mid.exe

に重ねる

a_txt_txt.midを

MIDIプレーヤーで演奏

 

もう少し、詳しく解説

 

Step1

VL-BASICのPLAYやMPU PLAYなどで演奏した。

データ(MIDI)をファイルに出力します。

 

LOAD "ファイル名" で演奏プログラムをロードします。

CMD MPU ON

MPU TRON("a") aは任意のファイル名

RUN 音はなりませんが演奏データ(MIDI)を出力します。

MPU TROFF ファイルをクローズします。

 

a.txtができます。

内容は

wait(msec), midiデータ...

...

です。

 

Step2

tron2txt.exe

a.txtを重ねるとa_txt.txtを出力します。

重ねるファイル名に.が複数個あると誤動作します。

 

a.txtのwaitをSMF(Standard MIDI File)の

wait形式に変換しヘッダーを付けます。

二進数で(16進では最大FFFFFFF)

aaaa bbbbbbbb cccccccc dddddddd

は、SMF形式では(16進では最大FFFFFF7F)

1aaaabbb 1bbbbbcc 1ccccccd 0ddddddd

1byteの最上位bitが1は続きがあり

0はそこで終わりという符号で、

1バイト7bitで数値を表します。

十進    16進         SMF16進

0   →  0 00 00 00 →    00

127 →  0 00 00 7F →    7F

128 →  0 00 00 80 → 81 00

255 →  0 00 00 FF → 81 7F

256 →  0 00 01 00 → 82 00

 

Step3

txt2mid.exe

a_txt.txtを重ねるとa_txt_txt.midを出力します。

重ねるファイル名に.が複数個あると誤動作します。

 

.txtは.midに、それ以外は.txtに変換します。

 

バイナリファイルを、16進数のダンプリストにして

テキストファイルに出力します。

 

4D,54,68,64,00,00,00,06,00,00,00,01,01,E0,4D,54,72 ; MThd・・・・・・・・・潼T

....

 

また、16進を,で区切った(;はコメント)テキストファイルを

バイナリーに変換できます。

(拡張子は.midになりますが、必要に応じて変更して下さい。)