Skip to content

MUCOM88 バグ・制限・補足情報

MUCOM™ edited this page Feb 5, 2024 · 135 revisions

本ページは以下のソフトウェアの情報についてまとめた物です。

  • MUSICLALF Ver.1.0~1.2(MUCOM88 Ver.1.5~1.7)
  • MUCOM88em Ver.1.00/1.01

バグ・制限・補足情報

  • 初期化されないMMLコマンドの情報については「MUCOM88 各MMLコマンドの初期値情報」のページを参照下さい。

  • 本項目内、「△」はスペース(空白文字)を明示的に表現する為に一部使用しております。

目次


■「%」:音長をクロック値で指定する場合の制限

注)デフォルト音長をクロック値で指定する「%」コマンドの事ではありません。

項目 内容
制限 休符に使用できない。(MUSICLALF Ver.1.0のみ)
違反時 デフォルト音長指定の方の「%」コマンドとして認識されてしまう。
(コンパイラの仕様)
「c%12」… OK
「r%12」…「r△%12」と記述したものと同義になる

■「^」:タイの制限

項目 内容
制限 休符に使用してはいけない。
違反時 不正データになる。
(コンパイラのバグ)
「c4^16」… OK
「r4^16」… NG

■「.」:付点の制限

項目 内容
制限 休符には1つまでしか使用してはいけない。複付点不可。
(コンパイラの仕様)
違反時 文法エラーになる。
「c4..」… OK
「r4..」… NG
「l4..」… OK

■ 休符の長さの制限

・その1

項目 内容
制限 ひとつの休符の長さがクロック値で1~255の範囲を超えてはいけない。
違反時 不正データになる。
(コンパイラのバグ)
「C192 r1.」… NG (288クロックで制限オーバー)
「C128 r1.」… OK (192クロックで制限内)
「r0」… NG (0クロックで制限オーバー)
「r%256」… NG (256クロックで制限オーバー)

・その2

項目 内容
制限 休符を複数連続で並べた時にNGのケースがある。
連続する休符の先頭からひとつ前の休符までの長さの合計クロックが111で割り切れる場合、対象の休符の長さが145クロック以上の場合にNG。
割り切れない場合、「連続する休符の先頭からひとつ前の休符までの長さの合計クロック÷111の余り+対象の休符の長さ」が256クロック以上の場合にNG。
(コンパイラのバグ)
違反時 不正データになる。
「r%111r%145」… NG
「r%112r%144」… OK
「r%112r%255」… NG
「r%110r%112r%145」… NG
「C192 r1r1」… NG
「C128 r1r1」… OK

■ 音符の音長の制限

・その1

項目 内容
制限 ひとつの音符の音長がクロック値で1~255の範囲を超えてはいけない。
違反時 文法エラー、もしくは不正データになる。
(コンパイラのバグ)
「C192 c1.」… NG (288クロックで制限オーバー(文法エラーになる))
「C128 c1.」… OK (192クロックで範囲内)
「c0」… NG (0クロックで制限オーバー(不正データになる))
「c%256」… NG (256クロックで制限オーバー(不正データになる))

・その2

項目 内容
制限 単独のひとつの音符の音長が255クロックなのはNG。
違反時 不正データになる。
(コンパイラのバグ)
「c%255」… NG
「c%254^%1」… OK
「c%255^%1」… OK

・その3

項目 内容
制限 複数の音符をタイ(「&」or「^」)で繋いだ場合にNGのケースがある。
先頭を除く音符の中に音長が128クロック以上のものがあり、先頭からその音符までの音長の合計クロックが127×n+1 (nは2以上の整数)、且つ全て音符の音長の合計クロックが 127×n+1 (nは2以上の整数) の場合にNG。
もしくは先頭の音符が255クロックで、且つ全て音符の音長の合計クロックが127×n+1 (nは2以上の整数) の場合にNG。
違反時 不正データになる。
(コンパイラのバグ)
「c%1&c%254」… NG
「c%1&d%254」… OK (スラーの場合は問題なし)
「c%127^%128」… NG
「c%128^%127」… OK
「c%254^%128」… NG
「c%255^%127」… NG
「c%127^%128^%127」… NG
「c%128^%127^%127」… OK

■「&」:タイ/スラーの制限

・その1

項目 内容
制限 休符に使用してはいけない。
違反時 不正データになる。
(コンパイラのバグ)
「r4&r4」… NG

・その2

項目 内容
制限 タイの場合、「&」の直前は音符でないといけない。
(スラーの場合は問題なし)
違反時 不正データになる。
(コンパイラのバグ)
「c4&)c4」… OK
「c4)&c4」… NG
「c4)&d4」… OK (スラーの場合は問題なし)
「c4&[c4]2」… OK
「c4[&c4]2」… NG

■「y」:レジストリ直接書き込みコマンドの制限

・その1

項目 内容
制限 SSGパートに記述してはいけない。
違反時 不正データになる。
(コンパイラの仕様)

・その2

項目 内容
制限 アドレスの指定可能範囲は0~178で179以上は指定してはいけない。
違反時 文法エラーになる。
(コンパイラの仕様)
★MUCOM88em Ver.1.01でFix。

■「p」:パンコマンドの制限

項目 内容
制限 SSGパートに記述してはいけない。
違反時 不正データになる。
(コンパイラの仕様)

■「@n1=」:SSGのプリセット音色設定コマンドの制限

項目 内容
制限 オミットされたコマンドのため使用してはいけない。
違反時 不正データになる。
(コンパイラの仕様)

■ マクロ定義の補足

項目 内容
補足 #と*の間の空白は無くてもよい。
「#△*1{cde}」… OK
「#*1{cde}」… OK

■ FM音色定義の制限・補足

・その1

項目 内容
制限 キャリアのTLの値は無視され、常に「0」とみなされる。
(ドライバの仕様)
; FB AL
; AR DR SR RR SL TL KS ML DT
 @90
 5, 4
 31, 0, 0, 0, 0,22, 0, 2, 7
 18,10, 0, 6, 1,16, 0, 8, 7
 31, 0, 0, 0, 0,23, 0, 4, 3
 18,10, 0, 6, 1,16, 0, 4, 3 … 下記の内容(キャリアのTLが0)と同等の音色になる

; FB AL
; AR DR SR RR SL TL KS ML DT
 @90
 5, 4
 31, 0, 0, 0, 0,22, 0, 2, 7
 18,10, 0, 6, 1, 0, 0, 8, 7
 31, 0, 0, 0, 0,23, 0, 4, 3
 18,10, 0, 6, 1, 0, 0, 4, 3

・その2

項目 内容
制限 音色設定の途中にコメント行を挟んではいけない。
違反時 意図しない音色になる。
(コンパイラの仕様)
 @90
;FB AL
 5, 4
; AR DR SR RR SL TL KS ML DT
 31, 0, 0, 0, 0,22, 0, 2, 7
 18,10, 0, 6, 1,16, 0, 8, 7
 31, 0, 0, 0, 0,23, 0, 4, 3
 18,10, 0, 6, 1,16, 0, 4, 3 … NG

 @90
 5, 4; FB,AL
 31, 0, 0, 0, 0,22, 0, 2, 7 ; op1
 18,10, 0, 6, 1,16, 0, 8, 7 ; op2
 31, 0, 0, 0, 0,23, 0, 4, 3 ; op3
 18,10, 0, 6, 1,16, 0, 4, 3 ; op4 … OK

・その3

項目 内容
補足 文字の区切りはカンマやスペースに限らず数字以外なら何でもいい。
各行の所定数のパラメータ以降は何を記載しても無視される。
 @70
 7, 0
 31,18, 0, 6, 2,36, 0,10, 3
 31,14, 4, 6, 2,45, 0, 0, 3
 31,10, 4, 6, 2,18, 1, 0, 3
 31,10, 3, 6, 2, 0, 1, 0, 3 … OK

 @70
 7 0
 31 18 0 6 2 36 0 10 3
 31 14 4 6 2 45 0 0 3
 31 10 4 6 2 18 1 0 3
 31 10 3 6 2 0 1 0 3 … OK

xx@70
xx7xx0
xx31x18xx0xx6xx2x36xx0x10xx3xx
xx31x14xx4xx6xx2x45xx0xx0xx3xx
xx31x10xx4xx6xx2x18xx1xx0xx3xx
xx31x10xx3xx6xx2xx0xx1xx0xx3xx … OK

・その4

項目 内容
制限 FM音色を定義するとプリセット音色の@0と@1が破壊される可能性がある。
そのためプリセット音色の@0と@1は使用すべきではない(@0や@1に音色定義をして使用する事自体は問題なし)。
(MUCOM88emでは改善済)
(コンパイラの仕様)

■「R」:リバーブコマンドの補足

項目 内容
補足 予めvコマンドで音量が設定されている事が前提。
yコマンドやyTLコマンドで操作した音量は反映されないので注意。
(ドライバの仕様)

■「v」:ボリュームコマンドの制限

・その1

項目 内容
制限 FMパートでの指定可能範囲は-4~15だが、その範囲を超えても特にエラーにはならない。
違反時 v-4と等価になる。
(ドライバの仕様)

・その2

項目 内容
制限 ADPCMパートでの指定可能範囲は-4~251だが、vm0(デフォルト)の時は246~251の範囲は使用できない。
違反時 v-4(音量0)と等価になる。
(コンパイラのバグ)
「vm0 v245」… OK
「vm0 v246」… NG
「vm1 v246」… OK
「vm1 v251」… OK
「vm1 v252」… NG

※ボリュームコマンドの指定可能範囲の詳細については「MUCOM88 音量テーブル一覧」を参照下さい。

■「T」:テンポコマンドの制限

項目 内容
制限 SSGパートで使用した場合、指定した位置に関係なく曲の先頭からのテンポに反映される。
複数指定した場合は最後に指定したテンポのみ反映される。
(ドライバの仕様)

■「t」:テンポコマンド(タイマーB指定)の制限

・その1

項目 内容
制限 SSGパートで使用した場合、指定した位置に関係なく曲の先頭からのテンポに反映される。
複数指定した場合は最後に指定したテンポのみ反映される。
(ドライバの仕様)

・その2

項目 内容
制限 タイマーB自体は0~255の値が指定可能だが、253~255の範囲は指定してはいけない。
違反時 ドライバがハングアップする。
(ドライバの仕様?)
「t252」… OK
「t253」… NG

■「{...}」:ポルタメントコマンドの制限

・その1

項目 内容
制限 開始音程と終了音程の間にはオクターブ相対指定「<」「>」が記述可能だが、ひとつまでしか記述してはいけない。
違反時 文法エラーになる。
(コンパイラの仕様)
「{c4>c}」… OK
「{c4>>c}」… NG

・その2

項目 内容
制限 FMパートの場合、終了音程が開始音程よりひとつ上のオクターブのa以上の場合は音程がおかしくなる事がある。
違反時 異常な発音をする。
(ドライバの仕様)
「C128 b2>g+」… OK
「C128 b2>a」… NG

・その3

項目 内容
制限 音長が128クロックを超えてはいけない。
違反時 128クロックを超えた部分から音程が逆方向に変化する。
(ドライバの仕様)
「{c%128a}」… OK
「{c%129a}」… NG (129クロック目から音程が下がる)

■ 「¥」:エコーマクロの補足

項目 内容
補足 予めvコマンドで音量が設定されている事が前提。
yコマンドやyTLコマンドで操作した音量は反映されないので注意。
(コンパイラの仕様)

■ 数値に関する補足

・その1

項目 内容
補足 あらゆる数値は頭に「$」を付ける事によって16進数で記述可能。但しマイナスの値は記述できない。
値の直後に音符(a~f)が来る場合は空白を空けないと16進数の一部として解釈されてしまうので注意。
(コンパイラの仕様)

・その2

項目 内容
補足 各種コマンドのパラメータとなる数値の多くは範囲チェックがされておらず、指定可能範囲を越えても文法エラーとならない事が多い。その場合、オーバーフローした値がそのまま適用される。
(コンパイラの仕様)
「t256」… 「t0」と同じ意味になる。
「MD-1」…「MD255」と同じ意味になる。
「[…]0」… 「[…]256」と同じ意味になる。

・その3

項目 内容
補足 あらゆる数値の前には空白を入れる事が可能。
(コンパイラの仕様)
「c△4」… 「c4」と同じ意味になる。
「c△$10」…「c$10」と同じ意味になる。
「c%△24」… 「c%24」と同じ意味になる。
「M△1,△2,△-3,△4」…「M1,2,-3,4」と同じ意味になる。

■「S」:スロットディチューンコマンドの制限

項目 内容
制限 第1パラメータが0以外の場合、その状態で音長が128クロック以上の音符を記述してはいけない。
違反時 他のFMパートにも第1パラメータ相当のディチューンが掛かる。
(ドライバのバグ)
「S100,0,0,0 c%127」… OK
「S100,0,0,0 c%128」… NG
「S0,100,0,0 c%128」… OK

■「MT」:トレモロ・ワウワウコマンドの制限

項目 内容
制限 オミットされたコマンドのため使用してはいけない。
違反時 不正データになる。
(コンパイラの仕様)

■「ML」:ソフトウェアLFOの振幅指定コマンドの補足

項目 内容
補足 SSGパートでは値の正負が逆になっている。
(コンパイラのバグ)

Clone this wiki locally