※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※
MSX-AUDIOには、各機能を簡単に使用できるように、MSX-AUDIO拡張BASICが用意されています。使い方はCALL AUDIOのように拡張ステートメントの形式です。CALLは_(アンダーバー)で代用できます。
- CALL COMBREAK
└────ステートメント名
命令の名前です。
└───────命令の内容を簡単に説明しています。
└───────命令の書き方を示しています。
[ ]で囲まれた項目は、省略可能であることを示します。
…は同じ項目が繰り返して指定できることを示します。
└───────命令の使用法やオプションの意味などについて詳しく説明しています。
(*)は初期設定の値です。パラメータを省略すると、その値が設定されます。
└───────命令の使用例やその実行結果を示します。
1.拡張ステートメント(CALL分と共に使用します】
コマンド名 | 機能 | ページ |
APEEK | MSX-AUDIOのシステムメモリを参照します。 | 286 |
APOKE | MSX-AUDIOのシステムメモリを変更します。 | 286 |
AUDIO | MSX-AUDIOのシステムを初期化します。 | 287 |
AUDREG | MSX-AUDIO LSIのレジスタに値を書き込みます。 | 289 |
BGM | バックグランド処理を行うかどうかを指定します。 | 289 |
PITCH | FM音源の楽音の音高(ピッチ)を与えます。 | 290 |
PLAY | 音楽をミュージックマクロランゲージにしたがって演奏します。 | 291 |
PLAY | PLAY文が演奏中かどうかを返します。 | 294 |
STOPM | バックグラウンドで実行中のPLAY文の演奏、ADPCM、MK記録を停止します。 | 295 |
SYNTHE | アプリケーションプログラムを呼び出します。 | 295 |
TEMPER | 音律(テンペラント)を与えます。 | 296 |
TRANSEPOSE | FM音源の楽音に対してセント単位で移調を与えます。 | 297 |
VOICE | FM音源の各チャンネルに音色(ボイス)を直接に設定します。 | 298 |
VOICE COPY | 音色パラメータデータの転送を行います。 | 302 |
2.ADPCM/PCM関係のステートメント
コマンド名 | 機能 | ページ |
CONVA | PCM形式データをADPCM形式のデータに変換します。 | 303 |
CONVP | ADPCM形式のデータをPCM形式のデータに変換します。 | 304 |
COPY PCM | ADPCM、PCMデータを転送します。 | 304 |
LOAD PCM | ADPCM/PCM音声ファイルをディスクからロードする。 | 306 |
PCM FREQ | ADPCMの外部ROM/RAMを使用するローカルモードを再生実行中にサンプリング周波数を与えます。 | 307 |
PCM VOL | ADPCM/PCM再生の音量を設定します。 | 307 |
PLAY PCM | ADPCM/PCM音声ファイルを再生します。 | 308 |
REC PCM | ADPCM/PCMにより音声を音声ファイルに録音します。 | 308 |
SAVE PCM | ADPCM/PCM音声ファイルをディスクへセーブする。 | 310 |
SET PCM | ADPCM/PCMの音声ファイルを初期設定します。 | 311 |
3.インスツルメント関連のステートメント
コマンド名 | 機能 | ページ |
INMK | ミュージックキーボードの変化を報せます。 | 314 |
KEY ON/KEY OFF | インスツルメントにキーオン、オフを与えます。 | 315 |
MK PCM | インスツルメントとして演奏するADPCMの音のファイル番号を指定します。 | 315 |
MK TEMPO | ミュージックキーボード演奏記録、再生とメトロノーム機能の速度を与えます。 | 316 |
MK VEL | インスツルメントにベロシティを設定します。 | 317 |
MK VOICE | インスツルメントのボイス(音色の種類)を設定します。 | 317 |
MK VOL | インスツルメントの音量を設定します。 | 318 |
4.MK(ミュージックキーボード)記録関連のステートメント
コマンド名 | 機能 | ページ |
APPEND MK | MK記録の追加記録を行います。 | 320 |
CONT MK | STOPM文により停止したMKの記録、再生を再開します。 | 320 |
MK STAT | MK記録システムの状態を報せます。 | 321 |
PLAY MK | MK記録の再生を行います。 | 321 |
REC MK | インスツルメントの演奏の記録を行います。 | 322 |
RECMOD | MK記録の記録モードを設定します。 | 323 |
- CALL APEEK
MSX-AUDIOのシステムメモリの指定された番地の内容を読み出します。
CALL APEEK( <アドレス>,<数値変数> )
CALL APEEK(&H7000,A):PRINT A
<アドレス>で指定したMSX-AUDIOのシステムメモリの内容を読み出し、<数値変数>に代入します。
MSX-AUDIOのシステムメモリは0000H〜7FFFHに置かれています。この部分へのアクセスはスロットが異なっているため通常のPEEK文では行えません。CALL APEEK文はそれを行うためのステートメントです。8000H〜FFFFHがアドレスとして指定された場合には、BASICの使用しているメモリ空間をアクセスするので、通常のPEEK文と同じ働きをします。
- CALL APOKE
MSX-AUDIOのシステムメモリの指定された番地にデータを書き込みます。
CALL APOKE( <アドレス>,<データ> )
CALL APOKE(&H7000,A)
<アドレス>で指定したMSX-AUDIOのMSX-AUDIOのシステムメモリの番地に<データ>を書き込みます。
MSX-AUDIOのシステムメモリは0000Hから7FFFHに置かれています。この部分へのアクセスはスロットが異なっているため通常のPOKE文では行えません。CALL APOKE文はこれを行うためのステートメントです。8000H〜FFFFHがアドレスとして指定された場合には、BASICの使用しているメモリ空間をアクセスしますので、通常のPOKE文と同じ働きをします。
- CALL AUDIO
MSX-AUDIOシステムを初期化します。
CALL AUDIO[(<モード>[, <インスツルメントへのチャンネル数>[, <PLAY文第1文字列へのチャンネル数>[, <PLAY文第2文字列へのチャンネル数>[, ・・・[, <PLAY文第9文字列へのチャンネル数>]]]]]]]]]])]
CALL AUDIO
デフォルトの設定をする。
CALL AUDIO(0,9)
すべてのチャンネルをインスツルメントに割り当てる。
CALL AUDIO(0,0,1,1,1,1,1,1,1,1)
1チャンネルずつPLAY文の文字列に割り当てる。
MSX-AUDIO LSIの初期化とともに、9個のFM音源のチャンネルをどのように使用するかを指定します。AUDIO文により初期化を行うまでは、すべての拡張BASICステートメントは使用できません。
<モード>は0〜7で、次のようなビットマップでMSX-AUDIOの動作モードを指定します。
bit0 リズム音を使用する。
bit1 PLAY文がPCM音源用文字列を使用する。
bit2 MSX-AUDIOをCSMモードに設定する。
MSX-AUDIOをCMSモードに設定すると、すべてのFM音源(リズム音を含む)に対するコントロールは無効になります。
リズム音を使用する場合には、チャンネル7,8,9を使うので、楽音に使えるのは残り6チャンネルになります。したがって、インスツルメントへのチャンネル数とPLAY文で使用するチャンネル数の和との総和は、リズム使用時には6以下、リズムを使わないときは9以下になります。
チャンネルの使用割り当ては、PLAY文では、チャンネル番号の小さい方(1,2,3・・・)から、インスツルメントではチャンネル番号の大きい方(9,8,7・・・、リズム使用時には6,5,4・・・)から割り当てます。
パラメータを1つ以上指定した場合、他のパラメータの省略時の値は0となります。
PLAY文の文字列へのチャンネル数を0に設定したり、途中のパラメータを省略することは出来ません。次の例を参照してください。
CALL AUDIO(0,3,0,5,0)
↑ ↑
0を設定してはいけない(「Illegal function call」になります)
CALL AUDIO(0,2,1, ,2)
↑
省略してはいけない(「Syntax error」になります)
パラメータなしで使われたときは、
CALL AUDIO(1,0,2,2,2)
と同じになります。すなわち、
- FM音源のチャンネル1〜2をPLAY文の最初の文字列に割り当てる。
- FM音源のチャンネル3〜4をPLAY文の2番目の文字列に割り当てる。
- FM音源のチャンネル5〜6をPLAY文の3番目の文字列に割り当てる。
- FM音源のチャンネル7〜9をリズム音に使用する。
- PLAY文の5番目以降7番目の文字列はPSG音源の制御に割り当てる。
- インスツルメントにはチャンネルを割り当てない。
- PCM音源はPLAY文では扱わない。
- CSMモードは使用しない。
という意味になります。
AUDIO文を実行すると、システムの割り込みのフックがMSX-AUDIOのシステムソフトウェアにリンクされるので、割り込み処理ルーチンのオーバーヘッドが増え、システムのスループットが低下します。特に、ミュージックキーボードを使用する文を実行するとその影響が大きくなります。
- CALL AUDREG
MSX-AUDIO LSIのレジスタに値を書き込みます。
CALL AUDREG(<レジスタ番号>, <データ>[, <チャンネル番号>])
CALL AUDREG(&HBD, 0)
<レジスタ番号>で指定したMSX-AUDIO LSIのレジスタに対して、<データ>を書き込みます。
<チャンネル番号>は0または1で、省略時は0です。0の場合には、第1チャンネルのMSX-AUDIO LSIに、1の場合には第2チャンネルのMSX-AUDIO LSIにアクセスします。
システムソフトウェアが割り込みなどで頻繁に書き込んでいるレジスタには効果がない場合やシステムの再起動が必要になる場合があります。
- CALL BGM
バックグラウンド処理を行うかどうかを指定します。
CALL BGM(<変数>)
CALL BGM(0)
バックグラウンド処理を行わない。
CALL BGM(1)
バックグラウンド処理を行う。
<変数>は0または1の値で、次のような意味を持ちます。
0 バックグラウンド処理を行わない。
1 バックグラウンド処理を行う。
AUDIO文による初期化ではバックグラウンド処理が指定されていますが、<変数>に0を指定することでフォアグラウンド処理にする子が出来ます。
次にあげる機能はバックグラウンド処理することが出来ます。
- PLAY文による演奏。
- 外部メモリを使用するローカルモードのADPCMの録音再生。
- 配列を記録領域に使用しないMK記録の記録再生。
- CALL PITCH
FM音源の楽音の音高(ピッチ)を与えます。
CALL PITCH(<ピッチ1>[, <ピッチ2>])
CALL PITCH(440)
FM音源で発生する楽音の音高を指定します。<ピッチ>の範囲は410〜459で単位は[Hz]です。中央Cのすぐ上のA音(a2)の周波数で音高を表します。トランスポーズとは独立に指定でき、初期値は440です。
ピッチ(またはトランスポーズ値)を変えると、リズム音や音程をもたない音を除くFM音の音の高さが変化します。PCM音源やPSG音源には作用しないので注意してください。
パラメータを2つとる場合の<ピッチ1>は第1チャンネルの、<ピッチ2>は第2チャンネルのピッチを設定します。
パラメータを1つしか取らない場合で、2つのMSX-AUDIO LSIが実装されている場合には、<ピッチ1>が両方のチャンネルに有効となります。
トランスポーズについてはTRANSPOSE文の高を参照して下さい。
- PLAY
音楽をミュージックマクロランゲージにしたがって演奏します。
PLAY[#<モード>, ]<文字列1>[, <文字列2>[, <文字列3>]・・・[, <文字列13>]
PLAY #2,"CD","EF","GA"
PLAY文は音楽を演奏するもので、FM音源(9)、PCM音源(1)、PSG音源(3)の最大13声まで同時発声できます。<文字列>に書かれたミュージックマクロランゲージ(MML)にしたがって演奏します。
他の拡張命令と異なりCALL文は必要ありません。
<モード>の設定は次のとおりです。
モード | 意味 |
0(省略) | PSGのみが音源となり、文字列は最大3つまでです。従来のPLAY文と互換性があります。 |
1 | 演奏データをMIDI*ポートに出力します。 |
2,3 | FM音源、リズム音、PCM音源、PSG音源を使用できます。(2のときと3のときで動作に違いはありません)。 |
<文字列>と音源との関係は始めから順に、
<FM音源用文字列1>,・・・<FM音源用文字列n>
<PCM音源用文字列>,<リズム音源用文字列>,
<PSG音源用文字列1>,<PSG音源用文字列2>,<PSG音源用文字列3>
となります。nはAUDIO文で設定されたミュージックマクロランゲージの個数です。
CALL AUDIO文でリズム音やPCM音源を使用しないモードに設定した場合は、リズム音源用文字列やPCM音源用文字列をカンマ(,)と共に省略しなければいけません。
2つのMSX-AUDIO LSIが実装されている場合には、両方のチャンネルに同じ効果をもちます。
例としてデフォルトのAUDIO文に対する文字列の配列をあげると次のようになります。
<FM音源用文字列1>,<FM音源用文字列2>,<FM音源用文字列3>, <リズム音源用文字列>,
<PSG音源用文字列1>,<PSG音源用文字列2>,<PSG音源用文字列3>
- MIDIの機能はオプションで、別途サポートされているときのみ有効です。
ミュージックマクロランゲージ(MML)の仕様
表7,49 FM音源、PSG音源、PCM音源用MMLの仕様一覧
文字 | 意味 | 値の取る範囲 | 初期値 |
Mn | エンベロープ周期を設定する | 1≦n≦65535 | M255 |
Sn | エンベロープ形状を設定する | 0≦n≦15 | S0 |
Vn | 音量を設定する | 0≦n≦15 | V8 |
Ln | 長さを設定する | 1≦n≦64 | L4 |
Qn | 音の長さの割合を設定する | 1≦n≦8 | Q8 |
On | オクターブを設定する | 1≦n≦8 | O4 |
> | オクターブを1つ上げる | | |
< | オクターブを1つ下げる | | |
Tn | テンポを設定する | 32≦n≦255 | T120 |
Nn | nで指定された高さの音を発生する | 0≦n≦96 | |
Rn | 休符を設定する | 1≦n≦64 | R4 |
A〜G | 音程を発生する | | |
+,# | 音を半音上げる | | |
- | 音を半音下げる | | |
.(ピリオド) | 音符や休符の長さを1.5倍する | | |
=x; | パラメータnを変数xで設定する | | |
Xx; | 文字変数xに入っているMMLを演奏する | | |
& | タイ、前後の音をつなぐ | | |
{ }n | 連符、n分音符を{ }の中の音程の個数 で等分にした音を発生する | 1≦n≦64 | Lnで設定された値 |
@n | n版の音声に切り替える | 0≦n≦63 | |
@Vn | 音量を細かく設定する | 0≦n≦127 | |
@Wn | nで指定された長さだけ状態を継続する | 1≦n≦64 | Lnで設定された値 |
Yr,d | MSX-AUDIO LSIのレジスタrにdを書き込む | | |
Zd* | MIDIにデータdを送る | | |
- MIDI機能はオプションで、別途サポートされているときのみ有効です。
リズム音用MMLの仕様
リズム音の場合、1つのMMLで同時にいくつかの音を発生するため楽音用とは異なった記述様式をとります。まず、ならしたい楽器を並べてその後に長さを指定します。
表 7.50 リズム音用MMLの仕様一覧
文字 | 意味 | 値の取る範囲 | 初期値 |
B | バスドラム音を発生する | | |
S | スネアドラム音を発生する | | |
M | タムタム音を発生する | | |
C | シンバル音を発生する | | |
H | ハイハット音を発生する | | |
! | 直前の楽器の音量をアクセントボリュームにする | | |
n | 直前までに書かれた楽音を発生し、n分音符分待つ | 1≦n≦64 | |
Vn | アクセントの付いていない楽音の音量を設定する | 0≦n≦15 | 8 |
@An | アクセントの付いている楽音の音量を設定する | 0≦n≦15 | |
Tn,@Vn,Rn,=x;,Xx;,.はFM音源用と同じです。
"BSH8H8S!H8H8"
- バス、スネア、ハイハットを鳴らし、8分音符分待ちます。
- ハイハットを鳴らし、8分音符分待ちます。
- スネアをアクセント付きでハイハットと鳴らし8分音符分待ちます。
- ハイハットを鳴らし、8分音符分待ちます。
表7,51 MMLと各音源との対応一覧
文字 | FM音源 | PSG音源 | PCM音源 |
Mn | *1 | ○ | *1 |
Sn | *1 | ○ | *1 |
Vn | ○ | ○ | ○ |
Ln | ○ | ○ | ○ |
Qn | ○ | *1 | ○ |
On | ○ | ○ | ○ |
> | ○ | ○ | ○ |
< | ○ | ○ | ○ |
Tn | ○ | ○ | ○ |
Nn | ○ | ○ | ○ |
Rn | ○ | ○ | ○ |
A〜G | ○ | ○ | ○ |
+,# | ○ | ○ | ○ |
- | ○ | ○ | ○ |
. | ○ | ○ | ○ |
=x; | ○ | ○ | ○ |
Xx; | ○ | ○ | ○ |
& | ○ | ○ | ○ |
{ }n | ○ | *3 | ○ |
@n | ○ | *1 | ○ |
@Vn | ○ | *1 | ○ |
@Wn | ○ | *2 | ○ |
Yr,d | ○ | *1 | ○ |
Zd | ○ | *1 | ○ |
*1 無視されます
*2 Rnと同じです。
*3 PSG音源に対しては使用できません。使用するとエラーになります。
- CALL PLAY
PLAY文が音楽を演奏中かどうかを返します。
CALL PLAY(<PLAY文のストリング番号>,<変数名>)
CALL PLAY(0,A):PRINT A
PLAY文のミュージックキューの状態を調べ、各チャンネルが音楽を演奏中かどうかを判断し、演奏中であれば「-1」、そうでなければ「0」の値を返します。ただし、<ストリング番号>として0が与えられた場合は、いずれかのストリングが演奏中であれば「-1」を、そうでなければ「0」を返します。
PLAY文のストリング番号は、CALL AUDIO文で指定したストリング数+3まで使えます。すなわち、AUDIO文で指定したFM音源、PCM音源に加え3チャンネルのPSG音源について有効です。
- CALL STOPM
バックグラウンドで実行中のPLAY文の演奏、ADPCM、MK記録再生を停止します。
CALL STOPM[(<変数名>)]
CALL STOPM
バックグラウンドで実行中のPLAY文の音楽の演奏、外部メモリを使用したADPCMの録音、再生、MK記録再生を停止します。
パラメータとして<変数名>を与えると、MK記録・再生の中止されたアドレスの次のアドレス(CONT MK文により再開されるアドレス)が返されます。
- CALL SYNTHE
MSX-AUDIO内蔵のアプリケーションプログラムを呼び出します。
CALL SYNTHE
CALL SYNTHE
この命令は、CALL AUDIO文が実行される以前でなければなりません。
- CALL TEMPER
音律(テンペラメント)を与えます。
CALL TEMPER(<音律番号>)
CALL TEMPER(0)
音律を与えるステートメントで、FM音源の楽音の音高に影響を与えます。指定できる<音律番号>は0〜21です。音律は1オクターブをどのような比率で12音に分解するかを決めるもので、古典音楽には古典音律が適していると言われます。初期値は9番の完全平均律です。
番号 | 音律 |
0 | ピタゴラス |
1 | ミーントーン |
2 | ヴェルクマイスター |
3 | ヴェルクマイスター(修正) |
4 | ヴェルクマイスター(別) |
5 | キルンベルガー |
6 | キルンベルガー(修正) |
7 | ヴァロッティ・ヤング |
8 | ラモー |
9 | 完全平均律(デフォルト) |
10 | 純正律 c メジャー(a マイナー) |
11 | 純正律 cis メジャー(b マイナー) |
12 | 純正律 d メジャー(h マイナー) |
13 | 純正律 es メジャー(c マイナー) |
14 | 純正律 e メジャー(cis マイナー) |
15 | 純正律 f メジャー(d マイナー) |
16 | 純正律 fis メジャー(es マイナー) |
17 | 純正律 g メジャー(e マイナー) |
18 | 純正律 gis メジャー(f マイナー) |
19 | 純正律 a メジャー(fis マイナー) |
20 | 純正律 b メジャー(g マイナー) |
21 | 純正律 h メジャー(gis マイナー) |
(修正)は平島達司氏による。
- CALL TRANSEPOSE
FM音源の楽音に対してセント単位で移調を与えます。
CALL TRANSPOSE(<トランスポーズ値1>[, <トランスポーズ値2>])
CALL TRANSPOSE(0)
CALL TRANSPOSE(0, 700)
移調を行うためのステートメントで、単位はセントです。これは、半音を100とした移調の単位で、1オクターブ上げるには、+1200を指定します。
トランスポーズ値として許される範囲は、±12799以内ですが、実際にはFM音源の音色によって、ある高さの範囲以外は制限されます。音高精度はLSIの制限により±2セント程度です。
トランスポーズはピッチとは独立して設定できます。AUDIO文による初期化の値は0です。ピッチについてはCALL PITCH文を参照してください。
パラメータを2つ取る場合、<トランスポーズ値1>は第1チャンネルの、<トランスポーズ値2>は第2チャンネルのピッチを設定します。
パラメータを1つしか取らない場合で、2つのMSX-AUDIO LSIが実装されている場合には、<トランスポーズ値1>が両方のチャンネルに対して有効になります。
- CALL VOICE
FM音源の各チャンネルに音色(ボイス)を直接設定します。
CALL VOICE([<チャンネル1用のボイス>],[<チャンネル2用のボイス>],・・・,[<チャンネル9用のボイス>](
ボイス=@+単純変数 または
=配列変数名
CALL VOICE(@0, @0, @0,,,, @7, @7, @7)
CALL VOICE(@0, @0)
MSX-AUDIOの9チャンネルあるFM音源のそれぞれに音色を設定します。
音色の設定方法には2つあります。システムに備えられている音色ライブラリを使う場合には、0〜63の音色の番号を単純変数または定数により指定します。この場合には、変数名または定数の前に@記号をつけて、次で説明する配列変数名と区別します。
プログラムにより音色パラメータを与えて設定する場合には、配列変数に音色パラメータを入れてその配列変数名を指定します。音色パラメータのフォーマットの詳細はVOICE COPY文の解説を参照してください。パラメータを省略したチャンネルの音色は変更されません。
インスツルメントに指定したチャンネルは、MK VOICE文でまとめて設定できます。
MK VOICE文を参照して下さい。
MSX-AUDIO LSIが2つ実装されている場合には、同じパラメータが両方のチャンネルに設定されます。
システム音色ライブラリ一覧
音色番号0〜31はROM内に置かれているため変更できませんが、音色番号32〜63のものはVOICE COPY文により変更することができます。略号は音色の名前としてライブラリに登録されているものです。
表7.52 システム音色ライブラリ一覧
音色番号 | 音色名 | 略号 |
0 | Piano 1 | Piano 1 |
1 | Piano 2 | Piano 2 |
2 | Violin | Violin |
3 | Flute 1 | Flute |
4 | Clarinet | Clarinet |
5 | Oboe | Oboe |
6 | Trumpet | Trumpet |
7 | Pipe Organ 1 | PipeOrgn |
8 | Xylophone | Xylophon |
9 | Organ | Organ |
10 | Guitar | Guitar |
11 | Santool 1 | Santool |
12 | Electric Piano 1 | Elecpian |
13 | Clavicode 1 | Clavicod |
14 | Harpsicode 1 | Harpsicd |
15 | Harpsicode 2 | Harpscd2 |
16 | Vibraphone | Vibraphn |
17 | Koto 1 | Koto |
18 | Taiko | Taiko |
19 | Engine 1 | Engine |
20 | UFO | UFO |
21 | Synthesizer bell | SynBell |
22 | Chime | Chime |
23 | Synthesizer bass | SynBass |
24 | Synthesizer | Synthsiz |
25 | Synthesizer Percussion | SynPercu |
26 | Synthesizer Rhythm | SynRhyth |
27 | Harm Drum | HarmDrum |
28 | Cowbell | Cowbell |
29 | Close Hi-hat | ClseHiht |
30 | Snare Drum | SnareDrm |
31 | Bass Drum | BassDrum |
32 | Piano 3 | Piano 3 |
33 | Electric Piano 2 | Elecpia2 |
34 | Santool 2 | Santool2 |
35 | Brass | Brass |
36 | Flute 2 | Flute 2 |
37 | Clavicode 2 | Clavicd2 |
38 | Clavicode 3 | Clavicd3 |
39 | Koto 2 | Koto 2 |
40 | Pipe Organ 2 | PipeOrg2 |
41 | PohdsPLA | PohdsPLA |
42 | RohdsPRA | PohdsPRA |
43 | Orch L | Orch L |
44 | Orch R | Orch R |
45 | Synthesizer Violin | SynViol |
46 | Synthesizer Organ | SynOrgan |
47 | Synthesizer Brass | SynBrass |
48 | Tube | Tube |
49 | Shamisen | Shamisen |
50 | Magical | Magical |
51 | Huwawa | Huwawa |
52 | Wander Flat | WnderFlt |
53 | Hardrock | Hardrock |
54 | Machine | Machine |
55 | Machine V | MachineV |
56 | Comic | Comic |
57 | SE-Comic | SE-Comic |
58 | SE-Laser | SE-Laser |
59 | SE-Noise | SE-Noise |
60 | SE-Star 1 | SE-Star |
61 | SE-Star 2 | SE-Star2 |
62 | Engine 2 | Engine 2 |
63 | Silence | Silence |
音色パラメータデータのフォーマット
音色パラメータは次の表の用に1音色あたり32バイトのデータを使います。
オペレータ0とオペレータ1のデータは同じものの繰り返しになっています。
表7.53 音色パラメータのフォーマット
オフセット | 内容 |
ヘッダ |
0〜7 | 音色名 |
8〜9 | ボイス移調 |
10 | bit0 | アルゴリズム |
bit1〜3 | フィードバック |
bit4 | 固定ピッチ |
bit5 | AMD/PMDロード可能 |
bit6 | PMD |
bit7 | AMD |
11〜15 | 予約 |
オペレータ0 |
16 | bit0〜3 | MULT |
bit4 | KSR |
bit5 | EG |
bit6 | PM |
bit7 | AM |
17 | bit0〜5 | トータルレベル |
bit6〜7 | レベルキースケール |
18 | bit0〜3 | ディケイレイト |
bit4〜7 | アタックレイト |
19 | bit0〜3 | リリースレイト |
bit4〜7 | サスティンレベル |
20 | bit4〜7 | ベロシティセンシビリティ(0〜8) |
21〜23 | 予約 |
オペレータ1 |
24 | bit0〜3 | MULT |
bit4 | KSR |
bit5 | EG |
bit6 | PM |
bit7 | AM |
25 | bit0〜5 | トータルレベル |
bit6〜7 | レベルキースケール |
26 | bit0〜3 | ディケイレイト |
bit4〜7 | アタックレイト |
27 | bit0〜3 | リリースレイト |
bit4〜7 | サスティンレベル |
28 | bit4〜7 | ベロシティセンシビリティ(0〜8) |
29〜31 | 予約 |
- CALL VOICE COPY
音色パラメータデータの転送を行います。
CALL VOICE COPY(<パラメータ1>,<パラメータ2>)
DIM A128)
CALL VOICE COPY(*, A)
音色番号32〜63のパラメータを配列Aに転送する。
CALL VOICE COPY(@0, PIANO)
音色番号0のパラメータを配列「PIANO」に転送する。
CALL VOICE COPY(@0, @32)
音色番号0のパラメータを音色番号32に転送する。
配列と音色ライブラリ(0〜63)の間でのデータの転送を行います。転送は、<パラメータ1>から<パラメータ2>へ行います。
@と単純変数が指定されたときは、その変数の値で指定される音色番号の音色データが対象となります。
ソース(パラメータ1)に指定される音色番号は0〜63までのすべての値を指定することが出来ますが、ディスティネーション(パラメータ2)に指定される音色パラメータは音色番号32〜63までの、RAMに置かれているユーザー音色ライブラリに限ります。
@記号がない場合の変数名は配列変数とみなされ、その内容が転送の対象になります。
1つの音色パラメータは32バイトです。音色パラメータの詳細については音色パラメータデータのフォーマットをフォーマットを参照して下さい。
*は音色番号32〜63のユーザー音色ライブラリ前データを意味し、それを使うときは他方のパラメータは、1Kバイト以上の長さをもつ配列変数名でなければなりません(32*32=1024)。
音色パラメータを他のファイルシステム、例えば、ディスクファイルなどに転送するには、まず配列変数に転送しておいて、COPY文によりその配列変数をディスクに転送します。
ADPCM/PCM音のデータは音声ファイルという、番号(0〜15)で管理するファイルとして扱われます。このファイルが記録される場所をデバイスとよび、MSX-AUDIO LSIの外部メモリ以外にもメインRAM、VRAMへも直接録音、再生ができます。
外部メモリを使用する場合のADPCMの録音再生は、バックグラウンドで行うことがができます。また、ADPCMとPCMとの間のデータの変換をする機能もあります。
- CALL CONVA
PCM形式のデータをADPCM形式のデータに変換します。
CALL CONVA(<ソースファイル番号>,<ディスティネーションファイル番号>)
CALL CONVA(1,2)
<ソースファイル番号>で指定されるPCMデータ全体をADPCMデータに変換して、<デスティネーションファイル番号>で指定される音声ファイルに格納します。
PCM形式のデータをADPCM形式のデータに変換します。
<ソースファイル番号>と<デスティネーションファイル番号>は、同じ番号は指定できません。デスティネーションファイルの長さは1/2になりますので、ソースファイルの長さが奇数長のときは1/2して、整数部分のみの変換を行います。
CALL CONVA文では、ソースファイルのデータがPCMであることをチェックし、異なっていると、「Illegal function call」になります。
デスティネーションファイルは外部RAM、メインRAMまたはVRAMのいずれかでなければなりません。(内容変更可能なデバイス)。また、ファイルのタイプと長さはメインRAM(デバイス=4)を使用している場合以外は変更されます。
サンプリング周波数は、ソース側に合わせられます。
- CALL CONVP
ADPCM形式のデータをPCM形式のデータに変換します。
CALL CONVP(<ソースファイル番号>,<ディスティネーションファイル番号>)
CALL CONVP(1,2)
<ソースファイル番号>で指定されるADPCMデータ全体をPCMデータに変換して、<デスティネーションファイル番号>で指定される音声ファイルに格納します。
ADPCM形式のデータをPCM形式のデータに変換します。
<ソースファイル番号>と<デスティネーションファイル番号>は、同じ番号は指定できません。デスティネーションファイルの長さはソースファイルの2倍になります。
CALL CONVP文では、ソースファイルのデータがADPCMであることをチェックし、異なっていると、「Illegal function call」になります。
デスティネーションファイルは外部RAM、メインRAMまたはVRAMのいずれかでなければなりません。(内容変更可能なデバイス)。またファイルのタイプと長さはメインRAM(デバイス=4)を使用している場合以外は変更されます。また、サンプリング周波数は、ソース側に合わせられます。
- CALL COPY PCM
ADPCM,PCMデータを転送します。
CALL COPY PCM(<ソースファイル番号1>,<デスティネーションファイル番号2>[, <オフセット1>][, <長さ>][, <オフセット2>])
CALL COPY PCM(1,2)
ファイル1の全体をファイル2に転送します。
ADPCM,PCM音声ファイル間でのデータの全コピーや部分的コピーします。パラメータの意味は図7.32のとおりです。
CALL COPY PCM文では、ファイルのADPCM/PCMタイプチェックを行いません。また、転送後のデスティネーションファイルの長さやタイプは変わりません。
パラメータは2つの音声ファイル番号以外は省略できます。省略時の値は<オフセット>は0,<長さ>はソースファイルの最後までになります。
<ソースファイル番号1>として「#」のついた値を使用すると、システムに組み込みのADPCMデータからのコピーが実行されます。
■システム組み込みADPCM音声データ一覧
システム組み込みのADPCMの音声データは表7.54のとおりです。これらのデータはCALL COPY PCM文により一度音声ファイルに転送してから再生します。
表7.54 システム組み込みADPCM音声データ一覧
ファイル番号 | 内容 | 長さ(256バイト単位) |
0 | カッコー | 35 |
1 | にわとり | 33 |
2 | 猫 | 20 |
3 | 犬 | 5 |
4 | 馬 | 29 |
5 | ライオン | 43 |
6 | 人の笑い声 | 26 |
7 | ドアの閉まる音 | 11 |
8 | ウィスキーを注ぐ音 | 4 |
9 | 靴音 | 1 |
10 | 進行 | 6 |
11 | 玩具 | 4 |
12 | 拍手 | 2 |
13 | テニス | 5 |
14 | ゴルフのスイング | 9 |
15 | ゴルフのカップイン | 9 |
16 | 刀を振る音1 | 6 |
17 | 刀を振る音2 | 7 |
- CALL LOAD PCM
フロッピーディスクからADPCM/PCM音声ファイルをロードします。
CALL LOAD PCM(<ファイル名>, <音声ファイル番号>)
CALL LOAD PCM("DEMO.DAT", 1)
<音声ファイル番号>で指定された音声ファイルに<ファイル名>で指定されたフロッピーディスク上のファイルからADPCM/PCMデータを読み込みます。
SET PCMで設定した長さよりもファイルが長い場合は、指定された長さm出をロードします。音声ファイルのデータ形式(ADPCM/CPM)とサンプリング周波数は、ロードしたデータに合わせます。
<ファイル名>はDISK BASICのファイルスペックに適合する文字列で、[ドライブ":"]+最大8文字のファイル名+["."最大3文字の拡張子]です。
ファイル名として、デバイス名(CON,PRN,LST,AUX,NUL)を指定すると、そのデバイスから入力されますが、入力と中にCTRL+STOPまたはCTRL+Cなどで中止したときは、次のPCM関係のステートメントは正しく実行されません。その場合、次のステートメントの実行の前にCALL STOPM文を実行してください。
CALL LOAD PCM文は高速化のために、BASICのフリーエリアを転送時のバッファとして使用します。したがって、フリーエリアが少ないときにはロード時間が長くなります。
- CALL PCM FREQ
ADPCMの外部ROM・RAMを使用するローカルモード再生実行中にサンプリング周波数を与えます。
CALL PCM FREQ(<サンプリング周波数1>[,<サンプリング周波数2>])
CALL PCM FREQ(24000)
ローカルモードでADPCMを再生中にサンプリング周波数を変更します。<サンプリング周波数>の値の範囲は1800〜49716で、単位はHzです。パラメータが2つのときは、<サンプリング周波数1>が第1チャンネルに、<サンプリング周波数2>が第2チャンネルになります。
MSX-AUDIO LSIが2つ実装されている場合で、パラメータが1つしかないときは、<サンプリング周波数1>が両方のチャンネルに設定されます。
- CALL PCM VOL
ADPCM/PCM再生の音量を設定します。
CALL PCM VOL(<ボリューム値1>[,<ボリューム値2>])
CALL PCM VOL(40)
ADPCM/PCM再生の音量を設定します。<ボリューム値>の範囲は0〜63で+6dB/8の変化をもちます。初期値はADPCMでは63、PCMでは32です。
パラメータが2つのときは、<ボリューム値1>が第1チャンネルに、<ボリューム値2>が第2チャンネルになります。
MSX-AUDIO LSIが2つ実装されている場合で、パラメータが1つしかないときは、<ボリューム値1>が両方のチャンネルに設定されます。
- CALL PLAY PCM
ADPCM/PCM音声ファイルを再生します。
CALL PLAY PCM(<音声ファイル番号>[, <rep>][, <オフセット>][, <長さ>][, <サンプリング周波数>][, <チャンネル番号>])
CALL PLAY PCM(0)
<音声ファイル番号>で指定されたADPCM/PCM音声ファイルの<オフセット>の位置から<長さ>のデータを<サンプリング周波数>で再生します。
パラメータ | 値 | 意味 |
<サンプリング周波数> | 1800〜16000Hz | 外部メモリ(デバイス番号0〜3)を使ってADPCM再生するとき(ローカルモード)に限り、1800〜49716Hzまで指定できます。 |
<音声ファイル番号> | 0〜15 | 再生する音声ファイルを指定します。 |
<rep> | 0、1 | 1を指定するとリピートモードになり、指定された区間の再生を繰り返します。 |
<チャンネル番号> | 0、1 | 0は第1チャンネルへの再生、1は第2チャンネルへの再生です。ただし、外部メモリをデバイスとして使用する場合には、その外部メモリの接続されているチャンネルでしか再生できません。つまり、デバイス番号0〜1のファイルの<チャンネル番号>は0、デバイス番号2〜3のファイルの<チャンネル番号>は1でなければなりません。 |
通常は省略することで、音声ファイルを初期化したときのチャンネルが適用されますので、指定する必要はありません。
各パラメータは、音声ファイル番号以外は省略できます。省略時の値は、以下の通りです。
<rep>=0
<オフセット>=0
<長さ>=ファイルの終わりまで
<サンプリング周波数>=SET PCM文で設定された値
<チャンネル番号>=SET PCM文で設定された値
- CALL REC PCM
ADPCM/PCMにより音声を音声ファイルに録音します。
CALL REC PCM(<音声ファイル番号>[, <SYNC>][, <オフセット>][, <長さ>][, <サンプリング周波数>][, <チャンネル番号>])
CALL REC PCM(0)
<音声ファイル番号>で指定されたADPCM/PCM音声ファイルの<オフセット>の位置から<長さ>だけ<サンプリング周波数>で録音します。
パラメータ | 値 | 意味 |
<音声ファイル番号> | 0〜15 | 録音する音声ファイルを指定します。 |
<SYNC> | 0、1 | 0はシンクロスタートモードで、入力に音が入って来ると録音を始めます。 |
<チャンネル番号> | 0、1 | 0は第1チャンネルへの録音、1は第2チャンネルへの録音です。ただし、外部メモリをデバイスとして使用する場合には、その外部メモリの接続されているチャンネルにしか録音できません。つまり、デバイス番号0〜1のファイルの<チャンネル番号>は0、デバイス番号2〜3のファイルの<チャンネル番号>は1でなければなりません。 |
| | 通常は省略することで、音声ファイルを初期化したときのチャンネルが適用されますので、指定する必要はありません。 |
各パラメータは、音声ファイル番号以外は省略できます。省略時の値は、以下の通りです。
<SYNC>=0(シンクロスタート機能あり)
<オフセット>=0
<長さ>=ファイルの終わりまで
<サンプリング周波数>=SET PCM文で設定された値
<チャンネル番号>=SET PCM文で設定された値
- CALL SAVE PCM
ADPCM/PCM音声ファイルをフロッピーディスクへセーブします。
CALL SAVE PCM(<ファイル名>, <音声ファイル番号>)
CALL SAVE PCM("DEMO2.DAT",2)
<音声ファイル番号>で指定された音声ファイルを<ファイル名>で指定されたファイル名でフロッピーディスに保存します。
<ファイル名>はDISK BASICのファイルスペックに適合する文字列で、[ドライブ名":"]+最大8文字のファイル名+["."最大3文字の拡張子]です。
ファイル名としてデバイス名(CON、PRN、LST、AUX、NUL)を指定すると、そのデバイスに出力されますが、出力途中にCTRL+STOPまたはCTRL+Cなどで中止したときは、次のPCM関連のステートメントは正しく実行されません。その場合、次のステートメントの実行前にCALL STOPM文を実行してください。
- CALL SET PCM
ADPCM/PCMの音声ファイルを初期設定します。
CALL SET PCM(<音声ファイル番号>, <デバイス番号>, <モード>, <パラメータ1>, <パラメータ2>[, <サンプリング周波数>][, <チャンネル番号>])
CALL SET PCM(0,0,0, ,32)
<音声ファイル番号>で指定された音声ファイルの初期設定をします。
<音声ファイル番号>は0〜15で、以下のPCM関係の命令で参照される番号を実際のデータと結びつける役割をします。
CONVA
CONVP
COPY PCM
LOAD PCM
MK PCM
PLAY PCM
REC PCM
SAVE PCM
<デバイス番号>は以下に示すデバイスを音声ファイルの格納場所に指定します。指定されたデバイスの性質により、その他のパラメータの内容は以下のように変わります。
デバイス番号0と1は第1チャンネルの、デバイス番号2と3は第2チャンネルのMSX-AUDIO LSIの外部メモリを指します。
デバイス番号 | デバイス名 | モード | パラメータ1 | パラメータ2 |
0 | 外部RAM(1) | 0 or 1 | - | 長さ |
1 | 外部ROM(1) | - | ROM音声ファイル番号 | 長さ |
2 | 外部RAM(2) | 0 or 1 | - | 長さ |
3 | 外部ROM(2) | - | ROM音声ファイル番号 | 長さ |
4 | メインRAM | 0 or 1 | 配列名 | - |
5 | VRAM | 0 or 1 | アドレス | 長さ |
-は省略すること
長さの単位は256バイト
<モード>はPCMモードで、0のときADPCM、1のときPCMモードに設定されます。外部ROMがデバイスとして指定されたときは、<モード>はデータとして指定されているので、省略しなければなりません。また、ROM音声ファイル番号はROMの音声ファイルの番号で、0〜29の値です。下記の「外部ROM内音声ファイルの構造」を参照して下さい。
<サンプリング周波数>の単位は[Hz]で、範囲は1800〜16000Hzです。初期値は8000Hzです。
<チャンネル番号>は録再チャンネルを指定します。0のとき第1チャンネル、1のとき第2チャンネルが指定されます。外部デバイス(デバイス番号0〜3)については、第1チャンネルのデバイスには第1チャンネルのみ、第2チャンネルのデバイスには第2チャンネルのみしか設定できません。省略された場合は、外部デバイスが指定されている場合には、そのデバイスの接続されているチャンネルが、それ以外の場合には0(第1チャンネル)が指定されます。
CALL AUDIO文で初期化されたときには、音声ファイル番号0が第1チャンネルの外部RAM32Kバイト分に割り当てられ、他の音声ファイルは長さが0となっています。つまり、以下のSET PCM分が実行されたのと同じ状態になっています。
CALL SET PCM(,0,0, , 128)
外部ROM内音声ファイルの構造
外部ROMに置かれる音声ファイルの構造は表7.55のようになっています。
ファイルの長さは可変長で、必要な数のディレクトリで管理します。ディレクトリの数は最大30で、最後のディレクトリの後にデータ長として0のディレクトリエントリを置いて最後であることを示します。
表7.55 外部ROM内音声ファイルの構造
オフセット | 内容 |
0 | 「A」 |
1 | 「B」 |
2〜15 | 0(予約) |
16〜23 | ディレクトリエントリ0 |
24〜31 | ディレクトリエントリ1 |
: | : |
: | : |
240〜247 | ディレクトリエントリ29(最大) |
248〜255 | 0(ディレクトリエントリ終了マーク) |
256〜 | 音声データ |
表7.56 各ディレクトリエントリの構造
オフセット | 内容 |
0 | 0 ADPCM |
| 128 PCM |
1 | 0(予約) |
2〜3 | スタート番地(256バイト単位) |
4〜5 | データ長(256バイト単位) |
6〜7 | サンプリング周波数 |
3.インスツルメント関連のステートメント
ミュージックキーボードとFM音源の結合をインスツルメント(楽器)と呼び、CALL AUDIO文でインスツルメントに使うチャンネル数で決められたチャンネルがミュージックキーボード(MK)と結合されます。この結合はバックグラウンド(背景)で処理されるので、MSXをMKにより演奏する楽器としての使い方をBASICでのプログラム、コマンドの実行と独立して行うことが出来ます。
- CALL INMK
ミュージックキーボードの変化を知らせます。
CALL INMK[([<変数1>][, [<変数2>][, [<変数3>]]])]
CALL INMK(A)
CALL INMK(A, B, C)
CALL INMK(A, B)
CALL INMK( ,, C)
ミュージックキーボードの変化を知らせます。キーの変化は割り込みにより検出され、キーバッファに格納されます。パラメータを持っている場合には、キーバッファから1つの変化をとり出し、
<変数1>にキーコード番号
<変数2>にキーのON/OFF
<変数3>にキーコード番号に対応するADPCMの周波数
を入れます。キーコード番号は0〜127の範囲で、中央Cは60です。
キーバッファが空の場合、(0, 0, 0)を返します。
アーギュメントがない場合は、キーバッファをクリアします。
キーバッファの大きさは32です。バッファがオーバーフローした場合は、「Device I/O error」になります。その際には、バッファはクリアされます。
- CALL KEY ON/KEY OFF
インスツルメントにキーオン、オフを与えます。
CALL KEY ON(<キーコード番号>[, <ベロシティ>])
CALL KEY OFF(<キーコード番号>)
CALL KEY ON(60, 3):CALL KEY OFF(59)
インスツルメントにプログラムで、キーオン、オフを与えます。
<キーコード番号>は0〜127の範囲で、中央Cは60に対応します。
<ベロシティ>は0〜15の範囲で省略時は8を与えます。
これにより、ミュージックキーボードをプログラムによりエミュレートすることができます。ただし、この命令で与えたキーオン、オフはMK記録の対象とはなりません。
- CALL MK PCM
インスツルメントとして演奏するADPCMの音のファイル番号を指定します。
CALL MK PCM(<音声ファイル番号>)
CALL MK PCM(OFF)
CALL MK PCM(1)
インスツルメントでADPCMを使って演奏する音声ファイル番号を指定、解除します。
<音声ファイル番号>は0〜15です。「OFF」を指定すると、音声ファイル番号が解除されます。
音声ファイルは外部デバイス(デバイス番号0〜3)にADPCMで録音されていなければなりません。
- CALL MK TEMPO
ミュージックキーボード演奏記録、再生とメトロノーム機能の速度を設定します。
CALL MK TEMPO([<テンポ値>][, <パーカッションマップ>])
CALL MK TEMPO(60)
CALL MK TEMPO(60, 1)
CALL MK TEMPO( , 0)
タイマの周期をコントロールしてMK記録、再生機能やメトロノーム機能の動作速度を設定します。
<テンポ値>は25〜360で、CALL AUDIO文で設定する初期値は120です。このとき、タイマ周期は16.7mSで、四分音符はタイマ周期30個に対応します。
<パーカッションマップ>は0〜31で、以下のようにビットマップで指定されたリズム音によりメトロノーム機能を設定します。
なお、CALL AUDIO文でリズム使用を設定しておく必要があります。
bit0 ハイハットシンバル音
bit1 トップシンバル音
bit2 タムタム音
bit3 スネアドラム音
bit4 バスドラム音
AUDIO文による初期設定値は0で、メトロノーム機能は停止しています。
この命令によって次の機能の速度が影響を受けます。
MK APPEND
MK PLAY
MK REC
- CALL MK VEL
インスツルメントにベロシティを設定します。
CALL MK VEL(<ベロシティ値>)
CALL MK VEL(15)
インスツルメントにベロシティを設定して初期化します。ベロシティはキーボードのタッチ速度で、強度を表します。これによって、FM音の音量とともに音質も変化します。
MSX-AUDIOのミュージックキーボードでは一定のベロシティしか発生しませんので、その値を与えます。設定できる<ベロシティ値>は0〜15で、初期値は8です。
このステートメントはインスツルメントを初期化しますので、音は一度途切れます。
- CALL MK VOICE
インスツルメントのボイス(音色の種類)を設定します。
CALL MK VOICE(<パラメータ1>[, <パラメータ2>])
<パラメータ>= @+単純変数 または 配列変数名
CALL MK VOICE(@2)
インスツルメントの音色の種類を設定します。
<パラメータ>として単純変数が設定されたときは音色番号を指定します。音色番号の範囲は0〜63です。単純変数を指定する場合には、変数の前に「@」をつけます。@記号がない場合には、配列がパラメータとして与えられたと解釈し、その配列の内容が音色パラメータとなります。
音色パラメータの詳細については、「表7.47 音色パラメータデータのフォーマット」を参照して下さい。
パラメータが2つのときは、<パラメータ1>が第1チャンネルの、<パラメータ2>が第2チャンネルの音色になります。
2つのMSX-AUDIO LSIが実装されている場合に、1つのパラメータしか設定しないときは、<パラメータ1>が両方のチャンネルに設定されます。
- CALLMK VOL
インスツルメントの音量を設定します。
CALL MK VOL(<ボリューム値1>[, <ボリューム値2>])
CALL MK VOL(40)
インスツルメントの音量を設定します。<ボリューム値>の範囲は0〜63で、1ステップあたり+0.75dB変化します(8ステップで6dB)。CALL AUDIO文による初期化後の値は63(最大音量)です。
このステートメントはキーのオン、オフとは関係なく与えられます。
パラメータが2つのときは、<パラメータ1>が第1チャンネルの、<パラメータ2>が第2チャンネルのボリューム値になります。
2つのMSX-AUDIO LSIが実装されている場合に、1つのパラメータしか設定しないときは、<パラメータ1>が両方のチャンネルのボリュームを設定します。
4.MK(ミュージックキーボード)記録関連のステートメント
以下では、ミュージックキーボードによるインスツルメントの演奏の記録に関するステートメントを説明します。記録は、ミュージックキーボードから行われ、再生はインスツルメントで行います。
メインRAMのアドレスを直接指定することにより、記録領域として使用する場合にはバックグラウンド(背景)で行うことができます。
■MK記録のフォーマット
MK記録はキーオンとキーオフの2つのイベントの起きた時刻とキーコード番号を表7.57のフォーマットで混在して記録します。
表7.57 MK記録のフォーマット
キーオン(3バイト)
オフセット | 内容 |
0 | ディレイバイト(0〜255) |
1 | bit0〜6 キーコード番号(0〜127) |
| bit7 キーオンのID(=1) |
2 | bit0〜3 ベロシティ(0〜15) |
キーオフ(2バイト)
オフセット | 内容 |
0 | ディレイバイト(0〜255) |
1 | キーコード番号(0〜125) |
ノーオペレーション(2バイト)
オフセット | 内容 |
0 | ディレイバイト(0〜255) |
1 | コード番号(0または127) |
終了マーク(2バイト)
オフセット | 内容 |
0 | ディレイバイト(0〜255) |
1 | コード番号(126) |
ディレイバイトはMSX-AUDIO LSIのタイマの周期(MK TEMPO文によって設定)を単位にした値で、直前のイベントからの経過時間を値としてとります。ただし、256以上のタイマ値を記録できるように、キーオフのキーコード番号127および0はノーオペレーション(無効果)としています。
またキーオフのキーコード番号126はMK記録の終了マークの意味を持っています。キーコード番号は0〜127(中央Cが60に対応)、ベロシティは0〜15の値です。
- CALL APPEND MK
MK記録の追加記録を行います。
CALL APPEND MK(<配列名>)
CALL APPEND MK(<開始アドレス>, <終了アドレス>)
CALL APPEND MK(A)
(配列Aは既にDIM文で宣言され、CALL REC MK文により一部分記録されていること)
記録領域の中の終了マークをさがし、その場所からMK記録をします。
- CALL CONT MK
STOPM文により停止したMKの記録、再生を再開します。
CALL CONT MK
CALL CONT MK
CALL STOPM文により停止したMKの記録、再生を再開します。
- CALL MK STAT
MK記録システムの状態を知らせます。
CALL MK STAT(<変数名>)
CALL MK STAT(A):PRINT A
MK記録システムの状態を知らせます。返される<変数>には、以下の意味があります。
ビット | 意味 |
7 | MKからFM音源への結合(1でON) |
4 | MKからADPCMへの結合(1でON) |
3 | MK再生(1でON) |
2 | MK記録(1でON) |
1 | 記録モードのbit1 |
0 | 記録モードのbit0 |
- CALL PLAY MK
MK記録の再生を行います。
CALL PLAY MK(<配列名>)
CALL PLAY MK(<開始アドレス>, <終了アドレス>)
CALL PLAY MK
CALL PLAY MK(A)
(配列Aは既にDIM文で宣言され、REC MK文により記録されていること)
インスツルメントの演奏を再生します。
パラメータが<配列名>のときは、バックグラウンド処理はできません。パラメータが<メモリアドレス>のときは、バックグラウンド処理を行うことができます(BGM文の指定による)。バックグラウンド処理の場合、記録と再生は同時に行うことができ、記録内容をRECMODの指定によって切り替えることができます。
パラメータがない場合は最後に記録したものを再生します。
再生を停止するにはCTRL+STOPを押す(フォアグラウンド処理時)か、CALL STOPM文を実行します(バックグラウンド処理時)。CALL STOPM文で停止したMK再生は、CONT MK文により再開できます。
- CALL REC MK
インスツルメントの演奏を記録します。
CALL REC MK(<配列名>)
CALL REC MK(<開始アドレス>, <終了アドレス>)
100 DIM A(500)
110 CALL REC MK(A)
ミュージックキーボード(MK)の演奏を記録します。記録領域として、配列またはメインRAMを使用することができます。
<配列>を記録領域として指定したときは、バックグラウンドでの記録はできません。メモリの<開始アドレス>と<終了アドレス>で指定したときは、バックグラウンドで記録できますが(BGM文の指定による)、その領域は他の目的(プログラムを置くなど)では使用できません。CLEAR文で演奏記録用の領域を確保して下さい。
ミュージックキーボードの演奏を記録するか、再生を記録するかはCALL RECMOD文で指定します。
記録を停止するにはCTRL+STOPを押す(フォアグラウンド処理時)か、CALL STOPM文で停止します(バックグラウンド処理時)。CALL STOPM文で停止したMK記録(バックグラウンド)は、CONT MK文により再開できます。
記録されたデータをフロッピーディスクにセーブするには、DISK BASICのCOPY文で、配列に記録したものをフロッピーディスクに転送します。また、直接アドレスを指定した場合にはBSAVE命令を使うことができます。
- CALL RECMOD
MK記録の記録モードを設定します。
CALL RECMOD(<記録モード>)
CALL RECMOD(2)
MK記録の記録モードを設定します。MK記録の記録と再生を同時にバックグラウンドで行うときに便利な命令です。初期値は1です。
<記録モード>は0〜3で、以下の意味があります。
0 ミューティング
1 MK演奏を記録
2 MK再生を記録
3 MK演奏と再生を両方とも記録