BASICからのMSX-MUSICの使用
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/29 17:19 UTC 版)
「FM-PAC」の記事における「BASICからのMSX-MUSICの使用」の解説
FM音源制御命令はCALL命令のセットとして拡張されている。以下に主な命令とその使用法を述べる。 基本仕様はMSX-AUDIOの記述に準拠し、内蔵音色などは異なるものの、音名、パラメータなどは、互換性を意識したつくりとなっている。 CALL MUSIC(1,0,1,1,1,1,1,1) FM音源BIOSを起動する。左端の値(0/1)でFM9チャンネル、FM6チャンネル+リズム5チャンネルのモードを切り替える。上記の様に1とした場合はリズムモードとなり、PLAY #2命令の各チャンネルにFM音源1チャンネルを割り当てる。CALL MUSIC(1,0,2) などとして、複数チャンネルを割り当てることもできる。第2パラメータの0はMSX-AUDIOの「CALL AUDIO」命令との表記上の互換性のために残されているものであり、MSX-MUSIC上では常に0を設定する。 CALL VOICE(@0,@12) FM音源の各チャンネルに音色を設定する。チップ内蔵の15の音色以外は自作音色扱いとなり、1セットしかない自作音色用レジスタを占有してしまうため、同時に1種類しか使用できない。BASICの各命令の実行と、音源の演奏は標準設定では同期しておらず、このコマンドは主に演奏開始前に使用され、曲中での音色変更には通常、MMLの@コマンドを用いる。 CALL TEMPER(9) 音律を設定できる。 CALL VOICE COPY(@63, tone%) 音色データエリアと任意の配列変数間でデータをコピーする。データサイズは32バイト。MSX-BASICでは整数型が2バイトなので、dim tone%(15) と定義されるのが一般的である。上記の例では音色番号63に配列変数tone%の内容をコピーしているが、逆の動作なども可能である。MSX-MUSICでは@0から@62まではプリセットの音色があり、慣例的に自作音色は63から使用されることが多かった。一般的には音色設定は以下のように行われる。 DIM TONE%(15):FOR I=0 TO 15:READ A$:TONE%(I) = VAL("&H" + A$):NEXTDATA 0000,0000,0000,0000DATA 0000,0000,0000,0000DATA 0000,0000,0000,0000DATA 0000,0000,0000,0000CALL VOICE COPY(TONE%, @63) 曲中で複数の音色を使用する時は、PLAY文の合間に CALL VOICE COPY 文を挟むことで行う。 音色設定にはFM音源のパラメータを直接(人間にとって自然に)表記して上記の32バイト配列にコンバートする手法や、FM音源チップのレジスタに直接値を書き込むコマンドの「Yコマンド」をMML中に用いる手法もあった。前者の変換プログラムは比較的に複雑なものになる。後者では演奏中に臨機応変に音色を変化させることができる。 PLAY #2, "C", "D", A$ MMLに従い演奏を行う。従来の「PLAY」文が拡張されたものである。上記の右端の例の通り文字列変数も使用可能であり、むしろその方が一般的である。どの桁がFM/PSGのどのチャンネルを演奏するかは、CALL MUSICでの設定による。従来のPLAY文と違い、32分音符もある程度ズレなく演奏させることができる。標準設定では演奏はBASICの実行とは非同期に(自動的に)演奏される。なお、1度のPLAY分で流し込めるMMLの長さはMSX-BASICにより制限される。第1パラメータから順に、FM音源チャンネル(0~6個)、リズムチャンネル(0~1個)、PSGチャンネル(3個)となっている。 CALL PITCH(440) / CALL TRANSPOSE(n) MSX-MUSICでは、チューニングの変更も可能で、CALL PITCHではA4音の周波数を指定する。デフォルトでは440となっている。また、CALL TRANSPOSE を用いて、1セント(半音の1/100)単位でプラスマイナス12799セントの移調も可能。
※この「BASICからのMSX-MUSICの使用」の解説は、「FM-PAC」の解説の一部です。
「BASICからのMSX-MUSICの使用」を含む「FM-PAC」の記事については、「FM-PAC」の概要を参照ください。
- BASICからのMSX-MUSICの使用のページへのリンク