VL-BASICでピポッ (1回目)

2022/6/15(水)
VL-BASICでピポッ (1回目)
 
MSGS(Windows標準ソフトウエアMIDI音源)の
正弦波(音色番号080 バンク[008/000] Sine wave)で
ピポッを再現しました
 
MSGSのBank selectについては次のサイトが参考に
なりましたので勝手にリンクを貼っておきます
MSGSで遊ぼう! (x68uec.org)
 
このサイトによりますと
システムエクスクルーシヴの
GS Reset(F0 41 10 42 12 40 00 7F 00 41 F7)hexを
送信しておかないとバンクが切り替わらないそうです
(hexは16進数の意味です)
 
VL-BASICでは
A$ = CHR$(&HF0)+CHR$(&H41)+CHR$(&H10)+CHR$(&H42)+CHR$(&H12)+CHR$(&H40)
A$ = A$        +CHR$(&H00)+CHR$(&H7F)+CHR$(&H00)+CHR$(&H41)+CHR$(&HF7)
MPU MIDI(A$)
で送信できます
&HF0は16進数のF0と言う意味で
CHR$(キャラクターコード&H00~&HFF)で文字に変換して
文字列A$を送信します
 
バンク切り替えは
bank select MSB = 008 (B0 00 08)hex
bank select LSB = 000 (B0 20 00)hex
です(LSBは常に0の様です)
 
VL-BASICでは
MPU MIDI(&H0800B0)
MPU MIDI(&H0020B0)
 
B0 00 08 は上位と下位バイトを逆にした&H0800B0を指定
します
なぜならIntel系CPUでは&H0800B0と言う数値は
メモリー内ではB0,00,08の順で格納されるからです
 
MPU MIDI(CHR$(&HB0)+CHR$(&H00)+CHR$(8))
MPU MIDI(CHR$(&HB0)+CHR$(&H20)+CHR$(0))
(&Hを付けなければ10進数になります)

MPU PLAY "@y&h0800b;@y&h0020b;"
でも送信可能です
 
Program chenge(音色変更)は80番を指定します
(C0 50)hex
(チャンネルは0~15(0~F)で、2チャンネルならC2です)
 
VL-BASICでは
MPU PLAY "@80"
または
MPU MIDI(&H50C0)

MPU MIDI(CHR$(&HC0)+CHR$(80))
で送信できます
 
音階
ト音記号のa(ラ、440Hz付近)をo4aで表します
t140は4分音符を1分間に140回鳴らす速度です
l16(L16)はこれ以降16分音符にすると言う意味です
l16a4aaa8は4分16分16分8分音符のラです
 
MPU PLAY "t140l16o6bo5b"
でピポッと鳴ります
o5bはo4bより1オクターブ高いシです
 
MPU PLAY は
MPU PLAY チャンネル0,チャンネル1,...
です
MPU PLAY "c", "e", "g"
でドミソの和音がでます
 
実はPC-9801互換?またはPC-8801FA互換?
PLAYやCMD PLAYには正弦波(@20)がありますので
 
PLAY "@20t144l16q8v15o6bo5b"
でピポッとなります
 
また、MPU PLAYではバンクを簡単に切替えることが
出来る仕様になっており
@nはn=bank*128+pc(音色080バンク[008/000]ならn=8*128+80=1104)
(bank使用の為、初めにGS Resetが送信されます)

VL-BASIC、とblg~.zip(pipo001v.bas)は 
このブログ(以下のリンク)から
ダウンロードできます
https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい




このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)