autosp
AUTOSP(1) AUTOSP(1)
NAME
autosp - preprocessor to generate note-spacing commands for MusiXTeX
scores
SYNOPSIS
autosp [-v | --version | -h | --help]
autosp [-d | --dotted] [-l | --log] infile[.aspc] [outfile[.tex]]
DESCRIPTION
This program makes it easier to create MusiXTeX scores by converting
(non-standard) commands of the form \anotes ... \en into one or more
conventional note-spacing commands (\notes \Notes \NOtes ...), deter-
mined by the actual note values, with \sk spacing commands inserted as
necessary. The coding for an entire measure can be entered one part at
a time, without concern for note-spacing changes within the part or
spacing requirements of other parts.
For example, if applied to
\anotes\qa J\qa K&\ca l\qa m\ca n\en
autosp generates
\Notes\qa J\sk\qa K\sk&\ca l\qa m\sk\ca n\en
Typically, an \anotes command generates several conventional note-spac-
ing commands.
If the infile argument does not have an .aspc extension, input is taken
from infile.aspc if that file exists.
If the outfile argument does not have a .tex extension, output is sent
to outfile.tex. If no outfile argument is provided, output will go to
infile.tex (or to infile.ltx if a \documentclass declaration is encoun-
tered).
For \anotes commands, line breaks and spaces may precede note segments,
allowing more flexible source formatting; the line breaks and spaces
will be elided from the output.
For example,
\anotes
\ibl0K0\qb0K\nbbl0\qb0{.K}\tbbbl0\tbbl0\tql0L&
\ibbl1m{-2}\qb1{.m}\tbbbl1\tbbl1\qb1l\tql1k\en
is acceptable and generates
\notesp\ibl0K0\qb0K&\ibbl1m{-2}\qb1{.m}\en
\nnotes\sk&\tbbbl1\tbbl1\qb1l\en
\notesp\nbbl0\qb0{.K}&\tql1k\en
\nnotes\tbbbl0\tbbl0\tql0L&\sk\en
If the -l ( --log ) option is used, a very detailed log infile.alog is
generated.
If the -d ( --dotted ) option is used, dotted beam notes of the form
\qb{n}{.p} are not given extra space; it is assumed that the subsequent
note will be shifted by a \roff-like command or a spacing command such
as \qsk or \hqsk. Commands of the form \qlp{p}, \qlpp{p}, ...,
\qpb{n}{p} and \qppb{n}{p} are always spaced as indicated.
If there is a single staff, consecutive whole-bar rest bars are merged
into a multi-bar rest. Bar-centered rests can be coded using the stan-
dard \def\atnextbar notation but the non-standard command \Cpause in a
note segment also generates a bar-centered rest.
Spacing commands \sk and \bsk in the source are discarded, but not
"small" skips \hsk, \qsk, \tqsk, \hqsk or \qqsk, or the small "back-
ward" skips \hbsk, \bqsk, \btsk, or \bhsk. Moreover, non-standard com-
mands \QQsk, \HQsk \TQsk and \Qsk in the source generate "global"
skips; i.e., the effect of \qqsk, \hqsk, \tqsk or \qsk, respectively,
in every staff. These ensure that staffs remain synchronized if addi-
tional spacing is needed in any staff(s).
Global skips may also be obtained within collective-coding sequences by
using up to four successive commas to get the effects of \QQsk, \HQsk,
\TQsk or \Qsk, respectively. Global skips \tqsk (or, for double-flats,
\qsk) are automatically inserted before accidentals ('^', '_', '=',
'<', '>') on collective-coding notes (except when the preceding note is
"virtual"; i.e., a skip). If this automatic additional spacing is not
wanted in some context, it may be avoided by replacing the accidental
in the collective-coding sequence by any of the explicit accidental
commands: \sh, \fl, \na, \smallsh, \bigsh, etc. If the automatic spac-
ing is insufficient, the spacing may be increased by adding sufficient
commas or using a conventional notes command instead of \anotes.
A note segment can be completely empty, but if a note segment should
start with or contain a "space," the note-value of that space must be
made explicit with a command of the form \ha{*}, \qa{.*}, \qa{*},
\ca{*}, etc.
From version 2017-06-14, the effects of \TransformNotes calls are im-
plemented by the autosp pre-processor. This enables use of musixlyr in
autosp scores; musixlyr.tex is incompatible with the musixtnt.tex im-
plementation of \TransformNotes.
All other conventional MusiXTeX commands are output exactly as given in
the input.
OPERATION
autosp determines the spacing for ordinary notes from the note commands
themselves; for example,
+ \qa, \qu, \ql, \qp result in \NOtes;
+ \ca, \cu, \cl, \ds result in \Notes;
and so on.
The spacing for beamed notes is determined by the beam multiplicity, so
that \ib... results in \Notes, \ibb... results in \notes, etc.
Collective coding of note sequences (including accidentals and dots) is
handled by expanding the sequence into a sequence of individual note
commands.
LIMITATIONS
autosp assumes that & and | (rather than \nextinstrument and
\nextstaff) are used to separate instruments and staffs.
Appoggiaturas and grace notes are recognized by the use of \tinynote-
size; note-spacing of 1.45\elemskip is used. If this isn't suitable and
can't be corrected with a small skip, a \vnotes command with any de-
sired spacing can be used.
autosp supports x-tuplets introduced using \xtuplet{x} or \xxtu-
plet{x:y} and triplets introduced using any of the following commands
(regardless of any re-definition of \txt or \tuplettxt):
\triolet
\uptrio
\downtrio
\uptuplet
\downtuplet
autosp assumes that an x-tuplet is to be played in (x-1)/x of the ap-
parent x-tuplet duration. So, for example, a triplet in eighths is as-
sumed to be played in the time of one quarter note. If this assumption
isn't valid, the x-tuplet must be coded explicitly using a suitable
\vnotes command; see the first measure of barsant2.aspc for an example
of a non-standard x-tuplet: a 5-tuple of 64th notes with an intended
duration of six 64ths.
In some polyrhythmic scores, the \txt numeral may be displaced, even if
the notes themselves are correctly spaced. In these cases, it is possi-
ble to suppress the normal output of \txt by using the non-standard
commands \Triolet (no arguments) or \Xtuplet{k}\ and placing a numeral
at the correct location using \zcn (i.e., \zcharnote).
autosp can deal with simultaneous x-tuplets in multiple staffs provided
the x values and total note durations are identical.
In some baroque scores, particularly by J.S. Bach, a beamed sixteenth
note is vertically aligned with the third note of a triplet of eighth
notes in another staff (implying that they should be sounded simultane-
ously); e.g.,
\ibl0L0\qb0{.L}\tqql0L
would be played as if notated
\uptrio{b}10\ql L\hroff{\cl L}
The following coding will align the beamed sixteenth note with the
third note of a triplet in another staff:
\ibl0L0\qb0{.L}\hbsk\tqql0L
and, similarly, for triplets of sixteenth notes:
\ibbu0J0\qb0{.J}\hbsk\nqqqu0J\qb0{.J}\hbsk\tqqqu0J
Generally, user-defined macros are not processed or expanded; however,
definitions of the form
\def\atnextbar{\znotes ... \en}
generate definitions that do take account of \TransformNotes.
All staffs are assumed to have the same meter; see kinder2.aspc for an
example of how to work around this.
autosp may not be effective for music with more than one voice in a
single staff. It might be advisable to use a separate staff for each
voice, to avoid \anotes when necessary, or to omit certain voices ini-
tially and add them into the resulting TeX file.
EXAMPLES
See files quod2.aspc, kinder2.aspc, geminiani.aspc and barsant2.aspc
for scores suitable for input to autosp. The program tex2aspc can be
used to convert "legacy" MusiXTeX scores to .aspc format.
SEE ALSO
msxlint(1) tex2aspc(1)
musixdoc.pdf
AUTHOR
This program and manual page were written by Bob Tennent
<rdt@cs.queensu.ca>.
2018-02-14 AUTOSP(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2024
Hurricane Electric.
All Rights Reserved.