FWIW, as the one who coded most of the tab feature, I second lasconic in his
opposition to anything tied to a specific instrument; for instance, the
piano Ped. feature is there, but it is not specifically tied to a staff
being a piano staff, for it being used or usable (the user is ultimately
responsible for using each feature when it musically makes sense!).

I am not very familiar with modern plucked string usages (my background is
more on Renaissance and early Baroque instruments), but I am not immediately
convinced that the capo concept applies to this case, even a "capo
independent for each string" concept.

If I am not mistaken, capo ultimately works in the other direction: with a
capo on the, say, 3rd fret, the fourth fret would be numbered 1.

I suspect that having an additional parameter for each string, holding a
numerical offset to the resulting fret value, might be one way to go, but I
have not given *a lot* of thinking to this. This would affect how a computed
fret value is turned into a textual representation.

I also suspect that:

1) this feature should be incompatible (non-available or automatically set
to 0) with the "open" flag

2) it should be separate from a (future) capo feature, but interact with it,
as the latter may override the former. Examples: As far as I understand the
5-string banjo case, normally there is a delta of +5 between the first
string and the other; assuming a capo on the 1st, 2nd, or 3rd fret, this
delta would be reduced to +4, +3, +2 and so on. But from the 5th fret on
(capo on the 5th, 6th, ..., fret), the progression does not continue and the
delta remains fixed at 0.
___________________________

Another, different, view could be to introduce the concept of "minimum
available fret"; in this view, the first string of the 5-string banjo would
be tuned on 4th lower than 'G' (at least internally, the value actually
displayed to the user in the string table might be adjusted) and frets from
0 to 4 simply non-existent, not usable. This would affect which note can
actually be assigned to which string (and, in fact, in this banjo case, it
is not possible to place, say, an F# at the 4th fret of the first string:
that fret does not exist!).
___________________________

The points IMHO most important to keep in mind while designing this feature
(and to choose between these two views above or any other one might think
of) are the usual: performance and code maintainability.

*Performance*: the validity of the cached fret value and its textual
representation are computed each time a layout takes place (as a rule of
thumb, each time something changes somewhere in the score); the fret value
itself is re-computed less frequently, only if the cached value, once
checked, turns out to be no longer valid. But please note: if the note
belongs to a chord, the invalidity of a single note triggers the recomputing
of all the fret values of the chord.

So, all these routines should be as streamlined as possible, with a little
preference for the two former steps (validity check and string).

*Maintainability*: this has to do with proper commenting, meaningful symbols
names and so on, as usual. But also with keeping as much as possible with
coding patterns and paradigms already used in the rest of the code base (the
whole of it, not only the tab feature), to reduce the numbers of "minds" and
habits required to understand the code.

Thanks,

M.



--
View this message in context: 
http://dev-list.musescore.org/Tablature-question-how-to-determine-if-in-a-5-staff-line-banjo-tab-or-not-tp7579658p7579690.html
Sent from the MuseScore Developer mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
Mscore-developer mailing list
Mscore-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mscore-developer

Reply via email to