Q&Aコーナー

質問

投稿日:2015/03/28(Sat) 23:27

    皆さんお久しぶりです。
    
    たぶん初めてのFINGコマンドなのですが,
    下記のデータで,G7の音だけ大きくなるかと思ったら,変化がありません。
    <>部分を右クリックしてv属性を見ると,v+75もv-75も先頭に書かれています。
    これはなぜでしょうか?
    
    ものすごく簡単なところで躓いていたら,遠慮なく叱ってください。
    よろしくお願いします。
    
         ;ここから
         #H8
         _1*MARK""*FING"v+75"_*MARK""*FING"v-75"_
         
         #A1 @v50
         {d1/>s<d}
         #B1 @v50
         {m1/[rf]m}
         #C1 @v50
         {s1/ss}
         #D1 @v50
         <{d1/>c<d}
         
         % #H8 _1___
         ;ここまで
 

回答

投稿日:2015/03/29(Sun) 09:11

    あははっ、私も*FINGのタイミングがわからず、調べることもせず、今まで別々にすべて同じ記述をしてきました。
    と、分からないことを前置きして、(わからないならコメントするなっ、て話ですが。^^;)
    これを機に*FINGを使いたいと思います。
    
    質問者さんのイメージは、例えて云うなら、テンポ(%)と同じイメージなんだと思います。
    テンポなら質問者さんの記述通り、初めのHメンバーにひとつ記述すればその後のメンバーすべてが同じテンポになります。
    でも、この記述の結果を見ると、そうではなく、*FINGの記述の場所が大事なようですね。
    つまり、同じメンバー内でも、下記のような記述では、#A2は冒頭から*FING指定になるのでしょう。多分。^^;
    
    #A1----------------------------*FING-----------------------------
    #A2--------------------------------------------------------------
    
    もしそうなら、あえて*FINGを使うとすると、Hメンバーは必要でなくなり、次のようになりますかね。
    
         ;---------------ここから------------------
         #A1 v50 d1/
         #B1 v50 m1/
         #C1 v50 s1/
         #D1 v50 <d1/
         
         *FING"v+75"
         
         #A1 >s
         #B1 [rf]
         #C1 s
         #D1 >c
         
         *FING"v-75"
         
         #A1 <d
         #B1 m
         #C1 s
         #D1 <d
         ;---------------ここから------------------
    
    このようになるでしょうか。多分。^^;
    でも、無名マクロが必要なら、これでは使えませんね。
    
    自信はないので、後はみんなの意見を待ちたいと思います。
 
投稿日:2015/03/29(Sun) 10:31  投稿者:開発者 

    > ものすごく簡単なところで躓いていたら,遠慮なく叱ってください。
    実はこの部分は、ものすごく重要で、
    かつReadme.txtでもきちんと説明しきれていない部分です。
    お叱りを受けるのは私の方かもしれません(苦笑)。
    
    Museのコマンドや命令には、大きく2系統があります。
    演奏時刻を優先としたものと、記述位置を優先したものです。
    本当は、すべて演奏時刻優先であった方がわかりやすいのですが、
    Museのコンパイル処理上しかたなく(というか手抜きかも)、
    記述位置優先を採用しているものがあります。
    
    演奏時刻優先というのは、図示すると以下の様な感じです。
    ●で施した指定が、そのタイミングで全フィンガーに作用します。
    
    	#A0 xxxxx xx→→ →→→→→
    	#A1 xxxxx x●→→ →→→→→
    	#A2 xxxxx xx→→ →→→→→
    	#A3 xxxxx xx→→ →→→→→
    
    一方、記述位置優先というのは、
    記述したMuseデータの位置以降の記述に作用します。
    演奏時刻はまったく関係ありません。
    
    	#A0 xxxxx xxxx xxxxx
    	#A1 xxxxx x●→→ →→→→→
    	#A2 →→→→→ →→→→ →→→→→
    	#A3 →→→→→ →→→→ →→→→→
    
    基本的に、メンバー属性は「演奏時刻優先」です。
    ただし、移調(T)だけは「記述位置優先」です。(統一感が無くて申し訳ありません)
    
    そして、フィンガー属性の方はすべて「記述位置優先」です。
    でも、そもそもフィンガー属性の作用は記述したフィンガー内に閉じていますので、
    演奏時刻優先と捉えても結果は同じになり混乱は少ないです。
    (正確に言うと、和音記述でいろいろあるんですが・・・)汗
    
    問題は、その他の全域指定です。
    例えば (%)とか(\)とか、今回問題となった*FING""とかです。
      ・テンポの(%)は、演奏時刻優先になっています。
      ・しかし、強制タイミング合わせの(%)や(\)や*FING""は、記述位置優先なのです。
    
    つまりPascalさんの例では、
    *FING"v-75"が以降のすべての記述に作用していることになります。
    しかし、その後の記述行で各フィンガーがv50と指定されているため、
    結局すべてv50で演奏されている、というのが今回の挙動です。
    
    という訳で、
    *FINGコマンドは、演奏時刻優先と記述位置優先が一致する唯一のポイント、
    つまりフィンガーの先頭位置にのみ用いるのが無難だと思います。
    使い勝手が悪くて申し訳ありませんが、
    ある時点での「一斉初期化コマンド」だと思って頂けると幸いです。
 
投稿日:2015/03/30(Mon) 00:23

    説明を読ませていただきました。
    
    メンバ属性と比べて,フィンガーごとに値を持つ属性を
    「演奏時刻優先」で設定するのは
    負荷が高いだろうということはわかります。
    
    FINGは,曲頭や,%等で先頭と最後をそろえられた部品を
    くっつける際の初期化を意図しているということで,
    納得できました。どうもありがとうございました。
    
    (Tや\はフィンガーごとに異なる移調楽器を記載するための仕様ですよね。
    その役割は今はyに移ったでしょうが。)
 
投稿日:2015/03/30(Mon) 00:50

    > (Tや\はフィンガーごとに異なる移調楽器を記載するための仕様ですよね。
    > その役割は今はyに移ったでしょうが。)
    う〜ん。流石。1を聞いて10を知るといった感じです!
    この件についても先の書込みで触れようと思ったのですが、
    あまりに長文になるためグッとこらえた所でした。
    
    仰る通り、移調楽器においてのTと\の使い勝手の悪さからyを開発しました。
    Tと\は、過去データの互換性のために・・・
    と言うとちょぴり淋しいので、こう捉えて下さい。
    「Tや\は、メンバー単位で一括指定できるyである。
     更に\は、全メンバーの一括指定さえできる」
    これらのコマンドは、ポップス系のMuserには便利ではないかと思っています。
 

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS