Data Structure Research
It seems that there will be several main areas to consider when it comes to the storage of data in this system:
- How to store personal user information and musical scores on the server.
- What format should the scores be in to transfer them from the server to the client browser.
- What should the structure of the actual client webpage be - in what structure will the scores be kept (and modified) at the user-end?
On the Server
SQL Database: Store all the personal info required for user-accounts in an SQL Database on the server. The music scores themselves could also be stored in the database however, it would probably make far more sense to store each score in it's own file on the server and perhaps give the location of it within the database for each user. This begs the question: What file format should be used to store the scores (see below)?
Music Score file format
Aside from designing my own file format for musical scores, there are many already established formats out there (e.g. GUIDO, NIFF, MIDI, MusicXML, LilyPond) which could be used. The most widely used format at the moment is MusicXML, which is now supported by all the leading commercial applications. In terms of simplicity and sufficiency (for storing scores) At the moment, the best choice is MusicXML for the following reasons:
- It is XML; As genuine XML it is well supported (by servers and browsers) and opens up opportunities to use XSLTs for the convertion to other formats (most significantly html). It is also human-readable.
- Well-supported: If the system supports MusicXML it will be useful to users who will be able to download their scores in this format and load them into many other applications.
- It is specifically designed for notation (unlike many of the other options) and includes everything the system will need to store and nothing extra (for example MIDI is designed for audio rather than notation).
In the browser
When it comes to handling the score in the browser, a few options seem possible:
- Generating an html structure that corresponds to the score (i.e. each note is a html 'div' having image of the approriate note). This may be performed at the server before sending the page, or purely by scripts run at the browser.
- A highly relevant thesis on generation of graphical musical scores from text-based input can be found here. It details the workings of this website which converts GUIDO music notation (text input) into (an image of) the score.