プチコンmkII









44 サウンド命令(上級者)

サウンド命令(上級者)

MMLを使って作曲を行ったりMMLとの情報交換などを行う以下の命令があります。

BGMSET、BGMSETD、BGMCLEAR、BGMPLAY、BGMSETV、BGMGETV()、BGMPRG

44 サウンド命令(上級者)

BGMSET

MMLによる曲データの登録

書式BGMSET 曲番号, MML文字列 [ ,MML文字列2... ]
引数曲番号128〜255
MML文字列演奏情報を文字列として記述
MML文字列21つの文字列で収まらない場合、複数の文字列に分割可能
戻りなし
エラー

44 サウンド命令(上級者)

BGMSETD

DATAとして用意したMMLの登録

MMLを記述したDATA文の最後に、MMLの終了の印としてDATA 0 が必要です。

書式BGMSETD 曲番号, @ラベル
BGMSETD 曲番号, 変数$
引数曲番号128〜255
@ラベルMMLが登録されたDATAを指すラベル名
戻りなし
エラー
@MMLDATA
DATA "CDEFGAB<C>"
DATA "CCCEEEGGG"
DATA 0
'---
BGMSETD 128, @MMLDATA
BGMPLAY 128

44 サウンド命令(上級者)

BGMCLEAR

登録された曲データをクリア

書式BGMCLEAR [ 曲番号 ]
引数曲番号128〜255(省略時すべての曲データ)
戻りなし
エラー

44 サウンド命令(上級者)

BGMPLAY(上級者用)

MMLを直接渡して音楽を演奏

MMLによる演奏の場合は、演奏トラックは0に固定されます。トラック音量の指定はできません。(トラック番号1〜7を指定するとエラーになります)

書式BGMPLAY MML文字列 [ ,MML文字列2... ]
引数MML文字列演奏情報を文字列として記述
MML文字列21つの文字列で収まらない場合、複数の文字列に分割可能
戻りなし
エラー

44 サウンド命令(上級者)

BGMSETV

MML内変数への書込み

書式BGMSETV トラック番号,変数番号,値
引数トラック番号0〜7
変数番号0〜7(MML変数の$0〜$7)
0〜255
戻りなし
エラー

44 サウンド命令(上級者)

BGMGETV()

MML内変数からの読込み

MML内の変数代入が反映される周期は1/60秒ごとです。最低でもVSYNC 1以上の間を空けてください。

書式変数=BGMGETV( トラック番号, 変数番号 )
引数トラック番号0〜7
変数番号0〜7(MML変数の$0〜$7)
戻り数値-1=演奏停止中
エラー

44 サウンド命令(上級者)

BGMPRG

MMLで演奏できる楽器として波形を登録

波形に対するエンベロープを設定するA,D,S,Rについては、MMLコマンド@Eもご覧ください。

書式BGMPRG 楽器番号, A ,D ,S ,R ,波形文字列
引数楽器番号224〜255
A 立ち上がり0〜127
D 減衰0〜127
S 維持0〜127
R 消えるまで0〜127
波形文字列16進文字列(64文字または128文字必要)
戻りなし
エラー

波形文字列は、符号付8ビット数値を2文字の16進数表記にして管理しています。

上図の青枠内の数字だけを波形文字列にすると以下のようになります。
"00204060402000E0C0A0C0E0"
このようにして求めた波形文字列64文字分で1周期の波形として扱われます。128文字分用意すると少し複雑な波形も定義することができます。
生楽器音サンプリングのような複雑な波形は登録できませんが、チープな音が鳴る簡易シンセサイザーとして利用できます。