package org.vocobox.model.note;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MAPSNoteParser extends NoteParser{
static String p = "MAPS_(" + word + ")_(" + word + ")_(" + letter + ")_(" + letter_and_nums + ")_M(" + numbers + ")_(" + letter_and_nums + ").wav";
public MAPSNoteParser(){
pattern = Pattern.compile(p);
}
@Override
public void parseNoteFileName(Note n, File file) {
MAPSNote note = (MAPSNote) n;
Matcher m = pattern.matcher(file.getName());
if (m.matches()) {
note.type = m.group(1);
note.playing = m.group(2);
note.loudness = m.group(3);
note.sustain = "S0".equals(m.group(4))?false:true;
note.midiCode = Integer.parseInt(m.group(5));
note.instrument = m.group(6);
NoteDescriptor nv = NoteDescriptors.PIANO.getNoteByMidi(note.midiCode);
String noteName = nv.name;
setNameSignOctaveWithNoteString(note, noteName);
} else {
throw new IllegalArgumentException("unrecognize note file name pattern \nfor : " + file.getName() + " \npattern : " + pattern);
}
}
@Override
public boolean isNotePattern(File file) {
//System.out.println(p);
return pattern.matcher(file.getName()).matches();
}
}