alphaTab icon indicating copy to clipboard operation
alphaTab copied to clipboard

Add support for MuseScore file format

Open webprofusion-chrisc opened this issue 9 years ago • 2 comments

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.

webprofusion-chrisc avatar Mar 25 '15 08:03 webprofusion-chrisc

Thanks for the hint. I'll have a look into the MuseScore Source and check how their internal datamodel fits the one from alphaTab.

Danielku15 avatar Mar 25 '15 16:03 Danielku15

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 

Danielku15 avatar Mar 25 '15 18:03 Danielku15