SMF(Standard MIDI files)の解説サイトを見つけましたので

勝手にリンク貼っておきます

 

 

 

このブログの

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

で紹介している

txt2mid.exe(VL,NL,XL-BASICに付属)

でバイナリーとテキストファイルの相互変換が

出来ますので

SMF(~.mid)をメモ帳(Windows標準添付)で編集できます

 

VL,NL,XL-BASICのダウンロードは下記へ

 

線画のサイト見つけましたので勝手にリンク貼っておきます

 

http://iradukai.com/nurie2.htm

 

 

 

 

http://iradukai.com/

 

 

保存した画像をwindows付属のペイントで24bitBMP640:400の

画像に変換して、このブログで公開している

PC-9801GVRAM(B,R,G,I)とBMP(24bit)の相互変換

の8色用変換でPC-9801GVRAM(B,R,G)にして、

N88-BASICのPAINTで色を塗る等の使い方が出来ると思います。

 

著作権はよく分からないので公開して良いかは分かりませんが

個人で楽しむ分には良いのではないでしょうか。

 

 

 

 

PC-9801GVRAM(B,R,G,I)とBMP(24bit)の相互変換

 

bmp20712.zipとNL-BASICは以下のリンクから

ダウンロードできます。

NL-BASIC(N88-BASIC互換?)ホームページ

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

 

----------------------------------------------------------------------
説明 bmp2pc98.exe (~.bmp → ~_?.bin ?=b,r,g)
----------------------------------------------------------------------
24bit BMPファイル(.bmp)をPC-9801のGVRAM(B,G,R)データに変換します
 
bmp2pc98.txt(bmp2pc98.exe用、設定ファイル、初めの3行が有効)
170, 170, 170 ; b, r, g 以上→b,r,g=1 未満→b,r,g=0 16色用
255, 255, 255 ; b, r, g 以上→    i=0 未満→    i=1
127, 127, 127 ; b, r, g 未満→    i=0 以上→    i=1
255, 255, 255 ; b, r, g 以上→b,r,g=1 未満→b,r,g=0  8色用
  0,   0,   0 ; b, r, g 以上→    i=0 未満→    i=1
256, 256, 256 ; b, r, g 未満→    i=0 以上→    i=1
 
a.bmpをbmp2pc98.exeに重ねると、a_b.bin、a_g.bin、a_r.binが生成されます
640×400に伸縮させていますので、640:400の比でないと縦横に伸びます
ペイントなどで640:400に編集して下さい
 
vramload8.bas(8色用),vramload16.bas(16色用)
(確認用、vramload8.bas,vramload16.basは自由に変更してご使用下さい)
aを入力するとa_b.bin、a_r.bin、a_g.bin、(a_i.bin)を
GVRAMに読み込んで表示します
 
----------------------------------------------------------------------
説明 bmp2pc98.exe (~_?.bin ?=b,r,g,i → ~_?.bmp)
----------------------------------------------------------------------
PC-9801のGVRAM(B,G,R,I)データを24bit BMPファイル(.bmp)に変換します
 
vramsave8.bas(8色用),vramsave16.bas(16色用)
(vramsave8.bas,vramsave16.basは自由に変更してご使用下さい)
a,ライン数を入力するとa_b.bin、a_r.bin
、a_g.bin、a_i.binを出力します。
ライン数は~400です。
 
a_b.bin、a_r.bin、a_g.binn、a_i.binの内どれか1つ、例えばa_b.binを
bmp2pc98.exeに重ねると、ライン数が400に引き伸ばされた
a_b.bmpファイルを出力します。
 
ファイルは_b,_r,_gの3種類必要なので、モノクロの場合は、
例えば_bをコピーして_r,_gを作ってください。
_iが無ければ8色、_iが有れば16色になります。
 

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になりますが、必要に応じて変更して下さい。)