珍しく努力してみると見事に空振りするの法則
FIMML の更新 に伴って MML記法がマクロに対応したらしい ものの、繰り返しの内側に繰り返しを置いた時の処理がおかしくなってるっぽい。
関連:
あずティー - 「繰り返しの中の繰り返し」ができなくなった
あずティー - メロディ再生記法のマクロ機能を試してみた
同様に、こないだ上げたやつ の 2つめも、途中からかなりヒドいことになる(汗)。
FlMML のソースをざっと眺めてみたり、flmml*.swf で直接再生してみたりした範囲では、以下のことが原因と想像。
(ActionScript が具体的に何をやっているかまで追いかけてないので、あくまで「想像」。)
- 繰り返し内の最終ループ時終端を示すスラッシュ ( / ) の後に、空白文字(スペースや改行など)以外の文字を置かずに繰り返しを記述しても、繰り返しとして処理されない。
- 実はこの現象自体は以前から存在していた*1が、その頃は / と繰り返し開始の /: が密着していないと発生しなかったので、あまり気付かれなかった。
- マクロ対応版(多分 flmml061.swf 以降)では、繰り返し処理の前に空白文字(スペースや改行など)を除去する処理が加えられたので、結果的に問題が顕在化しやすくなった。
FlMML を直してもらうのが一番良いわけですが、ユーザーにできる方法としては「 / と /: の間に、空白文字以外で、かつ演奏に影響を与えない文字を突っ込む」といったことくらいかな。
…などともたもた書いてるうちに、FlMML 作者の方で修正始めた模様(汗)。繰り返しのロジック自体を修正しているっぽいので、少なくとも以前の状態に戻るわけではなさげ。
*1:少なくとも flmml050.swf では発生する。