我正在尝试编写一个简单的解析器来读取 MusicXML 并播放它。我正在使用 JFugue 5.0.3。图书馆只是在中间的一半时间里挂着。
我的代码:-
public void play() throws ParserConfigurationException, ParsingException, IOException {
MusicXmlParser_J parser_j = new MusicXmlParser_J();
StaccatoParserListener listener = new StaccatoParserListener();
parser_j.addParserListener(listener);
parser_j.parse(musicXMLFile);
Player player = new Player();
final Pattern musicXMLPattern = listener.getPattern();
player.play(musicXMLPattern);
}
尝试使用无用的错误消息构建 MusicXML 文件后,此代码失败:-
attempting to build file
Oops something went wrong. The error isConnection timed out
它有时会起作用,当它起作用时,它会像魅力一样在几毫秒内起作用。JFugue 试图通过网络下载什么?一点调试发现它可以通过下载
向从事此工作的人提出几个问题:-
为什么此代码不适用于 MusicXMLParserListener 类?此类因任意空指针异常而失败,因为它需要定义 Staccato 解析器。为什么?MusicXML 的两个不同侦听器 - MusicXMLParserListener_J 和 MusicXMLParserListener_R 的处理是什么?请不要将破损的东西暴露给消费者。
我读过 JFugue 支持 MusicXML,我希望它可以正常工作。
有 JFugue 使用 MusicXML 的例子吗?