HuSIC wiki - HuSICシーケンス

HuSICのシーケンスコード

シーケンスコードとは?

シーケンスコードとは、いわゆる中間コードの事で、
MMLコンパイラがMMLを解釈し、出力するものがシーケンスコードになります。

仕様

mckの基本的なコードを拡張しています。

HuSIC拡張コード

$f2,ノイズスイッチ
$00ノイズオフ
$01ノイズオン

ノイズの場合は音程のオクターブ指定部分が無効になる。(下位4bitのみが有効)
また、ハードウェアの制約により4chと5chのみ有効となる。
$f1,波形番号

テーブルから波形をセットする。
波形番号はテーブルの位置を意味し、エンベロープデータなどと
同じ方式で格納されている。
$f0,パンボリューム

チャンネル別のボリュームを設定する。
上位4ビット=左ch , 下位4ビット=右ch
0 = 最低 , 15 = 最高
$ef,XPCM

XPCM=1でXPCMモード、第6ch使用
$ee,バンク番号,アドレス(下位8bit),アドレス(上位8bit)

シーケンスデータの存在するバンクを切り替える。
$ed,モード

LFOモードの設定。(255でLFO停止)
0 = LFO無し
1 = トラックA + 変調データ
2 = トラックA + 変調データ*16(4bit左シフト)
3 = トラックA + 変調データ*256(8bit左シフト)

変調データはトラックBの波形データが使用されます。
その場合、波形データはsigned 5bitの数値として扱われます。

※LFO有効時はトラックBがミュートされます。
$ec,LFO周波数
周波数 = 3.58MHz / (32 * トラックB周波数 * LFO周波数)

バンク切り替え時の注意点

バンクを超えてリピートコマンドを使用することは出来ません。