back to list

microabc with support for Sagittal Notation System

🔗Hudson Lacerda <hfmlacerda@...>

7/3/2006 12:45:07 PM

Hello all.

I just uploaded the latest microabc:
http://br.geocities.com/hfmlacerda/abc/microabc-2006-07-03.zip

This new version has a significant new feature: it can preprocess pitches represented in Sagittal (ASCII), converting them to ABC pitches for abc2midi or abcm2ps. It can be used to notate microtonal music in just intonation as well as in equal/linear temperaments.

I would like to ask any interested people to help me with testings. I can provide some additional examples and answer questions on how to compile and use microabc (and abc2midi/abcmp2s, if needed).

The music can be written like this:

X:1
%%MIDI program 21
Q:1/4=126
K:C
[C][D][E\][F^] [G][Bbt][D1][E\1] | [C1][Bbt][G][F^] [G]4 |
[C][D][E\][F^] [G][Bbt][A\][G] | [C1][Bbt][D][E\] [C]4 |

Some testing options could be:
- JI with pithbends in cents (denominator 100):
microabc -i- -pinput.abp den:100 > output.abc
abc2midi output.abc
- 12-ET with pitchbend in cents, quantized:
microabc -i- -pinput.abp equaltemp:12 den:100 > output.abc
abc2midi output.abc
- 12-ET with pitchbend in cents:
microabc -i- -pinput.abp equaltemp:12 den:100 > output.abc
abc2midi output.abc
- Score (-P):
microabc -i- -Pinput.abp > output.abc
abcm2ps output.abc
See also inside examples/sagittal folder.

I would like still to ask anyone with a C compiler to build and publish executable binary files (microabc is distributed under GNU GPL), so that more people can use it. I release only the source code, but I can provide an executable for GNU/Linux i386 on request (however, GNU/Linux systems usually have a C compiler, and that is why I don't include any executable binaries).

http://br.geocities.com/hfmlacerda/index.html#microabc
http://br.geocities.com/hfmlacerda/abc/microabc.html
http://br.geocities.com/hfmlacerda/abc/microabc-2006-07-03.zip
http://br.geocities.com/hfmlacerda/abc/microabc-Changes.txt

Many thanks and best regards,
Hudson Lacerda

MICROABC
Hudson Lacerda (2006)

==INTRODUCTION==

microabc is a free software which generates macros to represent
microtonal music in ABC notation. It is intended for use along the
preprocessor abcpp, although it contains a simple built-in
preprocessor, able to convert delimited macros and to provide support
for Sagittal Notation System. The preprocessed ABC code is suitable
for abcm2ps and/or abcMIDI. Other related tools are scala and
timidity++ (for the programs refered to, see links below, at the end
of this file).

The program reads commands and data, and outputs a list of macro
definitions. Macro replacements can be: chromatic, diatonic,
microtonal or literal.

Chromatic and diatonic modes are useful to generate MIDI files to be
re-tuned with the program scala or played by timidity++. They can also
be used to generate a mapping for standard staff notation
(tablature-wise approach).

Microtonal mode computes pitch quantisation in semitone fractions
relative to the standard equal temperament (quarter-tones,
eighth-tones, integer cents, etc.), using microtonal ABC accidentals
for abc2midi or abcm2ps.

Literal mode uses given replacement text strings.

The command line options -p and -P preprocess a given file, replacing
defined macros and pitches in Sagittal Notation System. All macros and
Sagittal pitches must be enclosed between delimiters, like in
[C#'/|:2].

There are also commands to generate equal and linear temperaments, to
import/export scala tuning files (*.scl) and to write into a file a
list of frequencies for use by timidity++.

microabc is released under the GNU General Public License (GNU GPL)
<http://www.gnu.org/copyleft/gpl.html>, and it is available at
<http://br.geocities.com/hfmlacerda/index.html#microabc>.

Software you probably will need:
- abcpp-1.3.2 (or newer)
- abcm2ps-4.3.2 (or newer)
- abcMIDI-2006-01-31 (or newer)

Due to the large number of macros normally needed for microtonal
notation, it is strongly recommended to compile abcpp with enough room
for macros. For abcpp version 1.3.2, change the line 43 of `abcpp.c'
to something like this:

#define MAX_MACROS 512 /* # of #defined macros */

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

==USAGE==

By default, the program reads from stdin and prints to stdout:

microabc < inputfile > outputfile

The option -h shows a short info and then exits:

microabc -h

There are options -i and -o for input and output files respectively,
but one cannot put spaces before filenames:

microabc -iinputfile -ooutputfile

The option -i- is to get no input at all from file or stdin -- all
options should be given from command line.

microabc includes a basic preprocessor, which can be used with the
option -p or -P followed by the name of the .abp file to preprocess
(ABC music file with macros). When -p or -P is used, -o defines the
ABC file to store the result of the preprocessing. Macros defined via
`echo:', as well as postscript commands (`abcm2ps:', `psacc:'), when
used, are written to output file above the preprocessed stuff. Macros
must have both left and right delimiters.

Option -p converts all Sagittal pitches to ABC microtone accidentals
(representing pitchbends), to render MIDI output with abc2midi.

microabc -iinputfile -pabpfile -oabcfile4midi

Option -P converts all Sagittal pitches to ABC microtone accidentals
representing Sagittal character code, to render PS output. To get the
score, a format file defining the Sagittal microtonal accidentals is
required. It can be `sagittal.fmt' or `sagittal-pfb.fmt'. To get the
accidentals in mixed-symbol format, use also `sagittal-mixed.fmt'. To
know how to use format files (.fmt), see the documentation of abcm2ps.

microabc -iinputfile -Pabpfile -oabcfile4ps

Additional microabc commands can be given like in these examples:

microabc centre:62 < inputfile > outputfile
microabc range:-6\ 6 -iinputfile -ooutputfile
microabc name:_ABCM2PS_ abcm2ps:4 -iinputfile -ooutputfile

Command line options override the corresponding values got from
inputfile.

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

== SAGITTAL PITCHES ==

The command line options -p and -P tell to microabc preprocess a file,
replacing Sagittal pitches. The scale can be set with `equaltemp:' or
`lineartemp:'. By default, the Sagittal pitches are interpreted as
being in just intonation.

microabc can process Sagittal pitches according to these rules:

-- pitches need to be enclosed between brackets [ and ] (or another
pair of user defined delimiters -- see `delim:').

[C] [A] [Ev] [B^]

-- pitches must have a nominal; nominals can be A-G (only capital
letters).

[A] [B] [C] [D] [E] [F] [G]

-- Sagittal accidentals can be given in any of these ASCII formats:
long-pure, short-pure, long-mixed, short-mixed. Accidental can be
placed after or before the nominal.

[A/||\] [A#] [#A] [/||\A] [A#\] [\#A]

NOTE: Mixed things like [#\A] or [A\#] may work, by they are not
recommended. Use [A#\] or [\#A] instead.

-- Additionally, a Sagittal accidental can be given as its decimal
code, at left of the nominal.

[144D] [144G] [144C]

-- Octave number can be indicated at right of nominal and accidental.
It can be preceded by `.' or `:' -- with no space between `.' or `:'
and the number.

[D0] [D.0] [D:0] [D1] [D2] [D.-1] [D:-2]

Currently, middle C is [C0] (or [C.0] or [C:0]) -- future versions of
microabc may change the numbering and let the user to define it.

NOTE: [Db-1] doesn't work properly yet. Please use [Db -1] (or
[Db:-1] or [Db.-1]) for Db in octave -1. Wilson's minus (-) is not
implemented yet, thus [Db-] cannot work.

-- Sagittal accents . and ' are parsed, but ignored when processing
Sagittal pitches.

[C'/|\..] [G']

Future releases will support accents for high-precision Sagittal.

-- Spaces can be used to separate the items (accidental, nominal and
octave).

[ C '/|\.. -1 ] [ 144 A 0 ]

-- There is yet another way to input Sagittal pitches: as microtonal
ABC notes, using the denominator as Sagittal code. Numerator is not
used.

^/<code><nominal> e.g. ^/148F or ^/144D
_/<code><nominal> e.g. _/80E or _/133A

NOTE: Pure ABC notes are not touched, then they will likely sound
wrong in MIDI (because nominals need to be adjusted to the tuning).

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



_______________________________________________________ Voc� quer respostas para suas perguntas? Ou voc� sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/

🔗c.m.bryan <chrismbryan@...>

7/3/2006 12:58:36 PM

This is really cool! IMO, despite the complexity of sagittal, if I
were a micro-illiterate performer, seeing beautiful accidentals on the
page would make me more intrigued to figure it out.

I'm curious, did you have to implement the sagittal accidentals
yourself? I'm a lilypond guy myself, and I would love to do something
similar for that...

Do you have any rendered samples of microabc output?

-Chris

On 7/3/06, Hudson Lacerda <hfmlacerda@...> wrote:
> Hello all.
>
> I just uploaded the latest microabc:
> http://br.geocities.com/hfmlacerda/abc/microabc-2006-07-03.zip
>
> This new version has a significant new feature: it can preprocess
> pitches represented in Sagittal (ASCII), converting them to ABC pitches
> for abc2midi or abcm2ps. It can be used to notate microtonal music in
> just intonation as well as in equal/linear temperaments.
>
> I would like to ask any interested people to help me with testings. I
> can provide some additional examples and answer questions on how to
> compile and use microabc (and abc2midi/abcmp2s, if needed).
>
> The music can be written like this:
>
> X:1
> %%MIDI program 21
> Q:1/4=126
> K:C
> [C][D][E\][F^] [G][Bbt][D1][E\1] | [C1][Bbt][G][F^] [G]4 |
> [C][D][E\][F^] [G][Bbt][A\][G] | [C1][Bbt][D][E\] [C]4 |
>
> Some testing options could be:
> - JI with pithbends in cents (denominator 100):
> microabc -i- -pinput.abp den:100 > output.abc
> abc2midi output.abc
> - 12-ET with pitchbend in cents, quantized:
> microabc -i- -pinput.abp equaltemp:12 den:100 > output.abc
> abc2midi output.abc
> - 12-ET with pitchbend in cents:
> microabc -i- -pinput.abp equaltemp:12 den:100 > output.abc
> abc2midi output.abc
> - Score (-P):
> microabc -i- -Pinput.abp > output.abc
> abcm2ps output.abc
> See also inside examples/sagittal folder.
>
> I would like still to ask anyone with a C compiler to build and publish
> executable binary files (microabc is distributed under GNU GPL), so that
> more people can use it. I release only the source code, but I can
> provide an executable for GNU/Linux i386 on request (however, GNU/Linux
> systems usually have a C compiler, and that is why I don't include any
> executable binaries).
>
> http://br.geocities.com/hfmlacerda/index.html#microabc
> http://br.geocities.com/hfmlacerda/abc/microabc.html
> http://br.geocities.com/hfmlacerda/abc/microabc-2006-07-03.zip
> http://br.geocities.com/hfmlacerda/abc/microabc-Changes.txt
>
> Many thanks and best regards,
> Hudson Lacerda
>
>
>
> MICROABC
> Hudson Lacerda (2006)
>
> ==INTRODUCTION==
>
> microabc is a free software which generates macros to represent
> microtonal music in ABC notation. It is intended for use along the
> preprocessor abcpp, although it contains a simple built-in
> preprocessor, able to convert delimited macros and to provide support
> for Sagittal Notation System. The preprocessed ABC code is suitable
> for abcm2ps and/or abcMIDI. Other related tools are scala and
> timidity++ (for the programs refered to, see links below, at the end
> of this file).
>
> The program reads commands and data, and outputs a list of macro
> definitions. Macro replacements can be: chromatic, diatonic,
> microtonal or literal.
>
> Chromatic and diatonic modes are useful to generate MIDI files to be
> re-tuned with the program scala or played by timidity++. They can also
> be used to generate a mapping for standard staff notation
> (tablature-wise approach).
>
> Microtonal mode computes pitch quantisation in semitone fractions
> relative to the standard equal temperament (quarter-tones,
> eighth-tones, integer cents, etc.), using microtonal ABC accidentals
> for abc2midi or abcm2ps.
>
> Literal mode uses given replacement text strings.
>
> The command line options -p and -P preprocess a given file, replacing
> defined macros and pitches in Sagittal Notation System. All macros and
> Sagittal pitches must be enclosed between delimiters, like in
> [C#'/|:2].
>
> There are also commands to generate equal and linear temperaments, to
> import/export scala tuning files (*.scl) and to write into a file a
> list of frequencies for use by timidity++.
>
> microabc is released under the GNU General Public License (GNU GPL)
> <http://www.gnu.org/copyleft/gpl.html>, and it is available at
> <http://br.geocities.com/hfmlacerda/index.html#microabc>.
>
> Software you probably will need:
> - abcpp-1.3.2 (or newer)
> - abcm2ps-4.3.2 (or newer)
> - abcMIDI-2006-01-31 (or newer)
>
> Due to the large number of macros normally needed for microtonal
> notation, it is strongly recommended to compile abcpp with enough room
> for macros. For abcpp version 1.3.2, change the line 43 of `abcpp.c'
> to something like this:
>
> #define MAX_MACROS 512 /* # of #defined macros */
>
> --------------------------------------------------
>
> ==USAGE==
>
> By default, the program reads from stdin and prints to stdout:
>
> microabc < inputfile > outputfile
>
> The option -h shows a short info and then exits:
>
> microabc -h
>
> There are options -i and -o for input and output files respectively,
> but one cannot put spaces before filenames:
>
> microabc -iinputfile -ooutputfile
>
> The option -i- is to get no input at all from file or stdin -- all
> options should be given from command line.
>
> microabc includes a basic preprocessor, which can be used with the
> option -p or -P followed by the name of the .abp file to preprocess
> (ABC music file with macros). When -p or -P is used, -o defines the
> ABC file to store the result of the preprocessing. Macros defined via
> `echo:', as well as postscript commands (`abcm2ps:', `psacc:'), when
> used, are written to output file above the preprocessed stuff. Macros
> must have both left and right delimiters.
>
> Option -p converts all Sagittal pitches to ABC microtone accidentals
> (representing pitchbends), to render MIDI output with abc2midi.
>
> microabc -iinputfile -pabpfile -oabcfile4midi
>
> Option -P converts all Sagittal pitches to ABC microtone accidentals
> representing Sagittal character code, to render PS output. To get the
> score, a format file defining the Sagittal microtonal accidentals is
> required. It can be `sagittal.fmt' or `sagittal-pfb.fmt'. To get the
> accidentals in mixed-symbol format, use also `sagittal-mixed.fmt'. To
> know how to use format files (.fmt), see the documentation of abcm2ps.
>
> microabc -iinputfile -Pabpfile -oabcfile4ps
>
> Additional microabc commands can be given like in these examples:
>
> microabc centre:62 < inputfile > outputfile
> microabc range:-6\ 6 -iinputfile -ooutputfile
> microabc name:_ABCM2PS_ abcm2ps:4 -iinputfile -ooutputfile
>
> Command line options override the corresponding values got from
> inputfile.
>
> --------------------------------------------------
>
> == SAGITTAL PITCHES ==
>
> The command line options -p and -P tell to microabc preprocess a file,
> replacing Sagittal pitches. The scale can be set with `equaltemp:' or
> `lineartemp:'. By default, the Sagittal pitches are interpreted as
> being in just intonation.
>
> microabc can process Sagittal pitches according to these rules:
>
> -- pitches need to be enclosed between brackets [ and ] (or another
> pair of user defined delimiters -- see `delim:').
>
> [C] [A] [Ev] [B^]
>
> -- pitches must have a nominal; nominals can be A-G (only capital
> letters).
>
> [A] [B] [C] [D] [E] [F] [G]
>
> -- Sagittal accidentals can be given in any of these ASCII formats:
> long-pure, short-pure, long-mixed, short-mixed. Accidental can be
> placed after or before the nominal.
>
> [A/||\] [A#] [#A] [/||\A] [A#\] [\#A]
>
> NOTE: Mixed things like [#\A] or [A\#] may work, by they are not
> recommended. Use [A#\] or [\#A] instead.
>
> -- Additionally, a Sagittal accidental can be given as its decimal
> code, at left of the nominal.
>
> [144D] [144G] [144C]
>
> -- Octave number can be indicated at right of nominal and accidental.
> It can be preceded by `.' or `:' -- with no space between `.' or `:'
> and the number.
>
> [D0] [D.0] [D:0] [D1] [D2] [D.-1] [D:-2]
>
> Currently, middle C is [C0] (or [C.0] or [C:0]) -- future versions of
> microabc may change the numbering and let the user to define it.
>
> NOTE: [Db-1] doesn't work properly yet. Please use [Db -1] (or
> [Db:-1] or [Db.-1]) for Db in octave -1. Wilson's minus (-) is not
> implemented yet, thus [Db-] cannot work.
>
> -- Sagittal accents . and ' are parsed, but ignored when processing
> Sagittal pitches.
>
> [C'/|\..] [G']
>
> Future releases will support accents for high-precision Sagittal.
>
> -- Spaces can be used to separate the items (accidental, nominal and
> octave).
>
> [ C '/|\.. -1 ] [ 144 A 0 ]
>
> -- There is yet another way to input Sagittal pitches: as microtonal
> ABC notes, using the denominator as Sagittal code. Numerator is not
> used.
>
> ^/<code><nominal> e.g. ^/148F or ^/144D
> _/<code><nominal> e.g. _/80E or _/133A
>
> NOTE: Pure ABC notes are not touched, then they will likely sound
> wrong in MIDI (because nominals need to be adjusted to the tuning).
>
> --------------------------------------------------
>
>
>
>
>
>
>
>
> _______________________________________________________
> Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
> http://br.answers.yahoo.com/
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>

--
"... free speech is meaningless if the commercial cacophony has risen
to the point that no one can hear you." -Naomi Klein

🔗Hudson Lacerda <hfmlacerda@...>

7/3/2006 3:05:25 PM

c.m.bryan escreveu:
> This is really cool! IMO, despite the complexity of sagittal, if I
> were a micro-illiterate performer, seeing beautiful accidentals on the
> page would make me more intrigued to figure it out.
> > I'm curious, did you have to implement the sagittal accidentals
> yourself? I'm a lilypond guy myself, and I would love to do something
> similar for that...
> > Do you have any rendered samples of microabc output?
> > -Chris

Hi Chris.

Thanks for the interest.

With help of Dave Keenan, I could create a PostScript Type 3 version of Sagittal-2.0d8 font and embed it in a .fmt file so that abcm2ps can use the glyphs as user-defined accidentals. Yet better: one can install a PostScript Type 1 font to render high quality PDF files with GhostScript.

Maybe you can insert ``text'' in Sagittal font at left of note heads in LilyPond. Does Lilypond use PostScript fonts? If not, I could send you the Sagittal font as a TeX font, though I don't know how to deal with it.

Dave Keenan and George Secor kindly have helped me on several aspects of Sagittal System, which I need to know to implement Sagittal support in microabc. Thanks to both.

microabc package includes several examples of microtonal rendering. For Sagittal, there are still only a few examples, but you can have a look at these sample files online:

http://br.geocities.com/hfmlacerda/abc/sagittal.pdf
http://br.geocities.com/hfmlacerda/abc/sagittal.mid

In the package, the example above is quantized to all EDOs from 7 up to 99 (MIDI files). (Some forms are not recommended in Sagittal System -- future releases will print warnings when non-preferred notations are used.)

Here are the lists of Sagittal accidentals, in pure and mixed forms, made with abcm2ps:
http://br.geocities.com/hfmlacerda/abc/sagittal-list.pdf
http://br.geocities.com/hfmlacerda/abc/sagittal-list-mixed.pdf

Regards,
Hudson Lacerda

> > > > > On 7/3/06, Hudson Lacerda <hfmlacerda@...> wrote:
> >>Hello all.
>>
>>I just uploaded the latest microabc:
>>http://br.geocities.com/hfmlacerda/abc/microabc-2006-07-03.zip
>>
>>This new version has a significant new feature: it can preprocess
>>pitches represented in Sagittal (ASCII), converting them to ABC pitches
>>for abc2midi or abcm2ps. It can be used to notate microtonal music in
>>just intonation as well as in equal/linear temperaments.
>>
>>I would like to ask any interested people to help me with testings. I
>>can provide some additional examples and answer questions on how to
>>compile and use microabc (and abc2midi/abcmp2s, if needed).


_______________________________________________________ Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! http://br.mobile.yahoo.com/mailalertas/

🔗Hudson Lacerda <hfmlacerda@...>

7/3/2006 3:12:33 PM

Hudson Lacerda escreveu:
> With help of Dave Keenan, I could create a PostScript Type 3 version of > Sagittal-2.0d8 font Just to be clear: I could *convert* the Sagittal font made by Dave Keenan, creating a PS version.


_______________________________________________________ Yahoo! Acesso Gr�tis - Internet r�pida e gr�tis. Instale o discador agora! http://br.acesso.yahoo.com