有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JFugue解析器持续时间值异常,在“共享相同持续时间的注释”的情况下

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

我得到一个解析器异常,该字符被解析为note velocity,无法识别::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工作正常,没有任何问题


共 (1) 个答案

  1. # 1 楼答案

    问题在于:

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

    当JFugue解析括号中的元素时,它会将括号后面紧跟的内容添加到括号中的每个元素。在本例中,JFugue解析器向每个microtone元素添加/.5,给出:

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

    看第一个标记m392.4/0.25/0.5无效;它包含两个持续时间,JFugue不知道如何解释。成功解析第一个持续时间(/0.25)后,JFugue解析器现在希望看到速度、连接器(如+_),或者什么都看不到。错误消息看起来确实有误导性,因此我将对此进行调查