back to list

Documentation/FAQ project for microabc?

🔗Margo Schulter <mschulter@...>

7/7/2006 3:17:12 PM

Hello, Hudson and everyone, and I'd like to suggest a cooperative project
to add more documentation and a FAQ, or the like, to the new microabc
release.

I realize that such a project, like software development itself, is helped
by lots of dialogue and feedback from users, who have a talent for
originality in interpretations of the documentation <grin>.

What I'd like to offer to do, through private e-mail or possibly in part
here, is to try doing some things in microabc like a sagittal mapping for
the Peppermint 24 tuning (which might call for some notation macros plus a
tuning definition like that in Scala. I might guess that 'scl' and 'skip'
are relevant, but am not sure how to use them in an actual file, whether
or not I'd need to run microabc or abcpp, etc.

I must admit that I'm the kind of user, the less efficient kind, where a
syntax statement of "usage" often leaves me rather confused, but a few
illustrative examples, typically moving from simple to more involved, can
get me nicely oriented.

A bit more than 3 years ago, George Secor and Dave Keenan helped me devise
a pure sagittal notation for Peppermint based more or less on 121-EDO. I
know which symbol I'd like to make with which of the 24 notes, and have
written down some decimal character mappings -- which I note from your
documentation might also sometimes be written in PostScript octal
notation.

Anyway, as a Scala user, the idea of just mapping the set of pitches I
plan to use to a set of floating point ratios in cents for midi pitch
bends or timidity tuning tables, and defining macros for the sagittal
notation of each note, very much appeals to me.

I'm going to look over the examples again and see if I can figure out more
for myself -- but I'd love to help in writing more documentation, maybe in
part by trying some simple projects with sagittal notation in tunings that
I often use and cooperating with you to put together some examples and
step by step procedures.

One thing I have found, for example with some of the GNU documentation, is
that a tutorial or patient explanation can very much smooth out the
learning curve. If I can help in any way, that would be a great privilege.

Peace and love, with many thanks,

Margo

🔗Hudson Lacerda <hfmlacerda@...>

7/7/2006 9:43:20 PM

Margo Schulter escreveu:
> Hello, Hudson and everyone, and I'd like to suggest a cooperative project
> to add more documentation and a FAQ, or the like, to the new microabc
> release.

What a wonderful suggestion!
Thanks a lot, Margo!

> > I realize that such a project, like software development itself, is helped
> by lots of dialogue and feedback from users, who have a talent for
> originality in interpretations of the documentation <grin>.

ahahahaha :-D

> > What I'd like to offer to do, through private e-mail or possibly in part
> here, is to try doing some things in microabc like a sagittal mapping for
> the Peppermint 24 tuning (which might call for some notation macros plus a
> tuning definition like that in Scala. I might guess that 'scl' and 'skip'
> are relevant, but am not sure how to use them in an actual file, whether
> or not I'd need to run microabc or abcpp, etc.

There are several ways to carry out the task, what just can make the thing confusing for the ``beginners'' and difficult to teach for the ``experts''. Each way has its strenghts and limitations. I am pretty sure that any actual instances you (or someone else) create can be very helpful for the documentation.

I should have more information on the scale to help you properly, but here is a trying:

You scale has 24 tones per octave, is that right? As it is a relativelly small number (you can get a range of 5 octaves and a 3rd using a simple chromatic mapping for MIDI), I suggest you either:

* generate and #include a .snt file in the ABC headers to insert Standard MIDI Tuning messages into the MIDI file (this requires abcpp --due to the #include directive-- and you need tell microabc what is the tuning);
or:
* retune the MIDI file with Scala (this can do without abcpp and without explicit definition of the tuning).

Of course, retuning the file with Scala is easier. Let us stick with this option. You just need to assure the correct correspondence name/pitch for Scala mapping and microabc macros.

For the score, you should know that currently microabc can only deal with just intonation and linear or equal temperaments when interpretating Sagittal pitches (like [C#\], [C^] or [144D.2]). Therefore, we need to use an alternate way:

You know that one can represent Sagittal accidentals in ABC (with sagittal.fmt) by using their decimal codes (see files `sagittal-list*'); for instance, natural is 144, thus ^/144D or _/144D stand for `D natural'; sharp is 196, thus ^/196A is `A sharp'; flat is 92, thus _/96B is `B flat'. Make a list of the 24 pitches that way.

Here are a few sample lines:

0 C ^/144C
1 Db _/92D
2 C# ^/196C
3 D ^/144D

* The first column is just an index to help check the scale. microabc can (must!) ignore this column.
* The second column will be converted into macros like [C], [Db] or [C#].
* The third column is the replacement string, only for the score: we want that [C] be converted into ^/144C; [Db] into _/92D and so on.
* We shall retune the MIDI file with Scala, so we don't need to set any tuning (except if we want to export a .scl file -- I guess that is not the case). But the replacement text should not be like ^/144D or so; it should be a ABC code for a common MIDI pitch, obeying the order of the lines. For instance, [C] could become =C (MIDI number 60); [Db] could become ^C (61), [C#] could become =D (62) and so on.

microabc numbers the columns starting from 0. Therefore, column 1 (2nd column) is for macro names, in microabc known as ``aliases''. The command for that is:

alias:1

Column 2 is used only for PS output (not for MIDI), therefore it is better activate it from command line, with the option:

replaceabc:2

(`replaceabc:' does the needed octave adjustments according to ABC syntax.)

Hence, our setup file (``pepper24.txt'') will look like this:

alias:1
0 C ^/144C
1 Db _/92D
2 C# ^/196C
3 D ^/144D
{...}
{...}

By default, microabc assumes that the central pitch is MIDI-60 (middle-C) and the output should be in ``chromatic mode'' (each scale pitch is mapped to a MIDI pitch); one can change that with the command `centre:' if needed.

By default, octaves in macros will be represented with ' and , . We are not using Sagittal accents (are we?), so this is just fine. C octave below is [C,], and C octave up is [C']. If you rather to use numbers, set `modnum:'. (There is a small limitation I can tell you later.)

Also by default, the range is from 0 up to 127 (or -60 up to +67 relative to the central pitch); one can change that with `range:'.

After writing the ``music.abp'' file (the music using macros), we can preprocess it to get a PS score -- recall we need `replaceabc:2':

microabc -ipepper24.txt -Pmusic.abp -omusic4ps.abc replaceabc:2

For MIDI, it is simply:

microabc -ipepper24.txt -Mmusic.abp -omusic4mid.abc

(-P would work as well, once we are not converting Sagittal pitches -- Sagittal conversion is done _after_ replacing user-defined macros.)

Then, we run abc2midi and abc2ps on the generated ABC files, and finally use Scala to retune the MIDI file.

> > I must admit that I'm the kind of user, the less efficient kind, where a
> syntax statement of "usage" often leaves me rather confused, but a few
> illustrative examples, typically moving from simple to more involved, can
> get me nicely oriented.

We could start by selecting some commonly used tunings for the examples, and thereafter sort them in a progressive order. I have started some non-Sagittal examples, but actual musical samples would be better.

> > A bit more than 3 years ago, George Secor and Dave Keenan helped me devise
> a pure sagittal notation for Peppermint based more or less on 121-EDO. I
> know which symbol I'd like to make with which of the 24 notes, and have
> written down some decimal character mappings -- which I note from your
> documentation might also sometimes be written in PostScript octal
> notation.

Right. Octal notation is to represent characters in a PS string. Usually, they are needed only when creating new Sagittal accidentals (e.g. accented accidentals) or when using Sagittal characters in a text line.

> > Anyway, as a Scala user, the idea of just mapping the set of pitches I
> plan to use to a set of floating point ratios in cents for midi pitch
> bends or timidity tuning tables, and defining macros for the sagittal
> notation of each note, very much appeals to me.

I missed timidity tables completely... they can be used instead of retuning the file with Scala (or using SMT), when publishing only the rendered .ogg files.

To use pitchbends, Sagittal notation can be used (without require setup files or abcpp), but currently they cannot be adjusted/quantised to any tuning except for just intonation and linear or equal temperaments. You could use 121-EDO, for instance. That would be incomparably simpler than the recipe I gave above. Again, I will can provide better help when I know the tuning (and its Sagittal representation).

> > I'm going to look over the examples again and see if I can figure out more
> for myself -- but I'd love to help in writing more documentation, maybe in
> part by trying some simple projects with sagittal notation in tunings that
> I often use and cooperating with you to put together some examples and
> step by step procedures.

Sagittal is the more recent and less documented part of microabc. I feel that it is comming a time to freeze microabc development and care of documentation and bug fixes. There are still a list of things I would like to implement before that (like applying Sagittal accents for MIDI, supporting simultaneously mixed and pure forms, and printing warnings on non-recommended usage of Sagittal accidentals/nominals according to the current equal temperament).

> > One thing I have found, for example with some of the GNU documentation, is
> that a tutorial or patient explanation can very much smooth out the
> learning curve. If I can help in any way, that would be a great privilege.
> > Peace and love, with many thanks,
> > Margo
> Cheers,
Hudson

P.S.: I can publish our examples and FAQs at SourceForge. I just did not learnt how to use CVS yet -- I see I need read its documentation with care... :-)

--
'-------------------------------------------------------------------.
Hudson Lacerda <http://geocities.yahoo.com.br/hfmlacerda/>
*N�o deixe seu voto sumir! http://www.votoseguro.org/
*Ap�ie o Manifesto: http://www.votoseguro.com/alertaprofessores/

== THE WAR IN IRAQ COSTS ==
http://nationalpriorities.org/index.php?option=com_wrapper&Itemid=182
.-------------------------------------------------------------------'
--


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