On Wednesday 02 February 2005 03:04 pm, Chris Cannam wrote:
> > Maybe the solution is to have a "tablature edit mode", wherein you
> > could only enter notes via the tab staff.
>
> Yeah, there's no reason you shouldn't just have a separate tab staff
> that you enter through another option on the right-button menu on the
> segment canvas.  It could guess fingerings for notes that don't have
> them associated yet.  The NotationView is also in principle capable of
> showing multiple staffs that are not all plain notation staffs --
> notation staff first, tab staff under it, drum staff third etc -- but
> since there are no other staff types (except the matrix, which is
> useless in that context) in existence yet, assumptions have crept in
> and it would need a bit of work and testing to get it right.  Apart
> from the problem of how you select staff types in the GUI.
>
> Speaking for myself, I'm very interested in percussion staffs but I know
> next to nothing about tablature, so I'm probably going to be missing
> some important points here.

When talking about tablature, there's an ambiguity about just what a "staff" 
is. Is it just the lines holding the fingerings, or is the music staff part 
of it? I tend to think of the whole thing as the "tablature staff".

If you have a generic Staff, the way I see it is that some derived classes 
might be CommonStaff, PianoStaff, TabStaff, PercussionStaff, ChordStaff. They 
would need some smarts built into them, or you'd end up with a fragile 
system. A PianoStaff isn't simply 2 CommonStaffs. They way it handles ledger 
lines is different. For the ChordStaff, what I have in mind is how the rhythm 
guitar is represented in guitar magazines. The staff has no lines. It just 
gives a note value, and above it is a chord name. (It could be given a line, 
so long as the line is invisible.)

The TabStaff is the hardest of the bunch. The instrument needs data members 
describing how many strings, the tunings of those strings, and how many frets 
the instrument has. (Frets is used here as a synonym for "finger positions", 
since not all instruments that can be represented with TabStaffs have frets 
-- pedal steel guitar, fretless bass, violin, etc.)

If we say that the ChordStaff has an invisible line, then all staves have some 
1) basic properties:
2) a number of evenly spaced lines
3) bar lines (possibly invisible)
4) an area above and below for symbols
5) things (notes, fret pos, etc) that get placed upon the lines (or in the 
spaces) at fixed positions according to the time. That is, the horizontal 
spacing is common to all staves

Thus, it would seem logical if there was an abstract base class for a simple 
staff that encapsulated all of this functionality. Then there would be the 
base class Staff that contains  these simple staves. Actually, Staff need not 
contain anything except the virtual methods used for public access. Derived 
classes actually contain (private) instances of simple staves as data 
members. PianoStaff, TabStaff, etc., would be examples of these derived 
classes. In this way, the concept of a "staff" is a container and might in 
actuality contain multiple sub-staves. This would create a simple and regular 
interface to any type of staff. Additionally, there would be a 1-1 
correspondence between a Staff and a Track.


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to