るうさん、MIZさん、ご記帳ありがとうございます!
> 「ネバーエンディングストーリー」では、こんな感じでスイッチにしてましたね……( ̄▽ ̄;) ああ、ネバーエンディングストーリーでしたねぇ〜。 音源スイッチを使っているデータをいくつか探してみたのですが、 思いの外見つけるのが大変で、探索を断念していました。 やっぱり、音源スイッチの構築方法が難しくて、やりにくいのが原因かもしれません。
> これね……こうすればいいんですよ。 ダブルコーテーション内であればセミコロンが文字として認識されることに加え、 ダブルコーテーションの開始と終了を入換えるというトリッキーな解法! とても常人では思い付かない。まさに天才るうさんならではの発想です!!
でもこの方法ですと、せいぜい GS と XG の2系統スイッチ止まりかもしれませんね。 例えば、MU128, 88Pro, SD90, VSC の4つをスイッチングしたいという時は難しいかも。
> 本当は!と!!を組み合わせたかったのですが、 > !〜!と!!〜!!が両方ともコメントアウトされて、dsだけ有効になるようなので断念。 そうですね。これは現在のMuseの仕様です。 この領域をORで取ったコメント記法は、ユニークで使い勝手がいいと秘かに悦に入っています。
あれから私も徒然なるままに考え続け、2つのアプローチで検討しています。
(1)演奏時に実行しない定義マクロは、コメントとみなして二重チェックに掛けない。 長所:新しいMuse文法を追加する必要がなく、しかも互換性も維持される。 短所:文脈解析が大変難しそう。特に多階層のマクロになった場合、解析時間も掛かりそう。
(2)選別コメントという新しい文法を定義する。 長所:ある程度大規模な開発になるが実現性は確実にあり、互換性を維持する文法も充分に可能。 短所:新しい文法の追加なので、Readme.txtが更に膨らむ。
=========================================== 気持ちとしては(2)に傾いています。 現在の文法イメージは、以下の通りです。 *"XG"という記述が無いので、*XG{ ... } はコメントとみなされます。 言わば、「名前付きブロックコメント」といったことでしょうか。 そして、*"...."の指定があると、そのコメント領域が実行行に変化するという訳です。 -------------------------------------------
*"GS"
*XG{ $piano{@P1 X7=120} ・・・ ・・・(その他のXG用定義も列挙する) ・・・ }
*GS{ $piano{@P3 X7=100} ・・・ ・・・(その他のGS用定義も列挙する) ・・・ }
=========================================== 例えば交響曲をMusingして、各楽章ごとにMIDIをエクスポートしたい時などにも便利です。 冒頭の*の行を適宜コメント化すれば、所望の楽章以外をコメントにできるという訳です。 -------------------------------------------
;*"1st" ;*"2nd" *"3rd" ;*"4th"
*1st{ ・・・ }
*2nd{ ・・・ }
*3rd{ ・・・ }
*4th{ ・・・ }
この選別コメントの文法は、互換性を維持できるように考えてみましたが、 もっと良いアイディアがあるかもしれません。
余談ですが上記交響曲は、私は今まで以下の様にしていました。
;!@ 1st ・・・ ;!A 2nd ・・・ ;!B 3rd ・・・ ;!C 4th ・・・
1stのみ:Aのセミコロンを外す 2ndのみ:@ABのセミコロンを外す 3rdのみ:@BCのセミコロンを外す 4thのみ:@Cのセミコロンを外す
知能指数の問題みたいに面倒臭いですよね(苦笑)。
|