JFugue解析器异常在持续时间的值,在'notes sharing same duration'的情况下
JFugue parser exception in the value of duration, in the case of '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);
我收到解析器异常,无法识别被解析为音符速度的字符:: 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
添加到每个微调元素,给出:
m392.4/0.25/0.5 m413.393/0.5 m392.4/0.5
看看第一个令牌。 m392.4/0.25/0.5
无效;它包含两个持续时间,JFugue 不知道如何解释它。在成功解析第一个持续时间 (/0.25
) 后,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);
我收到解析器异常,无法识别被解析为音符速度的字符:: 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
添加到每个微调元素,给出:
m392.4/0.25/0.5 m413.393/0.5 m392.4/0.5
看看第一个令牌。 m392.4/0.25/0.5
无效;它包含两个持续时间,JFugue 不知道如何解释它。在成功解析第一个持续时间 (/0.25
) 后,JFugue 解析器现在期望看到一个速度、一个连接器(如 +
或 _
),或者什么都没有。错误消息看起来确实具有误导性,所以我会调查一下。