hanshoglund / music-suite

Fork of https://github.com/music-suite/music-suite
BSD 3-Clause "New" or "Revised" License
4 stars 1 forks source link

MusicXML parser #20

Open jmorag opened 4 years ago

jmorag commented 4 years ago

I'd like to start working on Data.Music.MusicXml.Read. Do you have a preference between xml-conduit, xeno, hand-rolled megaparsec, or some other library?

jmorag commented 4 years ago

There's also hxt, which would allow us to use the schema, but apparently it's slow.

hanshoglund commented 4 years ago

My main concerns are:

Out of curiosity what did you plan to use it for? Parsing the entire MusicXML spec would be a very big undertaking, so I assume you want to focus on the subset relevant to your use case.

jmorag commented 4 years ago

This will be my first time dealing with xml in Haskell, so I'm happy to start with xml and a pure interface. If it becomes apparent that the library is too limited then I'll investigate the cabal flag route.

My use case is aggregating violin excerpts to create a database of fingerings. I'll mostly need to process small fragments of partwise scores generated with MuseScore and displayed in the browser with open sheet music display.

At minimum, I need to be able to process pitch, rhythm, and the string and fingering annotations inside technical tags. Dynamics, articulations, and slurs would be nice so that pieces match up with what they look like in printed editions, but not absolutely necessary.

hanshoglund commented 4 years ago

Sounds good. We currently don't have representations of strings number/fingerings but it should be easy to add this to Music.Score.Technique. Let me know if you need any pointers.