Re: [abcusers] Chord notation

2001-02-24 Thread Laurie Griffiths

Mike Whitaker said:
 ...we have three choices:

 1) don't
 2) pick one and stick with it...
 3) allow chord 'dialects'...

I would vote heavily for 2

Option 1 obviously means chaos.  Option 3 means chaos too.
As an implementer I just don't see myself supporting multiple different and
incompatible dialects.  Writing the code would be OK - just have a pile of
tables.  Supporting it and answering the questions from completely confused
customers would be a nightmare.

There is in fact a high degree of consensus regarding all the simpler
chords.  I really wish that Frank Nordberg hadn't shot himself in the foot.
(Frank - what you did was to give an example of a whole load of notation
with no explanation.  I simply have no idea what most of the chords you
named are.  I have no idea whether what you described was systematic or
chaotic, whether you mixed multiple 'dialects' or just one, and so on.
there was therefore no way that I could follow your lead.  So we went of in
various other directions).



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



Re: [abcusers] Chord notation

2001-02-24 Thread Jack Campin

 3) allow chord 'dialects'...
 Option 1 obviously means chaos.  Option 3 means chaos too.
 As an implementer I just don't see myself supporting multiple different
 and incompatible dialects.  Writing the code would be OK - just have a
 pile of tables.  Supporting it and answering the questions from completely
 confused customers would be a nightmare.

The tables don't need to be in the application, they can be in the ABC
files.  BarFly already allows for something like that with its macro
mechanism: I can write the macro

   m:Mn = [npr]

in the header to define to get a major chord, so that if I later write MC,
in the tune body it will be expanded to [C,E,G,] .  This isn't yet enough
for a guitar chord mechanism, as a particular macro only applies to notes
of one length, but an analogous syntax ought to work for an extensible
chord mechanism; it only has to give the user access to functionality
that's already there in the ABC application.  A possible syntax might be
to give the relative pitches by specifying one case:

  g:A dim = [A c _e]

in the header, and then "G dim" in the tune body would represent a chord
containing the pitch classes G, B flat and D flat.  (I'm assuming the
program can do implicit transposition; there are other ways to notate
the same information, like that of the BarFly macro system used above -
I don't think there would be much difference in usability).

If the meaning of the chord symbols is right there in the tune file,
using the same notation already used in ABC, the user isn't likely to
get confused.


...Parsing "F sharp minor" to print "F#m" should be easy.
 No, it's impossible - because the range of things that
 might mean F#m is unlimited.

You missed the point.  A user should not be constrained by a programmer's
idea of how to print chord names.  This should be a display option.  (My
preference for this particular chord would be a lower-case f followed by
a sharp sign, *not* a hash symbol).

The problem with the present staff display options for chords in ABC is
that are driven by their crappy ASCII approximations.  Using a "b" for
a flat in the staff notation looks amateurish, but the present design
encourages implementers to do exactly that by just printing the user's
ABC notation for the chord verbatim.  A design that decouples input
notation from displayed notation would avoid that mistake.  (The only
occasion I can think of when displaying flats and sharps in ASCII would
have any positive benefit is when generating a chord chart in Braille
for a blind guitarist).

One particularly useful display format for guitar chords would be to
expand them into left-hand piano chords and put them on a different
stave.  This could be a handy starting point for somebody doing a
keyboard arrangement.


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


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



Re: [abcusers] Chord notation

2001-02-24 Thread Phil Taylor

Laurie wrote:
Mike Whitaker said:
 ...we have three choices:

 1) don't
 2) pick one and stick with it...
 3) allow chord 'dialects'...

I would vote heavily for 2

Option 1 obviously means chaos.  Option 3 means chaos too.
As an implementer I just don't see myself supporting multiple different and
incompatible dialects.  Writing the code would be OK - just have a pile of
tables.  Supporting it and answering the questions from completely confused
customers would be a nightmare.

I agree wholeheartedly.

There is in fact a high degree of consensus regarding all the simpler
chords.  I really wish that Frank Nordberg hadn't shot himself in the foot.
(Frank - what you did was to give an example of a whole load of notation
with no explanation.  I simply have no idea what most of the chords you
named are.  I have no idea whether what you described was systematic or
chaotic, whether you mixed multiple 'dialects' or just one, and so on.
there was therefore no way that I could follow your lead.  So we went of in
various other directions).


The main ambiguity seems to lie with the use of + and - symbols.  "+"
can mean augmented, sharpened or added, and there's really no way a
program can determine which is correct.  Even human readers have to be
expert musicians and familiar with the harmony rules for this particular
genre of music to interpret this correctly.  I suggest, therefore, that
we eliminate + and - from the standard and admit only the explicit
namings, aug, #, add, dim, b and whatever we decide should mean "omit
this note".

Phil Taylor


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



Re: [abcusers] Chord notation

2001-02-24 Thread Mike Whitaker

On Sat, Feb 24, 2001 at 02:00:00PM +0100, Jack Campin wrote:
 You missed the point.  A user should not be constrained by a programmer's
 idea of how to print chord names.  This should be a display option.  (My
 preference for this particular chord would be a lower-case f followed by
 a sharp sign, *not* a hash symbol).

I think we need to be clear on what we're discussing here.

The way I see it there are THREE different things under discussion
here:

1) the format in what the user enters the chords
2) the format of chord names in an ABC file
3) the manner in which ABC outputs the chord 

1) is dependent on the program: there is NOTHING to stop MacTune, or
whatever the program happens to be called, defining its own chord entry
format (as MUSE has), or even multiple dialects of same for German users
who prefer - for minor, etc. For straight text entry of ABC files, this
format is equivalent to 2). For other methods, it need not be, BUT the
program must convert to 2) when it exports to ABC.

2) is what goes in the ABC standard. IMHO there should be precisely one of
of these, and it really doesn't matter what it is as long as it's 
clearly defined and reasonably easy to enter with a text editor. We
don't allow H for Bnatural in ABC, nor should we allow multiple ways
of specifying 'minor'.
As to how comprehensive it should be, that appears to be where we're arguing: 
my opinion is it should be able to handle any cenventionbally accepted chord
type we can come up with, preferably using one of its conventional names.
(By which I do not mean we should (say) allow both Aaug and A+, but that we
should pick one consistent naming convention from those available and stick
to it.)
NOTE: format 2) is COMPLETELY independent of the program in use: it's an
aspect of the definition of the ABC language, nothing more.

3) is actually dependant on what the ABC-to-whatever program is trying to
produce. If it's ABC2MIDI, then it's parsing the chord to a set of
notes. if it's an abc2ps variant, then it's printing the chord name,
*quite* *possibly* in a manner specified by the user with command line
ot program-specific directives. over/under the music, it can look it
up in a dictionary of guitar chord boxes, or programmatically work
out a set of fingerings for cittern tuned DGDAD, etc etc etc. It can
do any and/or all of the above and more, provided that the format in 2)
is rich enough to allow it to draw out the necessary information.

The point is, these are three different issues, and the key one, *IF* we
think that it is a needed feature of the language, is that the chord naming
in *ABC* be rich enough to support the needs of the programs that read it
and generate output from it.

 The problem with the present staff display options for chords in ABC is
 that are driven by their crappy ASCII approximations.  Using a "b" for
 a flat in the staff notation looks amateurish, but the present design
 encourages implementers to do exactly that by just printing the user's
 ABC notation for the chord verbatim.  A design that decouples input
 notation from displayed notation would avoid that mistake.  (The only
 occasion I can think of when displaying flats and sharps in ASCII would
 have any positive benefit is when generating a chord chart in Braille
 for a blind guitarist).

Or perhaps for fast creation of a lead sheet (words plus chord) for import
into a wordprocessor or song database (I'd find abc2leadhseet handy sometime -
my songbook is moving over to ABC)
-- 
Mike Whitaker | Work: +44 1733 766619 | Work: [EMAIL PROTECTED]
System Architext  | Fax:  +44 1733 348287 | Home: [EMAIL PROTECTED]
CricInfo Ltd  | GSM:  +44 7971 977375 | Web: http://www.cricinfo.com/
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html



Re: [abcusers] Chord notation

2001-02-24 Thread Frank Nordberg



Mike Whitaker wrote:
...
 
 As far as I see it, if we *want* abc to require a standard for chord names,
 we have three choices:
 
 1) don't
 2) pick one and stick with it, either by democratic vote or the old "I wrote
 the code so I get to choose" argument *grin*
 3) allow chord 'dialects' so that folks who do it different ways can load up
 the dialect they're used to with a %% directive.

An important point here: this entire discussion has been about
establishing a standard for how abc *playback* programs that tries to
interpret chord symbols. ABC viewers and players that do not add
automatic accompagniment shouldn't be affected at all.

If we want to introduce such a standard at all, we have to find one that is:
   a) consequent
   b) as simply defined as possible
   c) able to express any combination of notes
   d) as close as possible to common chord notation

There are definitely some conflicts between those four requirements, but
we can handle that.

I think the main problem is notating chord note alterations. I've been
advocating the use of + and - rather than # and b because that
simplifies the definition considerably.

Example:
The chord C E G Bb D
is notated:
C9

If we want to sharpen the 9th, we can just add a + in front of it:
C+9

That simply won't work with the #/b system. C#9 is a completely
different chord. The usual solution is to add a 7:
C7#9
That's fair enough, of course, but it requires slightly more complex
rules for the poor computer.

In my first posting to this discussion I simply said that the idea was
impossible. I still think it is. That is, it's impossible to define a
set of rules that covers all the major systems for notating chords.
But we don't have to do that. We can just define one particular system
and say "this is what ABC uses".

Then of course we have to allow for local definitons to override the
defaults, such as adding the header field

c: c- = Cm

or

c: c- = [C_EG]

causes the chord "c-" to be interpreted as c minor in that particular tune.

I'm sure there'll be hot debates about the exact syntax for this ;-) but
the general principles shouldn't be too controvertial, should it?


Frank Nordberg

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



Re: [abcusers] Chord notation

2001-02-24 Thread Mike Whitaker

On Sat, Feb 24, 2001 at 05:34:23PM +0100, Frank Nordberg wrote:
 Example:
 The chord C E G Bb D
 is notated:
 C9
 
 If we want to sharpen the 9th, we can just add a + in front of it:
 C+9

I will repeat, for about the fifth time, that I and many others would
read thatr as CADD9, C E G D. +/- 

 That simply won't work with the #/b system. C#9 is a completely
 different chord. The usual solution is to add a 7:
 C7#9

Or to use brackets, which disambiguate nicely.
C(#9).

 That's fair enough, of course, but it requires slightly more complex
 rules for the poor computer.

You'll find my parser handles C#9 and C(#9) correctly.
It's not hard.
-- 
Mike Whitaker | Work: +44 1733 766619 | Work: [EMAIL PROTECTED]
System Architext  | Fax:  +44 1733 348287 | Home: [EMAIL PROTECTED]
CricInfo Ltd  | GSM:  +44 7971 977375 | Web: http://www.cricinfo.com/
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html



Re: [abcusers] Chord notation

2001-02-24 Thread Mike Whitaker

On Sat, Feb 24, 2001 at 05:34:23PM +0100, Frank Nordberg wrote:
 Example:
 The chord C E G Bb D
 is notated:
 C9
 
 If we want to sharpen the 9th, we can just add a + in front of it:
 C+9

I';d further note that I just showed my wife this mail, without
any prompting bar 'what's that chord' and her reaction (she's a 
keys player) was "C augmented 9th", i.e C E *G#* Bb D".

Can we just abandon the idea of "+" and "-", please? It is TOO ambiguous, 
as I keep saying. There are no problems with # and b that cannot demonstrably
be resolved with judicious use of brackets.

From my test harness for parsechord:

mike@andor:~$ ./parsechord 'C(#9)' 
C E G Bb D#
mike@andor:~$ ./parsechord 'C#9'
C# E# G# B D#
mike@andor:~$ ./parsechord 'Caug9'
C E G# Bb D 
-- 
Mike Whitaker | Work: +44 1733 766619 | Work: [EMAIL PROTECTED]
System Architext  | Fax:  +44 1733 348287 | Home: [EMAIL PROTECTED]
CricInfo Ltd  | GSM:  +44 7971 977375 | Web: http://www.cricinfo.com/
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html



[abcusers] Proposal for (simple) ending syntax

2001-02-24 Thread John Chambers

While the great chord debate rages on, I thought I'd  toss  out  what
I've  implemented  in  my  abc2ps  clone  for  handling more kinds of
endings and repeats than the rather limited ABC 1.6 allows.

This isn't a solution to all the  world's  repeat  problems.   It  is
merely  something that is 1) very easy to implement and 2) covers 90%
of what is needed.

The current standard only allows first and second endings. It uses [1
and  [2,  where  the [ may be omitted after a |, and there may be a :
before or after a |. The abbreviation :: may be used for :|:, i.e., a
combined end-repeat and start-repeat in the middle of a staff.

The limitations here are that only twice-through repeats are possible
using either of the notations:

   |: ... :|
   |: ... |[1 ... :|[2 ... ||

What I propose is that the new standard allow:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1.  An alternate ending is indicated by [ immediately followed  by  a
string of digits, hyphens and commas. If the [ follows a bar line, it
may be omitted.  It is expected that these define a sequence 1..N, in
the same fashion as standard music notation, to indicate playing the
phrase N times with two or more different endings..

2.  Multiple colons may be used before or after bar lines to mark the
ends of repeated sections.  These are used to indicate multiple times
through the passage, one extra time per colon.  If the  multi--ending
syntax  is  used, the extra colons may be omitted at the beginning of
the phrase (to go along with conventional music notation).   Multiple
colons  may  be used to indicate multiple repeats without differences
in the endings.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The new standard might also include the statement that  endings  need
not  start  at  bar  lines; i.e., it is legal to use [ to indicate an
ending that is a  partial  measure.   This  is  legal  with  the  old
standard,  of course, but it often doesn't work, because implementors
aren't familiar with the usage.

Some examples of repeated phrases, where ... stands for the notes:

A phrase played three times:
   |:: ... ::|

A phrase played four times, with alternating endings:
   |:   ... | ... |1,3  ... :|2,4  ... :|
   |::: ... | ... |1,3  ... :|2,4  ... :|
   |:   ... | ... |[1,3 ... :|[2,4 ... :|
   |::: ... | ... |[1,3 ... :|[2,4 ... :|
These are equivalent.  The extra colons are useful  for  readability,
but aren't needed because the 1,3 and 2,4 give the same information.

A phrase played four times, with three different endings:
   |: ... | ... |1,3 ... :|2 ... :|4 ... ||

A phrase played four times, with a different ending the fourth time:
   |::: ... | ... |[1-3 ... ::|[4 ... ||
The extra colons may be omitted with no loss of meaning.

A phrase played three times with partial-measure endings:
   |: ... | ... | ... [1 ... :[2 ... :[3 ... ||

Many musicians are not familiar with the multi-colon  notation.   But
dance  musicians  usually  know  it very well, and like it because it
makes the music easier to read.  It's another "standard" that is  not
implemented by all ABC software due to lack of familiarity.

I'd rather not see this degenerate into a discussion of how to notate
all  the  possible repeat patterns.  Granted, this isn't a completely
general solution to all the world's problems. But it's something that
handles  most  of  the common repeat patterns, and can be implemented
very quickly.  Then we  can  discuss  how  best  to  handle  all  the
remaining cases.

I have a growing number of tunes in  my  collection  that  use  these
extensions ...

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