我正在尝试将Staccato模式解析为MusicXml。但是,它不起作用,因为解析的MusicXml几乎什么都没有。我不知道是因为Staccato字符串或MusicXmlParser出错了。
这是我的代码,包括Staccato字符串:
public class TestMusicXml {
public static void main(String[] args) {
Pattern p = new Pattern(
"#Score_Beginning I[PIANO] T100 TIME:6/4 KEY:AMIN #Variation_0 #Chord_0 A4/0.25 | F#5/0.25 F#5/0.25 A4/0.25 D5/0.25 D5/0.25 A4/0.25 | #Chord_1 G4/0.25 | Eb5/0.25 Eb5/0.25 G4/0.25 C5/0.25 C5/0.25 G4/0.25 | #Chord_2 F#5/0.25 | D6/0.25 D6/0.25 F#5/0.25 B4/0.25 B4/0.25 F#5/0.25 | #Chord_3 E5/0.25 | C#6/0.25 C#6/0.25 E5/0.25 A4/0.25 A4/0.25 #Variation_1 E5/0.25 | #Chord_0 A4/0.25 | F#5/0.25 F#5/0.25 A4/0.25 D5/0.25 D5/0.25 A4/0.25 | #Chord_1 G4/0.25 | Eb5/0.25 Eb5/0.25 G4/0.25 C5/0.25 C5/0.25 G4/0.25 | #Chord_2 F#5/0.25 | D6/0.25 D6/0.25 F#5/0.25 B4/0.25 B4/0.25 F#5/0.25 | #Chord_3 E5/0.25 | C#6/0.25 C#6/0.25 E5/0.25 A4/0.25 A4/0.25 #Variation_2 E5/0.25 | #Chord_0 A4/0.25 | F#5/0.25 F#5/0.25 A4/0.25 D5/0.25 D5/0.25 A4/0.25 | #Chord_1 G4/0.25 | Eb5/0.25 Eb5/0.25 G4/0.25 C5/0.25 C5/0.25 G4/0.25 | #Chord_2 F#5/0.25 | D6/0.25 D6/0.25 F#5/0.25 B4/0.25 B4/0.25 F#5/0.25 | #Chord_3 E5/0.25 | C#6/0.25 C#6/0.25 E5/0.25 A4/0.25 A4/0.25 #Variation_3 E5/0.25 | #Chord_0 A3/0.25 | F#4/0.25 F#4/0.25 A3/0.25 D5/0.25 D5/0.25 A3/0.25 | #Chord_1 G3/0.25 | Eb4/0.25 Eb4/0.25 G3/0.25 C5/0.25 C5/0.25 G3/0.25 | #Chord_2 F#4/0.25 | D5/0.25 D5/0.25 F#4/0.25 B4/0.25 B4/0.25 F#4/0.25 | #Chord_3 E4/0.25 | C#5/0.25 C#5/0.25 E4/0.25 A4/0.25 A4/0.25 #Variation_4 E4/0.25 | #Chord_0 A3/0.25 | F#4/0.25 F#4/0.25 A3/0.25 D5/0.25 D5/0.25 A3/0.25 | #Chord_1 G3/0.25 | Eb4/0.25 Eb4/0.25 G3/0.25 C5/0.25 C5/0.25 G3/0.25 | #Chord_2 F#4/0.25 | D5/0.25 D5/0.25 F#4/0.25 B4/0.25 B4/0.25 F#4/0.25 | #Chord_3 E4/0.25 | C#5/0.25 C#5/0.25 E4/0.25 A4/0.25 A4/0.25 #Variation_5 E4/0.25 | #Chord_0 A4/0.25 | F#5/0.25 F#5/0.25 A4/0.25 D5/0.25 D5/0.25 A4/0.25 | #Chord_1 G4/0.25 | Eb5/0.25 Eb5/0.25 G4/0.25 C5/0.25 C5/0.25 G4/0.25 | #Chord_2 F#5/0.25 | D6/0.25 D6/0.25 F#5/0.25 B4/0.25 B4/0.25 F#5/0.25 | #Chord_3 E5/0.25 | C#6/0.25 C#6/0.25 E5/0.25 A4/0.25 A4/0.25 E5/0.25 |");
StaccatoParser parser = new StaccatoParser();
MusicXmlParserListener listener = new MusicXmlParserListener();
parser.addParserListener(listener);
DevLog.debug("parsing: " + p);
parser.parse(p);
String musicXmlStr = listener.getMusicXMLString();
DevLog.debug("writing music xml: " + musicXmlStr);
}
}
这是输出:
2017-07-16 05:36:16.649 1 D [SysProp] song.devlog.printDateTimeInSystemOut = DefaultVal:true,SetVal:null 2017-07-16 05:36:16.649 1 D [SysProp] song.devlog.printNothingInSystemOut = DefaultVal:false,SetVal:null 2017-07-16 05:36:16.649 1 D [SysProp] issac.logLevel = DefaultVal:-S-T-D-I-W-E-,SetVal:null 2017-07-16 05:36:16.626 1 D解析:#Score_Beginning I [PIANO] T100 TIME:6/4 KEY:AMIN#Variation_0#Chord_0 A4 / 0.25 | F#5 / 0.25 F#5 / 0.25 A4 / 0.25 D5 / 0.25 D5 / 0.25 A4 / 0.25 | #Chord_1 G4 / 0.25 | Eb5 / 0.25 Eb5 / 0.25 G4 / 0.25 C5 / 0.25 C5 / 0.25 G4 / 0.25 | #Chord_2 F#5 / 0.25 | D6 / 0.25 D6 / 0.25 F#5 / 0.25 B4 / 0.25 B4 / 0.25 F#5 / 0.25 | #Chord_3 E5 / 0.25 | C#6 / 0.25 C#6 / 0.25 E5 / 0.25 A4 / 0.25 A4 / 0.25#Variation_1 E5 / 0.25 | #Chord_0 A4 / 0.25 | F#5 / 0.25 F#5 / 0.25 A4 / 0.25 D5 / 0.25 D5 / 0.25 A4 / 0.25 | #Chord_1 G4 / 0.25 | Eb5 / 0.25 Eb5 / 0.25 G4 / 0.25 C5 / 0.25 C5 / 0.25 G4 / 0.25 | #Chord_2 F#5 / 0.25 | D6 / 0.25 D6 / 0.25 F#5 / 0.25 B4 / 0.25 B4 / 0.25 F#5 / 0.25 | #Chord_3 E5 / 0.25 | C#6 / 0.25 C#6 / 0.25 E5 / 0.25 A4 / 0.25 A4 / 0.25#Variation_2 E5 / 0.25 | #Chord_0 A4 / 0.25 | F#5 / 0.25 F#5 / 0.25 A4 / 0.25 D5 / 0.25 D5 / 0.25 A4 / 0.25 | #Chord_1 G4 / 0.25 | Eb5 / 0.25 Eb5 / 0.25 G4 / 0.25 C5 / 0.25 C5 / 0.25 G4 / 0.25 | #Chord_2 F#5 / 0.25 | D6 / 0.25 D6 / 0.25 F#5 / 0.25 B4 / 0.25 B4 / 0.25 F#5 / 0.25 | #Chord_3 E5 / 0.25 | C#6 / 0.25 C#6 / 0.25 E5 / 0.25 A4 / 0.25 A4 / 0.25#Variation_3 E5 / 0.25 | #Chord_0 A3 / 0.25 | F#4 / 0.25 F#4 / 0.25 A3 / 0.25 D5 / 0.25 D5 / 0.25 A3 / 0.25 | #Chord_1 G3 / 0.25 | Eb4 / 0.25 Eb4 / 0.25 G3 / 0.25 C5 / 0.25 C5 / 0.25 G3 / 0.25 | #Chord_2 F#4 / 0.25 | D5 / 0.25 D5 / 0.25 F#4 / 0.25 B4 / 0.25 B4 / 0.25 F#4 / 0.25 | #Chord_3 E4 / 0.25 | C#5 / 0.25 C#5 / 0.25 E4 / 0.25 A4 / 0.25 A4 / 0.25#Variation_4 E4 / 0.25 | #Chord_0 A3 / 0.25 | F#4 / 0.25 F#4 / 0.25 A3 / 0.25 D5 / 0.25 D5 / 0.25 A3 / 0.25 | #Chord_1 G3 / 0.25 | Eb4 / 0.25 Eb4 / 0.25 G3 / 0.25 C5 / 0.25 C5 / 0.25 G3 / 0.25 | #Chord_2 F#4 / 0.25 | D5 / 0.25 D5 / 0.25 F#4 / 0.25 B4 / 0.25 B4 / 0.25 F#4 / 0.25 | #Chord_3 E4 / 0.25 | C#5 / 0.25 C#5 / 0.25 E4 / 0.25 A4 / 0.25 A4 / 0.25#Variation_5 E4 / 0.25 | #Chord_0 A4 / 0.25 | F#5 / 0.25 F#5 / 0.25 A4 / 0.25 D5 / 0.25 D5 / 0.25 A4 / 0.25 | #Chord_1 G4 / 0.25 | Eb5 / 0.25 Eb5 / 0.25 G4 / 0.25 C5 / 0.25 C5 / 0.25 G4 / 0.25 | #Chord_2 F#5 / 0.25 | D6 / 0.25 D6 / 0.25 F#5 / 0.25 B4 / 0.25 B4 / 0.25 F#5 / 0.25 | #Chord_3 E5 / 0.25 | C#6 / 0.25 C#6 / 0.25 E5 / 0.25 A4 / 0.25 A4 / 0.25 E5 / 0.25 | 2017-07-16 05:36:16.674 1 D写音乐xml: JFugue MusicXMLRenderer
所以解析后的musicXml结果是:
<?xml version="1.0"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise><identification><creator type="software">JFugue MusicXMLRenderer</creator></identification><part-list /></score-partwise>
我所有的笔记都消失了。我错过了什么?
提前致谢。
答案 0 :(得分:0)
它隐藏在JFugue的下载页面中显而易见,但是:“请注意,MusicXmlParserListener目前没有实现.JFugue仍然需要:为JFugue 5.0更新MusicXmlParserListener,对MusicXMLParser进行更彻底的测试,...... “
(对于下载代码的其他人,我会努力使其更明显。)
JFugue中的MusicXML功能由志愿者提供,在更新最新版本的MusicXML和最新版本的JFugue的代码方面存在一些差距。