2022年5月24日火曜日

#1 MUCOM88 MMLで遊ぶ。  MMLの書き方、MML記述方法に関する調べ物メモ 最初のドレミファソラシドを鳴らす。

 

MMLリファレンスマニュアル

https://github.com/onitama/mucom88/wiki/MML%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9

 

●FM+SSG音源ポリ数

FM3ポリ+SSG3ポリ:YM2203(OPN)

FM6ポリ+SSG3ポリ+ノイズリズム+ADPCMリアルドラムセット:YM2608(OPNA/サウンドボードII)

 

■ MML内部

記述 説明
C 全音符あたりのクロック(分解能)指定 (デフォルトはC128)
t FM音源チップのタイマーBの数値を直接指定するテンポ指定
T テンポ指定 (1分間に演奏する四分音符の数で指定)
@ 音色番号指定(FM/SSG/PCM) SSGの場合はプリセット音色(16種)を使用する
@"..." [FM] 音色名での音色指定
o [FM/SSG] オクターブ絶対指定(o1~o8, デフォルトo6)、[ADPCM] o1が高音でo2,o3となるほど低音になる。
v [FM/SSG] 音量絶対指定(0~15)、[ADPCM] 音量絶対指定(0~255)、[リズム] vn1,n2,n3,n4,n5,n6,n7 (全体,BD,SD,CY,HH,TM,RY)
q 音の長さ全体から、キーオフを早めるタイミングをクロック数で指定。(スタッカート)
p パン (0=発音しない, 1=右, 2=左, 3=中央)
リズムパートでの指定時は、bit0~3でリズムの種類(0~5)、bit4,5でパン(1:右, 2:左, 3:中央)を指定する。
($を指定して16進指定可。例: p$12 = シンバルを右に)
l デフォルト音長指定
cdefgab 音程の指定 (必要に応じて後ろに調号(+がシャープ,-がフラット)、音長数値で指定します。「.」付点も指定可)
r 休符
% 音長をクロック値で指定 ※デフォルト音長指定をクロックで指定したい場合は、前にスペースを入れる。
D ディチューン (-32768~32767) 後ろに+を指定した場合、絶対指定でなく現在値からの相対指定になる
> オクターブ相対指定(上げ)
< オクターブ相対指定(下げ)
) 音量相対指定(上げ) 16段階 )nで一度に変化する量を数値で指定可(ADPCMは256段階)
( 音量相対指定(下げ) 16段階 (nで一度に変化する量を数値で指定可(ADPCMは256段階)
& タイ/レガート (前後の音のキーオフ/キーオンを省略)
^ 音長を繋げる
{…} ポルタメント。{c2b} で c→b へのポルタメント 数字は音長指定。オクターブをまたぐことも可。
[…]n ループ開始位置とループ終了位置。後ろに数字を置くことで繰り返し回数を指定
/ ループ内脱出位置指定 [ ]のループ内に記述すると、最後のループで / の位置でループを脱出します。
L 曲全体のループ位置指定 (各パート1箇所のみ指定可能)
K 移調絶対指定 (-128~+128) ループ内は繰り返し1回のみ
V 音量の相対変化指定(以降のvコマンドの値に増減, コンパイル時に評価)
¥=n1,n2 エコーマクロ。n1(0~9)で直前の音符数, n2(省略可能)でボリュームの下げ数を指定
¥ ¥=n1,n2で設定した音に置き換える
k (v1.7のみ) 移調相対指定
s (v1.7のみ) キーオンのタイミングを変える。クロック単位で指定し、正で遅らせ負の方向で早める(シャッフル)
H [FM] ハードウェアLFO Hn1,n2,n3 n1:速度(0-7),n2:PMS(0-7),n3:AMS(0-3)
R [FM/SSG] リバーブ Rn で音量の加減値を指定 (nは負の値も指定可)
キーオフ時、キーオフする代わりに現在の音量の約1/3に設定して発音を続ける。(FMとSSGでは音量計算が異なります)
RF [FM/SSG] リバーブ ON/OFF (0=off 1=on)
Rm [FM] リバーブの効果のかかる部分の指定(0=続く休符も含める 1=qで切られた部分のみ)
M ソフトウェアLFO (Mn1,n2,n3,n4) n1:delay n2:クロック単位 n3:振幅 n4:変化の回数)
MF ソフトウェアLFO ON/OFF (0=off 1=on)
MW ソフトウェアLFOのディレイ(n1)だけを設定
MC ソフトウェアLFOのクロック単位(n2)だけを設定
ML ソフトウェアLFOの振幅(n3)だけを設定
MD ソフトウェアLFOの変化の回数(n4)だけを設定
S [FM3] 効果音モードのスロットディチューン (Sn1,n2,n3,n4) n1=OP4 n2=OP3 n3=OP1 n4=OP2のディチューン順(0~255)
E [SSG] ソフトウェアエンベロープ(En1,n2,n3,n4,n5,n6) AL,AR,DR,SL,SR,RR
P [SSG] ミキサモード Pn (0:発音しない 1:トーン 2:ノイズ 3:トーン+ノイズ)
w [SSG] ノイズ周波数 (0~31)
s [SSG] SSGハードウェアエンベロープ・波形指定 (v1.5のみ)
m [SSG] SSGハードウェアエンベロープ・周期指定 (v1.5のみ)
y レジスタ直接書き込み(yn1,n2) n1=レジスタ番号 n2=データ
yDM [FM] DT/ML直接指定 yDM,n1,n2 n1=スロット番号 n2=データ
yTL [FM] TL直接指定 yTL,n1,n2 n1=スロット番号 n2=データ
yKA [FM] KS/AR直接指定 yKA,n1,n2 n1=スロット番号 n2=データ
yDR [FM] DR直接指定 yDR,n1,n2 n1=スロット番号 n2=データ
ySR [FM] SR直接指定 ySR,n1,n2 n1=スロット番号 n2=データ
ySL [FM] SL/RR直接指定 ySL,n1,n2 n1=スロット番号 n2=データ
ySE [FM] SSGEG直接指定 ySE,n1,n2 n1=スロット番号 n2=データ
vm [ADPCM] PCMボリュームモード(vmn で n を音量の補正値としてサウンドドライバ側で加算する)
* マクロ展開
; これ以降行末までコメント
: これ以降コンパイルを行なわない
! このパートのこれ以降を全て休符とする(発音しない)
J ジャンプコマンド(この位置から演奏開始)
| 何もしない スペースと同意 (視認性向上用の区切り)

※Rコマンド補足、FMの場合:リバーブ時の音量=int((現在の音量+リバーブ値+4)/2)-4、SSGの場合:リバーブ時の音量=int((現在の音量+リバーブ値)/2)

 

 

 これは本物MMLなので覚えて使うまでが大変そうですが、とりあえずテストのドレミファソラシドだけを鳴らしてみるから始めるw

最も簡単な使い方はサンプルを聴いて、最初の数行をコピーして新規貼り付けして挙動確認をしてみる。




最初のA行のみコードを改造してドレミファソラシドに変更。

t193 C96 @85o3v11p3q4l16 L o4c8d8e8f8g8a8b8o5c8


無事、ドレミファソラシドを鳴らすことができましたが

最初の音色チェンジ ”@85o3v11p3q4l16” の部分がよくわからないw

ただ単に後ろはMMLでしたw

@85プリセット

o3オクターブ

v11ボリューム 

p3パン

q4キーオフ

l16長さ

 

あとSCCI(Sound Chip Common Interface)でMIDI音源も使えるようで、本物FM音源も使える様子。

無事、eVY1 boardの認識はしましたが、ここをチェックすると内臓FM音源ボードEmuは切り離されて鳴らなくなるので、チェックを外してソフトを再起動。

色々と使い方は不明なので、調べてみようとは思うが、まあIchigojamの簡易型も含めてStandard MidiからMMLへの変換ツールを探さないとw

 


0 件のコメント:

コメントを投稿

任天堂目覚し時計アラーモは優秀だがかなり高額、今後のゲームサウンド配信次第で化ける?w

かなり使える、優秀な目覚し時計アラーモ。   目覚まし機能は、5分毎にどんどん音量が増して行き、体を動かす、動くと音楽が再び小さく鳴り、目覚まし発動時は、ずっと小さく鳴り続けている感じのスムーズ機能付き、体が動くと小さくなり、ベッドから出ると自動終了する。 画面は夜中でも眩しすぎ...