T'SoundSystem Spec

基本機能

同時発音数制限なし(コンパイラの仕様上の制限で26)。
音色表現力チェンネル毎に任意のモジュールを動的に選択可能。加えて、チャンネル間のFM変調機能搭載。ステレオ出力。
音程解像度2種類から選択可能。
タイマーテンポ制御用とエンベロープ制御用の2本の擬似タイマー割り込みを内部に持つ。

モジュール

PSG矩形波音源。もっとも単純な音色しか出せないが、処理はもっとも軽い。
FCデューティ比を調節できる矩形波。ファミコンレベルの音色表現が可能。処理も軽い。
NOISEノイズ音源。
SINサイン波。FM変調をすることで、FM音源同様の表現が可能。
SCCウェーブテーブル音源。コナミ往年のSCC音源を再現可能。テーブルサイズは32。

音程解像度

HzHz単位での表現が可能。通常のモード。
MSXMSXで使用されていたPSGと同等の解像度。高音域になると、音程が荒くなる。

T'SoundSystem MML Manual

制御文

#TITLE <[title]>曲名を登録する。'\'を使えば、'>'等も含めることができる。
(例)#TITLE <RISING ZAN \<THE SAMURAI GUNMAN\>>
#CHANNEL [n]曲のなかで使う最大音色数を指定する。
(例)#CHANNEL 3
#PRAGMA [key]GameBoy用の曲データを作る際に使用する。詳細はとりあえず未公開。
#WAV [n], <[table]>SCC用の波形テーブル n にデータを設定する。signed char×32。パラメータの詳細は後述。
(例)#WAV 0, <(0, 127),16, (-128, 127),16>
#TABLE [n], <[table]>エンベロープ用の波形テーブル n にデータを設定する。siged char の任意長。パラメータの詳細は上に同じ。
#A〜#Z各チャンネルのMMLデータを記述する。
#ENDMMLの終了を示す。これ以降はコメントとして扱われる。

テーブルパラメータ

要素の数だけ、「,」で区切ってパラメータを列挙する。

(l, m),n の書式で、lからmまでの値をn個のパラメータで線形補完する。例えば、(1,5),5 は、1,2,3,4,5 と同じ。

MMLコマンド

制御関連

t[n]1≦n(120)≦512テンポ指定。テンポ制御用のタイマーの値を操作するので全チャンネルに影響が及ぶ。
$ 無限ループ開始位置指定。これが指定されると、チャンネルデータが最後まで演奏された時、この位置に戻る。
[[n] ... | ]2≦n(2)≦255ループ擬似命令。'['から']'の間をn回繰り返す。最終ループの時は、'|'まで来たらループを抜ける。'|'は省略可能。コンパイルの段階で展開される。そのため、バイナリサイズは大きくなってしまう。が、相対命令も有効。ネストは不可。
(例)[3c<] …(展開)→ c< c< c<
/:[n] ... / ... :/2≦n(2)≦255ループ命令。'/:'から':/'の間をn回繰り返す。最終ループの時は、'/'まで来たらループを抜ける。'/'は省略可能。ドライバレベルのループ機能なので、コンパイル時に展開される相対命令の類は繰り返されない。ネストは16重まで可能。
(例)/:2cde/fgab<:/c:/ …(展開)→ cdefgab cde <c
{ ... } コメント。'{'から'}'で囲まれた部分をコメントとして扱う。ネストも可能。

音色関連

s[n]0≦n(0)≦255サスティン。キーオフ後にいきなり音を消さずに減衰させる。0の時はOFF。値が大きいほど減衰も急。
s[n],[m]0≦n(0)≦255,
-128≦m(0)≦127
拡張サスティン。キーオフ後に、音量だけではなく、音程も同時に連続的に変化させる。mに対する音程の変化分は、音程モードにより、異なる。
%0≦n(0)≦255モジュール変更。モジュール指定に使う数値は後述。
@0≦n(0)≦255音色変更。変更の方法・有効範囲はモジュール毎に異なり、そのパラメータの有効性はコンパイル時にはチェックされないので注意。

音程関連

o[n]1≦n(4)≦8オクターブの指定。大きいほど高い。
> オクターブ・ダウン。コンパイラ擬似命令。
< オクターブ・アップ。コンパイラ擬似命令。
(例)cdrfgab<c
a[n]〜g[n]1≦n(L)≦1024ラ〜ソにそれぞれ対応した音を出す。Lはl[n]で指定された値。
+(#)/- a〜gの直後に記述することで、音程を半音単位で上げ/下げする。
r[n]1≦n(L)≦1024休符指定。
k[n]-128≦n(0)≦127ディチューン。
mp[a], [b], [c], [d], [e]0≦a≦65535,
0≦b≦255,
0≦c≦255,
-128≦d≦127,
0≦e≦255
ピッチモジュレーション。a : Delay, b : Depth, c : Width, d : Height, e : Delta。発声後、a 単位時間後にモジュレーション開始。width 単位時間おきに height 単位音程ずつ変化する。変化量の絶対値が depth に達したら、変化の方向を逆転する。以上の処理を、delta 回繰りかえしたら、depth は 1 増える。任意のパラメータを省略可能。これを使用すると s コマンドの第 2 パラメータは無効になる。

音長関連

q[n]1≦n(MG)≦MG実際に演奏する音調の割合。ある長さだけ音を伸ばそうとしたとき、実際にはその長さのn/MGが演奏され、残りの時間は休符になる。(現在はMG=16で固定)
l[n]1≦n(4)≦1024省略時の音調指定
. 音長指定の直後に付加することで、長さを1.5倍にする。続けて複数付加できる。
^ タイ。音長のあとにさらに音長を追加する。
(例)c4^16

音量関連

v[n]1≦n(10)≦15音量を指定する。数値が大きいほど音も大きい。この方法で指定すると、音の位置は中央になる。
v[n], [n]1≦n≦15音量を指定する。始めの値が左、次の値が右のチャンネルの音量を示す。任意のパラメータを省略可能。
(例)v15,0 c v10, c v0,10 c v,15 c
na[n],[m]0≦n(0)≦255,
0≦m(0)≦255
音量エンベロープ。テーブルn番のデータでエンベロープをかける。mは1回の変化が起こるまでの時間。mが大きいほど変化はゆっくりになる。いずれかの省略は不可。共に省略、またはmが0の時は機能をOFFにする。

モジュール

ID音源音程モード
0PSGHzモード
1FCHzモード
2NOISEHzモード
3SINHzモード
4SCCHzモード
128PSGMSXモード
129FCMSXモード
130NOISEMSXモード
131SINMSXモード
132SCCMSXモード

FM変調

パラメータの調整のために現在機能をDisable中


based on ver.0.85