I hereby request your feedback on the 4th revision
of the ABC draft standard:
http://www.joods.nl/~chazzanut/abc/abc2-draft.html

1] Since the semantics of the %%staves directive now
differ quite a lot from the original, I decided to
rename it to %%score. This way, old code cannot be
confused with new code. The %%score directive has now
support for floating voices, and by default won't
connect the bar lines between staves:

<<
Basic syntax:

%%score <voice-id1> <voice-id2> ... <voice-idn>


The score directive specifies which voices should be
printed in the score and how they should be grouped on
the staves.

Voices that are enclosed by parentheses '()', will go
on one staff. Together they form a voice group. A voice
that is not enclosed by parentheses forms a voice group
on its own, that will be printed on a separate staff.

If voice groups are enclosed by brackets '[]', the
corresponding staves will be connected by a big bracket
printed in front of the staves. Together they form a
voice block.

If voice groups are enclosed by curly braces '{}', the
corresponding staves will be connected by a big curly
brace printed in front of the staves. Together they
form a voice block. This format is used especially for
typesetting keyboard music.

If voice blocks, or voice groups are separated from
each other by a '|' character, continued bar lines will
be drawn between the associated staves.

Example:

%%score Solo  [(S A) (T B)]  {RH | (LH1 LH2)}


If a single voice, surrounded by two voice groups, is
preceded by a star (*), the voice is marked to be
floating. This means, that the voice won't be printed
on it's own staff; rather the software should
automatically determine for each note of the voice,
whether it should be printed on the preceding staff or
on the following staff.

Software that does not support floating voices, may
simply print the voice on the preceding staff, as if it
were part of the preceding voice group.

Examples:

%%score {RH *M| LH}
%%score {(RH1 RH2) *M| (LH1 LH2)}


Voices that appear in the tune body, but not in the
score directive, won't be printed.

When the score directive occurs within the tune body,
it resets the music generator, so that voices may
appear and disappear for some period of time.

If no score directive is used, all voices that appear
in the tune body are printed on separate staves.
>>

2] Since barFly and abcMIDI interpret the %%MIDI
program directive differently, and there was no support
yet for MIDI banks in the proposed standard, I decided
to replace this directive with a new one called %%MIDI
voice:

<<
%%MIDI voice [<ID>] [instrument=<integer> [bank=<integer>]] [mute]

Assigns a MIDI instrument to the indicated ABC voice.
The MIDI instruments are organized in banks of 128
instruments each. Both the instruments and the banks
are numbered starting from one.

The General MIDI (GM) standard defines a portable,
numbered set of 128 instruments; these are listed in
section General MIDI Instruments. The GM instruments
can be used by selecting bank one. Since the contents
of the other MIDI banks is platform dependent, it is
highly recommended to only use the first MIDI bank in
tunes that are to be distributed.

The default bank number is one.

Example:

%%MIDI voice Tb instrument=59

assigns GM instrument 59 (tuba) to voice 'Tb'.

If the voice ID is ommited, the instrument is assigned
to the current voice:

M:C
L:1/8
Q:1/4=66
K:C
V:Rueckpos
%%MIDI voice instrument=53 bank=2
A3B    c2c2    |d2e2    de/f/P^c3/d/|d8    |z8         |
V:Organo
%%MIDI voice instrument=73 bank=2
z2E2-  E2AG    |F2E2    F2E2        |F6  F2|E2CD E3F/G/|


You can use the keyword mute to mute the specified
voice.

Some ABC players can automatically generate an
accompaniment based on the chord symbols specified in
the melody line. To suggest a GM instrument for playing
this accompaniment, use the following directive:

%%MIDI chordprog 20 % Church organ
>>

3] I made clear what to do if there are spaces before
a hyphen in the lyrics line:
<<
w: syll-a--ble   is aligned with four notes
w: syll-a -ble   (equivalent to the previous line)
>>

4] I clearified the placement rules for annotations

5] I introduced the datatype "ABC string" and clearly
indicated throughout the document which ABC constructs
accept such a string. The definition of "ABC string"
appears at the bottom of the standard:

<<
8.2. ABC string
The contents of ABC strings may be written using any
character set. The default ABC string character set is
Latin-1, which is convenient since it is also the
default used in webpages. If you would like to use a
different character set, such as utf-8, you may find
more information in section Charset field.

To write non-English characters in ABC strings, special
sequences of characters should be used to avoid
portability problems. These sequences start with a
backslash (\), followed by an accent and a letter.

accent          example         how to write it
-----------------------------------------------

grave                       \`A \`a \`e \`o
acute                       \'A \'a \'e \'o
circumflex                  \^A \^a \^e \^o
umlaut                      \"A \"a \"e \"o
tilde                       \~A \~a \~n \~o
cedilla                     \,C \,c
slash                       \/O \/o
ring                        \oA \oa
ligature                    \ss \AE \ae

To get an actual backslash, type \\.

To typeset a macron on a letter x, type \=x. To typeset
an ogonek, type \;x. To typeset a caron, type \vx. To
typeset a breve, type \ux. To typeset a long Hungarian
umlaut, type \:x. Finally, to typeset a dotted letter,
type \.x.

Programs that have difficulty typesetting accented
letters may reduce them to the base letter. \"y can be
reduced to y, \oA can be reduced to A, etc. Ligatures
can be reduced by simply ignoring the backslash: \ss
becomes ss, \AE becomes AE, etc.

There is a Full table of accented letters in the
appendix.

Characters may also be coded by typing \d followed by
the decimal code of the character, followed by a
semicolon. The meaning of these codes depends on the
character set used. Some examples for the default
Latin-1 charset: \d163; = , \d161; =  and \d191; = .

Furthermore, a number of special symbols can be used in
ABC strings. To typeset the international copyright
symbol, write (C). To typeset a flat sign, write (b).
To typeset a sharp sign, write (#).

The specifiers $1, $2, $3 and $4 can be used to change
the font within an ABC string. The fonts to be used can
be indicated with the %%setfont-n stylesheet directive.
$0 resets the font to its default value. $$ gives an
actual dollar sign. See section Font Settings for full
details.

Examples:

%%abc-copyright (C) Fr\'ed\'erique M\"oller
"^A((#))" (^)A
w: Will~ye come to the $3Wa-x-ies$0 dar-gle?
>>

6] I adopted David's namespace scheme for %%-directives
and for clef line specifiers.

<<
Applications may introduce their own clef line
specifiers. These specifiers should start with the name
of the application, followed a colon, folowed by the
name of the specifier.

Example:

V:p1 perc stafflines=3 m=C  mozart:noteC=snare-drum
>>
Similar for directives.


 Groeten,
 Irwin Oppenheim
 [EMAIL PROTECTED]
 ~~~*

 Chazzanut Online:
 http://www.joods.nl/~chazzanut/
To subscribe/unsubscribe, point your browser to: http://www.tullochgorm.com/lists.html

Reply via email to