On Thu 13 Dec 2001 at 11:57AM +0000, Phil Taylor wrote: > When John first suggested multiple alternate endings and repeats of > >2 times I thought it was a good idea and started to implement it in > BarFly. Getting it to display was easy, but getting it to play correctly > turned out to be a nightmare, to the extent that after working on it > for several days I gave up and pulled all the new code out. There were > all sorts of problems. Of course that does not mean that it can't be > done, just that it ain't as easy as it looks at first sight.
abc2midi should handle alternate endings - it took some thinking about, but I'm reasonably confident that it does actually work. > A few things to consider when discussing repeat syntax: > > * It has to coexist happily with other methods of specifying repeats, > such as the P: field in the header, and not rule out the use of conventional > musical indirection (e.g. using the Segno). (A lot of people would like to > use that.) The P: field is currently the way to generate more than 2 times through a section. So far I haven't attempted to implement segno/coda based repeats. > * If we can have multiple alternate endings, why not multiple alternate > segments within a repeat, not necessarily at the end? This is common > in pipe music, and we have seen requests for it on this list. The problem is how you notate the end of a segment - this is not imediately obvious to me. > * It is very common to see repeats written as: > > abc |[1 abc :|[2 cba :| > > which is wrong (the last repeat should be written as || or |]), and is > explicitly forbidden by the 1.6 standard. At the moment, because it's > so common BarFly lets it go without comment, but what should be done > here? Should it be treated as an instruction to repeat the section > four times with endings 1,2,1,2, or should it generate an error? I would say an error / warning. > * We need a clear set of rules as to where repeats should start from. > At present, when it encounters a repeat BarFly searches backwards for > one of the following symbols: |:, ||, |], [|, a P: field, or the start > of the tune. This seems to give the least problems, but it does mean > that you can't use a double bar or thin/thick bar within a repeat. I think it is reasonable to require |: at the start of a repeat section and issue a warning if it has been missed out. By "require", I mean that a player program might ignore the end repeat if there is no start repeat and just play once through. James Allwright To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html