We've been over this before, but back when BarFly was the only
application to support both parts and multi-voice playback.  So
maybe other implementations have moved on enough to merit a re-run.

The following is my way of representing a piece in book 6 of
Aird's collection.  Aird used a da capo, but ABC doesn't have
that (printing the words does not a control construct make),
so I used the standard P: construct to represent it.  BarFly
displays this nearly how I want it: each part gets a label in
a sensible place, though the playing order is not printed.

X:1
T:Drink to me only.
T:2 Flutes.
M:6/8
L:1/8
Q:3/8=60
P:ABA
K:A
P:A
[V:1]   ccc d2d|(ed)c (Bc)d|(eA)d c2B   | HA6    :|
[V:2]   AAA B2B|(cB)A (GA)B|(Ac)B A2[EG]|[HC6HA6]:|
%
P:B
[V:1] e|ece a2e|(ec)e  e2e | f2e  d2c   | (c3 B2):|
[V:2] c|cAc c2c|(cA)c  c2c | d2c  B2A   | (A3 G2):|

The intuition behind the P: construct, to me, is that you are
splicing separate chunks of music together to form a larger
piece.  So this is not really a playback issue at all.  The
semantics of P: is given by a source-to-source operation (which
a staff notation program could also implement), and the above
must be equivalent to this:

X:2
T:Drink to me only.
T:2 Flutes.
M:6/8
L:1/8
Q:3/8=60
K:A
[V:1]   ccc d2d|(ed)c (Bc)d|(eA)d c2B   | HA6    :|
[V:2]   AAA B2B|(cB)A (GA)B|(Ac)B A2[EG]|[HC6HA6]:|
%
[V:1] e|ece a2e|(ec)e  e2e | f2e  d2c   | (c3 B2):|
[V:2] c|cAc c2c|(cA)c  c2c | d2c  B2A   | (A3 G2):|
%
[V:1]   ccc d2d|(ed)c (Bc)d|(eA)d c2B   | HA6    :|
[V:2]   AAA B2B|(cB)A (GA)B|(Ac)B A2[EG]|[HC6HA6]:|

Now, BarFly isn't having the syntax of ex.1 at playback time, you get
silence.  Its syntax requires that I write more verbosely, like this:

X:3
T:Drink to me only.
T:2 Flutes.
M:6/8
L:1/8
Q:3/8=60
P:ABA
K:A
[V:1] [P:A]  ccc d2d|(ed)c (Bc)d|(eA)d c2B   | HA6    :|
[V:2] [P:A]  AAA B2B|(cB)A (GA)B|(Ac)B A2[EG]|[HC6HA6]:|
%
[V:1] [P:B] e|ece a2e|(ec)e  e2e | f2e  d2c   | (c3 B2):|
[V:2] [P:B] c|cAc c2c|(cA)c  c2c | d2c  B2A   | (A3 G2):|

which plays as written (the glitch in the anacrusis is Aird's
responsibility, his da capo isn't meant literally), but doesn't
display right: each voice gets a separate part label.  The
implication appears to be that part boundaries don't have to
coincide across voices: you only get one P: line in the header
so the sequence has to be the same, but if you are *not* going
to syntactically enforce coincidence of part boundaries across
voices, they ought to be allowed to drift, yes?  So let's try
it, even though I can think of no conceivable reason why you'd
want to write something like this:

X:4
T:test
P:ABAB
V:1
V:2
M:none
L:1/4
K:C
[V:1] [P:A] GG [P:B] BBBB||
[V:2] [P:A] DDDD [P:B] GG||

What BarFly displays gives no indication of where the part boundaries
in each voice are, and it doesn't play any sound.  So it doesn't look
like this extra flexibility has been implemented.

Nor do I want it to be.  Please can we have the simpler option as
in my first example, where parts are played as complete chunks of
music, no matter how many voices they've got, and without me having
to do "Simon says the viola starts playing the coda here too" with
redundant in-line fields?



-----------------------------------------------------------------------------
Jack Campin: 11 Third Street, Newtongrange, Midlothian EH22 4PU; 0131 6604760
<http://www.purr.demon.co.uk/jack>     *     food intolerance data & recipes,
Mac logic fonts, Scots traditional music files, and my CD-ROM "Embro, Embro".
------> off-list mail to "j-c" rather than "abc" at this site, please <------


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

Reply via email to