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
Last revision Both sides next revision
abc:standard:v2.1:proposals:transposition:v15 [2014/08/29 09:22]
cwalshaw
abc:standard:v2.1:proposals:transposition:v15 [2014/08/29 19:39]
cwalshaw
Line 1: Line 1:
 ===== Transposition proposal - summary ===== ===== Transposition proposal - summary =====
-This page contains the fifteenth draft of a proposal to extend the transcription capabilities within abc. It involves only minor changes from the thirteenth draft (the fourteenth draft looked at another approach):+This page contains the fifteenth draft of a proposal to extend the transcription capabilities within abc. It involves only minor changes from the thirteenth draft (the fourteenth draft looked at another approach) ​plus some additional features:
   * a new syntax, ''​instrument=<​note>;​abc@<​note>'',​ has been introduced for transposing instruments   * a new syntax, ''​instrument=<​note>;​abc@<​note>'',​ has been introduced for transposing instruments
   * ''​K:''​ and ''​V:''​ modifiers in the same field no longer combine with each other   * ''​K:''​ and ''​V:''​ modifiers in the same field no longer combine with each other
   * the examples have been extended to include [[#Custom transposition for diatonic instruments|custom transposition]]   * the examples have been extended to include [[#Custom transposition for diatonic instruments|custom transposition]]
-  * new/​revised ​syntax for ''​concert-clef'',​ ''​I:​sounding-score''​ and ''​I:​concert-score''​ has been introduced - see [[#​Generating a concert pitch score]]+  * new syntax for ''​clef-concert'',​ ''​I:​sounding-score''​ and ''​I:​concert-score''​ has been introduced - see [[#​Generating a concert pitch score]]
  
 The important aspects of this proposal are the same as versions 10 - 13: The important aspects of this proposal are the same as versions 10 - 13:
-  * A single ​system for transposition ​(rather than the dual high/​low-level systems proposed previously) ​consisting of the well-establised ''​score''​ and ''​sound''​ operators (shortened from ''​shift-score''​ and ''​shift-sound''​),​ which allow the typeset score and playback to be modified independently+  * a unified ​system for transposition consisting of the well-establised ''​score''​ and ''​sound''​ operators (shortened from ''​shift-score''​ and ''​shift-sound''​),​ which allow the typeset score and playback to be modified independently
   * transposition by interval (e.g. C to G), rather than by semitones as previously   * transposition by interval (e.g. C to G), rather than by semitones as previously
-  * ''​instrument'' ​synonyms for ''​score''​ and ''​sound''​to give an intuitive specification for transposing instruments +  * the ''​instrument'' ​modifier (defined in terms of ''​score''​ and ''​sound''​to give an intuitive specification for transposing instruments 
-  * ''​shift''​ shorthand for combined ''​score''​ and ''​sound''​ transpositions+  * the ''​shift''​ shorthand for combined ''​score''​ and ''​sound''​ transpositions
  
 As most of the syntax is agreed, this is a **working** draft, meaning that I will make changes to it as we go along. Possible changes include: As most of the syntax is agreed, this is a **working** draft, meaning that I will make changes to it as we go along. Possible changes include:
Line 29: Line 29:
   clef=<​clef name> stafflines=<​lines>​ octave=<​number>​   clef=<​clef name> stafflines=<​lines>​ octave=<​number>​
     score=<​note1><​note2>​ sound=<​note1><​note2>​ shift=<​note1><​note2>​     score=<​note1><​note2>​ sound=<​note1><​note2>​ shift=<​note1><​note2>​
-    instrument=<​note1>​[;​abc@<​note2>​] ​concert-clef=<​clef name>+    instrument=<​note1>​[;​abc@<​note2>​] clef-concert=<clef name>
   ​   ​
 (where ''<​...>''​ denotes a value, ''​[...]''​ denotes an optional parameter). (where ''<​...>''​ denotes a value, ''​[...]''​ denotes an optional parameter).
Line 41: Line 41:
   * ''​shift=<​note1><​note2>''​ is a shorthand for ''​score=<​note1><​note2>​ sound=<​note1><​note2>''​ - for more information see [[#​transposition operators]];​   * ''​shift=<​note1><​note2>''​ is a shorthand for ''​score=<​note1><​note2>​ sound=<​note1><​note2>''​ - for more information see [[#​transposition operators]];​
   * ''​instrument=<​note1>;​abc@<​note2>''​ is a synonym for ''​score=<​note1><​note2>​ sound=c<​note2>''​ - for more information see [[#writing abc code for transposing instruments]];​   * ''​instrument=<​note1>;​abc@<​note2>''​ is a synonym for ''​score=<​note1><​note2>​ sound=c<​note2>''​ - for more information see [[#writing abc code for transposing instruments]];​
-  * ''​concert-clef=<​clef name>''​ specifies the clef to be used for a [[#​Generating a concert pitch score|concert pitch score]]+  * ''​clef-concert=<clef name>''​ specifies the clef to be used for a [[#​Generating a concert pitch score|concert pitch score]]
 // ... unchanged ... // // ... unchanged ... //
  
Line 65: Line 65:
 For example, ''​V:​1 shift=CG score=GF''​ expands to ''​V:​1 score=CG sound=CG score=GF''​ and so the second ''​score''​ overrides the first to result in ''​V:​1 sound=CG score=GF''​ (although it is recommended not to mix shorthands with direct operators - see [[#​Transposition operators]]). For example, ''​V:​1 shift=CG score=GF''​ expands to ''​V:​1 score=CG sound=CG score=GF''​ and so the second ''​score''​ overrides the first to result in ''​V:​1 sound=CG score=GF''​ (although it is recommended not to mix shorthands with direct operators - see [[#​Transposition operators]]).
  
-Finally note that there are two ways to specify octave shifts and, for example, ''​octave=1''​ has the same effect as ''​shift=Cc''​. However these operators can be used independently ​and so neither overrides the other.+Finally note that there are two ways to specify octave shifts and, for example, ''​octave=1''​ has the same effect as ''​shift=Cc''​. However these operators can be used independentlyneither overrides the other and their effects add up.
  
 ===== 13 Transposition ===== ===== 13 Transposition =====
Line 82: Line 82:
  
 // Recommendation:​ // // Recommendation:​ //
-It is **strongly** recommended that shorthand modifiers are not mixed with direct modifiers, nor with each other, in the same tune - see [[#writing abc code for transposing instruments]] and [[#custom transposition for diatonic instruments]] for examples of typical usage.+It is **strongly** recommended that shorthand modifiers are not mixed with direct modifiers, nor with each other, in the same tune. See [[#writing abc code for transposing instruments]] and [[#custom transposition for diatonic instruments]] for examples of typical usage.
  
 // Note for developers: // // Note for developers: //
Line 106: Line 106:
  
 // Notes for developers: // // Notes for developers: //
-You should correct any transposition which goes beyond the specified abc limits to available key signatures, ''​K:​Cb''​ (7 flats) to ''​K:​C#''​ (7 sharps), and double/​triple accidentals. For example, in principle ''​K:​C#​ score=CG''​ raises the key up to ''​K:​G#''​ (8 sharps), so to keep with the limits it should be rendered as ''​K:​Ab''​ (4 flats).+You should correct any transposition which goes beyond the specified abc limits to available key signatures, ''​K:​Cb''​ (7 flats) to ''​K:​C#''​ (7 sharps), and double/​triple accidentals. For example, in principle ''​K:​C#​ score=CG''​ raises the key up to ''​K:​G#''​ (8 sharps), so to keep with the limits it should be rendered as ''​K:​Ab''​ (4 flats) ​and a warning issued to the user.
  
 // TODO (elsewhere in the standard): // Limit the range of key signatures supported by abc to ''​K:​Cb''​ (7 flats) through to ''​K:​C#''​ (7 sharps). (Also limit accidentals - e.g. double sharp and double flat accidentals should be supported, but triples are entirely optional.) // TODO (elsewhere in the standard): // Limit the range of key signatures supported by abc to ''​K:​Cb''​ (7 flats) through to ''​K:​C#''​ (7 sharps). (Also limit accidentals - e.g. double sharp and double flat accidentals should be supported, but triples are entirely optional.)
Line 131: Line 131:
  
 Transposing instruments sound notes at a different pitch to which they are written. For example, a C written on a Bb clarinet score would be sounded as a Bb (and similarly a written D would be sounded as a C). Transposing instruments sound notes at a different pitch to which they are written. For example, a C written on a Bb clarinet score would be sounded as a Bb (and similarly a written D would be sounded as a C).
- 
-This section uses **written pitch** (i.e. the pitch that is written on a transposing instrument'​s score) and **sounding pitch** (i.e. the pitch that is actually sounded, also often referred to as concert pitch) to distinguish between the two.  
  
 The transposition operator for transposing instruments is ''​instrument=<​note1>;​abc@<​note2>'',​ where ''<​note1>''​ expresses the written pitch of the transposing instrument (relative to ''​c''​) and ''<​note2>''​ expresses the pitch at which the abc is encoded (also relative to ''​c''​). This operator, ''​instrument=<​note1>;​abc@<​note2>'',​ is a synonym for ''​score=<​note1><​note2>​ sound=c<​note2>''​. The transposition operator for transposing instruments is ''​instrument=<​note1>;​abc@<​note2>'',​ where ''<​note1>''​ expresses the written pitch of the transposing instrument (relative to ''​c''​) and ''<​note2>''​ expresses the pitch at which the abc is encoded (also relative to ''​c''​). This operator, ''​instrument=<​note1>;​abc@<​note2>'',​ is a synonym for ''​score=<​note1><​note2>​ sound=c<​note2>''​.
  
 There are two typical ways of writing abc code for transposing instruments:​ There are two typical ways of writing abc code for transposing instruments:​
-  - The abc code can be transcribed at sounding pitch using ''​instrument=<​note>;​abc@c''​ (or, if preferred ​''​score=<​note>​c''​). +  - The abc code can be transcribed at sounding pitch using ''​instrument=<​note>;​abc@c''​ (or ''​score=<​note>​c''​, if preferred). 
-  - The abc code can be transcribed at written pitch using ''​instrument=<​note>;​abc@<​note>''​ (or, if preferred ​''​sound=c<​note>''​). Since, in this case, the abc code is at the same pitch as the typeset output (and so the ''<​note>''​ value is the same for both ''​instrument=''​ and ''​abc@''​),​ the '';​abc@<​note>''​ may be omitted and so the modifier shortened to ''​instrument=<​note>''​.+  - The abc code can be transcribed at written pitch using ''​instrument=<​note>;​abc@<​note>''​ (or ''​sound=c<​note>''​, if preferred). Since, in this case, the abc code is at the same pitch as the typeset output (and so the ''<​note>''​ value is the same for both ''​instrument=''​ and ''​abc@''​),​ the '';​abc@<​note>''​ may be omitted and so the modifier shortened to ''​instrument=<​note>''​.
  
 A third less common possibility occurs if the abc code is transcribed at a different pitch from both sounding and written pitches (as can happen in the case of re-transposition - [[#​Transposing instruments - extended example|see below]]) and in this case the full ''​instrument=<​note1>;​abc@<​note2>''​ must be used to express the written pitch of the instrument in question (in the ''<​note1>''​ value) and the pitch at which the abc is encoded (in the ''<​note2>''​ value). A third less common possibility occurs if the abc code is transcribed at a different pitch from both sounding and written pitches (as can happen in the case of re-transposition - [[#​Transposing instruments - extended example|see below]]) and in this case the full ''​instrument=<​note1>;​abc@<​note2>''​ must be used to express the written pitch of the instrument in question (in the ''<​note1>''​ value) and the pitch at which the abc is encoded (in the ''<​note2>''​ value).
Line 144: Line 142:
 // NB: // The ''<​note1>''​ and ''<​note2>''​ in the ''​instrument=<​note1>;​abc@<​note2>''​ syntax are notes and **not** keys (so that different octaves may be specified and so that the letter ''​b''​ is not ambiguous). Therefore, for a Bb instrument you must write ''​instrument=_B''​ and not ''​instrument=Bb''​. // NB: // The ''<​note1>''​ and ''<​note2>''​ in the ''​instrument=<​note1>;​abc@<​note2>''​ syntax are notes and **not** keys (so that different octaves may be specified and so that the letter ''​b''​ is not ambiguous). Therefore, for a Bb instrument you must write ''​instrument=_B''​ and not ''​instrument=Bb''​.
  
-In all cases the typeset score is rendered at //written pitch// ​by default.+In all cases the typeset score is rendered at //written pitch// ​(unless a [[#​Generating a concert pitch score|concert score]] is requested).
  
 The [[#​Transposing instruments - extended example|extended example below (section 13.3.2)]] illustrates the principles of writing abc code for transposing instruments. The [[#​Transposing instruments - extended example|extended example below (section 13.3.2)]] illustrates the principles of writing abc code for transposing instruments.
Line 159: Line 157:
  
 // Notes for developers: // // Notes for developers: //
-To evaluate this formally, resolve all of the ''​instrument=''​ and ''​shift=''​ shorthands to their ''​score=''​ and ''​sound=''​ equivalents and then apply the ''​sound''​ transposition interval to the ''​score''​ modifier, so that ''​score=<​note1><​note2>​ sound=<​note3><​note4>''​ would effectively be changed by ''​I:​sounding-score''​ to ''​score=<​note3><​note4>​ sound=<​note3><​note4>''​. The same changes apply for ''​I:​concert-score''​ unless both ''<​note1>''​ and ''<​note2>''​ are a C (in any octave). These changes should be made **before** any overall transposition set by ''​I:​score'',​ ''​I:​sound''​ and ''​I:​shift''​ is applied.+To evaluate this formally, resolve all of the ''​instrument=''​ and ''​shift=''​ shorthands to their ''​score=''​ and ''​sound=''​ equivalents and then apply the ''​sound''​ transposition interval to the ''​score''​ modifier, so that ''​score=<​note1><​note2>​ sound=<​note3><​note4>''​ would effectively be changed by ''​I:​sounding-score''​ to ''​score=<​note3><​note4>​ sound=<​note3><​note4>''​. The same changes apply for ''​I:​concert-score''​ unless both ''<​note1>''​ and ''<​note3>''​ are a C (in any octave) ​in which case ''​score=''​ is left unchanged. These changes should be made **before** any overall transposition set by ''​I:​score'',​ ''​I:​sound''​ and ''​I:​shift''​ is applied.
  
-Generally the clef on the concert/​sounding score will be the same as on the written score, but to change it, use ''​concert-clef=<​clef-name>''​.+Generally the clef on the concert/​sounding score will be the same as on the written score, but to change it, use ''​clef-concert=<​clef-name>''​.
  
 === 13.3.2 Transposing instruments - extended example === === 13.3.2 Transposing instruments - extended example ===
abc/standard/v2.1/proposals/transposition/v15.txt · Last modified: 2015/02/11 17:07 by cwalshaw
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki