N88-BASICでランダムドット

 

下記リストをマウスで選択しCtrl+cでコピーし、

NL-BASICの画面でAlt+v(Ctrl+vではないので注意)

でプログラムを読込めます。

(Alt+6で高速化して下さい。Alt+2で元の速さになります。)

 

100 RANDOMIZE VAL(RIGHT$(TIME$, 2))

110 CLS 3

120 X = 320

130 Y = 200

140 FOR I=1 TO 10000

150   PSET(X,Y), INT(RND(1) * 7) + 1

160   IF I MOD 1000 = 0 THEN PRINT USING " #####"; I

170   K = 0

180   *RETRY

190     X1 = X

200     Y1 = Y

210     D = INT(RND(1) * 8)

220     IF D = 7 OR D = 0 OR D = 1 THEN X1 = X + 1

230     IF D = 3 OR D = 4 OR D = 5 THEN X1 = X - 1

240     IF D = 1 OR D = 2 OR D = 3 THEN Y1 = Y - 1

250     IF D = 5 OR D = 6 OR D = 7 THEN Y1 = Y + 1

260     K = K + 1

270   IF X1 < 0 OR X1 > 639      THEN *RETRY

280   IF Y1 < 0 OR Y1 > 399      THEN *RETRY

290   IF K < 8 AND POINT(X1, Y1) THEN *RETRY

300   X = X1

310   Y = Y1

320 NEXT

 

点をランダムに動かしているだけです。

? POINT(x, y)で点(x,y)の色を表示できます。

できるだけ、色が0(黒)の場所に点を打つように

してあります。

IF POINT(x, y) THENは

IF POINT(x, y) <> 0 THENと同じ動作をします。

 

NL-BASICは、下記リンクよりダウンロードできます。

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

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

 

 

 

 

 

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

 

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

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

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

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

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

 

mid20516.zip(tron2txt.exe、txt2mid.exe)、

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・・・・・・・・・潼Tr

....

 

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

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

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