home tune search software learn abc discuss about blog Starbound/LOTRO contact  

  [abc standard: home | current | route-map | updating | proposals]

 

4.6 Voice Parameters

Voice parameters have the general syntax "keyword=value". They may occur interchangeably inside V: or K: fields, separated from the other syntax elements by space characters. The syntax [K:keyword=value] is also legal and often preferred, since there is no principal difference to stand-alone fields. (The only exception is "middle=", for legacy reasons.)

As the name says, any voice parameter is formally restricted to its voice. Its value ceases to apply at the next V: field, but resumes validity at the next V: of its own voice.

Voice parameters can be changed in the course of a voice, simply by issuing a directive of equal keyword, but different value, in a V: or K: field. The previous value is always overridden, never added to etc. Some keywords also override the values of different keywords, as mentioned in their definition. (Note that this concerns the formal language objects called voice parameters; their actual effect may well influence other voices, or add to an overall transposition intervall, etc.)

The order in which parameters occur within a single field is strictly irrelevant; any conflict among them must result in a severe error message.

4.6.1 Staff lines

A fundamental voice parameter keyword is stafflines=, whose value is the number of lines in the staff. Legal values are 0 to 9. The default is 5.

4.6.2 Numbering of staff lines

Staff lines are numbered from a (possibly "invisible") bottom line upwards. Depending on the stafflines value, the lines with the following numbering will be visible only:

stafflines= visible lines
0 none
1 3
2 2 and 3
3 2, 3, and 4
4 and more all, starting with 1.

The reason for this is to cater for legacy usage, identifying the "middle" line with line number 3.

4.6.3 Clef

Clef information is provided by the voice parameter keywords "clef" and "middle". The syntax is:

[clef=]<clef name>[<line number>][+8 | -8 | +8i | -8i] [middle=<note>]

(where <…> denotes a value, […] denotes an optional parameter, and | separates alternative values).

  1. <clef name> - may be treble, alto, tenor, bass, perc, none, or auto. "perc" selects the drum clef. "clef=" may be omitted, except for clef=none and clef=auto.
  2. "clef=auto" causes the display software to choose and switch between treble and bass clef as it deems best. This is the default.
  3. [<line number>] - indicates on which staff line the base clef is anchored. Values 0 to 9 are formally allowed, even if referring to an "invisible" line, such as in the case stafflines=0. *)
    • Defaults are: treble (+/-8/i): 2; alto: 3; tenor: 4; bass (+/-8/i): 4, perc: 3. These defaults make the clefs behave as their name indicates.
    • Cannot be used with clef=none (use middle= in that case) or clef=auto.
  4. [middle=<note>] - is an alternate way to define the line number of the clef, not an independent voice parameter. middle= is only legal if the same field has an explicit "clef=" parameter without <line number>, and not being "clef=auto". The value indicates what note is displayed on line 3 according to the above numbering. "What note" of course means the note to be displayed, possibly transposed against the code, e.g. via "octave=".
    • Legal values, regardless of the "stafflines" value, are those equivalent to line number suffixes 1 through 5, see table below.
    • It is generally legal to anchor clefs on invisible lines. *)
    • If no middle= is encountered, the [<line number>] defaults apply, except for clef=none, which defaults to middle=B.
    • Remark: Values differing from legal ones by one or more octaves occasionally occur in legacy code. Some software interpreted them as instructions to transpose the display by the respective numbers of octaves, adding to all other such transposition mechanisms. Sound software was and is unaffected. Before the advent of "octave=", "middle=" plus a suitable "transpose=" formed a makeshift for it. Compliant software may or may not reproduce this behaviour, but must issue an error message.
  5. [+8 | -8] - (postfix) draws '8' above or below the clef. Allowed for treble and bass only. The player must transpose the notes one octave higher or lower, adding to all other sound transposition mechanisms. Any middle= must specify the written note, not the one sounding. All other automatic operations, such as choosing a common clef for voices sharing a staff, must refer to the octave-transposed notes. Because of these complications, the postfices [+8 | -8] are deprecated in favour of [+8i | -8i].
  6. [+8i | -8i] - (postfix) draws '8' above or below the treble or bass clef, to be viewed as a different clef. No transposition is caused; middle= works as usually.

*) Software unable to support some valid stafflines/clef/line-number/middle combination, should apply its best approximation that yields equal pitches, and issue a warning message.

clef legal middle= values
treble[+/-8] C E G B d
treble+8i c e g b d'
treble-8i C, E, G, B, D
alto or tenor F, A, C E G
bass[+/-8] B,, D, F, A, C
bass+8i B, D F A c
bass-8i B,,, D,, F,, A,, C,
perc an arbitrary note
none an arbitrary note
auto - forbidden -
4.6.4 Clef for a concert score

The keywords clef= and middle= always apply to the voice as normally printed. If the header field "I:concert_score" [NEW] is active, by default these clefs will be applied as well. Sometimes different clefs are required, particularly for instruments with large transposition intervals such as used for tenor saxophones, piccolo flutes, double basses etc. In these cases, use the keywords

clef_concert= and middle_concert=

with exactly the same possible values as clef/middle, except that the [+8 | -8] postfices are not allowed.

The mechanism is the following:

  1. If I:concert_score is not active, the keywords are ignored.
  2. If I:concert_score is active,
  3. as long as no clef_concert= has been encountered in a voice, clef=/middle= are used (NB: if "clef=auto" applies, as by default, its effect is recalculated, as if "clef_concert=auto" had been specified)
  4. after the first clef_concert=, clef=/middle= are ignored,
  5. the special value "clef_concert=clef" restores the clef=/middle= keywords, and draws the current clef if necessary.

Of course, the concert score must represent the same sounding pitches as the transposed score. For example, a double bass, treated as a transposing instrument, usually needs "clef_concert=bass-8i", if a concert score is to be catered for.

4.6.5 Suppression

"I:suppress-subsequent-clefs" causes clefs to be printed only at their installation, not at the beginning of every staff.

"I:suppress-subsequent-key-signatures" does the same with key signatures.

Both are staff-related types.

4.6.6 Transposition

…[TODO, a topic of its own; includes "octave=". ]

Proposer's comments

My name is Alexander Scheutzow. Suggestions for improvements are welcome in the thread http://tech.groups.yahoo.com/group/abcusers/message/8246 - my user name there is scheutzow4cond. Thank you.

The same applies to my other fundamental proposal at abcnotation.com/wiki/abc:standard:v2.1:proposals:multi-voice_scope:v1


July 24, 2012: First version. In this appendix, I would like to collect my own comments, errata, answers to questions, and announcements for the next version. It will be the only part of the text that will be edited, if possible by appending only. Any comments by readers, or separate proposals, are welcome, but will be particularly valuable if they take account of the various problems I try to solve with my proposal. So please take your time to study it/them thoroughly. Thanks.

The list items are numbered for better reference, the final version may use bullets or other forms of organization.

Line numbering

The problem with stafflines=0 is how to establish "line numbers" for clef, middle, etc. abc2ps has a solution for the stafflines problem that I would not exactly call beautiful, but which works and is probably being used. The point is that the line numbering does not count the visible lines from 1, but includes "invisible lines".

This current version reflects the behaviour of abc2ps in the question of line numbering. If anyone knows conflicting software or usages, please shout.

abc/standard/v2.1/proposals/clefs_voice_parameters/v1.txt · Last modified: 2021/07/07 12:35 by cwalshaw
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki