texlive[46169] Build/source/utils: autosp-2017-12-26
commits+kakuto at tug.org
commits+kakuto at tug.org
Sat Dec 30 23:19:20 CET 2017
Revision: 46169
http://tug.org/svn/texlive?view=revision&revision=46169
Author: kakuto
Date: 2017-12-30 23:19:20 +0100 (Sat, 30 Dec 2017)
Log Message:
-----------
autosp-2017-12-26
Modified Paths:
--------------
trunk/Build/source/utils/README
trunk/Build/source/utils/autosp/ChangeLog
trunk/Build/source/utils/autosp/autosp-src/ChangeLog
trunk/Build/source/utils/autosp/autosp-src/Makefile.am
trunk/Build/source/utils/autosp/autosp-src/Makefile.in
trunk/Build/source/utils/autosp/autosp-src/README
trunk/Build/source/utils/autosp/autosp-src/autosp.1
trunk/Build/source/utils/autosp/autosp-src/autosp.c
trunk/Build/source/utils/autosp/autosp-src/autosp.test
trunk/Build/source/utils/autosp/autosp-src/compile
trunk/Build/source/utils/autosp/autosp-src/configure
trunk/Build/source/utils/autosp/autosp-src/configure.ac
trunk/Build/source/utils/autosp/autosp-src/depcomp
trunk/Build/source/utils/autosp/autosp-src/install-sh
trunk/Build/source/utils/autosp/autosp-src/rebar.test
trunk/Build/source/utils/autosp/autosp-src/tests/quod2.tex
trunk/Build/source/utils/autosp/configure
trunk/Build/source/utils/autosp/configure.ac
Added Paths:
-----------
trunk/Build/source/utils/autosp/autosp-src/tests/quod4.aspc
trunk/Build/source/utils/autosp/autosp-src/tex2aspc.1
trunk/Build/source/utils/autosp/autosp-src/tex2aspc.c
trunk/Build/source/utils/autosp/autosp-src/tex2aspc.test
Modified: trunk/Build/source/utils/README
===================================================================
--- trunk/Build/source/utils/README 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/README 2017-12-30 22:19:20 UTC (rev 46169)
@@ -10,7 +10,7 @@
see http://tug.org/texlive/build.html#asymptote
and tlpkg/bin/tl-update-asy
-autosp 2017-07-14 - checked 26jul17
+autosp 2017-12-26 - checked 29dec17
http://ctan.org/pkg/autosp
devnag - from devanagari package installed in texmf-dist.
Modified: trunk/Build/source/utils/autosp/ChangeLog
===================================================================
--- trunk/Build/source/utils/autosp/ChangeLog 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/ChangeLog 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,3 +1,8 @@
+2017-12-30 Akira Kakuto <kakuto at fuk.kindai.ac.jp>
+
+ * Import autosp-2017-12-26
+ configure.ac: Adapted.
+
2017-07-26 Akira Kakuto <kakuto at fuk.kindai.ac.jp>
* Import autosp-2017-07-14
Modified: trunk/Build/source/utils/autosp/autosp-src/ChangeLog
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/ChangeLog 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/ChangeLog 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,8 +1,22 @@
AUTOSP
- Determination of automatic spacing for accidentals simplified
- Many comments corrected and expanded
+2017-12-21
+ Allow for new commands \nqq, \nqqq, \hap and \happ.
+ Allow for single-note xtuplet.
+ Handle restbars > 1 in process_xtuplet or process_appogg
+
+2017-10-10
+
+ Corrected nastaffs setting for \startpiece and \startextract.
+ Introduced vspacings_active[i] to suppress unnecesary added spacing for
+ accidentals.
+ Applying TransformNotes to bar_rest output.
+
+2017-07-14
+
+ Automatic added spacing for all collective-coding accidentals.
+
2017-06-21
Support for global skips within collective-coding
Modified: trunk/Build/source/utils/autosp/autosp-src/Makefile.am
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/Makefile.am 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/Makefile.am 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,16 +1,17 @@
-bin_PROGRAMS = autosp rebar
+bin_PROGRAMS = autosp rebar tex2aspc
autosp_SOURCES = utils.h utils.c autosp.c
rebar_SOURCES = utils.h utils.c rebar.c
+tex2aspc_SOURCES = utils.h utils.c tex2aspc.c
AM_CFLAGS = -O4 -ansi -Wall -Wextra -pedantic-errors
-dist_man_MANS = autosp.1 rebar.1
+dist_man_MANS = autosp.1 rebar.1 tex2aspc.1
## Tests
##
-TESTS = autosp.test rebar.test
+TESTS = autosp.test rebar.test tex2aspc.test
EXTRA_DIST =
EXTRA_DIST += $(TESTS)
DISTCLEANFILES =
-EXTRA_DIST += tests/quod2.aspc tests/quod2.tex tests/quod3.aspc
-DISTCLEANFILES += quod2.* quod3.*
+EXTRA_DIST += tests/quod2.aspc tests/quod2.tex tests/quod3.aspc tests/quod4.aspc
+DISTCLEANFILES += quod2.* quod3.* quod4.*
Modified: trunk/Build/source/utils/autosp/autosp-src/Makefile.in
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/README
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/README 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/README 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,5 +1,5 @@
This is the README for the autosp package,
-version 2017-06-21.
+version 2017-07-14.
autosp is a preprocessor that generates note-spacing
commands for MusiXTeX scores. It simplifies the creation
Modified: trunk/Build/source/utils/autosp/autosp-src/autosp.1
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/autosp.1 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/autosp.1 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,5 +1,5 @@
.\" This manpage is licensed under the GNU Public License
-.TH AUTOSP 1 2017-07-140 "" ""
+.TH AUTOSP 1 2017-12-19 "" ""
.SH NAME
autosp \- preprocessor to generate note-spacing commands for MusiXTeX scores
@@ -136,9 +136,10 @@
the non-standard command \\Cpause in a note segment also generates a
bar-centered rest.
-Spacing commands \\sk and \\hsk in the source are discarded
-(but not \\qsk, \\tqsk, \\hqsk or \\qqsk);
-however,
+Spacing commands \\sk and \\bsk in the source are discarded,
+but not "small" skips \\hsk, \\qsk, \\tqsk, \\hqsk or \\qqsk,
+or the small "backward" skips \\hbsk, \\bqsk, \\btsk, or \\bhsk.
+Moreover,
non-standard commands
\\QQsk, \\HQsk \\TQsk and \\Qsk in the source generate "global" skips; i.e., the effect of \\qqsk, \\hqsk, \\tqsk or \\qsk, respectively, in
.I every
@@ -146,17 +147,21 @@
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,
-as global skips.
-Global skips are
-automatically inserted before accidentals ('^', '_', '=', '<', '>') on collective-coding notes.
-If the automatic spacing is insufficient, the spacing may be increased by adding sufficient commas or
-using a conventional notes command instead of \\anotes. Automatic skips are
+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
.I not
-inserted
-for any of the
+wanted in some context, it may be avoided by
+replacing
+the accidental in the collective-coding sequence
+by
+any of the
.I explicit
accidental commands: \\sh, \\fl, \\na, \\smallsh, \\bigsh, etc.
+If the automatic spacing 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
@@ -164,11 +169,14 @@
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 implemented by the pre-processor. This
+From version 2017-06-14, the effects of \\TransformNotes calls are implemented by the
+.B autosp
+pre-processor. This
enables use of
+musixlyr in
.B autosp
-scores
-with musixlyr.tex, which is incompatible with the
+scores; musixlyr.tex
+is incompatible with the
musixtnt.tex
implementation of \\TransformNotes.
@@ -215,6 +223,7 @@
supports
.I x-tuplets
introduced using \\xtuplet{\fIx\fP}
+or \\xxtuplet{\fIx:y\fP}
and
.I triplets
introduced
@@ -228,11 +237,6 @@
\\downtuplet
.fi
-However,
-MusiXTeX notation does not
-specify the
-.I intended
-duration of an x-tuplet.
.B autosp
assumes that an x-tuplet is to be played in
(\fIx\fP\-1)/\fIx\fP
@@ -240,23 +244,58 @@
So, for example, a triplet in eighths is assumed 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 \\vnotes command; see the first
+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
.I 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 possible 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).
+
.B autosp
-cannot deal with simultaneous x-tuplets in multiple staffs unless the x values and
-note durations are identical.
+can deal with simultaneous x-tuplets in multiple staffs provided the x values and
+total note durations are identical.
-User-defined macros are generally not processed or expanded; however, definitions of the form
+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 simultaneously); e.g.,
.nf
+ \\ibl0L0\\qb0{.L}\\tqql0L
+
+.fi
+would be played as if notated
+.nf
+
+ \\uptrio{b}10\\ql L\\hroff{\\cl L}
+
+.fi
+The following coding will align the beamed sixteenth note
+with the third note of a triplet in another staff:
+.nf
+
+ \\ibl0L0\\qb0{.L}\\hbsk\\tqql0L
+
+.fi
+and, similarly, for triplets of sixteenth notes:
+.nf
+
+ \\ibbu0J0\\qb0{.J}\\hbsk\\nqqqu0J\\qb0{.J}\\hbsk\\tqqqu0J
+
+.fi
+Generally, user-defined macros are not processed or expanded; however, definitions of the form
+.nf
+
\\def\\atnextbar{\\znotes ... \\en}
.fi
-generate definitions that take account of \\TransformNotes.
+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.
@@ -270,9 +309,13 @@
.SH EXAMPLES
See files quod2.aspc, kinder2.aspc, geminiani.aspc and barsant2.aspc for scores suitable for input to
.BR autosp .
+The program
+.B tex2aspc
+can be used to convert "legacy" MusiXTeX scores to .aspc format.
.SH SEE ALSO
.BR msxlint (1)
+.BR tex2aspc (1)
.PP
musixdoc.pdf
Modified: trunk/Build/source/utils/autosp/autosp-src/autosp.c
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/autosp.c 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/autosp.c 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,4 +1,4 @@
-char version[12] = "2017-07-14";
+char version[12] = "2017-12-22";
/* Copyright (C) 2014-17 R. D. Tennent School of Computing,
* Queen's University, rdt at cs.queensu.ca
@@ -105,7 +105,6 @@
# define PRIVATE static
-# define LINE_LEN 1024
# define SHORT_LEN 256
# define MAX_STAFFS 9
@@ -149,6 +148,9 @@
PRIVATE int old_spacing = MAX_SPACING;
PRIVATE int vspacing[MAX_STAFFS]; /* virtual-note (skip) spacing */
+PRIVATE bool vspacing_active[MAX_STAFFS]; /* virtual-note spacing active? */
+ /* used to preclude unnecessary pre-accidental skips */
+
PRIVATE bool nonvirtual_notes;
/* used to preclude output of *only* virtual notes */
@@ -273,6 +275,8 @@
if (active[i]) status (i);
status_spacing ();
fprintf (logfile, "nastaffs=%d\n", nastaffs);
+ if (dottedbeamnotes)
+ fprintf (logfile, "dottedbeamnotes == true\n");
}
PRIVATE void
@@ -352,6 +356,7 @@
{ n_outstrings[i] = outstrings[i];
*n_outstrings[i] = '\0';
vspacing[i] = 0;
+ vspacing_active[i] = false;
collective[i][0] = '\0';
cspacing[i] = MAX_SPACING;
first_collective[i] = false;
@@ -384,7 +389,7 @@
PRIVATE
void filter_output (int i)
-{ /* discard , \sk \hsk \Qsk \TQsk \HQsk \QQsk and \Cpause */
+{ /* discard \sk \bsk \Qsk \TQsk \HQsk \QQsk and \Cpause */
char *s = notes[i];
while (s < current[i])
{ char *t;
@@ -391,12 +396,14 @@
t = strpbrk (s+1, "\\&|$");
if (t == NULL || t > current[i]) t = current[i];
if (!prefix ("\\sk", s)
- && !prefix ("\\hsk", s)
+ && !prefix ("\\bsk", s)
&& !prefix ("\\Cpause", s)
&& !prefix ("\\Qsk", s)
&& !prefix ("\\HQsk", s)
&& !prefix ("\\TQsk", s)
- && !prefix ("\\QQsk", s) )
+ && !prefix ("\\QQsk", s)
+ && !prefix ("\\Triolet", s)
+ && !prefix ("\\Xtuplet", s) )
{
while (s < t)
{ while (*s == ',') s++; /* global skips */
@@ -442,6 +449,7 @@
append (outstrings[i], &(n_outstrings[i]), "}", LINE_LEN);
if (*notes[i] == '}')
{ collective[i][0] = '\0';
+ cspacing[i] = 0;
notes[i]++;
}
if (*notes[i] == '}') /* close of {\tinynotesize..{}}? */
@@ -504,24 +512,28 @@
/* commas will be discarded by filter_output (i) */
if (*s == '.' && new_beaming == 0 && !dottedbeamnotes)
spacing = spacing * 1.50;
- else if ( (*s == '^' || *s == '_' || *s == '=' || *s == '>') )
+ else if ( (*s == '^' || *s == '_' || *s == '=' || *s == '>')
+ && !vspacing_active[i] /* is additional spacing needed? */
+ )
/* leave space for normal accidentals */
- { if (debug)
+ { update_global_skip (3) ;
+ if (debug)
{ fprintf (logfile, "\nLeave space for accidental\n");
status (i);
status_beam (i);
status_collective (i);
}
- update_global_skip (3) ;
}
- else if ( (*s == '<') /* double-flat */ )
- { if (debug)
+ else if ( (*s == '<') /* double-flat */
+ && !vspacing_active[i] /* is additional spacing needed? */
+ )
+ { update_global_skip (5);
+ if (debug)
{ fprintf (logfile, "\nLeave space for double-flat\n");
status (i);
status_beam (i);
status_collective (i);
}
- update_global_skip (5);
}
else if (isalnum (*s) || *s == '*')
{
@@ -535,6 +547,7 @@
status (i);
status_collective (i);
}
+ vspacing_active[i] = false;
return spacing;
}
s++;
@@ -766,7 +779,8 @@
break;
}
- if (prefix("\\tqqq", s) )
+ if (prefix("\\tqqq", s) ||
+ prefix("\\nqqq", s) )
{ if (beaming[i] > SP(32))
beaming[i] = SP(32);
spacing = beaming[i];
@@ -780,7 +794,8 @@
break;
}
- if (prefix("\\tqq", s) )
+ if (prefix("\\tqq", s) ||
+ prefix("\\nqq", s) )
{ if (beaming[i] > SP(16))
beaming[i] = SP(16);
spacing = beaming[i];
@@ -820,7 +835,9 @@
/* non-spacing beam termination */
new_beaming = 0;
- else if ( prefix("\\xtuplet", s))
+ else if ( prefix("\\xtuplet", s) ||
+ prefix("\\xxtuplet", s)||
+ prefix("\\Xtuplet", s) )
{ char *t = s+1;
while (!isdigit(*t)) t++;
xtuplet[i] = atoi(t);
@@ -827,6 +844,7 @@
}
else
if ( prefix("\\triolet", s)
+ || prefix("\\Triolet", s)
|| prefix("\\uptrio", s)
|| prefix("\\downtrio", s)
|| prefix("\\uptuplet", s)
@@ -948,6 +966,7 @@
if (prefix ("\\whpp", s)
|| prefix ("\\hupp", s)
|| prefix ("\\hlpp", s)
+ || prefix ("\\happ", s)
|| prefix ("\\hspp", s)
|| prefix ("\\hppp", s)
|| prefix ("\\hpausepp", s)
@@ -971,6 +990,7 @@
if (prefix ("\\whp", s)
|| prefix ("\\hup", s)
|| prefix ("\\hlp", s)
+ || prefix ("\\hap", s)
|| prefix ("\\hsp", s)
|| prefix ("\\hpp", s)
|| prefix ("\\hpausep", s)
@@ -1012,6 +1032,7 @@
{ fprintf (logfile, "\nAfter spacing_note:\n");
status (i);
}
+ vspacing_active[i] = false;
return spacing;
}
@@ -1045,6 +1066,9 @@
{ fprintf (logfile, "\nEntering initialize_notes\n");
status_all ();
}
+ if ( nastaffs == 1 && spacing != MAX_SPACING && restbars > 0)
+ output_rests ();
+
if (spacing == MAX_SPACING)
fprintf (outfile, "\\znotes");
else if (spacing == SP(1)+SP(2) || spacing == SP(1)+SP(2)+SP(4))
@@ -1270,7 +1294,10 @@
}
}
- if (debug) fprintf (logfile, "\nDetermine xtuplet duration:\n");
+ if (debug)
+ { fprintf (logfile, "\nDetermine xtuplet duration:\n");
+ fflush (logfile);
+ }
for (i=1; i <= nstaffs; i++)
if (xtuplet[i] > 1)
{
@@ -1278,7 +1305,7 @@
save_state (xi);
pseudo_output_notes (xi);
xspacing = spacings[xi];
- do
+ while (xspacing % xtuplet[xi] != 0)
{
xspacing += spacing_note (xi);
pseudo_output_notes (xi);
@@ -1285,7 +1312,6 @@
if (xspacing >= MAX_SPACING)
error ("Can't determine xtuplet duration.");
}
- while (xspacing % xtuplet[xi] != 0);
restore_state (xi);
break;
}
@@ -1448,8 +1474,7 @@
return;
}
if (old_spacing < MAX_SPACING) putc ('\n', outfile);
- if ( nastaffs == 1 && spacing != MAX_SPACING && restbars > 0)
- output_rests ();
+
initialize_notes ();
}
@@ -1462,6 +1487,7 @@
if (active[i] && spacings[i] != MAX_SPACING && spacings[i] != spacing && vspacing[i] == 0 )
{
vspacing[i] = spacings[i];
+ vspacing_active[i] = true;
vspacing[i] = vspacing[i] - spacing;
if (debug)
{ fprintf (logfile, "\nAfter vspacing initialization:\n");
@@ -1527,11 +1553,18 @@
active[nstaffs] = true;
}
}
+ nastaffs = nstaffs;
+ if (debug)
+ fprintf (logfile, "default TransformNotes2=%s\n", TransformNotes2);
}
+ if (nstaffs == 1) fprintf (outfile, "\\nostartrule\n");
if (debug)
- fprintf (logfile, "default TransformNotes2=%s\n", TransformNotes2);
- if (nstaffs == 1) fprintf (outfile, "\\nostartrule\n");
- nastaffs = nstaffs;
+ {
+ int j;
+ fprintf (logfile, "ninstr=%d nstaffs=%d nastaffs=%d\n", ninstr, nstaffs, nastaffs);
+ for (j=1; j <= nstaffs; j++)
+ fprintf (logfile, "active[%d]=%d\n", j, active[j]);
+ }
fprintf (outfile, "\\startpiece");
t = strpbrk (*ln+1, "\\%\n");
*ln = t;
@@ -1555,11 +1588,11 @@
active[nstaffs] = true;
}
}
+ nastaffs = nstaffs;
+ if (debug)
+ fprintf (logfile, "default TransformNotes2=%s\n", TransformNotes2);
}
- if (debug)
- fprintf (logfile, "default TransformNotes2=%s\n", TransformNotes2);
if (nstaffs == 1) fprintf (outfile, "\\nostartrule\n");
- nastaffs = nstaffs;
fprintf (outfile, "\\startextract");
t = strpbrk (*ln+1, "\\%\n");
*ln = t;
@@ -1611,6 +1644,13 @@
t = strpbrk (t+1, "#}");
if (t == NULL) break;
}
+ if (debug)
+ {
+ int j;
+ fprintf (logfile, "ninstr=%d nstaffs=%d nastaffs=%d\n", ninstr, nstaffs, nastaffs);
+ for (j=1; j <= nstaffs; j++)
+ fprintf (logfile, "active[%d]=%d\n", j, active[j]);
+ }
/* output \TransformNotes... as a comment: */
putc ('%', outfile);
@@ -1805,6 +1845,7 @@
else if ( prefix ("\\bar", *ln) && !prefix ("\\barno", *ln))
{ int i;
+ char *s, *t;
bool atnextbar = false;
for (i=1; i <= nstaffs; i++)
if (active[i] && bar_rest[i])
@@ -1824,8 +1865,16 @@
else
{ if (atnextbar)
{ fprintf (outfile, "\\def\\atnextbar{\\znotes");
- for (i=1; i <= nstaffs; i++)
+ t = TransformNotes2;
+ while (true)
{
+ s = strchr (t, '#');
+ if (s == NULL)
+ break;
+ while (t < s) /* output any initial \transpose etc. */
+ { putc (*t, outfile); t++; }
+ t++; /* skip # */
+ i = atoi (t) -1; t++;
if (active[i])
{
if (bar_rest[i])
@@ -1832,8 +1881,8 @@
fprintf (outfile, "\\centerpause");
bar_rest[i] = false;
}
- if ( (terminator[i] == '&') || (terminator[i] == '|') )
- putc (terminator[i], outfile);
+ if (*t != '\0')
+ { putc (*t, outfile); t++; } /* terminator */
}
fprintf (outfile, "\\en}%%\n");
}
@@ -1962,7 +2011,13 @@
*ln = *ln + strlen(*ln);
}
+ else if ( prefix ("\\end", *ln))
+ {
+ fprintf (outfile, "\\end\n");
+ exit(0);
+ }
+
else /* everything else */
{
fputs (*ln, outfile);
Modified: trunk/Build/source/utils/autosp/autosp-src/autosp.test
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/autosp.test 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/autosp.test 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,5 +1,6 @@
#! /bin/sh -vx
-# Copyright 2016-2017 Karl Berry <tex-live at tug.org>
+
+# Copyright 2016 Karl Berry <tex-live at tug.org>
# Copyright 2015 Peter Breitenlohner <tex-live at tug.org>
# You may freely use, modify and/or distribute this file.
Modified: trunk/Build/source/utils/autosp/autosp-src/compile
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/configure
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/configure.ac
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/configure.ac 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/configure.ac 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
-AC_INIT([autosp],[2017-07-14],[rdt at cs.queensu.ca])
+AC_INIT([autosp],[2017-12-26],[rdt at cs.queensu.ca])
AC_CONFIG_AUX_DIR([.])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h])
Modified: trunk/Build/source/utils/autosp/autosp-src/depcomp
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/install-sh
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/rebar.test
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/autosp-src/tests/quod2.tex
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/tests/quod2.tex 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/autosp-src/tests/quod2.tex 2017-12-30 22:19:20 UTC (rev 46169)
@@ -1,4 +1,4 @@
-% Generated by autosp (2017-07-14).
+% Generated by autosp (2017-12-22).
\input musixtex
\input musixplt
\input soul.sty
@@ -77,7 +77,7 @@
\Notes\qa{.L}\sk\sk&\ibl1n{-1}\qb1{n}\qb1{o}\qb1{n}&\ttie2\ibl2r{-2}\qb2r\tqb2q\qa p&\ibl3n{-2}\qb3{n}\qb3{m}\qb3{l}\en
\notes\ibbl0M2\qb0M\tqb0N&\tqb1m\sk&\sk\sk&\tqb3k\sk\hqsk\en%
\Notes\tqsk\itieu0a\qa a&\tqsk\ibl1l{-2}\qb1l&\tqsk\qa{.o}&\tqsk\shake{n}\ibl3i0\qb3{^j}\en
-\notes\sk\sk\tqsk\ttie0\ibbl0a{-2}\qb0{a}\qb0{N}\qb0{M}\tqsk\tqb0L&\tqb1k\sk\tqsk\cl{^j}\sk\ds\tqsk\sk&\sk\sk\tqsk\sk\sk\ibbl2i2\qb2i\tqsk\tqb2{^j}&\nbbl3\qb3i\tqb3j\tqsk\cu h\sk\ds\tqsk\sk\hqsk\en%
+\notes\sk\sk\ttie0\ibbl0a{-2}\qb0{a}\qb0{N}\qb0{M}\tqsk\tqb0L&\tqb1k\sk\cl{^j}\sk\ds\tqsk\sk&\sk\sk\sk\sk\ibbl2i2\qb2i\tqsk\tqb2{^j}&\nbbl3\qb3i\tqb3j\cu h\sk\ds\tqsk\sk\hqsk\en%
\bar%7
\Notes\qa{M}\sk\qa{K}\sk&\ibu1g0\qb1{f}\qb1{g}\qb1{h}\tqh1f&\ibl2k0\qb2{k}\qb2{l}\qb2{m}\tqb2k&\qa{h}\sk\qa{h}\sk\en%
\Notes\qa{N}\sk\qa{G}\sk&\ibu1g{-2}\qb1{g}\qb1{f}\qb1{e}\tqh1d&\ibl2i4\qb2{i}\qb2{k}\qb2{n}\tqb2m&\qa{i}\sk\qa{i}\sk\en%
@@ -85,7 +85,7 @@
\nspace
\Notes\tqsk\qu{.H}&\tqsk\ibu1c4\qb1{^c}&\tqsk\ibl2l{-1}\qb2{.l}&\tqsk\ibu3h{0}\qb3{h}\en
\notes\sk\sk\sk\tqsk\sk&\qb1{d}\sk\qb1{e}\tqsk\sk&\sk\itieu2k\tbbl2\tqb2k\ttie2\ibbl2j0\qb2k\tqsk\tbbl2\qb2{^j}&\qb3{i}\sk\qb3{h}\tqsk\sk\en
-\Notes\tqsk\cu{^J}&\tqsk\itied1h\tqh1h&\tqsk\itieu2l\tqb2l&\tqsk\tqh3g\en%
+\Notes\cu{^J}&\itied1h\tqh1h&\itieu2l\tqb2l&\tqh3g\en%
\notes\ql K\sk\sk\sk&\ttie1\ibu1h{-2}\qb1h\sk\tqh1g\sk&\ttie2\ibbl2l{-1}\qb2{l}\qb2{k}\qb2{l}\tqb2j&\ibu3f{-1}\qb3f\sk\tqh3e\sk\en
\Notes\cl K&\cu f&\cl k&\cu d\en%
\leftrightrepeat
@@ -100,12 +100,12 @@
\Notes\ibl0b{-1}\qb0{c}\qb0{b}\qb0{c}\tqb0a&\cl l\ds\qp\sk&\ibl2o{-1}\qb2{o}\qb2{p}\qb2{o}\tqb2n&\ibl3o{-2}\qb3{o}\qb3{n}\qb3{m}\tqb3l\en%
\Notes\tqsk\qa{.b}&\tqsk\qa{m}&\tqsk\ibl2m{-2}\qb2m&\tqsk\ibl3j0\shake n\qb3{^k}\en
\notes\tqsk\sk\sk&\tqsk\sk\sk&\tqsk\tqb2l\sk&\tqsk\nbbl3\qb3{^j}\tqb3k\en
-\Notes\tqsk\sk\tqsk\cl{^a}&\tqsk\qa{m}\tqsk\sk&\tqsk\cl{^k}\tqsk\ds&\tqsk\ibl3i8\qb3i\tqsk\tqb3{p}\en%
+\Notes\sk\cl{^a}&\qa{m}\sk&\cl{^k}\ds&\ibl3i8\qb3i\tqb3{p}\en%
\bar%11
\Notes\qa{N}\sk\qa{N}\sk&\ibl1l0\qb1{n}\qb1{l}\qb1{n}\tqb1l&\qa{p}\sk\qa{p}\sk&\ibl3m0\qb3{l}\qb3{p}\qb3{l}\tqb3{p}\en%
\notes\tqsk\qa{.a}\sk\sk\sk&\tqsk\ibl1m{-1}\qb1{m}\sk\qb1{n}\sk&\tqsk\qa{q}\sk\sk\sk&\tqsk\ibbl3k2\qb3{^k}\qb3{l}\qb3{m}\tqb3n\en
\Notes\sk&\qb1{m}&\qa{q}&\ibl3o{-2}\qb3o\en
-\notes\tqsk\cl{^a}\sk&\tqsk\tqb1l\sk&\tqsk\sk\sk&\tqsk\nbbl3\qb3n\tqb3m\hqsk\en%
+\notes\cl{^a}\sk&\tqb1l\sk&\sk\sk&\nbbl3\qb3n\tqb3m\hqsk\en%
\bar%12
\nspace
\Notes\tqsk\qa b&\tqsk\ibl1k2\qb1{^k}&\tqsk\ibl2o{-1}\qb2p&\tqsk\ibl3n{-2}\qb3n\en
@@ -113,7 +113,7 @@
\Notes\qa{.L}&\ttie1\ibu1i0\qb1i&\ibl2n0\qb2n&\itieu3l\ha l\en
\notes\sk\sk&\nbbu1\qb1h\tqh1i&\nbbl2\qb2m\tqb2n&\sk\sk\en
\Notes\sk&\ibu1g2\qb1g&\cl l&\sk\en
-\notes\tqsk\cl{=K}\sk&\tqsk\nbbu1\qb1h\tqh1i&\tqsk\ds\sk&\tqsk\sk\sk\hqsk\en%
+\notes\cl{=K}\sk&\nbbu1\qb1h\tqh1i&\ds\sk&\sk\sk\hqsk\en%
\bar%13
\notes\qa{J}\sk\sk\sk\qa{c}\sk&\ibl1j2\qb1{j}\sk\qb1{k}\sk\qb1{l}\sk&\hp\sk\sk\sk\sk\sk&\ttie3\ibbl3k1\slur lku1\qb3{l}\qb3{k}\slur mlu1\qb3m\tqb3l\ibbl3m1\isluru3n\qb3n\tbbl3\tslur3m\qb3m\en
\Notes\sk&\tqb1m&\sk&\tqb3o\en%
@@ -135,7 +135,7 @@
\Notes\qb0{I}\tqh0G&\qa{d}\sk&\cu g\ds&\qb3{k}\tqb3i\en%
\Notes\qa{.J}&\qa{e}&\ds&\ibu3j{-2}\qb3{j}\en
\notes\sk\sk&\sk\sk&\ibbl2l{-2}\qb2l\tqb2k&\qb3{i}\sk\en
-\Notes\sk\tqsk\cu{^J}&\qa{e}\tqsk\sk&\ibl2j4\qb2j\tqsk\tqb2l&\qb3{h}\tqsk\tqh3g\en%
+\Notes\sk\cu{^J}&\qa{e}\sk&\ibl2j4\qb2j\tqb2l&\qb3{h}\tqh3g\en%
\bar%16
\notes\qa{K}\sk\sk\sk\qa{K}\sk&\ibu1g{1}\qb1{d}\sk\qb1{e}\sk\qb1{d}\sk&\ibbl2h1\qb2{h}\qb2{k}\qb2{j}\tqb2i\ibbl2j0\qb2j\tbbl2\qb2h&\ibu3f2\qb3f\sk\tqh3g\sk\ibu3h{-4}\qb3h\sk\en
\Notes\sk&\tqh1j&\itieu2k\tqb2k&\tqh3f\en%
Added: trunk/Build/source/utils/autosp/autosp-src/tests/quod4.aspc
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/tests/quod4.aspc (rev 0)
+++ trunk/Build/source/utils/autosp/autosp-src/tests/quod4.aspc 2017-12-30 22:19:20 UTC (rev 46169)
@@ -0,0 +1,160 @@
+% Generated by tex2aspc (2017-12-15).
+% Generated by autosp (2017-12-22).
+\input musixtex
+\input musixplt
+\input soul.sty
+\sodef{\so}{}{0.15em}{0.5em}{0.5em}
+\input musixsty
+\input musixps
+\nohalfties
+\def\pstiehgt{0.5}
+\def\psslurhgt{0.5}
+\vsize9.75in
+\voffset-0.5in
+\hsize7.0in
+\hoffset-0.25in
+\smallmusicsize
+\bigaccid
+\advance\parindent by 10pt
+\def\raisebarno{7\internote}%
+\nobarnumbers
+\relativeaccid
+\geometricskipscale
+\instrumentnumber4
+\setclef1\bass\setbassclefsymbol1\bassoct
+\setclef4\treble\settrebleclefsymbol4\trebleoct
+\generalsignature{+1}
+\generalmeter\meterC
+\setname1{B}
+\setname2{T}
+\setname3{A}
+\setname4{S}
+\songtop4\songbottom1
+\fulltitle{\sc\so{Quodlibet}}
+\subtitle{\it Variation 30 of the Goldberg Variations for Clavier}
+\title{\it Quodlibet}
+\author{J. S. Bach (1685--1750)}
+\shortauthor{\it J. S. Bach}
+\othermention{Arranged for Recorders by R. D. Tennent}
+\maketitle
+\startbarno=0
+\nobarnumbers
+\stafftopmarg=3.0\Interligne%
+\staffbotmarg=3.0\Interligne%
+\startpiece\addspace\afterruleskip%
+\systemnumbers%
+\anotes
+ \ds&
+ \cu d&
+ \ds&
+ \ds\en
+\bar%1
+\anotes
+ \ha N\sk\sk\sk\ha M\sk\sk\sk\sk\sk&
+ \ibu1g2\qb1{g}\qb1{h}\qb1{i}\tqh1j\ibl1k{-2}\qb1k\nbbl1\qb1j\tqb1i\ibu1h0\qb1h\nbbu1\qb1g\tqh1h&
+ &
+ \hp\sk\sk\sk\qp\sk\sk\ds\cu d\sk\hqsk\en
+\def\atnextbar{\znotes&&\centerpause&\en}%
+\bar%2
+\anotes
+ \ha L\sk\sk\sk\qa{.K}\sk\sk\sk\cu J\sk&
+ \ibu1i{-2}\qb1i\tqh1h\itied1g\qa g\sk\ttie1\qa g\sk\sk\ibu1f0\shake{n}\qb1f\nbbu1\qb1e\tqh1f&
+ \qa{n}\sk\qa{n}\sk\qa o\sk\sk\cl o\ds\sk&
+ \ibu3g2\qb3{g}\qb3{h}\qb3{i}\tqh3j\ibl3k{-2}\qb3k\nbbl3\qb3j\tqb3i\cu h\ds\sk\hqsk\en
+\bar%3
+\anotes
+ \hu I\sk\sk\tqsk\sk\hu J\sk\sk\sk&
+ \qa g\sk\ds\tqsk\cl k\ibu1j{-2}\qb1{j}\qb1{i}\qb1h\tqh1g&
+ \ibl2n{-1}\qb2{n}\qb2{o}\qb2{n}\tqsk\tqb2{=m}\ibl2j{0}\qb2{l}\qb2{k}\qb2j\tqb2p&
+ \qa{k}\sk\qa{k}\tqsk\sk\qa{l}\sk\qa{l}\sk\en
+\bar%4
+\anotes
+ \ha K\sk\sk\sk\sk\qa G\sk\ds\ibbl0b{-1}\qb0b\tqb0a&
+ \itied1f\shake{n}\qa f\sk\ttie1\ibbu1e{-2}\qb1f\tbbu1\qb1e\itied1d\tqh1d\ttie1\qa d\sk\qp\sk\sk&
+ \ibl2o{-1}\qb2{o}\qb2{n}\qb2{o}\sk\tqb2m\ibl2n{-2}\qb2n\tqb2m\ibl2n{-5}\qb2n\tqb2k\sk&
+ \ibl3k{-1}\qb3{k}\qb3{l}\qb3{k}\sk\tqb3j\ibu3h{-2}\shake{p}\qb3i\tqh3h\qa g\sk\sk\hqsk\en
+\bar%5
+\anotes
+ \ibl0M0\qb0N\nbbl0\qb0M\tqb0N\ibl0K0\qb0L\nbbl0\qb0K\tqb0L\qa{.M}\sk\sk\sk\cu I&
+ \qa{n}\sk\sk\qa{n}\sk\sk\qa{o}\sk\sk\qa{o}\sk&
+ \ibl2n2\qb2{n}\qb2{o}\sk\qb2{p}\tqb2q\sk\ibl2r{-2}\qb2r\nbbl2\qb2q\tqb2p\ibl2o6\qb2o\itieu2r\tqb2r&
+ \hp\sk\sk\sk\sk\sk\hqsk\qp\sk\sk\ds\cl k\en
+\bar%6
+\anotes
+ \qa{.L}\sk\sk\ibbl0M2\qb0M\tqb0N\tqsk\itieu0a\qa a\sk\sk\ttie0\ibbl0a{-2}\qb0{a}\qb0{N}\qb0{M}\tqsk\tqb0L&
+ \ibl1n{-1}\qb1{n}\qb1{o}\qb1{n}\tqb1m\sk\tqsk\ibl1l{-2}\qb1l\tqb1k\sk\cl{^j}\sk\ds\tqsk\sk&
+ \ttie2\ibl2r{-2}\qb2r\tqb2q\qa p\sk\sk\tqsk\qa{.o}\sk\sk\sk\sk\ibbl2i2\qb2i\tqsk\tqb2{^j}&
+ \ibl3n{-2}\qb3{n}\qb3{m}\qb3{l}\tqb3k\sk\hqsk\tqsk\shake{n}\ibl3i0\qb3{^j}\nbbl3\qb3i\tqb3j\cu h\sk\ds\tqsk\sk\hqsk\en
+\bar%7
+\anotes
+ \qa{M}\sk\qa{K}\sk\qa{N}\sk\qa{G}\sk&
+ \ibu1g0\qb1{f}\qb1{g}\qb1{h}\tqh1f\ibu1g{-2}\qb1{g}\qb1{f}\qb1{e}\tqh1d&
+ \ibl2k0\qb2{k}\qb2{l}\qb2{m}\tqb2k\ibl2i4\qb2{i}\qb2{k}\qb2{n}\tqb2m&
+ \qa{h}\sk\qa{h}\sk\qa{i}\sk\qa{i}\sk\en
+\bar%8
+\nspace
+\anotes
+ \tqsk\qu{.H}\sk\sk\sk\tqsk\sk\cu{^J}\ql K\sk\sk\sk\cl K&
+ \tqsk\ibu1c4\qb1{^c}\qb1{d}\sk\qb1{e}\tqsk\sk\itied1h\tqh1h\ttie1\ibu1h{-2}\qb1h\sk\tqh1g\sk\cu f&
+ \tqsk\ibl2l{-1}\qb2{.l}\sk\itieu2k\tbbl2\tqb2k\ttie2\ibbl2j0\qb2k\tqsk\tbbl2\qb2{^j}\itieu2l\tqb2l\ttie2\ibbl2l{-1}\qb2{l}\qb2{k}\qb2{l}\tqb2j\cl k&
+ \tqsk\ibu3h{0}\qb3{h}\qb3{i}\sk\qb3{h}\tqsk\sk\tqh3g\ibu3f{-1}\qb3f\sk\tqh3e\sk\cu d\en
+\leftrightrepeat
+\advance\barno-1%
+\anotes
+ \ds&
+ \cl m&
+ \ds&
+ \cl o\en
+\bar%9
+\anotes
+ \qa{d}\sk\qa{c}\sk\qa{b}\sk\sk\qa{N}\sk&
+ \ibl1k0\qb1{k}\qb1{m}\qb1{k}\tqb1{m}\ibl1k0\qb1{n}\qb1{k}\sk\qb1{k}\tqb1n&
+ \qa{o}\sk\qa{o}\sk\qa{p}\sk\sk\qa{p}\sk&
+ \ibl3m0\qb3{m}\qb3{o}\qb3{m}\tqb3o\ibl3k2\qb3k\nbbl3\qb3l\tqb3m\ibl3n{-4}\qb3n\tqb3l\en
+\bar%10
+\anotes
+ \ibl0b{-1}\qb0{c}\qb0{b}\qb0{c}\tqb0a\tqsk\qa{.b}\tqsk\sk\sk\sk\cl{^a}&
+ \cl l\ds\qp\sk\tqsk\qa{m}\tqsk\sk\sk\qa{m}\sk&
+ \ibl2o{-1}\qb2{o}\qb2{p}\qb2{o}\tqb2n\tqsk\ibl2m{-2}\qb2m\tqsk\tqb2l\sk\cl{^k}\ds&
+ \ibl3o{-2}\qb3{o}\qb3{n}\qb3{m}\tqb3l\tqsk\ibl3j0\shake n\qb3{^k}\tqsk\nbbl3\qb3{^j}\tqb3k\ibl3i8\qb3i\tqb3{p}\en
+\bar%11
+\anotes
+ \qa{N}\sk\qa{N}\sk\tqsk\qa{.a}\sk\sk\sk\sk\cl{^a}\sk&
+ \ibl1l0\qb1{n}\qb1{l}\qb1{n}\tqb1l\tqsk\ibl1m{-1}\qb1{m}\sk\qb1{n}\sk\qb1{m}\tqb1l\sk&
+ \qa{p}\sk\qa{p}\sk\tqsk\qa{q}\sk\sk\sk\qa{q}\sk\sk&
+ \ibl3m0\qb3{l}\qb3{p}\qb3{l}\tqb3{p}\tqsk\ibbl3k2\qb3{^k}\qb3{l}\qb3{m}\tqb3n\ibl3o{-2}\qb3o\nbbl3\qb3n\tqb3m\hqsk\en
+\bar%12
+\nspace
+\anotes
+ \tqsk\qa b\sk\sk\tqsk\qa I\sk\sk\sk\qa{.L}\sk\sk\sk\cl{=K}\sk&
+ \tqsk\ibl1k2\qb1{^k}\nbbl1\qb1l\tqb1m\tqsk\itied1i\qu i\sk\sk\sk\ttie1\ibu1i0\qb1i\nbbu1\qb1h\tqh1i\ibu1g2\qb1g\nbbu1\qb1h\tqh1i&
+ \tqsk\ibl2o{-1}\qb2p\qb2q\sk\tqsk\qb2p\sk\tqb2o\sk\ibl2n0\qb2n\nbbl2\qb2m\tqb2n\cl l\ds\sk&
+ \tqsk\ibl3n{-2}\qb3n\nbbl3\qb3m\tqb3l\tqsk\ibbl3k0\qb3{^k}\qb3{l}\qb3m\tqb3k\hqsk\itieu3l\ha l\sk\sk\sk\sk\sk\hqsk\en
+\bar%13
+\anotes
+ \qa{J}\sk\sk\sk\qa{c}\sk\sk\qa{.b}\sk\sk\sk\ibbu0J{-2}\qb0J\tqh0I&
+ \ibl1j2\qb1{j}\sk\qb1{k}\sk\qb1{l}\sk\tqb1m\ibl1n{-1}\qb1n\nbbl1\qb1m\tqb1l\cl k\ds\sk&
+ \hp\sk\sk\sk\sk\sk\sk\qa n\sk\sk\ibl2i{-5}\qb2n\tqb2g\sk&
+ \ttie3\ibbl3k1\slur lku1\qb3{l}\qb3{k}\slur mlu1\qb3m\tqb3l\ibbl3m1\isluru3n\qb3n\tbbl3\tslur3m\qb3m\tqb3o\qa{.k}\sk\sk\sk\ibbl3j2\qb3j\tqb3k\hqsk\en
+\bar%14
+\anotes
+ \qa{.H}\sk\sk\sk\ibbu0I2\qb0I\tqh0J\qa{.K}\sk\sk\sk\ibbu0J2\qb0J\tqh0K&
+ \ds\cu h\sk\ibu1e0\qb1e\nbbu1\qb1d\tqh1e\ibu1g1\qb1f\sk\itied1g\tqh1g\ttie1\ibu1g{-1}\qb1g\tqh1f\sk&
+ \ibl2j1\qb2{.j}\sk\tbbl2\tqb2k\ibl2j{-2}\qb2j\tqb2i\sk\ibu2h1\qb2h\sk\tqh2i\ibl2j2\qb2j\tqb2k\sk&
+ \ibl3l2\qb3l\nbbl3\qb3m\tqb3n\ibl3o{-2}\qb3o\tqb3n\sk\hqsk\ibbl3m{-2}\shake{o}\qb3m\tbbl3\qb3l\tqb3k\ibu3i{-6}\qb3j\tqh3d\sk\hqsk\en
+\bar%15
+\anotes
+ \ibu0I0\qb0{G}\qb0{H}\sk\qb0{I}\tqh0G\qa{.J}\sk\sk\sk\cu{^J}&
+ \qa{d}\sk\sk\qa{d}\sk\qa{e}\sk\sk\qa{e}\sk&
+ \ibu2i0\qb2i\nbbu2\qb2h\tqh2i\cu g\ds\ds\ibbl2l{-2}\qb2l\tqb2k\ibl2j4\qb2j\tqb2l&
+ \ibl3i0\qb3{i}\qb3{j}\sk\qb3{k}\tqb3i\ibu3j{-2}\qb3{j}\qb3{i}\sk\qb3{h}\tqh3g\en
+\bar%16
+\anotes
+ \qa{K}\sk\sk\sk\qa{K}\sk\sk\qa N\sk\sk\cu G&
+ \ibu1g{1}\qb1{d}\sk\qb1{e}\sk\qb1{d}\sk\tqh1j\ibu1i{-2}\qb1i\tqh1h\sk\cu g&
+ \ibbl2h1\qb2{h}\qb2{k}\qb2{j}\tqb2i\ibbl2j0\qb2j\tbbl2\qb2h\itieu2k\tqb2k\ttie2\ibl2j0\qb2k\nbbl2\qb2j\tqb2k\cl i&
+ \ibu3f2\qb3f\sk\tqh3g\sk\ibu3h{-4}\qb3h\sk\tqh3f\qa g\sk\sk\cu g\en
+\setrightrepeat
+\endpiece%
+\eject
+\end
Added: trunk/Build/source/utils/autosp/autosp-src/tex2aspc.1
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/tex2aspc.1 (rev 0)
+++ trunk/Build/source/utils/autosp/autosp-src/tex2aspc.1 2017-12-30 22:19:20 UTC (rev 46169)
@@ -0,0 +1,37 @@
+.\" This manpage is licensed under the GNU Public License
+.TH TEX2ASPC 1 2017-12-13 "" ""
+
+.SH NAME
+
+tex2aspc \- converts conventional MusiXTeX scores to .aspc format
+for processing by
+.BR autosp (1).
+
+.SH SYNOPSIS
+
+.B tex2aspc
+.RB [ \-v\ |\ \-\-version\ |\ \-h\ |\ \-\-help ]
+
+.B tex2aspc
+.IR infile [\fR.tex\fP]
+.RI [ outfile [ \fR.aspc\fP ]]
+
+This program re-factors (sequences of) conventional
+note-spacing commands (\\notes \\Notes \\NOtes ...)
+into
+\\anotes commands.
+This is intended for "legacy" scores in order to take advantage of
+features
+only provided by
+.BR autosp (1),
+such as "global" skips.
+
+.SH SEE ALSO
+.BR autosp (1)
+.PP
+musixdoc.pdf
+
+.SH AUTHOR
+This program and manual page were written by Bob Tennent <rdt at cs.queensu.ca>.
+
+
Added: trunk/Build/source/utils/autosp/autosp-src/tex2aspc.c
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/tex2aspc.c (rev 0)
+++ trunk/Build/source/utils/autosp/autosp-src/tex2aspc.c 2017-12-30 22:19:20 UTC (rev 46169)
@@ -0,0 +1,353 @@
+char version[12] = "2017-12-15";
+
+/* Copyright (C) 2017 R. D. Tennent School of Computing,
+ * Queen's University, rdt at cs.queensu.ca
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ * You should have received a copy of the GNU General
+ * Public License along with this program; if not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/* tex2aspc - converts conventional MusiXTeX code to autosp-compatible format */
+
+/* Usage: tex2aspc infile[.tex] [outfile[.aspc]]
+ * tex2aspc [-v | --version | -h | --help]
+ */
+
+
+# include "utils.h"
+
+#ifdef HAVE_CONFIG_H /* for TeXLive */
+#include <config.h>
+#endif
+
+# ifdef KPATHSEA
+# include <kpathsea/getopt.h>
+# else
+# include <getopt.h>
+# endif
+
+# ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+# else
+# ifndef HAVE__BOOL
+# define _Bool signed char
+# endif
+# define bool _Bool
+# define true 1
+# define false 0
+# endif
+
+# define PRIVATE static
+
+# define SHORT_LEN 256
+# define MAX_STAFFS 9
+
+
+PRIVATE char infilename[SHORT_LEN];
+PRIVATE char *infilename_n = infilename;
+PRIVATE char outfilename[SHORT_LEN];
+PRIVATE char *outfilename_n = outfilename;
+PRIVATE FILE *infile, *outfile;
+
+PRIVATE char line[LINE_LEN]; /* line of input */
+
+PRIVATE int ninstr = 1; /* number of instruments */
+PRIVATE int staffs[MAX_STAFFS] = {0,1}; /* number of staffs for ith instrument*/
+PRIVATE int nstaffs = 1; /* number of staffs */
+PRIVATE char terminator[MAX_STAFFS]; /* one of '&' "|', '$' */
+
+PRIVATE char notes[MAX_STAFFS][LINE_LEN];
+ /* accumulate commands to be output */
+PRIVATE char *n_notes[MAX_STAFFS];
+PRIVATE bool outputs = false; /* are there commands to be output? */
+
+
+
+PRIVATE void
+usage ()
+{
+ printf ("Usage: tex2aspc [-v | --version | -h | --help]\n");
+ printf (" tex2aspc infile[.tex] [outfile[.aspc]]\n");
+}
+
+
+PRIVATE
+void analyze_notes (char **ln)
+/* append material from *ln to \en to notes[*] and initialize terminator[*]. */
+{
+ int i; char *s; char *t;
+ int newlines = 0;
+ s = *ln+1; /* skip "/" */
+ while (isalpha(*s)) {s++;} /* skip rest of the initial command */
+ while (true)
+ { /* look for \en */
+ t = strstr(s, "\\en");
+ if (t != NULL) break;
+ /* replace EOL by a blank and append another line of input */
+ { char new_line[LINE_LEN];
+ char *nl;
+ if (fgets (new_line, LINE_LEN, infile) == NULL)
+ error ("Unexpected EOF.");
+ nl = new_line;
+ while (*nl == ' ') nl++; /* avoid spaces */
+ t = strpbrk (s, "\n%");
+ if (t == NULL) error ("Missing EOL.");
+ if (*t == '\n')
+ { *t = ' '; t++;}
+ *t = '\0';
+ if (append (line, &t, nl, LINE_LEN) >= LINE_LEN)
+ error ("Line too long.");
+ newlines++;
+ }
+ }
+ /* t -> "\en" */
+ if ( prefix("\\enotes", t) ) *ln = t+7;
+ else *ln = t+3;
+ *t = '$'; /* replace '\' by '$' (a distinctive terminating character) */
+ for (i=1; i <= nstaffs; i++)
+ { char *tt;
+ while (*s == ' ') s++; /* skip spaces */
+ tt = strpbrk (s, "|&$");
+ if (tt == NULL) error ("can't parse note-spacing command.");
+ while (s < tt)
+ { *n_notes[i] = *s;
+ n_notes[i]++; s++;
+ }
+ *n_notes[i] = '\0';
+ terminator[i] = *s;
+ if (*s != '$') s++;
+ }
+ lineno = lineno + newlines;
+}
+
+PRIVATE
+void process_command (char **ln)
+{ char *s;
+ if ( prefix("\\def\\nbinstrument", *ln) ||
+ prefix("\\instrumentnumber", *ln) )
+ {
+ s = strpbrk (*ln, "123456789");
+ if ( s == NULL ) error ("instrument number command unreadable.");
+ ninstr = atoi (s);
+ while (*ln <= s) { putc (**ln, outfile); (*ln)++;}
+ }
+
+ else if ( prefix("\\setstaffs", *ln) )
+ { /* for now, just record in staffs[i] */
+ int n, p;
+ s = strpbrk (*ln, "123456789");
+ if ( s == NULL ) error ("\\setstaffs command unreadable.");
+ n = (int)(*s) - (int)('0'); /* instrument number */
+ s = strpbrk (s+1, "123456789");
+ if ( s == NULL ) error ("\\setstaffs command unreadable.");
+ p = (int)(*s) - (int)('0'); /* number of staffs */
+ staffs[n] = p;
+ while (*ln <= s) { putc (**ln, outfile); (*ln)++;}
+ }
+
+ else if ( prefix("\\startpiece", *ln) ||
+ prefix("\\startextract", *ln) )
+ { int i, j;
+ nstaffs = 1;
+ for (j=2; j <= staffs[1]; j++)
+ nstaffs++;
+ for (i=2; i <= ninstr; i++)
+ { nstaffs++;
+ for (j=2; j <= staffs[i]; j++)
+ nstaffs++;
+ }
+ fputs (*ln, outfile);
+ *ln =*ln + strlen(*ln);
+ }
+
+ else if ( prefix("\\nnnotes", *ln) ||
+ prefix("\\nnotes", *ln) ||
+ prefix("\\notes", *ln) ||
+ prefix("\\Notes", *ln) ||
+ prefix("\\NOtes", *ln) ||
+ prefix("\\NOTes", *ln) ||
+ prefix("\\NOTEs", *ln) )
+ { char *s;
+ analyze_notes (ln);
+ outputs = true;
+ s = strchr (*ln, '\n');
+ if (s == NULL) s = *ln + strlen (*ln);
+ *ln = s+1;
+ }
+
+ else
+ { /* if there is output, generate it and re-initialize n_notes[*] */
+ if (outputs)
+ { int i;
+ fputs ("\\anotes\n", outfile);
+ for (i=1; i <= nstaffs; i++)
+ {
+ fputs (" ", outfile);
+ fputs (notes[i], outfile);
+ if (terminator[i] == '$')
+ fputs ("\\en", outfile);
+ else
+ fputc (terminator[i], outfile);
+ fputc ('\n', outfile);
+ n_notes[i] = notes[i];
+ *n_notes[i] = '\0';
+ }
+ outputs = false;
+ }
+ fputs (*ln, outfile);
+ *ln =*ln + strlen(*ln);
+ }
+
+}
+
+PRIVATE
+void process_line ()
+{
+ char *ln;
+ ln = &line[0];
+ while ( *ln != '\0')
+ {
+ while (*ln == ' ') { ln++; fputc (' ', outfile); }
+ if (*ln == '%') {
+ fprintf (outfile, "%s", ln);
+ return;
+ }
+ process_command (&ln);
+ }
+}
+
+
+PRIVATE
+void process_score ()
+{
+ int c; int i;
+ lineno = 0;
+ for (i=1; i < MAX_STAFFS; i++)
+ {
+ staffs[i] = 1;
+ n_notes[i] = notes[i];
+ *n_notes[i] = '\0';
+ }
+ c = getc (infile);
+
+ while ( c != EOF )
+ {
+ ungetc (c, infile);
+ fgets(line, LINE_LEN, infile);
+ lineno++;
+ process_line ();
+ c = getc (infile);
+ } /* c == EOF */
+}
+
+int main (int argc, char *argv[])
+{
+ int c;
+ char today[12];
+ time_t mytime;
+# define NOPTS 3
+ struct option longopts[NOPTS] =
+ { { "help", 0, NULL, 'h'},
+ { "version", 0, NULL, 'v'},
+ { NULL, 0, NULL, 0}
+ };
+
+ time (&mytime);
+ strftime (today, 11, "%Y-%m-%d", localtime (&mytime) );
+ printf ("This is tex2aspc, version %s.\n", version);
+ printf ("Copyright (C) 2017 R. D. Tennent\n" );
+ printf ("School of Computing, Queen's University, rdt at cs.queensu.ca\n" );
+ printf ("License GNU GPL version 2 or later <http://gnu.org/licences/gpl.html>.\n" );
+ printf ("There is NO WARRANTY, to the extent permitted by law.\n\n" );
+
+ c = getopt_long (argc, argv, "hv", longopts, NULL);
+ while (c != -1)
+ {
+ switch (c)
+ {
+ case 'h':
+ usage ();
+ printf ("Please report bugs to rdt at cs.queensu.ca.\n" );
+ exit (0);
+ case 'v':
+ exit (0);
+ case '?':
+ exit (EXIT_FAILURE);
+ default:
+ printf ("Function getopt returned character code 0%o.\n",
+ (unsigned int) c);
+ exit (EXIT_FAILURE);
+ }
+ c = getopt_long (argc, argv, "hv", longopts, NULL);
+ }
+
+ infilename[0] = '\0';
+ infilename_n = infilename;
+ if (optind < argc)
+ append (infilename, &infilename_n, argv[optind], sizeof (infilename));
+ else
+ { usage();
+ exit (EXIT_FAILURE);
+ }
+ infile = fopen (infilename, "r");
+ if (infile == NULL)
+ {
+ if (suffix (".tex", infilename) )
+ { printf ("Can't open %s\n", infilename);
+ exit (EXIT_FAILURE);
+ }
+ else
+ { append (infilename, &infilename_n, ".tex", sizeof (infilename));
+ infile = fopen (infilename, "r");
+ if (infile == NULL)
+ { printf ("Can't open %s\n", infilename);
+ exit (EXIT_FAILURE);
+ }
+ }
+ }
+ printf ("Reading from %s.", infilename);
+
+ optind++;
+ outfilename[0] = '\0';
+ outfilename_n = outfilename;
+ if (optind < argc) /* user-provided outfilename */
+ {
+ append (outfilename, &outfilename_n, argv[optind], sizeof (outfilename));
+ if (!suffix (".aspc", outfilename))
+ append (outfilename, &outfilename_n, ".aspc", sizeof (outfilename));
+ }
+ else
+ { /* output to infile.aspc */
+ append (outfilename, &outfilename_n, infilename, sizeof (outfilename));
+ outfilename_n -= 4;
+ *outfilename_n = '\0';
+ append (outfilename, &outfilename_n, ".aspc", sizeof (outfilename));
+ }
+
+ outfile = fopen (outfilename, "w");
+ if (outfile == NULL)
+ { printf ("Can't open %s\n", outfilename);
+ exit (EXIT_FAILURE);
+ }
+ printf (" Writing to %s.", outfilename);
+
+ printf ("\n\n");
+
+ fprintf (outfile, "%% Generated by tex2aspc (%s).\n", version);
+ process_score ();
+
+ return 0;
+}
Property changes on: trunk/Build/source/utils/autosp/autosp-src/tex2aspc.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/utils/autosp/autosp-src/tex2aspc.test
===================================================================
--- trunk/Build/source/utils/autosp/autosp-src/tex2aspc.test (rev 0)
+++ trunk/Build/source/utils/autosp/autosp-src/tex2aspc.test 2017-12-30 22:19:20 UTC (rev 46169)
@@ -0,0 +1,21 @@
+#! /bin/sh -vx
+
+# Copyright (C) 2015 Peter Breitenlohner <tex-live at tug.org>
+# You may freely use, modify and/or distribute this file.
+
+echo && echo "*** tex2aspc --help"
+./tex2aspc --help || exit 1
+
+echo && echo "*** tex2aspc --version"
+./tex2aspc --version || exit 1
+
+echo && echo "*** tex2aspc (missing infile)"
+./tex2aspc && exit 1
+
+echo && echo "*** tex2aspc quod2.tex quod4.aspc"
+cp tests/quod4.aspc .
+rm -f quod4.aspc
+./tex2aspc quod2.tex quod4.aspc || exit 1
+
+echo && echo "*** diff quod4.aspc tests/quod4.aspc"
+diff quod4.aspc tests/quod4.aspc || exit 1
Modified: trunk/Build/source/utils/autosp/configure
===================================================================
(Binary files differ)
Modified: trunk/Build/source/utils/autosp/configure.ac
===================================================================
--- trunk/Build/source/utils/autosp/configure.ac 2017-12-30 06:49:10 UTC (rev 46168)
+++ trunk/Build/source/utils/autosp/configure.ac 2017-12-30 22:19:20 UTC (rev 46169)
@@ -7,7 +7,7 @@
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-m4_define([autosp_version], [2017-07-14])[]dnl using unmodified autosp source
+m4_define([autosp_version], [2017-12-26])[]dnl using unmodified autosp source
AC_INIT([autosp (TeX Live)], autosp_version, [tex-k at tug.org])
AC_PREREQ([2.65])
AC_CONFIG_SRCDIR([autosp-src/autosp.c])
More information about the tex-live-commits
mailing list