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

abc:standard:v2.1:proposals:multi-voice_scope:v4 [2012/09/03 17:47]
alexmidicond created
abc:standard:v2.1:proposals:multi-voice_scope:v4 [2012/09/04 17:10] (current)
alexmidicond
Line 178: Line 178:
 I have not included any chapter numbering yet, please refer to any of the above chapters by the abbreviation given in brackets. The list items should be bullets, but for better reference, I used numbers. I have not included any chapter numbering yet, please refer to any of the above chapters by the abbreviation given in brackets. The list items should be bullets, but for better reference, I used numbers.
  
-== What do we need movements ​for? ==+== New items == 
 + 
 +In this version, the special role of T: as a movement separator is newly introduced, adopting the functionality of existing software. 
 + 
 +The whole scope concept is new for standard abc. Here a list of new items that my be discussed individually:​ 
 + 
 +  * MS - T: as movement separator [NEW in this version] 
 +  * MFT - W: printed below each movement (as done in abcm2ps) [NEW in this version] 
 +  * OV - ordering by V: (etc.) in the movement [NEW in this version] 
 +  * CT list - still to be completed. [NEW additions and grouping in this version] 
 +  * CT3 - new prefix for annotations,​ additional to ^ and _ 
 +  * CT4 - I:​concert-score 
 +  * CV - control voice movement-dependent [NEW in this version] 
 +  * SRT6, 7 - new prefices for annotations,​ additional to ^ and _ 
 +  * SRT8 - New mechanism to exclude non-master annotations,​ lyrics etc. 
 +  * ANM - adjustments [NEW additions in this version - see below] 
 + 
 +Note that I have dropped the "​I:​synch"​ of previous versions completely, for simplicity. 
 + 
 +== Possible modifications,​ please discuss == 
 + 
 +  * Define "​I:​text"​ not as a control type (like $), but as a "​movement separator"​ (like T:)? (Jef believes this to be "​sensible";​ I am not yet convinced, given the fact that the ordinary control item "​$"​ can cause line breaks in the typesetting as well, without anyone expecting all voices to be synchronized.) 
 +  * ANM must probably become rebalanced in favour of programmers,​ at the expense of users: Compliant software has to offer only the function about unifying clefs, it is allowed to replace any of the other functions by that well-worded fatal error message. This means that publishers of abc code have to match bar lines and effective (displayed) key signatures between voices that share a staff. (Note that this makes some legitimate use cases miss out, e.g. involving traditional French horn voices.) We may proclaim several "​degrees of super-compliance",​ named something like "fully compliant plus ANM4"​. 
 +  * We probably need more regulations for the notion "​movement"​. For example, ordinary repeat signs should not transcend their movements:​ 
 +   
 +T:First movement 
 +abc |] 
 +T:Second movement 
 +def :| % should only repeat the last three notes. 
 +% (Needless to say that abc2midi currently repeats all six.) 
 + 
 +We might also regulate whether the instrument name can be changed, and should be printed, at the beginning of each movement, which abcm2ps already allows resp. does. 
 + 
 +== For what do we need movements ​at all? ==
  
 It would be possible, and compatible to abc 2.1., to make T: an ordinary control type, like P:. This document would be somewhat shorter, as were its previous versions. It would be possible, and compatible to abc 2.1., to make T: an ordinary control type, like P:. This document would be somewhat shorter, as were its previous versions.
Line 186: Line 219:
 The idea of using T: fields for movement separators is somewhat arbitrary, in particular since Jef often uses it without an actual "​title"​ string. But it can be accepted as de-facto legacy. The idea of using T: fields for movement separators is somewhat arbitrary, in particular since Jef often uses it without an actual "​title"​ string. But it can be accepted as de-facto legacy.
  
-== Why cam a voice id mentioned in an I:score not be allowed to determine the control or master voices? ==+== Why can a voice id mentioned in an I:score not be allowed to determine the control or master voices? ==
  
 Because Because
Line 196: Line 229:
 Because each movement can have its own set of voices, so there may not exist a single voice that occurs in all movements, let alone one that qualifies for the master role. Because each movement can have its own set of voices, so there may not exist a single voice that occurs in all movements, let alone one that qualifies for the master role.
  
-== New items ==+== Why can we not just say what the abc **means**, leaving the consequences to the programmers? ​==
  
-In this version, the special role of T: as a movement separator ​is newly introducedadopting the functionality of existing software.+That is in fact the idea. When this document describes what software must do, the purpose ​is only to explain what an abc item meansand what usage is safe (even if it may not be mainstream usage).
  
-The whole scope concept is new for standard abc. Here a list of new items that my be discussed individually:​+== Why can we not just say "​software should do its best to make sense of any abc code"? ==
  
-  * MS - T: as movement separator [NEW in this version] +Well, we could, ​as does the abc standard document 2.1, but it is much better if the document 
-  ​* MFT W: printed below each movement ​(as done in abcm2ps[NEW in this version] +  - tells programmers exactly and completely what to do to become compliant, so that they need not experiment with other software or study existing abc code (often amounting to guesswork), 
-  ​* OV ordering ​by V: (etc.) in the movement [NEW in this version] +  - tells users which usage is safe, so that their abc code is properly understood not only by the software they happen ​to possess, but also by all other compliant software as may be used by recipients of their codeor in the future by themselves.
-  * CT list - still to be completed. [NEW additions and grouping in this version] +
-  * CT3 - new prefix for annotationsadditional to ^ and _ +
-  * CT4 - I:​concert-score +
-  * CV - control voice movement-dependent [NEW in this version] +
-  * SRT6, 7 - new prefices for annotations,​ additional to ^ and _ +
-  * SRT8 - New mechanism to exclude non-master annotations,​ lyrics etc. +
-  * ANM - adjustments [NEW additions in this version]+
  
-Note that I have dropped ​the "I:synch" of previous versions completelyfor simplicity.+Most standards written by humans, including MusicXML, actually fail this goal, and so will this one, but the closer we get, the more will our work be useful and respected, and the more effort will be invested by programmers. 
 + 
 +== Conversely, why can we not just describe what software must do? == 
 + 
 +We may want to add features in the future, which may rely on a particular way of coding. Users will be glad if we describe a style of coding as "​orthodox",​ so that new features are most likely to work properly on otherwise unchanged code. A typical example is the concert score. 
 + 
 +An equally important reason is the logical consistency of the standard. Present and future regulations should be as self-evident as possible, or at least easy to understand and memorize correctly and completely. Thus, it is much better to say "Tstarts a new movement" ​than just "At a T: field, software must resynchronize all voices"​. The notion "​movement"​ is defined technically,​ so that users are free to map their own needs to it. (Actually, a more neutral wording such as "​part ​of code" would be preferableif it could not be confused with the P: mechanism.)
  
abc/standard/v2.1/proposals/multi-voice_scope/v4.txt · Last modified: 2012/09/04 17:10 by alexmidicond
 
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