2

コードを実行しようとしたとき、私はJFugueで作業しています

Player myPlayer = new Player();
myPlayer.play( ":DEFAULT(duration=.25)");  
Pattern test=new Pattern(" m327.0  m348.8  ( m392.4/0.25  m413.393 m392.4 )/0.5 m348.8 ");
myPlayer.play(test);

パーサー例外が発生しました。音速として解析された文字が認識されません: : 0

')/0.5' から 0 を削除すると、正常に動作します

Pattern test=new Pattern(" m327.0  m348.8  ( m392.4/0.25  m413.393 m392.4 )/.5 m348.8 "); 

1 以上のすべての値に対して同じ例外が表示されます (例: ')/1.5' )。ただし、m392.4/0.25 は問題なく動作していることに気付きました。

4

1 に答える 1

1

問題はここにあります:

( m392.4/0.25  m413.393 m392.4 )/.5

JFugue が括弧内の要素を解析するとき、括弧の直後にあるものを括弧内の各要素に追加します。この場合、JFugue パーサーは/.5各マイクロトーン要素に追加して、次のようにします。

m392.4/0.25/0.5 m413.393/0.5 m392.4/0.5

その最初のトークンを見てください。m392.4/0.25/0.5有効じゃない; 2 つのデュレーションが含まれており、JFugue はこれを解釈する方法を知りません。最初のデュレーション ( /0.25) の解析に成功した後、JFugue パーサーは、速度、コネクタ (+または など_) を確認するか、または何も確認しないことを期待しています。エラーメッセージは誤解を招くように見えるので、調べてみます。

于 2015-02-23T16:51:35.343 に答える