I'm looking to create a little app that allows the user to visual and control (mostly) classical music, in order to better recognize structures such as canon. What would be an appropriate data and file structure to store the music in?
I know very little about music, so this will be a learning experience on two levels for me. I'd like to start with a basic visualisation such as highlighting notes in a score as the music is played at controlled speed. I'd like to do this in WPF with C#, reading music from structured files.
What you need is a symbolic music format vs. an audio format. Since you're dealing with classical music, use the MusicXML format. It is supported by over 160 applications, including all the leading music notation applications like Finale and Sibelius, so you have a very wide range of tools to work with.
Note however that doing the type of visual display and highlighting that you are talking about is a complex job. MusicXML exported from Finale simplifies the programming by including lot of formatting, so you don't have to do the AI-like parts of music notation layout, but it's still complicated. You might want to take a look at existing tools and see what does the job. Perhaps you can incorporate a free MusicXML viewer/player like the Zong! Viewer, or a notation editor like MuseScore? Check out the MusicXML application list for more choices. Since MusicXML is defined in XML, you can also use the same XML tools that you use in any other project to read and write the MusicXML files.
GUIDO is another symbolic format, but it was only supported by a couple of niche applications and its development was abandoned many years ago. MEI is another symbolic format that has virtually no application support. A lot of symbolic formats were developed about 10 years ago, but MusicXML is the only one commonly used today. MIDI is an older interchange format that is universal for electronic instrument playback, but lacks the semantics necessary for accurately representing notation.
Good luck!
You're probably going to end up wanting to use an existing system such as GUIDO. Music is a rather complicated thing to model and GUIDO has already done the job for you. I would highly suggest you check it out.
It can be a little cryptic to work with, but MIDI might be a good format for this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With