On Saturday 04 August 2007 13:27, Chris Cannam wrote:
> > My next iteration:
> > 1 voice per Segment
> > 1 voice per Track
> > Composition owns a list of Scores.
>
> As well as the existing list of tracks (i.e. in my mind at least, the
> main sequencer view would not necessarily change much -- the score
> management views/dialogs would be elsewhere).

You mean "Composition owns a list of Tracks"? I don't see any reason to change 
that. I was thinking of ScoreView as a window opening from a menu or toolbar 
button or something, pretty much leaving all current track view stuff alone.

> > class ScorePart
> > {
> >     StaffType m_staffType; // StdStaff, GrandStaff, StdTabStaff, etc.
> >     TablatureTuning m_tabTuning;
> >     map<Segment*, int> m_segmentVoiceMap;   // <segment, voice>
> >     map<int, int> m_voiceSubstaffMap;  // <voice, substaff>
> >     string m_label;
> > };
>
> I'm not sure that it's necessary to identify voices directly.  Rather
> than saying "this segment is voice 0" and defaulting to "voice 0 is
> stem-up on the top staff", why not say "this segment is stem-up on the
> top staff"?  You can always derive voice numbers from this when you
> render it all, assuming you need them for user interaction purposes,
> and they'll be consistent between renderings.  For identifying voices
> to the user, the segment names are now perfectly acceptable as each
> segment contains material from only a single voice.

I'll have to think about this. I have to sit down and work it out on paper.

> > Scores get saved in the .rg file. We could do templates and all sorts
> > of convenience stuff later.
>
> Yes, yes and yes.  Also, when printing to Lilypond or wherever from the
> main view, you could choose one of the set of known scores (or
> just "everything arranged per default") to print out.

Yes, once the mechanism is set up, printing or exporting to Lilypond should 
follow without too much trouble.


I think I can come up with at least the basics of score layout. I think I'm 
going to start with the underlying code rather than a user interface (i.e. 
ScoreView waits till later). My use case:
User selects a bunch of Segments in TrackEditor and right clicks on "Open in 
Notation View".
NotationView will create a default Score from the selected Segments. 
NotationView also creates a list of Staffs. The Staffs create StaffSegments. 
Each Staff is passed a font name and size to create its own 
NotePixmapFactory. Each Staff also needs its own StaffHLayout and 
StaffVLayout (to scan the staff, position chords, etc.). NotationView creates 
a ViewHLayout and ViewVLayout (possibly combined into a single class?) which 
take care of reconciling the staffs. I have prototype code laying around 
somewhere, which does something like this and allows for multiple staff types 
in the same view.

A Staff consists of a single set of lines. The Score should hold the logic of 
combining staffs into a grand staff or std tablature. ViewHLayout and 
ViewVLayout should have access to Score so that connecting lines and such can 
be added.

Sound reasonable?

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to