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:transposition:v15 [2014/08/29 09:22]
cwalshaw
abc:standard:v2.1:proposals:transposition:v15 [2015/02/11 17:07]
cwalshaw [13.4 Custom transposition for diatonic instruments]
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 ===
Line 268: Line 266:
 // TODO (elsewhere):​ Include a mechanism for setting the frequency of concert A. // // TODO (elsewhere):​ Include a mechanism for setting the frequency of concert A. //
  
-However, this will not work for ensembles with other instruments and so the simplest way is to treat the pipes as a transposing instrument and to write ''​K:​AMix sound=A_B''​ for written pitch scores ​(or ''​K:​BbMix score=_BA''​ for concert pitch scores).+However, this will not work for ensembles with other instruments and so the simplest way is to treat the pipes as a transposing instrument and to write ''​K:​AMix sound=A_B''​ for written pitch transcriptions ​(or ''​K:​BbMix score=_BA''​ for concert pitch transcriptions).
  
 This could instead be written ''​instrument=_d;​abc@_d''​ (or ''​instrument=_d;​abc@c''​ respectively) but most Highland pipers would be very surprised to hear their pipes referred to as a Db transposing instrument. This could instead be written ''​instrument=_d;​abc@_d''​ (or ''​instrument=_d;​abc@c''​ respectively) but most Highland pipers would be very surprised to hear their pipes referred to as a Db transposing instrument.
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