package com.xenoage.zong.musicxml.types.enums;
import com.xenoage.utils.annotations.NonNull;
import com.xenoage.utils.math.Fraction;
import lombok.AllArgsConstructor;
import lombok.Getter;
import static com.xenoage.utils.math.Fraction.fr;
/**
* MusicXML note-type-value.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter
public enum MxlNoteTypeValue {
_1024th(fr(1, 1024)),
_512th(fr(1, 512)),
_256th(fr(1, 256)),
_128th(fr(1, 128)),
_64th(fr(1, 64)),
_32nd(fr(1, 32)),
_16th(fr(1, 16)),
Eighth(fr(1, 8)),
Quarter(fr(1, 4)),
Half(fr(1, 2)),
Whole(fr(1, 1)),
Breve(fr(1, 1)),
Long(fr(1, 1));
private final Fraction duration;
@NonNull public static MxlNoteTypeValue read(String s) {
return Utils.read("note-type-value", s, values());
}
public String write() {
String ret = toString().toLowerCase();
if (ret.charAt(0) == '_')
ret = ret.substring(1);
return ret;
}
}