back to list

microabc with support for Sagittal Notation System

🔗Hudson Lacerda <hfmlacerda@yahoo.com.br>

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/