> And, oh yes, let's start discussing something really simple. We all
> need some discussing practice before we try to handle the big stuff.

Okay: tempi in words.

It ought to be possible to write

   Q:allegro

in a tune header or

   [Q:allegro]

in a tune body, and optionally define outside the tune (earlier in
the same file or maybe in a separate settings file) what "allegro"
might mean in numerical terms, with a line like this:

   Q:allegro 1/4=120

I suggest that in addition, a tune header might contain mixed tempo
specifications, so that when the line

   Q:allegro 1/4=120

occurs in a tune header or

   [Q:allegro 1/4=120]

in a tune body, both the word and the number are displayed/printed
and that number is used by player programs.

Where there is no number in the header, you would expect only "allegro"
to appear in the staff notation, regardless of whether it was numerically
defined elsewhere.

Further: it should be possible to define tempi in ranges, like

   Q:allegro 1/4=120-128

Staff notation programs should print this range if it appears in a tune
header; player programs should use a value from that range (how it is to
be chosen is outside the scope of the specification).

Yes, this requires that programs scan an entire tune file to find these
definitions.  I can't imagine there being any file big enough or any
computer slow enough for that to matter.  (How long would it take a
state-of-the-art personal machine like a fast Mac with Altivec, using
an efficient matching algorithm, to scan the entire world-wide ABC
corpus for lines like the above, once it was all in-core?  A lot less
than a second, I suspect).

In BNF:

   number     ::= numeral*
   textchar   ::= alphabetic | space | ""
   tempolabel ::= alphabetic
   tempolabel ::= alphabetic [textchar* | alphabetic]
   tempoLHS   ::= number "/" number
   range      ::= number "-" number
   tempoRHS   ::= number | range
   tempospec  ::= tempoLHS "=" tempoRHS
   tempo      ::= "Q" ":" tempolabel
   tempo      ::= "Q" ":" tempospec
   tempo      ::= "Q" ":" tempolabel tempospec

which rules out tempo labels like "presto as defined by Quantz in 1750"
because of the date but should be general enough to be useful.

I don't think there is any point in extending the old "Q:120" style of
tempo specification in this direction.  It was a bad idea in the first
place and it needs to go.  Let's not do anything that might encourage
people to still use it in more elaborated contexts.

=================== <http://www.purr.demon.co.uk/jack/> ===================


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

Reply via email to