Thursday, 28 January 2010

The Model for a Score

Thinking so far is it stores a number of important data items:-
  • Attributes for the page, e.g. landscape, portrait, paper size, number of lines per page, eventually include options for layout of lines
  • List of general adornments, e.g. text items (title, author, type [march, reel], basically any random text); graphic items such as logos, open ended so more type can be added (shapes?)
  • List of lines (staves?)
  • List of items that sit on lines, e.g. time sig, bar open / close, note, note group (hmm, when group crosses line? multiple grouping levels), unison group
One of the things that's bothering me is if each line contains its own list of items that sit on it, does that make things easier or harder for later in the programs life, when perhaps it can auto layout and move bars between lines. Perhaps a "paragraph" paradigm can be adopted where the list of items that go together, e.g. a logical part, are maintained as one list and that can be stretched, or moved around on the set of lines that contain it. Would be complex because don't want to constrain thinking to straightforward march scores etc, need the freedom to express any musical construct, e.g. for a drum fanfare / salute.

Should we perhaps not constrain by line at all, and layout of what sits where is managed by a view? Yes probably, but it needs to be persistent therefore should be stored in the model, talked myself out of that one - I am inclined to think that this is all about the manuscript therefore precise storage of the relationship between a note and the line it sits on is therefore important, duh.

So really until I decide on how to best store all the musical constructs, dependent on how they will be used, and how to deal with groups (simple groupings like unison markers, and then other more complex groups like irregular and regular groups, which may in turn be nested), there's no implementation to be done other than the adornments and page layout pieces.

Might be worthwhile implementing those, as that will bed down for me all the 2d graphics libraries, collections etc and improve my overall understanding of views and controllers and their interaction with the model.

That's what I'll do then! See you in a month or so!!!!

No comments:

Post a Comment