Alain Henry wrote: | X:1 | T:Signore delle cime - basse | M:4/4 | L:1/4 | Q:100 | K:G clef=bass octave=-1 | G2 G G | F2 F3/2 F/2 | E E E E | B,2 B,2 | C2 D D | | w: Di-o del cie-lo, Si-tgno-re del-le ci-me, un no stroa | G2 G F | A, A, A, A, | B,2 B,2 | E2 E E | A,2 A,2| | w: mi-co hal chie-stoal-la mon-ta-gna. Ma Ti pre-ghia-mo, | F2 F F | B,2 (B, A,) | G G E E | B,2 B,2 | C C D D | G2 G2 | | w: ma ti pre-ghia-mo:_ su nel pa-ra-di-so, su nel pa-ra-di-so | C2 C C | B,2 E2 | C C D D | D4 | (G,4 | G,2) z2 | | w: la-seia-loan-da-re per le tue mon-ta_-gne._
I've seen that "octave=-1" notation, but I haven't implemented it, because I don't understand it. Anyone know what it means, and what programs implement it? Several discussions here have led to the conclusion that, for music formatters, the best way to indicate octaves is the "middle=" clause, which several programs now implement (and some allow the abbreviation "m="). This says which abc note maps to the middle line of the staff. >From the fact that the above uses no lower-case letters and does use single commas, I'd guess that the intended notation is "middle=D". The reason that "octave=-1" is confusing is that it's dealing with pitch, and music notation doesn't have pitch. Notation has vertical position on a staff, but that's not at all the same thing, and the two are often quite independent. The bass clef is routinely used for instruments that sound in at least three different octaves. So specifying the octave is useful to an abc player, but it's not useful to a formatter. The formatter needs to know the mapping of abc notes to staff positions, not the mapping of abc notes to octaves. Saying "clef=bass" usually means that the middle staff line is a D, but in abc terms, it could be "d", "D" or "D,". All three are reasonable for some bass parts. Much of the confusion in the past has been because discussions often go into the areas of pitch and transposition. This leads to terminology that is confusing for people writing music formatters. People try to make sense of it, but they have different (mis)understandings of the words. The best way to clear it up is to observe that notation doesn't have pitch, and pitch-related terms are only for players, not formatters. A formatter is only concerned with where a note appears on the staff (or on the instrument, for tablature). The most useful abc notation would then deal separately with the pitch and position information, and use different notation for each. My inference is that "octave=-1" is aimed at abc players. It's likely based on the concept that abc notes have absolute pitch, soprano/alto in this case. So the "octave=-1" is instruction to a player to play them an octave lower than the treble pitch. You'd think that the "clef=bass" would imply this, but stating the octave would still be useful, because of the different octaves used by bass instruments. If this guess is right, then the above contains a useful hint for an abc player, but no information for an abc formatter. I've experimented a bit (in my jcabc2ps clone) with code that guesses the mapping (abc note => staff position) if it isn't stated. The above sample turns out to be a useful example of why this is unreliable. This part has a range of "G," to "G". So as a vocal part, it looks like it's written with D mapped to the middle line of the bass staff. This could be guessed by counting abc octaves, and noting that there are "," notes but no lower-case notes. So guessing "middle=D" would put most of the notes on the staff. But if this were the bass half of a piano part, this would probably be wrong. In the common piano notation for "bass-chord" accompaniment it would be normal for bass notes to be below the staff and chords to be on the top part of the staff, giving "middle=d" as the correct mapping. Even without chords, you sometimes see piano bass parts that are mostly below the staff. The program might infer that this is a vocal part from the presence of "w:" lines. But now the heuristic code is getting a bit complex, and when it fails (as it must part of the time), it would lead to much user bafflement. Of course, I'm doing this mostly for use in my abc tune finder, whose job is to try to do something sensible with the abc that it finds on other people's web sites. No sensible user would expect it to guess right all the time, considering the sloppy stuff Out There that passes for abc. Sometimes you just have to download the abc, edit it by hand, and format it locally. This will probably be true long after all of us have passed on to that great session in the sky. So it's not that big a deal. Still, it would be nice to get it right most of the time. In this case, I can't yet, because I can't write code to handle notation that I don't understand. And it may be that the "octave=-1" isn't even intended for use by formatters, in which case a heuristic is the only sensible approach. That plus pleading with people to use both octave= and middle= clauses with their clefs. This is getting a bit long ... To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html