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

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

 

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
abc:standard:v2.1:proposals:clefs_voice_parameters:dave:v4 [2012/08/25 23:41]
dave [My objectives here:]
abc:standard:v2.1:proposals:clefs_voice_parameters:dave:v4 [2012/08/26 15:29]
dave
Line 4: Line 4:
  
 **Changes from v3:** **Changes from v3:**
-transpose has been changed to instrument to make it compare with Chris'​s proposal +  * 'transpose' ​has been changed to 'instrument' ​to make it compare with Chris'​s proposal 
-shift has been changed to pitch to make it less like a verb!+  * 'shift' ​has been changed to '​abc' ​to make it less like a verb, and to try to make its purpose more intuitive (which is difficut) It represente the pitch of the abc-encoding. 
 +  * voice parameter macros have been introduced to simplify defining duplicate instruments on scores, and possibly as a way to bring in those with other ideas of modelling instrument transpositions. 
 +  * Clefs and transpositions have been separated, by popular request, into different sections.
  
 ---- ----
Line 18: Line 20:
 Clef and transposition information may be provided in the K: key and V: voice fields. The general syntax is: Clef and transposition information may be provided in the K: key and V: voice fields. The general syntax is:
  
-<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [pitch=<​interval>​]</​code>​+<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [abc=<​interval>​]</​code>​
  
 (where <…> denotes a value, […] denotes an optional parameter, and | separates alternative values) (where <…> denotes a value, […] denotes an optional parameter, and | separates alternative values)
Line 37: Line 39:
   * ''​[stafflines=<​number>​]''​ - defines the number of lines in the staff. The default is 5.   * ''​[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.   * ''​[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.
-  * ''​[pitch=<​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 pitch adjustment. ​  Two special values are also defined: ''​pitch=concert''​ and ''​pitch=written'',​ and with either of these the //'pitch='// can be omitted. ​ See also Sect. 13 (Transposition)+  * ''​[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 ===== ===== 4.6.2 Clef examples =====
Line 48: Line 50:
 </​code>​ </​code>​
  
-More examples are given in Sect 13 ('​Transposition'​) which explains instrument and pitch, and gives more details of +8, -8. +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? ===== ===== 4.6.3 Voice or Key? =====
Line 89: Line 91:
 Some values for the keyword must be nonsense – eg ''​clef=treble middle=c''​. 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 ''​pitch''​ 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 ''​abc''​ keyword, the existence of (now unneeded) ''​middle''​ just makes things impossibly difficult. ​ Therefore it is now deprecated.
  
 **transpose** **transpose**
Line 99: Line 101:
 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: 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:
  
-<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [pitch=<​interval>​]</​code>​+<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [abc=<​interval>​]</​code>​
  
-defined two parameters (''​instrument'',''​pitch''​) whose values are //​intervals//​. ​  These can be encoded by one of the foollowing ​methods:+defined two parameters (''​instrument'',''​abc''​) whose values are //​intervals//​. ​  These can be encoded by one of the following ​methods:
  
   - <​semitones>​   - <​semitones>​
Line 148: Line 150:
 //Include Alan's table here!// //Include Alan's table here!//
  
-**Example:​** ​  6,3  6,4+**Example:​** ​  6:3  ​and 6:4
 These define an augmented 4th (C to F#) and a diminished 5th (C to G) respectively. These define an augmented 4th (C to F#) and a diminished 5th (C to G) respectively.
  
Line 193: Line 195:
 The clef/​transposition parameters of the V: and K: fields are The clef/​transposition parameters of the V: and K: fields are
  
-<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [pitch=<​interval>​]</​code>​+<​code>​[clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [abc=<​interval>​]</​code>​
  
 clef, stafflines, and octave, are defined in Sect 4.6 clef, stafflines, and octave, are defined in Sect 4.6
  
-Now that intervals are defined, ''​+8'',''​-8'',​ ''​instrument'',​ ''​pitch''​ can be discussed.+Now that intervals are defined, ''​+8'',''​-8'',​ ''​instrument'',​ ''​abc''​ can be discussed.
  
-===== 13.3.1 ​Prameters ​+8 and -8 =====+===== 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 than its written pitch music. ​ They define also that an 8 is drawn above/below the clef respectively. ​+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)** **Example: ​ (written pitch encoding)**
Line 260: Line 262:
  
  
-===== 13.3.5 The pitch parameter ===== +===== 13.3.5 The ''​abc'' ​parameter ===== 
-The pitch parameter enables abc-encoding to be at a pitch other than the instrument'​s written pitch. +The ''​abc'' ​parameter enables abc-encoding to be at a pitch other than the instrument'​s written pitch.
-==== 13.3.5.1 pitch=concert ====+
  
-''​**pitch=concert**''​ is a special value which specifies that the following abc-notes are encoded at //concert pitch// - ie as they sound. ​ The "pitch=" is optional in this case: just the word '​concert'​ will do.+==== 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:​** **Example:​**
Line 277: Line 280:
  
 **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.) **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 ​pitch=written ====+==== 13.3.5.2 ​abc=written ====
  
-''​**pitch=written**''​ is a special value defining written pitch encoding (which is the default). ​ If present, the "pitch=" is optional in this case: just the word '​written'​ will do.+''​**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 ​pitch=<​interval>​ ====+==== 13.3.5.3 ​abc=<​interval>​ ====
  
-''​**pitch=<​interval>​**''​ redefines the meaning of abc, in the same way as ''​octave''​ does, but now it can be through any interval. ​  For example ''​pitch=-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 pitch=-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//​. ​+''​**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:​** **Examples:​**
  
-''​pitch=0''​ the default (synonym ''​pitch=written''​) signifies that the following abc is at the written pitch of the instrument defined in the voice. ​+''​abc=0''​ the default (synonym ''​abc=written''​) signifies that the following abc is at the written pitch of the instrument defined in the voice. ​
  
-''​pitch=2''​ implies that the instrument'​s written pitch notes are two semitones (a major 2nd) higher than the abc encoding.+''​abc=2''​ implies that the instrument'​s written pitch notes are two semitones (a major 2nd) higher than the abc encoding.
  
  
 <​code>​ <​code>​
 K:C K:C
-[V:xxx clef=treble ​pitch=2][K:C]C D E F  ​+[V:xxx clef=treble ​abc=2][K:C]C D E F  ​
 </​code>​ </​code>​
  
Line 301: Line 304:
 <​code>​ <​code>​
 K:C K:C
-[V:xxx clef=bass ​pitch=-24]  c d e f+[V:xxx clef=bass ​abc=-24]  c d e f
 </​code>​ </​code>​
  
Line 311: Line 314:
 </​code>​ </​code>​
  
-emphasising the close relationship beteen ''​octave''​ and ''​pitch''​.+emphasising the close relationship beteen ''​octave''​ and ''​abc''​.
  
-==== 13.3.5.4 octave and pitch together ====+==== 13.3.5.4 octave and abc together ====
  
-''​octave''​ and ''​pitch''​ should not both be used in teb same V: field. ​ If they are, their effects add.+''​octave''​ and ''​abc''​ should not both be used in the same V: field. ​ If they are, their effects add.
  
-==== 13.3.5.5 ​pitch and transposing instruments ====+==== 13.3.5.5 ​abc and transposing instruments ====
  
-It is important that ''​pitch''​ distances the abc-code from the instrument'​s ''​written''​ pitch. ​ It never affects the instruments ​transposition.+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 ''​pitch''​ interval is exactly opposite to the ''​instrument''​ interval. ​  ​Example:​+A special case is when the ''​abc''​ interval is exactly opposite to the ''​instrument''​ interval. ​  ​Example:​
  
 <​code>​ <​code>​
 K:C K:C
-[V:clt clef=treble instrument=Bb ​pitch=2][K:​C] ​ C D E F+[V:clt clef=treble instrument=Bb ​abc=2][K:​C] ​ C D E F
 </​code>​ </​code>​
  
Line 332: Line 335:
 <​code>​ <​code>​
 K:C K:C
-[V:clt clef=treble instrument=-2 ​pitch=2][K:C] C D E F+[V:clt clef=treble instrument=-2 ​abc=2][K:C] C D E F
 </​code>​ </​code>​
  
-In this case, the ''​pitch=2''​ parameter implies that the written pitch abc would be a tone higher than the abc-encoding:​+In this case, the ''​abc=2''​ parameter implies that the written pitch abc would be a tone higher than the abc-encoding:​
  
 <​code>​[K:​D] D E F G</​code>​ <​code>​[K:​D] D E F G</​code>​
Line 343: Line 346:
 <​code>​[K:​C] C D E F</​code>​ <​code>​[K:​C] C D E F</​code>​
  
-Thus in this case the abc encoduing ​is at concert pitch.+Thus in this case the abc encoding ​is at concert pitch.
  
 Quite generally (assuming ''​8,​-8,​octave''​ are absent) ​ Quite generally (assuming ''​8,​-8,​octave''​ are absent) ​
  
-<​code>​instrument=<​interval_1>  ​pitch=<​interval_2></​code>​+<​code>​instrument=<​interval_1>  ​abc=<​interval_2></​code>​
  
 in the case where ''​interval_2 = -interval_1''​ is identical to, and defines in the case where ''​interval_2 = -interval_1''​ is identical to, and defines
  
-<​code>​instrument=<​interval_1>  ​pitch=concert</​code>​+<​code>​instrument=<​interval_1>  ​abc=concert</​code>​
  
  
-==== 13.3.5.4 Why pitch? ====+==== 13.3.5.4 Why have the keyword ''​abc'' ​? ====
  
-It has to be said that ''​pitch''​ looks pretty horrible! ​  ​However if you copy from a transposing instrument'​s written pitch abc, and paste into that of another instrument, then adjusting the instrument //​and// ​pitch 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 ''​pitch''​ will never be needed.+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 ====+====== 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. 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.
Line 364: Line 367:
 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. 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 concert pitch score =====+===== 13.4.1 Instruction to produce a score at concert pitch (and other pitches) ​=====
  
-The instruction+The instructions
  
-''​I:​concert_pitch [8]''​+<​code>​ 
 +I:​concert_pitch [8] 
 +I:​written_pitch 
 +I:​transpose_score <​interval>​ 
 +</​code>​
  
-in the header ​tells software ​that a concert pitch score is wanted  The parameter ​''​8''​ is optional.+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 If no further information (see below) is included about how such a score is to be constructed,​ software should
Line 376: Line 389:
   * 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.   * 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.]   * 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). 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 ===== ===== 13.4.2 Control of clefs on a concert pitch score =====
Line 405: Line 431:
 and an open or closed score will be produced according to the absence of presence of ''​I:​concert_pitch''​. and an open or closed score will be produced according to the absence of presence of ''​I:​concert_pitch''​.
  
-====== 13.5 Showing scores at other pitches ​====== +====== 13.5 Illustrations ​======
- +
-The instruction +
- +
-<​code>​I:​transpose_score <​interval></​code>​ +
- +
-instructs software to present the score in another key. +
- +
-It may be used with or without ''​I:​concert_pitch''​ with result that the score is transpormed from written pitch or from concert pitch as desired. ​ (For example transposing a concert score up a tone will produce a 'Bb score' sometimes used for brass bands, where the Bb instrument parts are shown at their written pitch.) +
- +
-//​**Author'​s note on syntax:** this capability exists in some software already. ​ Can we make the syntax consistent without causing confusion over the meaning of keywords like '​transpoose'???​ +
-// +
- +
- +
- +
-==== 13.6 Illustrations ​====+
  
 This section presents some illustrations of transposing instruments This section presents some illustrations of transposing instruments
  
-==== 13.6.1 Sax quartet in concert C ====+===== 13.5.1 Sax quartet in concert C =====
  
 <​code>​ <​code>​
Line 472: Line 483:
 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. 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.Rhythm voice ====+====== 13.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: 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:
Line 493: Line 506:
 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. ​ 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 ======
  
-===== 13.8 Notes on the design philosophy =====+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: 
 + 
 +<​code>​m:#​mymacro [clef=]<​clef name>​[<​number>​][+8 | -8][instrument=<​interval>​] ​ [stafflines=<​number>​] [octave=<​number>​] [abc=<​interval>​]</​code>​ 
 + 
 +and then  
 + 
 +<​code>​V:<​voice-id>​ #​mymacro</​code>​ 
 + 
 +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** 
 + 
 +<​code>​ 
 +m:#clarinet clef=treble instrument=Bb 
 +m:#​bass-clarinet clef=treble instrument=Bb- 
 + 
 +V:clt1 #clarinet  
 +V:clt2 #clarinet  
 +V:bclt #​bass-clarinet  
 +</​code>​ 
 + 
 +**Example 2** 
 + 
 +<​code>​ 
 +% 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  
 +</​code>​ 
 + 
 +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:​ The keywords ''​+8/​-8 instrument octave pitch''​ (and not others) are defined as they are, for very specific reasons. ​ Importantly:​
  
-  * apart from the new ''​pitch'',​ all are from abc2.1 (but with ''​instrument''​ replacing the ''​transpose''​ of abc2.1);+  * 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;   * all requirements of transposed parts are met by combining them;
-  * different combinations do not readily yield nonsensical abc (though use of ''​pitch''​ can render it non-transparent,​ and this keyword should be employed only if absolutely necessary).+  * 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: In general there are three pitches of interest:
Line 510: Line 571:
 and therefore three relationships connecting them, of which any two imply the other. and therefore three relationships connecting them, of which any two imply the other.
  
-  * **abc -> dots** is controlled by the ''​octave''​ or ''​pitch''​ parameters, which leave the //​dots->​sound//​ relationship unchanged.+  * **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.   * **dots -> sound** is controlled by the ''​+8,​-8''​ or ''​instrument''​ parameters, whch leave the //​abc->​dots//​ relationship unchanged.
    
Line 520: Line 581:
 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. ​   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  //pitch// (or //​octave//​).+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//​).
  
  
Line 528: Line 589:
  
  
-====== Proposer'​s comments ======+======= 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. 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.
Line 548: Line 609:
 Actually you can do it in abc2.1 for the special case of octave transposing instruments - eg with a +8 and then octave=-1. 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 'pitch' which is precisely analogous to the '​octave'​ keyword but allows an 'abc pitch renormalisation'​ through any interval, not just a number of octaves. ​+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 ''​pitch''​ allows, as a special case, abc for transposing instruments to be encoded at concert pitch. ​ The special value pitch=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 ''​pitch=concert''​ where the actual value of the ''​pitch''​ 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.)+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.)
  
  
Line 556: Line 617:
  
 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.
 +
 +
  
  
  
abc/standard/v2.1/proposals/clefs_voice_parameters/dave/v4.txt · Last modified: 2012/08/26 15: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