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

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

 

4.6 Staff lines, clefs, and transposition

4.6.1 Staff lines, line numbers

Voice parameters have the general syntax "keyword=value". The ones that concern us here, may occur interchangeably inside V: or K: fields (the latter only for practical reasons), separated from the other syntax elements by space characters. The syntax [K:keyword=…] is also legal.

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

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. Obviously its scope is "staff-related". If the value changes in mid-voice, the display software need not obey until its next line break.

The 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.2 Clefs as voice parameters

Clef information is normally provided by the voice parameter keyword "clef=<clef value>", sometimes accompanied by one of the keywords "8shift=<octave shift value>" and "middle=<middle note>". The syntax "<clef-value>" (without the "clef=" prefix) is also permitted, except for the case "clef=none".

Typical examples:

V:cello clef=bass
…[K:tenor]…
V:violin clef=treble middle=d % "French violin clef" sitting on the bottom line, thus the note d comes on the middle line.
V:violin clef=treble1 % "French violin clef" in a shorter spelling, with <line number>
V:doublebass clef=bass 8shift=-1i % meant one octave lower

An 8shift= or middle= parameter is only allowed in connection with an explicit <clef value> in the same field.

An alternate syntax, as a separate field, is

I:clef <clef value> [8shift=<octave shift value> | middle=<middle note>]

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

Since there will be other clef keywords of this syntax, which are not allowed as voice parameters, the syntax will be explained in this alternate form. Voice parameters will be considered mapped in the obvious way, to an imaginary I: field following the existing V: or K: field.

4.6.3 General clef field syntax

The syntax of the I: fields concerned with clefs is:

I:<clef keyword> <clef name>[<line number>][+8 | -8 | +8i | -8i] [8shift=<number of octaves>[i]] [middle=<note>]

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

<clef keyword>
is principally "clef". Other keywords, to be explained later, are "clef_concert", "clef_shared", and "clef_shared_concert".

<clef name>
may be treble, alto, tenor, bass, perc, none, or auto. "perc" selects the drum clef. The default value is "auto", which causes the display software to choose and switch between treble and bass clef freely, as it deems best.

[<line number>]
indicates on which staff line the base clef is anchored. Different values constitute different clefs, e.g. "bass2" is elsewhere known as the baritone clef, and "alto4" equals "tenor".

  • Values 0 to 9 are formally allowed, even if referring to an "invisible" line, as inevitable 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 in conjunction with middle= in a single field.
  • Cannot be used with the <clef name> "none" (use middle= in that case) or "auto".

[middle=<note>]
is an alternate way to define the line number of the clef. The value indicates what note (without accidental) is to be displayed on line 3, in the sense of the above line numbering.

  • Cannot be used in conjunction with <line number> in a single field.
  • Cannot be used in conjunction with "8shift=" in a single field.
  • Cannot be used with the <clef name> "auto".
  • For <clef name> "auto" or "none", an arbitrary <middle note> can be specified.
  • For the remaining clefs, only those <middle note> values are permitted that are equivalent to line number suffixes 1 through 5, regardless of the "stafflines" value, regardless of code transposition:
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,

However, values differing from legal ones by one or more octaves are permitted for legacy reasons, though deprecated. The number of octaves is then considered as if it were an 8shift= parameter with an "i" postfix. For example, deprecated "I:clef bass middle=D,," is equivalent to "I:clef bass 8shift=-1i", being "the double bass clef", see below.

  • It is generally legal to anchor clefs on invisible lines. *)
  • In a transposition context, the <note name> always refers to the note that would be read from the printed score, which may be distinct from the corresponding note name in the abc code.
  • If no middle= is specified, the [<line number>] defaults apply, except for <clef name> "none", which defaults to middle=B.

[+8i | -8i]
(postfix) is the clef with an '8' drawn above or below it, viewed as a clef of its own, e.g. treble-8i used for choral tenor voices.

  • No transposition of notes is caused.
  • Can only be used with the <clef name>s "treble" or "bass".

Octave-transposing clefs
Clefs that look (almost) like ordinary treble or bass clefs, but in fact operate in a different octave, often tempt users to type the notes as they would with the ordinary clef, in particular when copying existing sheet music. To meet that demand, clef syntaxes are introduced that cause the sound of the notes to be transposed by one or more octaves, adding independently to all other transposition mechanisms.

(Users who value cleanliness will prefer the non-transposing variants, marked by a postfix "i" for "independent", possibly in conjunction with a suitable "octave=" statement.)

This octave transposition is only effective with the keyword "clef". When used with "clef_concert" etc., any octave-transposing syntax is synonymous to the "i" variant.

Of course, the realm of the transposition ends with the next clef change. All other operations amounting to clef changes, e.g. via clef_shared, must refer to the octave-transposed notes, to leave all sounds unchanged.

[+8 | -8]
(postfix) is the clef with an '8' drawn above or below it, viewed as yet another clef of its own.

  • The sound of the notes is one octave higher or lower, i.e. these are octave-transposing clefs.
  • The display of the notes happens to be as if the postfix were absent.
  • Any middle= must specify the note as if the postfix were absent (important exception, for optimal comfort!)
  • Can only be used with the <clef name>s "treble" or "bass".

[8shift=<number of octaves>[i]]
considers the clef in a different octave, as if it were decorated with an '8' etc., but prints it unchanged. In other words, the clef is disguised to the reader of the sheet music. Typical examples are the "double bass clef" "I:clef bass 8shift=-1i" and the "piccolo flute clef" "I:clef treble 8shift=+1". The "i" postfix works analogous to its clef name counterpart: when missing, the clefs are octave-transposing by the <number of octaves>.

  • Cannot be used in conjunction with "middle=" in a single field; use <line number> if needed.
  • Cannot be used with the <clef name>s "auto" or "none".
  • Can well be used with the <clef values>s containing "8", of equal or different "i" quality. The octave shifts simply add up, separately for display and sound; no further administration is required.
  • It is the user's responsibility that the sheet music remains legible. The individuality of these clefs is preserved e.g. for a concert score, unless changed explicitely via I:clef_concert. Users who want their concert score strictly as sounding, may prefer to treat those instruments as "transposing instruments" by octaves.
  • Remark: Values other than +1 and -1 are rarely used in practice. If derived from legacy "middle=" parameters, they are likely to be mistakes, so that a warning message may be adequate. Clefs have nothing to do with the desire for easier typing, as fulfilled by the "octave" keyword! FAQ: What is the difference between "8shift=" and "octave="? Answer: Superficially, that "octave=" shifts display *and* sound, "8shift=" affects only one of them. Also, more subtly, in contexts such as the concert score, "8shift" sticks to its *clef*, whereas "octave" is a property of the abc *notes*, not staff-related!.

*) 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.

4.6.4 Clefs for temporary display options

In practice, an abc score will often be used for more than one type of printed score: Full score, single voice part, concert score, condensed score …, to be varied temporarily. (Readers who do not have such desires may skip this paragraph with its subparagraphs.)

Different clef settings may be required for these verious use cases, including clef changes at different positions during the course of a voice. It would be tedious to change all clef directives whenever printing a type of score differing from the one printed previously.

It is much more convenient to switch between these use cases by simply editing the header statements "I:score" or "I:concert_score".

Therefore, new keywords are introduced to cater for the various use case in advance, to be used only when need arises. The principal "I:clef" is the default. Users who do not anticipate more than one type of printing, can use "I:clef" for it.

With each keyword we will associate

  • a use case,
  • another clef keyword as "default keyword"
  • one or more clef keywords as possible "fallback keywords".

The general mechanism for a given keyword is the following:

  1. If the use case is not effective, the fields of that keyword are ignored.
  2. If the use case is effective, but the keyword has not been encountered yet in a particular voice, the values of the "default keyword" apply.
  3. If the use case is effective, and the keyword is encountered specifying for value the name of one of the fallback keywords, the current value of that fallback keyword is used, until the given keyword occurs again; example: [I:clef_concert_shared clef_shared].
  4. All other clef keywords are ignored.
  5. If "auto" is the current value of a keyword serving as default or fallback, software must recalculate the effective clef.

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.

Note that an "i" postfix does not make any difference for these keywords, since they must never change the sound of any notes.

Although I:score and I:concert_score rarely occur outside of tune headers, they are "control types". If their value changes in the course of a tune, software must revaluate clefs and insert clef changes wherever necessary.

4.6.4.1 Clef for a concert score

The value "true" of the field "I:concert_score" [NEW/TODO], see "Transposition" below, constitutes the use case for the keyword I:clef_concert.

Different clefs in the concert score are typically required for instruments with large transposition intervals such as used for tenor saxophones, piccolo flutes, double basses etc.

Typical example:

V:double_bass clef=bass transpose=-12
[I:clef_concert bass-8i][K:…

The default keyword, and the only possible fallback keyword, is "I:clef".

4.6.4.2 Clef for temporarily condensed display

Sometimes two or more voices must share a staff temporarily, as decreed by "I:score". This is the use case for the keywords I:clef_shared resp. I:clef_shared_concert, depending on whether "I:concert_score true" applies.

These keywords are considered "staff-related", i.e. they will only be effective in the master voice of a shared staff.

The default keyword of "I:clef_shared" is "I:clef", which is also its only possible fallback keyword.

The default keyword of "I:clef_shared_concert" is "I:clef_concert"; its possible fallback keywords are "I:clef", "I:clef_concert", and "I:clef_shared". The fallback/default mechanism may apply in multiple steps, the last fallback being "auto".

4.6.5 Suppression

"I:suppress-subsequent-clefs true|false", if of value "true", causes clefs to be printed only at their installation, not at the beginning of every staff. It is a staff-related type. The default value is "false".

[TODO, somewhere else: "I:suppress-subsequent-key-signatures" does the same with key signatures, also staff-related.]

4.6.6 Ottava (8va etc.) passages

An important item of notation concerns passages written in a different octave, to save ledger lines. Such a passage is marked by a dashed line starting with something like "8va".

This is not just a decoration, but has much in common with clefs such as treble+8. Therefore, the abc syntax is a field, usually inline:

I:<ottava-keyword> <number of octaves>[i] ["<text>"]

These are of course "staff-related types", like the clefs.

<ottava-keyword>
is principally "ottava". Additional keywords are "ottava_concert", "ottava_shared", and "ottava_shared_concert", working exactly like "clef_concert" etc., but completely independently. This includes a fallback syntax [I:ottava_shared_concert ottava_shared] etc.

<number of octaves>
A signed number from -2 to +2. The value 0 ends the passage; the remaining syntax elements will be ignored for it. A positive value causes a dashed line above the staff, a negative one below the staff. Of course, 0 is the default.

[i]
(postfix), analogous to treble+8i etc., causes the octave transposition to affect the display of the notes (in opposite direction!), instead of the sound. Either effect is added independently to all other transposition mechanisms. Note that the "i" postfix does not make any difference in cases of derived "ottava_…" keywords, since these must never change the sound of any notes.

["<text>"]
An arbitrary text, to be displayed at the beginning of the dotted line. Defaults are "8va" (for +/-1) and "15ma" (for +/-2). [TODO: subject to discussion; how to express a superscript?]

4.6.7 Transposition

…[TODO, a topic of its own; includes "octave=" and "transpose=". These are not staff-related.]

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.

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.

Clefs and ottavas for temporary purposes

The demand for an I:concert_score is taken as a hypothesis; if it does not substantiate, the corresponding clef keywords will be removed from the version to be voted on.

Aug. 5, 2012: The same applies to the ottava keywords.

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.

List of new single features

The following items and features are newly introduced here as hypotheses, with respect to the current standard 2.1. The changes from v1 to v2 are marked.

  1. 4.6.2: 8shift= [NEW in this v2 text]
  2. 4.6.2: alternate syntax I:clef
  3. 4.6.3: value "clef=auto" (following Jef)
  4. 4.6.3: middle= limited to reasonable usage [CHANGED in this v2 text]
  5. 4.6.3: postfices +8i and -8i for well-behaved clefs
  6. 4.6.4: "I:concert_score" tentatively imagined to be defined elsewhere in the standard document; symbolizing the principal facility of a (temporary) concert score
  7. 4.6.4: "I:clef_concert"
  8. 4.6.4: "I:clef_shared" ("I:clef_shared_concert" being necessary if both clef mechanisms are approved)
  9. 4.6.5: "I:suppress-subsequent-clefs"
  10. 4.6.6: "I:ottava" and ottava_shared etc. [NEW in this v2 text]

Feel free to criticize each point, preferably specifying your preferred solution, or your challenge of a particular one of my assumptions and diagnoses.

abc/standard/v2.1/proposals/clefs_voice_parameters/v3.txt · Last modified: 2012/08/05 15:04 by alexmidicond
 
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