alphaTab
alphaTab copied to clipboard
Add support for MuseScore file format
MuseScore 2.0 does an excellent job as a cross-platform score creation suite and has great support for guitar tablature including GuitarPro import. It would be great to have support for their compressed and uncompressed file format.
Thanks for the hint. I'll have a look into the MuseScore Source and check how their internal datamodel fits the one from alphaTab.
Dev-Notes:
Uncompressed Files are XML Files, Compressed Files are Zip-Files containing the XML.
Entry Point for XML Analysis: https://github.com/musescore/MuseScore/blob/dcb974e324653f829bda60b482f84ac158260dc6/libmscore/scorefile.cpp#L648
Important Tags:
museScore (root)
Score -> new Score()
Part -> new Track()
trackName -> track.Name
Instrument ->
StringData -> track.Tuning
Channel -> track.PlaybackInfo
Staff -> Reference to Data using id attribute (or direct content?)
Staff -> Contents for Track
VBox
Text -> Score Info depending on subtag "style" (Title, Composer etc.)
style -> score.XXX
Measure -> new Bar() (+ new MasterBar() ?)
@Number -> bar.Index
Clef -> Parse into Clef enum
KeySig -> Key Signature
TimeSig ->
sigN -> bar.timeSignatureNumerator
sigD -> bar.timeSignatureDenominator
RehearsalMark -> new Marker()
Tempo -> Tempo Change
Rest -> new Beat() .IsRest = true
durationType -> Duration Enum
dots -> Dots
Chord -> new Beat()
durationType -> Duration Enum
Note -> new Note()
Fret -> note.Fret
String -> note.String
Pitch -> Midi Pitch?
Accidental -> Auto calculate ?
Dots -> Dots
Tie -> Id connected with endSpanner
endSpanner -> end of tie with same id
Text
text="let ring"
Arpeggio -> Stroke ?
subtype -> ??
Slur
type=start -> Hammer on?
Tuplet -> Referencing Tuplet Tag by id
Articulation
subtype=stacatto
Lyrics
text
Tuplet
normalNotes
actualNotes
Dynamic -> Dynamic for next beat (subtype or velocity?)
BarLine
subtype=double