持续时间值中的 JFugue 解析器异常,在 'notes sharing same duration'



当我尝试执行代码时,我正在使用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);

我得到一个Parser异常,被解析为音符速度的字符无法识别::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工作时没有任何问题。

问题就在这里:

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

当JFugue解析括号中的元素时,它会将括号后面的任何内容添加到括号中的每个元素中。在这种情况下,JFugue解析器将/.5添加到每个microtone元素,得到:

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

看看第一个记号。m392.4/0.25/0.5无效;它包含两个持续时间,JFugue不知道如何解释这一点。在成功解析了第一个持续时间(/0.25)之后,JFugue解析器现在期望看到速度、连接器(如+_),或者什么都看不到。这个错误信息看起来确实有误导性,所以我会调查一下。

相关内容

  • 没有找到相关文章

最新更新