Re: [abcusers] Voice header again
[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
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
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
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
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
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
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