> Date: Mon, 7 Jul 2003 13:24:24 +0100
> From: Jack Campin <[EMAIL PROTECTED]>
>
> Using + where abm2ps and abcmidi currently use ! would handle
> legacy tunes better. There are very few tunes out there using
> the obsolete chord notation, and very few chords that could
> cause ambiguity (has anybody ever used +fff+ as a chord?).
I'm warming to this idea.
The strong objection I've seen on this list to ! as a linebreak are that
!...! is in the draft standard, whereas ! = break is not.
The strong objection I've seen to !...! is that ! = break is already in
use in approximately 9-10% of the ABC tunes that are findable on the
web.
Because 1.7.6 has always been a draft or proposed standard (even though
it has already been implemented in a couple of programs), and because
!...! is used in a far smaller percentage of the tunes that are findable
on the web, it seems evident that !...! is the construct that will
eventually have to give way.
In the discussion to date on the list, I haven't seen any strong
objection to +...+ . I'm sure we're never going to reach consensus on
this issue, but I think going with +...+ will result in the least amount
of objection and breaking the least number of legacy ABC tunes. I do
think it would be appropriate for the standard to specifically describe
!...! as deprecated, but also to encourage (but not require) programs to
support those !...! commands that were explicitly listed in the 1.7.6
draft for backward compatibility.
> But that whole syntax, whatever its lexicon, is still a second-rate
> solution, rushing to implement a graphical semantics for concepts
> that need a musical one (the structural, control-flow terms like da
> capo being the worst offenders).
Actually, I was under the impression that da capo and its variants was a
fairly straightforward control-flow problem. My initial attempt at it
would be to use three boolean flags:
1) "take all second endings" (initially cleared)
2) "ignore 'fine' and coda signs" (initially set)
3) "jump to next coda sign or end" (initially cleared)
Whenever you encounter a repeat sign (with or without multiple endings),
a "fine" or a coda sign, check the flags and behave accordingly.
There are three situations I'm aware of in music that use this kind of
flow control:
a) da capo/dal segno al fine - go to the beginning/segno, play without
repeats until "fine" and you're done. For this situation, when you
get to the da capo/dal segno command:
i.) set flag #1 (i.e., take second endings/no repeats)
ii.) clear flag #2 (i.e., don't ignore fine/coda signs)
iii.) leave flag #3 cleared (i.e., don't jump when you get to fine)
iv.) go back to the beginning/segno
b) da capo/dal segno al coda - go to the beginning/segno, play without
repeats until the first coda sign, then jump to the second coda sign.
For this situation:
i.) set flag #1 (i.e., take second endings/no repeats)
ii.) clear flag #2 (i.e., don't ignore fine/coda signs)
iii.) set flag #3 (i.e., jump from next coda sign to the
one following)
iv.) go back to the beginning/segno
c) da capo/dal segno al fine e poi al coda - go to the beginning/segno,
play without repeats until "fine" and then jump to the coda. This
situation is actually the same as (b) above. The difference is that
the music says "fine" instead of the first coda sign.
i.) set flag #1 (i.e., take second endings/no repeats)
ii.) clear flag #2 (i.e., don't ignore fine/coda signs)
iii.) set flag #3 (i.e, jump when you get to "fine")
iv.) go back to the beginning/segno
Error handling: in situation (a), if there's no "fine" play to the end
of the piece. (Actually, this is not technically an error--some pieces
do this.)
In situation (b), if there isn't a second coda sign, continue playing
to the end of the piece and display an error message.
In situation (c), if "fine" is missing, continue playing through the
coda to the end of the piece and display an error message. If the coda
sign is missing, stop at "fine" and display an error message.
Jeff
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html