グラフィックが拡大されたSCREEN3で何かできないか考えています。
SCREEN3はSCREEN2のグラフィックがモザイク表示になるだけの用途で
ポケコンのような超低解像度モードを再現できることでドットゲームが
作れるくらいのものでしたが
MSX2の機能が拡張されて15色から512色をパレットで選べました。
これでマーカーなどを自由な色に設定できるので便利ですね。
ドットの大きさがわかるように文字を配置して、
とりあえず赤緑青黄色の3階調の12色を表示してみました。
音楽のツールは同時再生は3チャンネルですが
最大で12パッドまで選べる設計です。
FM音源の遅延の問題がクリアできそうにないのでPSG音源で
SOUND命令のレジスタ単位の設定でリズムを仮に作って
FM音源で再生できるようにしたいです。
PSGでリズム音をPLAYできるようにしてみました。
前回設定した色とパッドにする音の設定とリズムパターンを入れました。
MSXパソコンはPSGは3チャンネルで最大3和音までになります。
メロディパートが1とペースとリズムパートが2パートですが
SEが入る場合はミュートされてメロディパートのみの演奏になりますね。
GUIの基本的な表示はできたのでいろいろと試してみたいです。
さらにどんな感じにプログラムを作っていこうかと
いろいろと調べた結果、ベースにリズム加えたパターンが多いですね。
ここではリズムパターンを使って
例えばゲームミュージックのジャンルで代表的なタッタカ、タッタカというリズム
ドレミファソラシはCDEFGABで、ここではDのレの音になります。
PLAY"SM3000O3L8dd16d16"の4回の繰り返しで
A$="dd16d16":fori=1to3:p$=p$+a$:next:play "SM3000O3L8"+p$
のようにできるようにしたいですね。
L8は全音8分音符指定で部分的に16分音符に変えたい場合は
音のあとに数字をd16というふうに指定します。
こんなふうMSXBASICで書きますが何度も実行すると
Out of string spaceというエラーが出ます。
これはバッファが足りなくなるエラーでバッファをclearで初期化しますが、
FOR文で例えばfori=1to20とした場合にエラーが出るので;
バッファの量を数値指定してclear 1000と増やします。
テンポはPLAY"T180"というふうに書くとかなりノリが出ます^^;
プログラムにしたのでRUNしてみてください。
さらにFOR文で50にするとエラーが出ます。
このエラーは文字列が250を超えた場合に表示されます。
PRINT(?)でlenしてみると252になっています。
この場合はP$をP$(1)=P$:P$(2)=P$というふうに分割する必要がでてきます。
だいたい4小節ごとにプログラムを分ければいいと思います。
では
※コメント投稿者のブログIDはブログ作成者のみに通知されます