44 サウンド命令(上級者)
サウンド命令(上級者)
MMLを使って作曲を行ったりMMLとの情報交換などを行う以下の命令があります。
BGMSET、BGMSETD、BGMCLEAR、BGMPLAY、BGMSETV、BGMGETV()、BGMPRG
44 サウンド命令(上級者)
BGMSET
MMLによる曲データの登録
書式 | BGMSET 曲番号, MML文字列 [ ,MML文字列2... ] | |
---|---|---|
引数 | 曲番号 | 128〜255 |
MML文字列 | 演奏情報を文字列として記述 | |
MML文字列2 | 1つの文字列で収まらない場合、複数の文字列に分割可能 | |
戻り | なし | |
エラー |
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文字列2 | 1つの文字列で収まらない場合、複数の文字列に分割可能 | |
戻り | なし | |
エラー |
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文字分用意すると少し複雑な波形も定義することができます。
生楽器音サンプリングのような複雑な波形は登録できませんが、チープな音が鳴る簡易シンセサイザーとして利用できます。