Re: [abcusers] Voice header again

2003-01-06 Thread John Chambers
[EMAIL PROTECTED] writes
| I think the standard (or Steve Mansfield's tutorial) says something about separating 
|them with a comma, like:
| [V:1,L:1/4,M:3/8]
|
| That's how I implemented/am implementing it in iabc.

Hmmm ...  There seems to be a bit of an ambiguity here,  in
the form of a conflict with the middle=note syntax that
a few people have implemented for clefs.  You could write:

  [V:2 clef=bass middle=D, nm=bassoon, L:1/4, M:3/8]

In this case, the first comma is part of the middle term,
saying  that  the note D, it mapped to the middle line of
the staff, and is not a list separator.

Perhaps it would be better to use  a  semicolon  for  lists
like  this.   This  is  pretty  much  the  reason that most
programming languages use semicolons as command separators.
It  makes sense, since in written language, semicolons have
historically been used as a higher-level comma.

Alternatively, a safer way to parse such lists would be  to
use the lettercolon sequence to flag the start of a new
field.

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



Re: [abcusers] Voice header again

2003-01-05 Thread Phil Taylor
Jack Campin wrote:

 Each voice is a completely separate tune, so they can have different
 default note lengths (common), metres (rarely) and even keys.  Not
 sure about tempo though, since all the voices have to play together.

I've never been able to predict exactly what BarFly will do with such
constructs, so I've generally written them using the explicit [..]
notation: [V:1 L:1/8] etc.  A bit verbose, unreadable on anything less
than a twenty-inch monitor, but semantically harmless.

Got to put them in separate square brackets, too, so it has to
be [V:1][L:1/8]
or
V:1
L:1/8
(which is even more unreadable).

But your decision that each voice is a completely separate tune is
not implied in any way by the original standard and makes ABC simply
unusable for many purposes.

Neither the original standard nor any subsequent draft even mentions
multivoice abc, let alone the way in which P: fields interact with
V:, so we're out on the bleeding edge here.

Do any programs other than BarFly even attempt to deal with part-
order playing in multivoice abc?  abc2midi is the only likely
candidate, I think.

I wanted to transcribe some Klezmer tunes
from the Manchester Klezmer site: I can't do it using BarFly.  Some
are in forms like ABACA and in two voices.  There is no way to write
that in BarFly without copying part A out three times: you don't let
the part construct name sections of *music*, only segments of a single
voice.  I don't want to be responsible for ABC written so redundantly,
so I'm not doing the transcriptions until BarFly's semantics for P: is
changed to handle it.

Of course you don't have to write part A out three times; what you do
have to do is make sure that the P: field appears in the corresponding
place in both voices, like this:

P:ABACA
K:D
[V:1][P:A] abcd abcd |] [P:B] ABCD ABCD |] [P:C] DCBA DCBA |]
[V:2][P:A] cdba cdba |] [P:B] DCBA DCBA |] [P:C] dcba dcba |]

What ought to happen is that any section delimited by a P: line should
behave like a separate tune, except that when it gets played is controlled
by the P: line in the header, and what follows the P: on that line may
be in a different typestyle from the contents of a T: line.

Practically, I use that semantics all the time when assembling or
disassembling sets of monophonic tunes: interchange T: and P: and
you're nearly done.  BarFly's present semantics makes that impossible
for anything with more than one voice.

And I can't think of *any* music that's more easily notated by making
V: global to P:.

There is a more general problem here, in that most fields can be either
global or local within multivoice abc, except that we need a way of
marking them out as one or the other.  I've made fields within the
tune local only, which can cause some confusion.  I get queries from
users which say Why doesn't this work:

M:4/4
K:C
[V:1] ...
[V:2] ...
M:3/4
K:G
[V:1] ...
[V:2] ...

(What happens is that the key and metre changes only appear in the
second voice)

You have to remember that when the tune is being parsed for playing,
the program reads the whole of voice 1 first, then the whole of voice 2.
On the first pass, it doesn't see the in-tune fields at all, because
they follow on from voice 2.

One solution would be to introduce a marker for regions of the tune
where everything is considered to be global.  You could reserve
voice number zero for this purpose:

M:4/4
K:C
[V:1] ...
[V:2] ...
[V:0]
M:3/4
K:G
[V:1] ...
[V:2] ...

or perhaps make it V:G.

It's a seriously difficult parsing problem, whatever you do.

Phil Taylor


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



Re: [abcusers] Voice header again

2003-01-05 Thread ANewman110
I think the standard (or Steve Mansfield's tutorial) says something about separating 
them with a comma, like:
[V:1,L:1/4,M:3/8]

That's how I implemented/am implementing it in iabc.

In a message dated 1/5/2003 12:50:12 PM Eastern Standard Time, [EMAIL PROTECTED] 
writes:

 with such
 constructs, so I've generally written them using the explicit [..]
 notation: [V:1 L:1/8] etc.  A bit verbose, unreadable on anything less
 than a twenty-inch monitor, but semantically harmless.
 
 Got to put them in separate square brackets, too, so it has 
 to
 be [V:1][L:1/8]
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html



Re: [abcusers] Voice header again

2003-01-04 Thread Phil Taylor
Hi Phil, I'm not so sure I agree with that.  If what you say is correct,
you would really need to go:
V:1 ...
K: Bb
V:2
K: Bb

And I have never seen an ABC tune that does that, and I would bet that
Barfly doesn't require that(don't have a Mac or I'd buy a copy and find
out :-)

You're right, it doesn't.  But it ought to be possible to place one voice
in a different key by putting a key change right at the start of that
voice.  Unfortunately, that doesn't work in BarFly either, as it then
draws both key signatures, but I think it ought to work.

I like the idea that everything is global, except what is specified on the
'V' line.  One exception would be the L: rule, although there still seems
to be the expectation that any L: in the first voice will be 'inherited'
by other voices.

In BarFly, all voices inherit the L: value defined (or implied) in the header,
but in this case you can change the L: setting right at the start of a voice
without affecting other voices.

Phil Taylor


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



Re: [abcusers] Voice header again

2003-01-04 Thread Eric Galluzzo
On Sat, 2003-01-04 at 00:35, [EMAIL PROTECTED] wrote:
 Hi Phil, I'm not so sure I agree with that.  If what you say is correct, you would 
really need to go:
 V:1 ...
 K: Bb
 V:2
 K: Bb
 
 And I have never seen an ABC tune that does that, and I would bet that Barfly 
doesn't require that(don't have a Mac or I'd buy a copy and find out :-)

No, but all the ABC tunes I've ever written go something like this:

...
K:Bb
...
V:1
...
V:2
...

In other words, the K: is a global header, because it occurs before any
of the voices start, and so it applies to all of them.

 I like the idea that everything is global, except what is specified on the 'V' line. 
 One exception would be the L: rule, although there still seems to be the expectation 
that any L: in the first voice will be 'inherited' by other voices.

Actually, I don't like that idea terribly.  This means that you can't
do, e.g.:

X:1
T:Etude
M:4/4
K:C
%
V:1
L:1/8
CDEF GABc | dCBA GFED |
V:2
L:1/2
C E | D G, |
%
V:1
CEGE cGec | BdcA GAFD | C8 |]
V:2
C E | D G, | C2 |]

This sort of fast top part, slow bottom part is quite common.  Look at,
say, Paganini's Moto Perpetuo for violin and piano.

 Phil Taylor wrote:
 Each voice is a completely separate tune, so they can have different default
 note lengths (common), metres (rarely) and even keys.

Indeed.  There are quite a lot of classical pieces, and probably
traditional tunes (although I must admit that I know very little about
traditional music), that are polytonal and/or polymetric.  Ives and
Milhaud are good examples of the former, Bartok and Nancarrow good
examples of the latter.  Nancarrow even has a fugue in one of his string
quartets in which all the parts are in different tempos, but they all
end at the same time on the same note.  Nearly impossible to play, but
great fun to listen to.  I wonder if the Q: field is global or not! ;)

- Eric


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



Re: [abcusers] Voice header again

2003-01-04 Thread ANewman110
Maybe the solution is to allow key and meter to be specified on the V: line somehow. Or another possibility is to allow inline headers to be at 'voice' scope and header lines be at 'global' scope.

In a message dated 1/4/2003 5:51:18 AM Central Standard Time, [EMAIL PROTECTED] writes:


 But it ought to be possible to place one voice
in a different key by putting a key change right at the start of that
voice. Unfortunately, that doesn't work in BarFly either, as it then
draws both key signatures, but I think it ought to work.




Re: [abcusers] Voice header again

2003-01-03 Thread ANewman110
Hi Phil, I'm not so sure I agree with that.  If what you say is correct, you would 
really need to go:
V:1 ...
K: Bb
V:2
K: Bb

And I have never seen an ABC tune that does that, and I would bet that Barfly doesn't 
require that(don't have a Mac or I'd buy a copy and find out :-)

I like the idea that everything is global, except what is specified on the 'V' line.  
One exception would be the L: rule, although there still seems to be the expectation 
that any L: in the first voice will be 'inherited' by other voices.

Phil Taylor wrote:
Each voice is a completely separate tune, so they can have different default
note lengths (common), metres (rarely) and even keys.
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html