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

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

 

AUTHOR'S CLARIFICATION:

If this proposal, or its motivation, is unclear in any respect, some of the philosophical notes appended may help. The structural aspects are more important than the precise syntax, as long as the latter comprehends abc2.1.

Changes from v3:


THE PROPOSAL:

4.6 Clefs and key/voice parameters

4.6.1 Syntax

Clef and transposition information may be provided in the K: key and V: voice fields. The general syntax is:

[clef=]<clef name>[<number>][+8 | -8][instrument=<interval>]  [stafflines=<number>] [octave=<number>] [abc=<interval>]

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

The abc2.1 standard also included [middle=<pitch>] but this is now deprecated and [transpose=<n>] which is now superseded – see deprecated syntax.

The values (see below for valid choices) associated with the various parameters are defined as

  • <clef name> is the name of a clef
  • <number> is a whole number
  • <interval> is an interval (encoded in one of a number of optional ways)

The options are:

  • <clef name> - may be treble, alto, tenor, bass, perc or none. perc selects the drum clef. clef= may be omitted.
  • [<number>] - following a clef name defines the staff line on which the clef is written. Defaults are: treble: 2; alto: 3; tenor: 4; bass: 4; perc: 3.
  • [+8 | -8] - draws '8' above or below the staff. This also introduces an octave transposition - see Sect 13 for details.
  • [instrument=<interval>] – defines the voice to be for a transposing instrument, and the interval specifies the difference in pitch between its written music and its sound. This is explained in Sect 13: (Transposition). The default is an instrument whose music is writen at sounding pitch (a non-transposing instrument).
  • [stafflines=<number>] - defines the number of lines in the staff. The default is 5.
  • [octave=<number>] - redefines the meaning of abc notation by the indicated number of octaves. The default is zero. Example: the abc-note for middle-C is (c C C,) for octave = (-1, 0, 1) both for drawing and play-back. This usage can help to avoid the need to write lots of apostrophes or commas for high or low notes. Example octave=-2 makes d the fall on the middle line of a bass stave.
  • [abc=<interval>] - redefines the meaning of abc notation by the indicated interval. The effect is the same as for octave, but any interval is possible. This is explained in section 13 (Transposition). The default is no abc adjustment. Two special values are also defined: abc=concert and abc=written, and with either of these the 'abc=' can be omitted. See also Sect. 13 (Transposition)

4.6.2 Clef examples

V:<id> clef=treble 
V:<id> clef=alto5    %C-clef on the top line 
V:<id> clef=bass-8   %Bass clef with an 8 underneath - see also sect 13.
V:<id> clef=bass octave=-2 %Bass clef music encoded with d on the middle line to avoid commas. 

More examples are given in Sect 13 ('Transposition') which explains keywords instrument and abc, and gives more details of +8, -8.

4.6.3 Voice or Key?

For abc tunes consisting of a single voice, the various clef and transposition parameters can be collected in the K: field.

For abc tunes with multiple voices, they should be put in each V: field for each voice.

4.6.4 Clef changes in a voice

An in-line V: field may be used to change a clef in mid tune, without repeating the voice ID. In this case the 'clef=' must be included.

Example:

V:piano treble
C B, A, G, | [V: clef=bass] F, E, D, C, |  

4.6.5 Conflict resolution

If two voices are placed on the same staff, then their clefs must match at all points in the tune. If they don't, then the clef, and other parameters requiring a match, are taken from the voice mentioned first in the I:score definition (which assigns voices to staves).

4.6.6 Deprecated syntax

middle

The abc2.1 standard and earlier allowed a clef definition to be accompanied by

middle=<note>

where <note> is a note in the abc syntax.

This is now deprecated for a number of reasons. New abc files should not use it.

One of its main purposes was to avoid commas in bass clef writing (which is now achieved with octave – see above). The abc2.1 standard suggests clef=bass middle=d is a good way to achieve it. The play-back pitch of the note d on the middle line of the bass clef, is not explicitly discussed, and one might assume either (a) that the relationship between played pitch and abc-notation is unaffected, or (b) that the relationship between the played pitch and the drawn music (the dot) is unaffected. Much (popular) software assumes (a); the abc2.1 standard resolves the ambiguity in the example ‘Zocharti Loch’ making it clear that it means (b). [This is musically more elegant than (a) in that it does not produce by default a bass clef part sounding two octaves higher than written.] The discrepant interpretations have been around since well before the abc2.1 standard, and there is no real hope of a resolution.

The syntax middle=<note> might also be used to put a clef on a different line – eg clef=treble middle=d might be used to produce a French Violin clef. (This is now achieved by clef=treble1.) But this gives two degrees of freedom – where to put the clef, and which octave to draw the notes – for one parameter.

Some values for the keyword must be nonsense – eg clef=treble middle=c.

And when it comes to the use of transposing instruments, and indeed to the new abc keyword, the existence of (now unneeded) middle just makes things impossibly difficult. Therefore it is now deprecated.

transpose

abc2.1 used a transpose parameter to change the sounding pitch of abc encoded at written pitch. This is now superseded by instrument - see sect 13 (Transposition) - because of possible conflicts with use of similar keywords used differently by various software. transpose should no longer be used as a voice/key parameter.

13 Transposition

13.1 Intervals

Before abc's approach to transposition (in various contexts) can be defined, it is necessary to define how the intervals are encoded, through which transposition may occur. In Sect 4.6, the general encoding of voice/key parameters:

[clef=]<clef name>[<number>][+8 | -8][instrument=<interval>]  [stafflines=<number>] [octave=<number>] [abc=<interval>]

defined two parameters (instrument,abc) whose values are intervals. These can be encoded by one of the following methods:

  1. <semitones>
  2. <semitones>:<steps>
  3. <note>

where <semitones> and <steps> are numbers, and <note> is the name of a note.

13.1.1 Intervals specified by semitones

Semitone counts in the range 0 to 11 correspond to upward intervals as follows

semitones Interval Example
0 perfect unison C to C
1 minor 2nd C to Db
2 major 2nd C to D
3 minor 3rd C to Eb
4 major 3rd C to E
5 perfect 4th C to F
6 tritone*
7 perfect 5th C to G
8 minor 6th C to Ab
9 major 6th C to A
10 minor 7th C to Bb
11 major 7th C to B

and adding/subtracting multiples of 12 correspond with ading/subtracting an octave. Example: -9 is a major 6th downward.

*The tritone interval can be considered a diminished 5th (C to Gb) or an augmented 4th (C to F#) as desired. If a specific choice is needed, then use one of the other methods of defining the interval.

This assignment has the following properties:

  • All major, minor, and perfect intervals can be represented just by a semitone count.
  • All semitone counts, except 6 - the tritone - define major, minor, or perfect intervals.
  • With the exception of 6, the intervals defined by n and 12-n are complementary: they add to a perfect octave.

13.1.2 Intervals specified by semitones:steps

For intervals which are not definable (by the above assignment) in terms of semitones alone, the method semitone:steps is available and can define all intervals.

Example: 3:2

Starting from C, 2 steps takes us to E, and 3 semitones takes us to D# or Eb or Fbb. the step count resolves the ambiguity in the semitones, and the result is Eb.

Include Alan's table here!

Example: 6:3 and 6:4 These define an augmented 4th (C to F#) and a diminished 5th (C to G) respectively.

13.1.3 Intervals specified by a note

Modern woodwind an brass instruments have names like trumpet in Bb, clarinet in Bb, clarinet in A, alto sax in Eb, alto flute in G, and in these cases it means thay are so-called transposing instruments. This means that their music is written at a different pitch from that at which it sounds. In particular, when these instruments read a C, the note which sounds is that in their name. In all the examples quoted immediately above, the note which sounds is below the written one, but less than an octave below. Because of this naming system, it is convenient to allow an interval to be defined by a note name, and signifying the interval downward from C to the named note. An appended number can adjust the octave. Here are enough examples, together with examples of instruments which transpose through the given interval, to define this system

interval semitones Example instrument
C 0 Violin, flute
B -1
Bb -2 Bb clarinet, trumpet
A -3 A clarinet
Ab -4
G -5 alto flute
F -7 french horn, cor anglais
E -8
Eb -9 alto sax, alto clt.
D -10
Db -11
In Higher Octaves:
Eb+1 3 Eb clarinet, Eb flute
C+1 12 Piccolo, descant recorder
Db+2 13 Db piccolo (now rare)
C+2 25 Garklein recorder, glock.
In Lower Octaves:
C-1 -12 Guitar, double bass
Bb-1 -14 Tenor sax, bass clarinet
Eb-1 -21 Bari sax, contralto clt
Bb-2 -26 Contrabass clarinet
Eb-3 -33 Contrabass sax.

Synonyms: a single octave modifier may be abbreviated to + or -. Example: Bb- is the same as Bb-1; C+ is the same as C+1.

13.2 The abc encoding pitch

The abc notes are written, by default, in each voice at the written pitch of the instrument, and not the pitch at which it sounds (concert pitch).

Alternatives are discussed below, but for the moment let us focus on written pitch encoding.

13.3 Transposition parameters in voice and key fields

The clef/transposition parameters of the V: and K: fields are

[clef=]<clef name>[<number>][+8 | -8][instrument=<interval>]  [stafflines=<number>] [octave=<number>] [abc=<interval>]

clef, stafflines, and octave, are defined in Sect 4.6

Now that intervals are defined, +8,-8, instrument, abc can be discussed.

13.3.1 Parameters +8 and -8

The keywords +8 or -8 define the voice as being for an instrument which sounds one octave higher or lower than its written pitch music. They define also that an 8 is drawn above/below the clef respectively.

Example: (written pitch encoding)

K:C
V:piccolo clef=treble+8
C D E F |

defines a piccolo sounding one octave higher than written. The written notes start at middle C and move up. They sound one octave higher. A little 8 is drawn above the treble clef.

13.3.2 instrument

The definition instrument=<interval> defines thet the voice is for an instrument which transposes by the supplied interval. The "<note>" method is the most covenient way of defining the interval, but the other methods may also be used.

Example: instrument=Bb may be used for a Bb clarinet, Bb trumpet, or soprano sax voice. The syntax instrument=-2 or instrument=-2:-1 is entrirely equivalent, though less mnemonic.

With written pitch encoding:

K:C
V:clarinet clef=treble instrument=Bb
[K:D] D E F G |

defines a Bb clarinet reading D E F# G and the notes sounding a tone lower as C D E F.

Example:

K:C
V:Piccolo clef=treble instrument=C+
C D E F |

defines the same piccolo part as in 13.2.1, but no 8 is drawn over the clef.

Enharmonic resolutions: it can occur that a score in a given concert key can result in parts which would be outside the permissible key range of 7 flats to 7 sharps (for example a score in concert B major would put Eb instruments in G# major). In this case software printing the music should make an automatic enharmonic adjustment (in this case to Ab major). For music encoded at written pitch, this will usually be explicit in the ABC encooding:

V:flute clef=treble
V:sax clef=treble instrument=Eb
K:B
[V:flute]      B C D E |
[V:sax] [K:Ab] A B C D | 

but later other encodings will be defined, where an automatic enharmonic transposition may be required.

13.3.3 instrument, +8, -8 combinations

Only one of instrument, +8, -8 should be used in any voice field. If more are present their effects add. An 8 should only be drawn by a clef if the net instrument transposition is exactly one octave.

13.3.4 Conflict resolution

Voices which share a staff must have the same instrument, +8, -8 value. (Exceptionally they may be a perfect octave apart.) Any conflicts must be resolved as in the case of clefs (Sect 4.6).

13.3.5 The ''abc'' parameter

The abc parameter enables abc-encoding to be at a pitch other than the instrument's written pitch.

13.3.5.1 ''abc''=concert

abc=concert is a special value which specifies that the following abc-notes are encoded at concert pitch - ie as they sound. The "abc=" is optional in this case: just the word 'concert' will do.

Example:

K:C
[V:flute clef=treble] CDEF
[V:clarinet clef=treble instrument=Bb concert] CDEF

defines a flute and clarinet sounding CDEF in unison. If a writen pitch score is desired however (see below), the clarinet part will be printed in D a tone higher.

Enharmonic resolution: if a written pitch score is printed from a concert pitch abc-encoding, then any voices which would end up outside the key range 7 flats to 7 sharps must be transposed enharmonically. To force an enharmonic transposition where it is possible but not necessary, replace the instrument with an enharmonic equivalent - eg instrument=A# instead of instrument=Bb. (It would be polite to include a comment if you do this, as it is non-standard.)

13.3.5.2 abc=written

abc=written is a special value defining written pitch encoding (which is the default). If present, the "abc=" is optional in this case: just the word 'written' will do.

13.3.5.3 abc=<interval>

abc=<interval> redefines the meaning of abc, in the same way as octave does, but now it can be through any interval. For example abc=-12 redefines the abc-notation convention so that c representes middle C, just as does octave=-1. Sprecifically in this example c represents middle C at the written pitch of the instrument. But now other intervals are available: eg abc=-2 redefines the abc-note D to represent middle-C at the written pitch of the instrument. In general the abc-encoded note must be moved through <interval> to obtain the note at the written pitch of the instrument.

Examples:

abc=0 the default (synonym abc=written) signifies that the following abc is at the written pitch of the instrument defined in the voice.

abc=2 implies that the instrument's written pitch notes are two semitones (a major 2nd) higher than the abc encoding.

K:C
[V:xxx clef=treble abc=2][K:C]C D E F  

means that the encoded notes will be printed on the music as D E F# G in the key of D at the instrument's written pitch. Furthermore, in the absence of an instrument statement, the instrument is non-transposing and the notes will also sound as DEF#G.

K:C
[V:xxx clef=bass abc=-24]  c d e f

means that the notes c d e f will be written and sound as C, D, E, F, and the d will be drawn on (and sound as) the middle line of the bass clef. This example is identical to

K:C
[V:xxx clef=bass octave=-2]  c d e f

emphasising the close relationship beteen octave and abc.

13.3.5.4 octave and abc together

octave and abc should not both be used in the same V: field. If they are, their effects add.

13.3.5.5 abc and transposing instruments

It is important that abc distances the abc-code from the instrument's written pitch. It never affects the instrument's transposition.

A special case is when the abc interval is exactly opposite to the instrument interval. Example:

K:C
[V:clt clef=treble instrument=Bb abc=2][K:C]  C D E F

or equivalently

K:C
[V:clt clef=treble instrument=-2 abc=2][K:C] C D E F

In this case, the abc=2 parameter implies that the written pitch abc would be a tone higher than the abc-encoding:

[K:D] D E F G

and the instrument parameter implies that the concert pitch abc would be

[K:C] C D E F

Thus in this case the abc encoding is at concert pitch.

Quite generally (assuming 8,-8,octave are absent)

instrument=<interval_1>  abc=<interval_2>

in the case where interval_2 = -interval_1 is identical to, and defines

instrument=<interval_1>  abc=concert

13.3.5.4 Why have the keyword ''abc'' ?

It has to be said that abc looks (a) pretty horrible and (b) usually unnecessary! However if you copy from a transposing instrument's written pitch abc, and paste into that of another instrument, then adjusting the instrument and abc parameters of the inserted section is the only way to make it print and sound in the recipient voice at the correct pitch. It might be wise to avoid doing this if possible, and then abc will never be needed.

13.4 Showing scores at concert pitch

If no indication to the contrary is present, software will print scores or parts showing instruments' notes at written pitch. Play-back will be at concert pitch.

Sometimes, however, it is desirable, to present a concert pitch score (in which all parts are shown either at concert pitch or one or two octaves from it). This section deals with that situation.

13.4.1 Instruction to produce a score at concert pitch (and other pitches)

The instructions

I:concert_pitch [8]
I:written_pitch
I:transpose_score <interval>

may be placed in the file header or any tune header. They tell software what overall score type is needed.

By default all scores will be printed at written pitch.

I:concert_pitch [8]

is an instruction to print at concert pitch.

If no further information (see below) is included about how such a score is to be constructed, software should

  • reproduce all parts in C (those with instrument set to zero or a multiple of 12) exactly as they are at written pitch, complete with clefs.
  • produce all other parts choosing bass or treble clef as it finds most convenient for minimising leger lines. Parts on treble and bass clef may be shown an octave lower or higher (respectively) than sounding, if that reduces the occurence of leger lines. [Examples: a Db piccolo part may be shown an octave lower than sounding; an Eb contrabass saxophone part may be shown on bass clef, an octave higher than sounding.]

If the optional parameter 8 is specified, then any part shown an octave from concert pitch will be marked with an 8 by the clef (and correspondingly 15 or 22 for parts two or three octaves from sounding pitch).

I:written_pitch

If I:concert_pitch it is present in the file header, it may be rescinded in an individual tune by I:written_pitch.

I:transpose_score <interval>

is an instruction to print the score at a different pitch from that indicated by the voices.

If I:concert_pitch is in force, the score will be printed as a concert pitch score, but transposed by <interval>.

If I:written_pitch is in force, the score will be printed as a written pitch score, but transposed by <interval>.

13.4.2 Control of clefs on a concert pitch score

All of the instructions in this section are ignored when a written pitch score is being constructed. They apply only to concert pitch scores, generated by the presence of I:concert_pitch.

It is standard practice to leave parts in C on a concert pitch score exactly as they are on a normal, written pitch score. But further control of the production of concert pitch scores, especially with other transposing instruments, is available in the form of the following instructions.

I:score_concert ….

assigns parts to staves for a concert score, with exactly the same syntax as I:score. This enables a compressed concert score to be produced. If this instruction is absent then I:score defines the assignment.

I:clef_concert <clef-name>[+8|-8]

defines clefs and clef changes on the concert score. These must be synchronised in voices on the same stave (according to I:score_concert or if that is absent according to I:score ). Conflicts will be resolved as described in Sect 4.6, but using I:score_concert (if present) to determine priorities.

13.4.3 A useful trick for vocal quartets

A score for vocal quartet can be defined including

I:score [soprano alto tenor bass]
I:score_concert [(soprano alto) (tenor bass)]
[V:tenor clef=treble-8][I:clef_concert bass]…

and an open or closed score will be produced according to the absence of presence of I:concert_pitch.

13.5 Illustrations

This section presents some illustrations of transposing instruments

13.5.1 Sax quartet in concert C

X:1
T:Sax Quartet in Concert C
M:4/4
L:1/4
I:score [ sop | alto | tenor | bari ] 
V:sop   clef=treble instrument=Bb
V:alto  clef=treble instrument=Eb
V:tenor clef=treble instrument=Bb-
V:bari  clef=treble instrument=Eb-
K:C
[V:sop]  [K:D]D E F G |...
[V:alto] [K:A]A B c d |...
[V:tenor][K:D]D E F G |...
[V:bari] [K:A]A B c d |...

In each voice the abc is encoded at written pitch. The alto sounds in unison with the soprano, with the tenor and bari each sounding an octave lower.

X:1
T:Sax Quartet in Concert C
M:4/4
L:1/4
I:score [ sop | alto | tenor | bari ] 
I:score_concert [ (sop alto ) | (tenor bari) ] 
% I:concert_pitch
V:sop   clef=treble instrument=Bb  concert
V:alto  clef=treble instrument=Eb  concert
V:tenor clef=treble instrument=Bb- concert
V:bari  clef=treble instrument=Eb- concert
K:C
[V:sop]  [I:clef_concert treble]
[V:alto] [I:clef_concert treble]
[V:tenor][I:clef_concert bass]
[V:bari] {I:clef_concert bass]
[V:sop]   C  D  E  F |...
[V:alto]  C  D  E  F |...
[V:tenor] C, D, E, F, |...
[V:bari]  C, D, E, F, |...

is another encoding of the same 'piece' this time with all voices encoded at concert pitch.

The I:score_concert line and the I:clef_concert lines do nothing as it stands, and the same written-pitch score will be printed. But if the I:concert_pitch line is uncommented (or an equivalent direction issued n a command line) the I:score_concert line and I:clef_concert will kick in to print a reduced concert pitch score.

More illustrations to go here! Need to be able to include pictures of scores!

13.6 Rhythm voice

A rhythm voice is one which contains no notes at all, but is designed to show chord names. By this means a part, eg for rhythm guitar or banjo, can be put in a separate voice. The voice may contain hidden rests to position the changes within the music. Uniquely, a rhythm voice need not have the same transposition as voices with which it shares a staff. Example:

...
T:clarinet and guitar
...
V:gtr clef=treble
V:clt clef=treble instrument=-2
I:score (clt gtr)
K:C
[V:gtr] "C"x2 "C"x2 "C"x2 "C"x2 |"G7"x2 "G9"x2 "Gmaj7"x2 "Gsus4"x2 |
[V:clt][K:D] D2 E2 F2 G2 | D2 E2 F2 G2 |

In this case the chord symbols are drawn above the single staff. [The clarinet voice is mentioned first in the I:score as this makes it the controlling voice from which the key signature on the staff is obtained; the chords are always drawn above the staff, and the music lines are ordered in this example to reflect this.]

A rhythm voice may contain an instrument parameter. For example instrument=2 would indicate a capo at the 2nd fret. The chord names would be printed as supplied, but play-back would sound a tone higher.

13.7 Voice parameter macros

The parameters in a V: field may be represented by a macro in the header. The macro excludes the voice id, but must otherwise define all required voice parameters, and not just some of them. It is recommended that the macro name begin with # to make it clearly distinguishable.

Syntax:

m:#mymacro [clef=]<clef name>[<number>][+8 | -8][instrument=<interval>]  [stafflines=<number>] [octave=<number>] [abc=<interval>]

and then

V:<voice-id> #mymacro

In this way a transposing instrument can be refered to by name without repeating its transposition characteristics.

Having a macro in a V: statement as well as explicit voice parameters is an error. In this case software should accept only the macro and reject all explicit voice parameters.

Example 1

m:#clarinet clef=treble instrument=Bb
m:#bass-clarinet clef=treble instrument=Bb-

V:clt1 #clarinet 
V:clt2 #clarinet 
V:bclt #bass-clarinet 

Example 2

% For recorders:
% Note the the # in the macro names distinguishes them from clef names!
m:#descant clef=treble+8 
m:#treble  clef=treble
m:#tenor   clef=treble
m:#bass    clef=bass+8 octave=-1

V:de1  #descant 
V:de2  #descant 
V:tr1  #treble 
V:tr2  #treble 
V:te1  #tenor 
V:te2  #tenor 
V:ba1  #bass 
V:ba2  #bass 

For those who don't think of instrument transpositions in the standard orchestral way, and the keyword instrument therefore feels a bit strange, then this macro facility allows you to define #my-instrument (and variants on it) only once, and thereafter your V: statements can use any mnemonic #my-instrument you like for the instrument transposition.

13.8 Notes on the design philosophy

The keywords +8/-8 instrument octave pitch (and not others) are defined as they are, for very specific reasons. Importantly:

  • apart from the new abc, all are from abc2.1 (but with instrument replacing the transpose of abc2.1);
  • all requirements of transposed parts are met by combining them;
  • different combinations do not readily yield nonsensical abc (though use of abc can render it non-transparent, and this keyword should be employed only if absolutely necessary).

In general there are three pitches of interest:

  • The pitch at which the abc is represented (abc) ;
  • The pitch at which the music is written (the dots) (specifically at written pitch);
  • The pitch at which the music sounds (sound) .

and therefore three relationships connecting them, of which any two imply the other.

  • abc → dots is controlled by the octave or abc parameters, which leave the dots→sound relationship unchanged.
  • dots → sound is controlled by the +8,-8 or instrument parameters, whch leave the abc→dots relationship unchanged.

The abc→sound relationship is implied in both cases, and importantly there are no parameters which define this explicitly. Why not?

  • The relationship abc→dots is the essence of abc; as a notation format it is different from MIDI which encodes only sounding pitches.
  • The relationship dots→sound is a fundamental property of the score on which you're working: it defines the instrumentation (albeit incompletely).

If you know which written notes the abc represents, and you know your instrumentation, then you know where they sound. Suppose you wanted to change the abc→sound relationship directly. Then at least one of the other two relationships must change: if it keeps the instrumentation, then it redefines the meaning of the abc in terms of written notes; if it keeps the meaning of the abc notes, then it changes the instrumentation (and instrument transpositions will no longer be gven by the instrument parameter). Both of these must be considered 'side effects' of such an operation, and such are undesirable. Therefore the abc→dots and dots→sound relationships are considered as the two fundamentally important ones and abc→sound is implied.

Because of the addition properties of intervals, this does not mean it is difficult to write play-back software. The interval from the encoded abc to the playback sound is just the sum of the intervals given by instrument (or +8, -8) and abc (or octave).

Proposer's comments

My name is David Webber. I am the author of the music software 'Mozart' and am currently working hard to make it import and export abc - sticking rigorously, at the moment, to the published abc2.1 standard. As I do this, I am gradually acquiring (perforce) a deepening understanding of abc and what it can and can't do, so I thought it would be worthwhile to contribute here.

This proposal contrasts in some ways with that of Alex Scheutzow. (But in some areas I am stealing his ideas wholesale: I hope he accepts the latter as 'Schmeichelei' - nothing to do with goalkeepers!).

I play saxophones, clarinets, ukulele, and recorders (in that order of frequency) and so I am passionate about the inclusion of 'transposing instruments' in abc.

My objectives here:

1) Conciseness, legacy, and sustainability. In fulfilling the objectives below I am trying to do it by introducing the minimum number of new keywords and with minimal changes to the old ones.

2) abc2.1 knows about transposition intervals only as a number of semitones. If abc is to be able to handle transposing instruments better, it needs to be able to handle transpositions better. This proposal details a method of defining detailed transpositions in such a way that anything other than the semitone count will never be needed for transpositions through major, minor and perfect intervals.

The result is a very simple extension of the transpose= syntax, (which will almost never be needed) by defining intervals as <semitones>:<steps>. [MusicXML fans will see that it owes much to the definitions of transpositions in that format.] Intervals specified by <semitones> only are defined preceisely. The note-name synonym (where Bb = -2 = -2:-1) is introduced to enable instrument transpositions to be coded in natural language.

3) abc2.1 only allows you to write abc code at the instrument's written pitch. This means you can't copy and paste a flute part, and make it a Bb clarinet part. Being able to do that would be useful. It also means you can't type in your abc at concert pitch for transposing instruments and see the harmonies in a nice simple fashion. It would be nice to be able to do that too.

Actually you can do it in abc2.1 for the special case of octave transposing instruments - eg with a +8 and then octave=-1.

The objectives here are achieved by the introduction of a single new keyword 'abc' which is precisely analogous to the 'octave' keyword but allows an 'abc pitch renormalisation' through any interval, not just a number of octaves.

The existence of abc allows, as a special case, abc for transposing instruments to be encoded at concert pitch. The special value abc=concert is introduced to make this more intuitive. People have discussed 'high level' and 'low level' keywords in the past. This proposal makes no such distinction apart from in abc=concert where the actual value of the abc depends on the accompanying instrument transposition. (In particular interval definitions are alternative syntaxes with precisely defined equivalence; thy can be used interchangeably according to taste.)

4)abc2.1 can only output 'written pitch' scores. A method is needed to write concert pitch scores. My instruction to write a concert pitch score "I:concert_pitch" is identical to Alex's "I:concert_score" but renamed for a reason. I have also taken on board Alex's "I:clef_concert" with the same meaning (having grilled him mercilessly about it), and I wanted to use the …_concert keyword suffix in the same way for I:score_concert which allows a different assignment of voices to staves when producing a concert pitch score. I renamed I:concert_score to try to avoid confusion.

Importantly, everything in (2) and (3) here is aimed at producing the dots at the instrument's written pitch (even though the abc-code can be at other pitches). (4) is extra stuff which is unneeded (unused) in that case but allows production of concert pitch dots. I think this was Alex's motivation too.

abc/standard/v2.1/proposals/clefs_voice_parameters/dave/v4.txt · Last modified: 2012/08/26 10:29 by dave
 
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