zmc3his.txt

[将来の予定メモ]

・スイッチ指定をzmsファイル内でやる

・[event meta, port, 3] とかできるようにする

(最後が文字列になってしまうのを数値も許すようにする)

・VSTi向けの拡張を何か考える

[以下、リリースメモ]

→v1.04 (Dec. 29th, 2008)

・-dスイッチで、マクロ定義ができる。複数指定が可能。

例: zmc3 -d sc55 -dmu80 test.zms

これに付随して、#ifdef #ifndef #else #endif を追加。

デバッグ用に、-m スイッチをつけると、マクロ等を反映した結果の

zmsファイルを、debug.zms として出力する。

→v1.03 (Dec. 29th, 2008)

・.define, .include, .trackの頭に#が使えなかったのを修正。

(#define, #include, #track)

・とあるトラック(たとえば(t1))で[back ~]を使った後で、再度(t1)を明示的に

指定して音符を並べると、[back]側にその音符が配置されてしまっていたのを修正。

例:

(t1)L8 [back >g1<] cde4g2 f2e4g4

(t1)a1 //(このa1は、e4g4の後には鳴らず、>g1<の直後に鳴る)

(thanks to カインさん)

→v1.02 (May 8th, 2008)

・zmsのファイル名に、"ソ"などのいわゆる5C文字(2byte目が5C(\)になる文字)

を使うと、FILE NOT FOUNDになっていたのを修正。

(5C文字対策のコードは元々入っていたのですが、機能していませんでした・・)

(thanks to ホイホイさん)

→v1.01 (June 4th, 2007)

・P0~3 を使ってパンポットを振った場合、その後 @p±~ による

相対パンポット指定が正しく機能していなかったのを修正。

(thanks to utmさん)

→v1.00 (Apr. 22nd, 2007)

・.xg_system_on 等、YAMAHA専用のエクスクルーシブ命令の使用時に

異常なZMDを生成していたのを修正。

・.YAMAHA_EXCLUSIVE2命令を追加。(以上2つ thanks to みやざきさん)

・オートパンのスイッチをオフにしても、オートパンが進行していたのを

修正。

→v0.99.1 (Apr. 13th, 2007)

・単音演奏時にベロシティシーケンスが2個ずつ進んでいたのを修正。

(thanks to みやざきさん)

→v0.99 (Feb. 6th/26th/28th, Mar.16th/27th, 2007)

・L*384など、音長を全音符分解能より長く設定したときでも

Default step parameter can't divide the master clock.

のwarningを出していたのをやめた。

(L2. とかで出るのは相変わらずですが。)

・ディレイ付き和音をタイでつないだときのゲートタイムが

おかしくなっていたのを修正。

・.sc55_init, .sc55_reset, .gs_init, .gs_resetを使用すると

それ以降動作がおかしくなっていたのを修正。

(異常なチェックサムを送信し、またzmdのparseが1byte余計に

進んでしまう。)

v0.98.9あたりでのエンバグ。

・[do]~[loop] is not closed ... のメッセージの"~"を"-"に変更。

・includeするファイルの末尾に^Zがついている場合、削除するよう修正。

・.sc55_print {"strings"} な形式が通るよう修正。

(本来の形式は .sc55_print "strings" ですが・・・

ほかの共通コマンドの書式からするとつい{"..."}って書いちゃいますよねぇ。)

→v0.98.13 (Sep. 19th, 2006)

・makefileで、gccのCFLAGSに-fsigned-charを追加。 (thanks to 杉田さん)

→v0.98.12 (Aug. 16th, 2006)

・[back.repeat on] のときに、[back]がうまく使えなくなっていたのを修正。

(thanks to wabeeさん)

→v0.98.11 (Aug. 6th, 2006)

・多重.include ができなかったのを修正。

(include先の改行コード変換を忘れてました・・) (thanks to wabeeさん)

・{{...}} による音長予約について、括弧閉じの後に第二パラメータを仮追加。

{{...}}[s][,m] ([]内は省略可能)

s: 従来通り、予約したい音長。

m: 補完モード。0か1を指定可能。

0だと従来互換。(予約音長と{{..}}内の実際の音長が一致しないとき警告)

1だと、{{..}}内の音長が予約より短い場合に限り、警告無しで不足分を

休符で補う。{{..}}内の音長が予約より長い場合は従来同等の警告。

例えば、l4 {{cde}}1,1 の場合、l4 cde r4 相当になる。

本当はl4 cde&r4 にしたいところですが、ちょっと実装をひねる必要あり。

少々お時間ください。 (thanks to wabeeさん)

→v0.98.10 (Aug. 9th, 2005, May 1st-8th, 2006)

・[EVENT META,TEXT,"ユニゾン"]

など、イベントのテキスト部分に一部の漢字が使えなかったのを修正。

(thanks to MAZさん)

・.ROLAND_EXCLUSIVE, .ROLAND_EXCLUSIVE2で、

ROLAND_EXCLUSIVE $10,$16 = { ~ }

のようにIF番号の後に=を入れていると正常動作しなかったのを修正。

N/@NがMIDI IF 1以外では機能しなかったのを修正。

・[ASSIGN][CH_ASSIGN]が使用できなかったのを修正。本家と違って、

引数に数値のみを指定した場合もエラーとならず、同一MIDI IF上での

チャンネル変更となる。

例:

>(AMIDI2-1,1)

:

>(t1) [CH_ASSIGN 4]

これで、本家の場合はエラー、zmc3の場合はMIDI2-4にチャンネル変更できる。

・"Z L*16 .."などのように、ベロシティシーケンスをオフにした後デフォルト音長を

指定すると、"L"をパンポットの相対指定と解釈していた問題を修正。

パンポットシーケンス導入の副作用だった。

(以上4つ thanks to みやざきさん)

→v0.98.9 (Aug. 9th, 2005)

・[master_fader]に対応。

・@i / [instrument_id] の、値省略時と相対値指定時に発生するエラーが

逆になっていたのを修正。

・コンパイルエラー発生時、まだバスエラーが起きることがあったのを修正。

・.roland_exclusive2 コマンドを追加。mdlが2byteになっている

Roland音源用。(XV-5080やSD-90、Fantomシリーズなど)

ただし[roland_exclusive2]はまだないので注意。

([instrument_id]がまだ2byte model IDに対応できていないため)

使用例:

F0 41 10 00 10 12 10 00 04 00 02 ?? F7 を送る場合

^A ^B ^^^^C ^D ^^^^^^^^^^^^^E ^F

.roland_exclusive2 $10,$00,$10 { $10 $00 $04 $00 $02}

とする。Checksumは自動で計算される。

A: Manufacturers ID (Maker ID) : Roland

B: Device ID

C: Model ID (XV-5080)

D: Command ID (DT1)

E: Data

F: Checksum (thanks to みやざきさん)

→v0.98.8 (Jul. 25th, 2005)

・和音に音長指定が出来なくなっていた問題をとりあえず修正。

・extmml.cがコンパイル時エラーとなっていたのを修正。

(以上2つ thanks to みやざきさん)

・臨時ベロシティ指定時以外にベロシティ指定が有効にならない

問題を修正。 (thanks to よこむむさん)

・makefileの修正。(extmml.c を修正してもコンパイル対象に

入っていなかったなど)

→v0.98.7 (May 1st, 2005)

・[k.sign] で調名を指定する際、♭がつく調名の音程がずれていたのを修正。

(thanks to JIM!さん)

・[back...]を使用するとエラーとなっていたのを修正。

(パンポットシーケンス対応の副作用)

・和音中ゲートタイムを指定する際、和音内でステップタイムを同時に

指定しないとゲートタイムが無視されていたのを修正。

(以上2つ thanks to 水野さん)

→v0.98.6 (Mar. 23rd, 2005)

・共通トラック部の各エクスクルーシブメッセージでIF番号をつけた場合に

それが正しくSMFファイルに反映されない問題を修正。

・IF番号の1~4制限を撤廃。MIDI機器を16個使えます。

(番号の上限チェックは特に入れていません)

(以上2つ thanks to みやざきさん)

・.wave_form....{[改行]

パラメータ・・・}

という形を許容するよう修正。 (thanks to るてさん)

→v0.98.5 (Jan. 3rd, 2005)

・[KEY_REMAP o4c, o4c]

という、本家V3の隠し命令に対応。

上記例では、o4cを鳴らそうとするとo5cに変換されて鳴る。

ドラムキットの入れ替えなどに便利。

なお本家では,(コンマ)の後にスペースを入れるとエラーになるので注意。

zmc3ではエラー扱いしません。 (thanks to みやざきさん)

→v0.98.4 (Jan. 2nd, 2005)

・パンポットシーケンスに対応。ベロシティシーケンスのパンポット版です。

例1: @pM,74,L20,L30

例2: [panpot L10:5, R10:20, RND]

ベロシティーシーケンスに、パンポット特有の指定方法(L/M/R/RND)を追加して、

スペシャルベロシティ相当の機能を除いたもの、とお考えください。

(thanks to るてさん、TAKUOさん)

・パンポットのRNDの、音源依存を排除。(note onの度に、コンパイラ側で

ランダム生成したパン情報を自動的に送るように変更しました)

・その他内部設計を変更。より拡張しやすい形に変更。

(ベロシティシーケンスのルーチンと、パンポットシーケンスのルーチンを

可能な形シェアするようにしていますが、ソースが綺麗になったわけでは

ないのが・・T_T

なお設計上はクオンタイズシーケンスもシェアできるようになってますが、

こちらはベロシティシーケンスとはまた別の例外がいろいろと多いので、

まだシェアしてません。)

→v0.98.3 (Dec. 31st, 2004)

・[EVENT META, ... ] を追加。("META"というカテゴリを追加。)

SMFのテキストイベント(01~0F)を記述可能。

クラスのところにメタイベントの種類を書き、データのところに内容を記述する。

例: [EVENT META, LYRICS, "歌詞かしかし"]

LYRICS のところには以下を指定可能。

sequence 00 シーケンス番号

text 01 テキスト

(copyright 02 著作権表示 / これはきちんと対応し切れてない

(Conductor Trackに移動しない) ので使用禁止!)

title 03 シーケンス名

instrument 04 楽器名

lyrics 05 歌詞

marker 06 マーカー

cue 07 キューポイント

program 08 プログラム名(音色名)

device 09 デバイス名(音源名)

→v0.98.2 (Apr. 21st, 2004)

・[ARCCn.SYNC m,c]のcが負の数でないとエラーとなっていたのを修正。

・WAVE_FORMのMML解析エラー検出を強化。

({...}の中に例えば0,^10 などと不正なコードを入れると無限ループとなっていた)

→v0.98.1 (Jan. 23rd, 2003)

・32ch系

・りなざうでコンパイルに問題とかSegmentation Faultとかいう話を

小耳に挟んだので、とりあえずconfig.hの型定義に全部signedをつけた。

(でもこれじゃSegmentation Faultは直らないと思うので、

-DMEMDEBUG つきでコンパイルして動かして下さることをどなたかに希望。

かつてMacMINTでバスエラーが出ていた時は、入力に与える改行コードの

違いが原因でしたが、今回ははてさて。)

→v0.98 (May 2nd, 2003)

・共通コマンド部のエクスクルーシブコマンド全般で、I/F番号が

+1されていることが多かったのを修正。

また、同コマンドで、コメント部終了後 '{' が見つからない場合は

例外エラーが発生していたのを修正。

・.mu100_voice_map にて、id以下を正しく認識しなかった問題を修正。

・.roland_exclusiveにて、I/F番号が正しく認識されなかった問題を修正。

→v0.97 (Jan. 23rd, 2003)

・-r数字 スイッチを新設。-w数字 スイッチ同様にwarning levelを

設定するが、-rで指定したレベルのwarningはすべてエラー扱いに

する(ただちにコンパイルを中止する)点が異なる。

-r のみを指定した場合、-w数字 で指定した数値と同じものが

-rにも指定されたものと見なす。

なお、-w(stderrに出力) と -r(コンパイル停止レベル) は、

それぞれ独立して設定可能。

(thanks to 松尾さん, よこむむさん)

・ポルタメントで、ディレイもしくはポルタメントタイムを設定した

場合にはほぼ必ず以下のようなwarningが発生していたのを修正。

(なお、出力されるZMD自体は正常でした)

Warning: Portament over an octave doesn't work well.

You should set "@g***" first.

(thanks to 松尾さん)

・98式タイ(^)の前にスペース(やタブ)を入れると、音長がおかしく

なっていたのを修正。 (thanks to Kjさん)

→v0.96 (Oct 26th, 2002)

・(AMIDI-1, 1)という形式を通すように修正。

・-tスイッチ使用時、各トラックのトータルステップを表示するよう修正。

本家と同じく、[do]~[loop]の中と外を区別して表示する。

ただし、結果の出力は

-c 併用時: stderrに出力

-c 非使用時: stdoutに出力

なので注意。要するに、-e(エラーファイルのリダイレクト) を避け、

なるべくコンソールに出そうと努力する。

(以上2つ thanks to MAZさん)

・WindowsXPの普及に伴い、アーカイブ形式をlzhからzipに変更。

→v0.95 (May 26th, 2002)

・トラック宣言をせずにトラックの中身を書き始めた場合に、

メモリリークが発生することがあったのを修正。

・[do]のみで[loop]が無い場合など、ループ系の閉じ処理がない

zmsファイルをコンパイルした場合に、エラーメッセージが乱れたり、

バスエラーが発生したりしていたのを修正。

(以上2つ thanks to よこむむさん)

・共通コマンド部と演奏コマンド部を混在していた場合の動作が

一部正しくなかったのを修正。 (thanks to kitさん)

→v0.94.1 (Apr. 22nd, 2002)

・共通コマンド部に、.halt命令を追加。引数nを指定することで、

n/60秒のウエイトが入る。引数を省略した場合は、1秒待つ。

例: .halt 30 / 0.5秒のウエイトを挿入する

(thanks to muteさん)

→v0.94 (Apr. 18th, 2002)

・マクロ定義のエラーチェックが厳しすぎた(下記)のを修正。

(thanks to ryoさん)

・マクロ文字列直後に%がくるとエラー

・マクロ名のところでは%, マクロ実体のところで%1, %2, ...を

使うと(つまり%, %nどちらかに統一していないと)エラー

・よこむむさんの対ZCoder差分を取り込み。(ソース中ryk...部分が該当)

・Macintoshでも安定して動くように、reallocの回数を減らした。

・Macintoshでバスエラーが出ないように、改行スキャンロジックを改めた。

・switch.cで使っていたスイッチ指定値保存用のグローバル変数を

なくした。リエントラント化への布石。

(以上4つ thanks to よこむむさん)

・1オクターブ超のポルタメントを実行したときに、もし@gの設定が

適切でなければ警告を出すよう修正。 (thanks to ALTOさん)

→v0.93 (Feb. 20th, 2002)

・@uで「ベロシティの揺らぎ」を利用した場合 ( @Uxx:yy )、

揺らぎの範囲が大きすぎたのを修正。 (thanks to muteさん)

→v0.92.1 (Dec. 8th, 2001)

・通常のパンポットが複数トラックで同時に使われる場合

に( (t1,2) @p64 など)、誤動作していたのを修正。

・.legacy_*1_tieの引数に、0,1だけでなくOFF,ONも使えるよう修正。

→v0.92 (Aug. 20 / Dec. 5th, 2001)

・[CH_FADER]等で、MIDI*-ALLな指定がエラーではじかれていたのを修正。

・[TIMBER_SPLIT.SWITCH][PROGRAM_SPLIT.SWITCH]が使えなかったので

使えるよう修正。

・[AUTO_PANPOT sw, note1,pan1, note2,pan2, note3,pan3, ... ]

なるMMLを追加。発音される音の高さに応じてPANPOTを振る。

sw: on(1) | off(0)

note: 0..127 | O-1c .. O9G

pan: 0..127 | L63..L1 M R1..R63

note1..note2間のPANは線形補間される。note1より低い音、

noteNより高い音はそれぞれpan1,panNになる。

例: [AUTO_PANPOT on, 0, L63, 127, R63]

ピアノなんかでキーに合わせてパンを振りたい時に

どうぞ。同様に、[AUTO_PANPOT.SWITCH sw]もどうぞ。

(thanks to MASAさん)

→v0.91 (Aug. 12, 2001)

・a!+ というパターンでエラーになっていたのを修正。

(thanks to ずにかさん)

・'...'な和音ではベロシティシーケンスが全く進まなかったのを修正。

(thanks to るてさん)

・共通コマンド部中、#! で始まる行はコメントと見なすよう修正。

(オリジナルに準じた変更)

・共通コマンド部で、"."(ピリオド)で始まる命令はすべて"#"(シャープ)で

始めても良いよう修正。(オリジナルに準じた変更)

・(Z)のパラメータ省略時は192を補うよう修正。(オリジナルに準じた変更)

→v0.90 (Jun. 30, 2001)

・休符に対して98式タイが利かなくなっていたのを修正。

・和音中に98式タイを用い、かつ98式タイへの数値パラメータを

省略した場合に正しいstep値が得られていなかったのを修正。

(以上2つ thanks to ずにかさん)

→v0.89 (Jun. 6, 2001)

・まだ一部ファイル名の大文字小文字の関係がよろしくなかったのを

修正。 (thanks to 岡部さん)

・.gm_system_on / .gm2_system_on のコードを正しく出力して

いなかったのを追加。

・引数に指定するファイル名バッファが1byte足らなかったのを修正。

(こんな初歩的なミスがまだ残ってるかねぇマッタク・・・T_T)

(以上2つ thanks to NKGRさん)

→v0.88 (Mar. 20, 2001)

・トラック名のコメントを指定していた場合のpadding挿入が

うまくいっていなかったのを修正。(v0.86エンバグ)

→v0.87 (Mar. 10, 2001)

・MMLマクロの処理部分(正確には、マクロ処理後のメモリ開放部分)

が遅かったのを修正。(これでv0.85以前と同レベルに戻ったはず)

・直接のゲートタイム指定が無効になっていたのを修正。

(例: c4,8)

→v0.86 (Mar. 8, 2001)

・MML Lで設定された値が、全音符の分解能を割り切れない場合、

Warningを出すよう修正。 (例: L36 とすると、192÷36が

割り切れないためwarningとなる) (thanks to 我孫子さん)

・エラー終了など、正常終了でない場合でも(OSに頼らず)

自分で確保したメモリはすべて自分で解放するよう修正。

・他のプログラムに組み込まれるような場合を想定して、

単純に"zmsへのポインタを渡すとzmdへのポインタを返す"ような

エントリを内部的に追加。

(zmc3.c内のconvertZmstoZmd()がそれです)

(以上2つ thanks to Kobarinさん)

・ゲートタイム指定に98式タイ(MML ^)が使えなかったのを修正。

・和音が続く場合、最終的なゲートタイムが最初の構成音のそれに

鳴っていたのを修正。 (以上2つ thanks to DOCさん)

・81trk目以上を宣言すると「不正処理」だの"Segmentation fault"

だのとなっているため、とりあえずは81trk目以上を使えないよう

修正。(V3の仕様上は65535trk目までいけますが、当分はzmc3での

制限とお考えください) (thanks to 小林さん)

・ソースファイル末尾の^Z(0x1A, EOF)の撤廃とか、小文字ファイル名で

アーカイブを作成するようにしたとか、Makefileの微調整とか。

(thanks to 岡部さん, とよしまさん, 小林さん)

・ファイルネーム長の制限解除(これまでは2048文字までだった)

・[PANPOT]の引数に文字Mが使用できなかったのを修正。

(CでなくMが正解だった(^^;;)

・メモリリークの可能性潰し。

→v0.85 (Jan. 28, 2001)

・v0.84での.octave_mode が、[program_split]中の < >には

反映されていなかったのを修正。

・@gのパラメータに0以下の数値を指定できないよう修正。

・[PANPOT RND]をXGでも使えるよう修正。(でも実動作未確認・・)

(thanks to るてさん)

→v0.84 (Jan. 24, 2001)

・[PANPOT 数値]な時に正しいパンポット値を出力していなかった

のを修正。 (thanks to るてさん)

・.relative_velocity が正しく動作していなかったのを修正。

・.octave_mode (zmc3拡張)を追加。引数にはとりあえず以下を

指定可能: HuBASIC, SHARP, X68k, NEC

NECを指定するとオクターブスイッチの意味が上下逆になる。

残り3つはどれを指定しても同じ。(こっちがデフォルト)

# もう少しセンスのいい指定方法募集中。

→v0.83 (Jan. 18, 2001)

・.sc88_mode_set のパラメータに1,2以外の値を指定できて

いたのを修正。(Z3のマニュアルには0か1を指定とありますが、

1か2の誤りです。オフィシャルサイトでの修正事項を参照のこと)

(thanks to かんたさん)

・c\n.play とするとエラーになっていたのを修正。

・稀にトラックの境界(padding)生成に失敗していたのを修正。

・最後が^Z(0x1A, EOF)なファイルを .include するとコンパイルが

そこで止まってしまっていたのを修正。

→v0.82 (Dec. 9, 2000)

・ポルタメントでdelay > gateにできなかったのを修正。

また、delay == step とすると「不正な処理」となっていたのを

エラー表示するよう修正。 (以上2つ thanks to NKGRさん)

・[PANPOT]の引数に文字L/C/Rが使用できなかったのを修正。

ついでにGS音源限定で[PANPOT RND]を実装。

→v0.81 (Dec. 1, 2000)

・共通コマンド部でのエクスクルーシブメッセージ系の変換が

おかしくなっていたのを修正(v0.80エンバグ)。

・.sc55_part_setupのチャネル指定と、Rx CHANNELの指定が無条件に

おかしくなっていたのを修正。 (thanks to とよしまさん)

・.relative_velocity を実装。

・[.sc55_part_setup]並びにその類義語を実装。

(以上2つ thanks to NKGRさん)

→v0.80 (Nov. 14, 2000) # 間、空きすぎ・・

・ポルタメントの第3パラメータ(ポルタメントタイム)を

指定できなかったのを修正。

・ポルタメントで、ポルタメントタイムを指定時は

ディレイタイムを省略できなかったのを修正。

・その他ベータ版のバグ出しなど。(thanks to あいはらさん)

・共通トラック部中に、予期せぬ特殊文字を入れると

「不正な処理」が発生していたのを修正。

(thanks to NKGRさん)

→v0.79 (June 9, 2000)

・32ch情報をヘッダに正しく反映するよう修正。

・音色指定を、音色名で行えるように拡張。

@"機種 音色"なフォーマット。

例: @"SC-88Pro X Wire Bass" → 内部でi10,3@40に化ける

@"8p xwirebass" → 上の例と同じ

@"xg grandpno" → i0,0 @1

[program "mu100 GrandPno"] → i0,126 @1

[program mu100 GrandPno] → 同様

@"xg grandpno#" → i0,126 @1

@"basic grandpno#" → i0,127 @1

(basicの代わりに xgbasic, mubasicも可)

(省略名の代わりに、フルネームでも可)

(XG周り thanks to muteさん)

当然ながら、大文字小文字やらスペースの有無やら

ハイフンの有無やら(Honky-tonkとHonky tonkなど)

ピリオドの有無などの類は無視する。XG音色の場合

省略名でもそうでなくても可。

# でも、音色番号を覚えなくてよくなる代わりに、音色名を

# (マニュアル表記に沿って)正確に覚える必要がでてくるのが

# なんとも。それでも「Alto Saxって何番だっけ?」てなことで

# 悩まなくて済むようになるのは大きいと思ってます。

現状、機種名は8p/88/55/mt/xg/mu100に対応。

SC系については、8pとする以外にSC88ProとかSC-88 Proとか

でも受け付ける。CM64音色は未サポート。

(やたら音色名がだぶるので・・)

機種名を省略した場合、@iで設定された機種情報をにらみつつ

(でないと単に"Violin"と言われた場合GS/XGなどの区別が

できないので)、バンクセレクトのLSBを0にした音色を設定する

・・・となる予定だが、現在はエラーとしてはじいている(^_^;

なお、音色リストについては以下を参考にした。

・SC-88Pro以下: SC-88Pro実機から音色表をバルクダンプで

吸い出し、加工して利用。

・MU100: 省略名はmuteさんの作られたmu100vl.txtを加工して

利用。full nameはXG Worksの設定ファイルを加工して利用。

その他YAMAHAのDevZoneの資料とか。

/* 以下まだ未対応

・GM: MMAのサイトの情報を加工して利用?

・GM2: Oh!X 2000年春号の記事を参考?

*/

→v0.78 (June 9, 2000)

・デバッグ用の設定が残っており、使用トラック数分のテンポラリ

ファイルが出力されていたのを修正。(v0.77エンバグ)

(thanks to muteさん)

→v0.77 (June 3, 2000)

・128kb以上のソースを食わせると無条件にrealloc errorとなって

いたのを修正。

・.xg_system_onがなぜか.gm_system_on相当のコードを吐いていた

のを修正。 (以上2つ thanks to muteさん)

・[xg_system_on]が使えるよう修正。

→v0.76 (May 16, 2000)

・sc55_drum_setup, .sc88_drum_setupが機能していなかったのを修正。

(thanks to あーくさん)

・[gm_system_on]が機能していなかったのを修正。

(thanks to NKGRさん)

→v0.75 (Mar 28, 2000)

・.YAMAHA_EXCLUSIVE の出力に、バイトカウントとチェックサムが

入ってなかったのを修正。

・.DX_BULK_DUMP device,formatNo,if,comment {n1,n2,…ni}

を追加。 (以上2つ thanks to muteさん)

→v0.74 (Feb 27, 2000)

・.xg_displayで右2ドット分表示できなかったのを修正。

(thanks to XELFさん)

・ベロシティシーケンスのカウンタが常に2つずつ進んでいたのを

修正。(v0.72エンバグ) (thanks to 我孫子さん)

・'ceg'&'cfg'でのeのように、和音タイ途中で消える音があっても

必ずタイ終了まで発音されていたのを修正。

(が、和音ディレイと組み合わせたときの挙動がまだおかしい。

z2m3側での対応も必要そう)

→v0.73 (Feb 14, 2000)

・トラック番号やチャンネル番号に0が指定できていたのを修正。

・ループ回数に0を指定できないように修正。

・空の{}でError: no { found..が出ていたのを修正。

(以上 thanks to XELFさん)

→v0.72 (Jan 7, 2000)

・.wave_formのパラメータ区切りにスペースも許容するよう修正。

・和音・ポルタメント中にゲートタイムや臨時ベロシティが

記述されている場合に正しく対応。

・98タイの後にゲートタイムや臨時ベロシティが記述されている

場合に対応。 (以上3つ thanks to 水野裕之さん、muteさん)

・[back..]を使用し(P...)で一部トラックのみ演奏させる場合

正しいzmdを出力していなかったのを修正。

(thanks to 我孫子さん)

・[ARCCn.LEVEL]で、modeを省略している場合とそうでない場合を

正しく区別できていなかったのを修正。

・.assign で、コメントを付加した場合に異常なヘッダ情報を

出力することがあったのを修正。

・共通コマンド部と演奏コマンド部の混在ができるよう修正。

(以上3つ thanks to Yggdrasillさん)

・zでランダム要素を指定した場合正しく動作していなかった

のを修正。 (thanks to 内海さん)

・トラック宣言なしでいきなり演奏トラックのmmlを書き始めた

場合、(AMIDI1,1)(t1) が省略されているものと見なすよう修正。

同様に、(AMIDIn,n) (ch=trk数) も省略できるよう修正。

→v0.71 (Dec 18, 1999)

・.sc55_display, .xg_display を追加。

・v0.70でのinclude周りの対応が不完全だったのを修正。

(以上2つ thanks to muteさん)

・[ARCCn.SPEED]のパラメータに0を指定できないよう修正。

・[ARCCn.CONTROL]のパラメータに文字列を指定した場合、

うまく望みのパラメータが設定できないことがあったのを修正。

(以上2つ thanks to NKGRさん)

→v0.70 (Dec 4, 1999)

・タイトル文字列へのオフセットが狂っていたのを修正。

(thanks to muteさん)

・[event word,strings,"...."]を実装。

・[echo itv,dec,lp]を実装。

・.include してもエラー時の行番号が正しく表示されるよう修正。

・.includeされるファイルの頭数行が無視されることがあったのを修正。

→v0.69 (Oct 24, 1999)

・(Px,x,x,x,...)を実装。(これまでは無視していた)

(thanks to NKGRさん)

・-Zスイッチの1と3相当を実装。-z3を指定すると、未使用トラックを

削除するようになる。

→v0.68 (Sep 26, 1999)

・[track_fader] を実装。(z2m3 v0.94側では未実装なので注意)

・__ ~~など、ボリューム相対指定を2回以上連続して続けると

無限ループに陥っていたのを修正。

→v0.67 (Aug 27, 1999)

・連符の最後に和音を記述し、タイで連符外に接続した場合に

誤動作することがあったのを修正。

・[auto_portament]周りを実装。(z2m3 v0.94以降との併用が必要)

・拡張MML .xg_equalizer , .mu100_voice_map を追加。

(thanks to muteさん)

→v0.66 (Aug 22, 1999)

・(AMIDIn,trk)で、trkに正でない数を指定できていたのを修正。

・連符中に和音を入れた時の処理がおかしくなっていたのを修正。

(thanks to マッチュンさん)

→v0.65 (Jul 14, 1999)

・ポルタメントのディレイ値がゲートタイム以上であっても

エラーとならなかったのを修正。

・[velocity.revise]が使えなかったのを修正。

(以上2つ thanks to 我孫子さん)

・ループをネストさせているときのネスト終了判断を強化。

(thanks to ぱじぃーさん)

・オートベンド指定時、省略されるべきパラメータも無条件に

埋め込まれていたのを修正。

→v0.64 (Jul 1, 1999)

・.xg_printを実装。

・[velocity]の引数取得時、最初に1バイト余分に進めていたのを修正。

(以上 thanks to muteさん)

・.sc88_mode_setの引数に、single/doubleの文字列も使えるよう修正。

・.xg_exclusiveで2バイト余計に出力していたのを修正。

→v0.63 (Jun 13, 1999)

・[CH_FADER]で、パラメータALLを受け付けるように修正。

この場合、オリジナルは全デバイスに対する操作となるが、

zmc3では全MIDIデバイスに対する操作となる。

・@sでパラメータを省略した場合にエラーとなっていたのを修正。

・拡張MML .xg_init .xg_exclusive を実装。

(以上 thanks to muteさん)

・和音周りが不安定だったのを修正。

・(X...)のI/F NOが不定だったのを修正。

・拡張MML [VELOCITY.OFFSET n] [ARCCn.OFFSET n] を実装。

・.sc55_print が使用できなくなっていたのを修正。

・.comment 以下、warning/error時の行番号が1ずれていたのを修正。

・MIDI出力ポートのデフォルトが無条件に1になる事があったのを修正。

→v0.62 (Jun 3, 1999)

・共通コマンド部が全くない場合の出力コードがオリジナルと異なって

いたのを修正。

・'ceg'&'cfa'など、和音要素が一部でも一致していれば前の和音の

構成要素すべてがタイ扱いされていたのを修正。

・.GM_SYSTEM_ON など、チェックサム不要の共通コマンド命令で

変換がおかしくなることがあったのを修正。

(最後2つ thanks to muteさん)

→v0.61 (May 8, 1999)

・共通コマンド部でインタフェース番号を指定する必要がある場合、

不必要なコンマがないと指定できなかったのを修正。

・いくつかインタフェース番号の初期化を行っていないコマンドが

あったのを修正。 (thanks to Mamiyaさん)

→v0.60 (Apr. 12, 1999)

・\ (fadein/fadeout)の範囲指定が正しくなかったのを修正。

また、範囲外の値を指定した場合、従来Error扱いだったのを

Warningにした。

・.include を実装。

・32ch対応で、Bポート以降に出力するチャンネル番号が-1されて

いたのを修正。

・[back.repeat]をようやく実装。

・z_cmn_flag (ヘッダの$3c~$3fバイト目)の再現度を上げた。

→v0.59 (Mar. 31, 1999)

・v を使うと誤動作していたのを修正。

・[arcc*.sync]の省略フラグと同期ディレイが正しくなかったのを修正。

・.wave_form の波形名に数字以外を使えなかったのを修正。

・.wave_form のコメントの識別が異常だったのを修正。

・[arcc*.level mode,p1] 時に誤動作していたのを修正。

→v0.58 (Mar. 16, 1999)

・[back]を使うと誤動作していたのを修正。

(thanks to 我孫子さん)

・quantizeの個数の制限解除。

・*0 の判定が甘かったのを修正。

・以下のV3MMLを追加。

[TIMBRE_SPLIT][PROGRAM_SPLIT]

[GATETIME_RESOLUTION] (zmc3拡張, トラック単位の.gatetime_resolution)

→v0.57 (Mar. 8, 1999)

・和音ディレイ値の警告表示条件がおかしかったのを修正。

(thanks to 伏見さん)

・以下のV3MMLを追加。

[TIMBRE][PROGRAM][TIMBRE_BANK][PROGRAM_BANK]

[BEND][BEND.SWITCH][BEND.RANGE][PITCH][@PITCH]

[VOLUME][@VOLUME][VELOCITY][@VELOCITY]

[PANPOT][@PANPOT][TEMPO][@TEMPO][TIMER}

[TIE_MODE][TRACK_MODE][TRACK_DELAY][ALL_SOUND_OFF]

[BAR][MEASURE strings][---][REPLAY][DUMMY][COMMENT str]

[CONTROL][NRPN][DAMPER]

[EFFECT.REVERB][EFFECT.CHORUS][EFFECT.DELAY]

[MIDI_DATA][ROLAND_EXCLUSIVE][YAMAHA_EXCLUSIVE]

→v0.56 (Mar. 1, 1999)

・[sc88_mode_set]に対応。

・[k.sign]の引数に調名を記述できるよう対応。[key_signature]を追加。

・[synchronize]追加。

・複数トラックを同時に記述する際に、M,S,Hで動作がおかしくなっていた

のを修正。

→v0.55 (Feb. 20, 1999)

・@wでstep>=255の時の挙動を修正 (thanks to takeさん)

・構文解釈上、*可能な限り*全角スペースも通常スペースとみなすよう修正。

・*0 (強制発音)を実装

・ベロシティシーケンスの指定個数制限を解除

・.METER, [METER], .KEY str, [KEY str]の実装

→v0.54 (Feb. 16, 1999)

・モジュレーションの1/8モードを使うと異常な出力となっていたのを修正

・.gatetime_resolution を実装。(thanks to akiさん)

→v0.53 (Feb. 15, 1999)

・.assign での共通トラック番号使用時のエラー出力を追加

・[back...]の不具合修正。(トラック出力コード修正&transpose情報展開追加)

・@xx:| のように、プログラムチェンジ直後にループ終端が来た場合

@xx:yy の形式と誤認識していたのを修正。

・.define内で{...}がネストしている場合に対応 (thanks to muteさん)

→v0.52 (Feb. 14, 1999)

・.sc88_mode_set の不具合修正

・.sc88_mode 追加 (.sc88_mode_setと同じ)

・.sc88_reverb, .sc88_chorus, .sc88_delay 周りのwarning条件修正

→v0.51 (Feb. 14, 1999)

・ARCC周りを色々修正

・拡張子zm3も省略可能なよう修正

・[EFFECT] [INSTRUMENT_ID]追加

→v0.50 (Feb. 14, 1999)

・初版。