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

# Differences

This shows you the differences between two versions of the page.

 abc:standard:v2.1:proposals:clefs_voice_parameters:dave:v1 [2012/08/15 16:53]dave abc:standard:v2.1:proposals:clefs_voice_parameters:dave:v1 [2012/08/17 11:41]dave Both sides previous revision Previous revision 2012/08/17 11:48 dave [4.6.6 Design philosophy] 2012/08/17 11:41 dave 2012/08/17 10:42 dave [4.6.4 Alignment of clefs and transpositions] 2012/08/15 16:53 dave 2012/08/15 14:02 dave 2012/08/15 09:20 cwalshaw created Next revision Previous revision 2012/08/17 11:48 dave [4.6.6 Design philosophy] 2012/08/17 11:41 dave 2012/08/17 10:42 dave [4.6.4 Alignment of clefs and transpositions] 2012/08/15 16:53 dave 2012/08/15 14:02 dave 2012/08/15 09:20 cwalshaw created Last revision Both sides next revision Line 23: Line 23: ^ abc syntax ^ Interval ​      ^ Example ​  ^ ^ abc syntax ^ Interval ​      ^ Example ​  ^ - | 1:1        | minor 2nd      | C to Db   | + |    1:1     ​| minor 2nd      | C to Db   | - | 2:1        | major 2nd      | C to D    | + |    2:1     ​| major 2nd      | C to D    | - | 2:2        | diminished 3rd | C to Ebb  | + |    2:2     ​| diminished 3rd | C to Ebb  | - | 7:4        | perfect 5th    | C to G    | + |    7:4     ​| perfect 5th    | C to G    | + |   ​-2:​-1 ​   | major 2nd      | C to Bb   | Line 32: Line 34: ^ semitones ^ means ^ Interval ​       ^ Example ​ ^ ^ semitones ^ means ^ Interval ​       ^ Example ​ ^ - |  0        |   0:0 | perfect unison | C to C  | + |     ​0     ​|   0:0 | perfect unison | C to C  | - |  1        |   1:1 | minor 2nd      | C to Db | + |     ​1     ​|   1:1 | minor 2nd      | C to Db | - |  2        |   2:1 | major 2nd      | C to D  | + |     ​2     ​|   2:1 | major 2nd      | C to D  | - |  3        |   3:2 | minor 3rd      | C to Eb | + |     ​3     ​|   3:2 | minor 3rd      | C to Eb | - |  4        |   4:2 | major 3rd      | C to E  | + |     ​4     ​|   4:2 | major 3rd      | C to E  | - |  5        |   5:3 | perfect 4th    | C to F  | + |     ​5     ​|   5:3 | perfect 4th    | C to F  | - |  6        |   6:4 | diminished 5th | C to Gb | + |     ​6     ​|   6:4 | diminished 5th | C to Gb | - |  7        |   7:4 | perfect 5th    | C to G  | + |     ​7     ​|   7:4 | perfect 5th    | C to G  | - |  8        |   8:5 | minor 6th      | C to Ab | + |     ​8     ​|   8:5 | minor 6th      | C to Ab | - |  9        |   9:5 | major 6th      | C to A  | + |     ​9     ​|   9:5 | major 6th      | C to A  | - | 10        |  10:6 | minor 7th      | C to Bb | + |    10     ​|  10:6 | minor 7th      | C to Bb | - | 11        |  11:6 | major 7th      | C to B  | + |    11     ​|  11:6 | major 7th      | C to B  | + + Defaults for compound and downward intervals are as obtained by adding perfect octaves. Note that all perfect, major, and minor intervals can be defined without explicitly defining the number of steps, and so the need to specify a number of steps will be infrequent. ​ Furthermore,​ for playback purposes only the number of semitones may be needed. Note that all perfect, major, and minor intervals can be defined without explicitly defining the number of steps, and so the need to specify a number of steps will be infrequent. ​ Furthermore,​ for playback purposes only the number of semitones may be needed. + + Note that //​addition//​ and //​subtraction//​ of intervals is straightforward:​ the semitones and steps components are just added or subtracted individually. ===== 4.6.2 Transposing instruments ===== ===== 4.6.2 Transposing instruments ===== Line 147: Line 153: ===== 4.6.4 Alignment of clefs and transpositions ===== ===== 4.6.4 Alignment of clefs and transpositions ===== - If there are clef changes ​at one or more points ​within a voice, ​then it is the abc-author'​s responsibility to ensure they coincide in all voices which share a staff. ​  The same is true of changes of octave or values of '​transpose'​ (which ​would imply an instruction ​to change instrument in the completed ​music). + ==== 4.6.4.1 Key signature alignment ==== + + The key signature ​at the start of the piece is given by the ''​K:''​ field which terminates the header. ​  ​Changes of key withing the piece are given bt in-line ''​K:''​ fields ​within ​the voices. ​ These must align in all voices. + + Transposing instruments must include ​a ''​K:''​ field at the start of the voice, ​indicating ​the key which applies to the following ​abc-code.  Example: + + <​code>​ + ... + K:C + V:flute clef=treble + V:clarinet clef=treble transpose=-2 + [V:flute] C D E F | + [V:​clarinet][K:​D] D E F G | + ​ + + The clarinet reads the music in D, but the parts sound in unison in C. + + ==== 4.6.4.2 Clef alignment ==== + + Clefs, and clef changes must be the same, and coincide, in all voices which share a staff. ​  The same is true of changes of ''​octave'' ​or values of ''​transpose'' (with one very specific exception given below). + + + ==== 4.6.4.2 Transposition alignment and instrument doubling ==== + + Values of ''​transpose''​ must be the same at the start of every voice which shares a staff, and changes in the value must be the same, and coincide, in all voices which share a staff. ​ There is one very specific exception ​to this rule - a rhythm voice - which is given below. + + A change ​of transposition in the middle of a piece is occasioned by a change of instrument.  The new key signature must also be supplied. ​ For example a change from Bb clarinet to Eb Alto sax would be given by + + <​code>​[V:​ClarinetAndAltoSax clef=treble transpose=-2][K:​D]DEFG|[I:​text to Alto][K:A transpose=-9]A B C D |​ + + In this case the change of key ''​K:​A''​ does not corespond with a change of key of the overall piece, just a change of transposition ​in this voice. ​ Therefore no key change need be present in parallel voices on other staves. + + ==== 4.6.4.3 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: + + <​code>​ + ... + T:clarinet and guitar + V:gtr clef=treble + V:clt clef=treble transpose=-2 + I:score (gtr clt) + 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. + + A rhythm voice may contain a ''​transpose''​. ​ For example ''​transpose=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. + ===== 4.6.5  Deprecated syntax ===== ===== 4.6.5  Deprecated syntax ===== Line 167: Line 223: And when it comes to the use of transposing instruments,​ and indeed to the new ''​shift''​ keyword, the existence of (now unneeded) ''​middle''​ just makes things impossibly difficult. ​ Therefore it is now deprecated. And when it comes to the use of transposing instruments,​ and indeed to the new ''​shift''​ keyword, the existence of (now unneeded) ''​middle''​ just makes things impossibly difficult. ​ Therefore it is now deprecated. + ===== 4.6.6 Design philosophy ===== + + The keywords ''​+8/​-8 transpose octave shift''​ (and not others) are defined as they are, for very specific reasons. ​ Importantly:​ + + * apart from the new ''​shift'',​ all are from abc2.1; + * all requirements of transposed parts are met by combining them; + * different combinations do not readily yield nonsensical abc. + + 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)** ; + * 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''​ and ''​shift''​ parameters, which leave the //​dots->​sound//​ relationship unchanged. + * **dots -> sound** is controlled by the ''​+8,​-8''​ and ''​transpose''​ 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 transpose 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 written abc to the playback sound is just //​transpose-sound//​ if those two paranmeters are used, (with ''​+/​-8''​ and/or ''​octave''​ adding octaves appropriately). + + + ====== 4.7 Showing scores at concert pitch ====== ====== 4.7 Showing scores at concert pitch ====== Line 237: Line 323: 4)abc2.1 can only represent '​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. 4)abc2.1 can only represent '​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. - - ===== Philosophy ===== 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. 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. - - There are three pitches to consider - - * the abc-code - * the play-back - * the dots - - and three reationships - - * abc-dots - * abc-sound - * dots-sound - - only two of which are independent. - - Here the **primary** relationships are - - * abc-dots (keywords: ''​octave'',​ ''​shift''​) - * dots-sound (keywords: ''​+8,​ -8, transpose''​) - - The latter //has// to be one of the primary relationships:​ it defines the instrument you're writing for, and you don't want that to change accidentally,​ or you'll end up giving Eb parts to players of Bb instruments! - - - - - - - - - - - -