Laurie Griffiths <[EMAIL PROTECTED]> writes:

> > Q:1/4=120 note="Pretty quickly"  % [2] explicit tempo with advisory note
> 
> OK acceptable but not my preference.  "note" is a keyword that I scan for
> (no problem).  The use of quotes immediately brings up the question of "what
> if the string is to contain a quote?"  An escape mechanism is needed such as
> using \" to represent a quote (and therefore \\ to represent \ too).  That
> has been argued before and not everyone liked it.  It's at best a necessary
> evil, if it can be avoided altogether then it should be.

Yes, but we will need *some* delimiter (the same problem occurs
elsewhere in ABC, and we should be consistent), and any character at all
can occur in a tune title, so an escape mechanism would be necessary in
any case. Quotes are, at least, well entrenched in the delimiter role.

It would be possible to take an idea from XML and allow either
`key="..."' or `key='...'', where the `'' could occur inside `"..."' and
the `"' inside `'...'' (got that?). This would reduce the problematic
cases to those that include both single and double quotes. Personally I
don't see what is so bad about `\"' and `\\'; at least I can make out
little call for a backslash in tempo advisory notes, and given ABC's
roots in TeX it might actually be a good idea (memetically speaking).

> > Q:Allegro    % [3] symbolic tempo specification, metronome
> > %     speed (or range) defined elsewhere
> 
> Maybe OK, maybe not.  What's the syntax for the "Allegro" thing?

Jack Campin posted a BNF specification for that part of the proposal
ages ago. In his specification, the tempo labels may contain alphabetic
characters and spaces but not numerals or special characters. This
sounds reasonable to me.

> Is it too complicated?? What is the syntax of the
> "Allegro" part.  Can it be more than one word? e.g.
> Q:Allegro moderato note="Fairly quickly"

Sure, see above.

> Can it contain keywords such as "note"? e.g.
> Q:Allegro but see note from composer note="Pretty quickly"

Presumably the `key=value' syntax could be specified to require no 
spaces between `key' and `=' and `value'. This would make it easy to 
distinguish from the `key' occuring on its own in all but pathological 
cases.

> > Q:Allegro 1/4=120-128    % [6] definition of range
> 
> Not OK.  For a player program this is just silly.  It can only play at one
> speed at a time.  I can't see any point in choosing a random number in the
> range given and I can't see in the near future a program that will have such
> intelligence that it can interpret the music by finding the best number in
> the range.  Better to just say 124.

This is from Jack's original proposal. IMHO it is nice to be able to
specify a range of metronome speeds in sheet music (which is something
that does occur in practice but which Simon's proposal conveniently
ignores). Player programs are free to pick a speed (any speed, but in
the absence of better ideas the arithmetic mean should be fine) from the
range, just like a human musician would be; the user should of course be
able to override this like any other speed specification.

> >...
> > Q:1/4=120 mode="accelerando"
> 
> This is a new departure that goes beyond anything discussed so far.

Of course. If you go back to my earlier message I think you will find
that this was only meant as an illustration of how the `key=value'
notation allows further extensions in the future with very little new
syntax needed. Simon's proposal would require the invention of more
ad-hoc special syntax to accommodate this on top of the special `Q:'
field syntax that is already there. I thought that I made this clear in
my original posting but apparently I didn't.

> Incidentally it still has the possibility of writing something like
> 
> Q:Prestissimo 1/4=220   %defines Prestissimo
> Q:Largo 1/4=40   % defines Largo
> ...
> Q:Largo note="Prestissimo"
> 
> which will play extremely slowly while displaying something meaning
> extremely fast.

You apparently misunderstood the original proposal regarding
`note="..."'. While I'm not about to prescribe what notation programs
`must' do, my suggestion for this combination (case [4] in my earlier
posting) is to display

  Largo (Prestissimo)

or

  Largo (Prestissimo) - .|=40

and we shall just have to see what musicians will make of this! :^)

The `note="..."' is just an advisory note that should influence neither
the displayed metronome speed nor the speed that a piece is played back
at. Given a notation program with enough degrees of freedom one could
probably figure out how to make the notation program generate just
`Prestissimo' and no metronome speed, while a player program would use
the 1/4=40 specification (as it should!). I can live with that -- at
least this possibility does not complicate the standard over and above
Jack's original proposal (modified to allow `note="..."'), which in
itself is fairly simple and minimal. If anything, your observation
corroborates the conjecture that Simon's more complicated approach may
not in fact be needed at all, a point which I have been trying to get
across for quite some time now.

Anselm
-- 
Anselm Lingnau .......................................... [EMAIL PROTECTED]
Never learn to do anything: if you don't learn, you'll always find someone else
to do it for you.                                                 -- Mark Twain

To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html

Reply via email to