autosp - препроцессор для генерации команд нотного интервала для партитуры MusiXTeX
autosp [-v | --version | -h | --help]
autosp [-d | --dotted] [-l | --log] infile[.aspc] [outfile[.tex]]
Эта программа упрощает создание партитур MusiXTeX путем преобразования (нестандартных) команд формы \anotes ... \en в одну или несколько обычных команд для интервалов между нотами (\notes \Notes \NOtes ...), определяемых фактические значения нот, при необходимости вставленные команды интервала \sk. Кодирование всего такта можно вводить по частям за раз, не заботясь об изменениях интервалов нот внутри части или требованиях к интервалам других частей.
Например, если применить к
\anotes\qa J\qa K&\ca l\qa m\ca n\en
autosp генерирует
\Notes\qa J\sk\qa K\sk&\ca l\qa m\sk\ca n\en
Как правило, команда \anotes генерирует несколько обычных команд для интервалов между нотами.
Если аргумент infile не имеет расширения .aspc, входные данные берутся из infile.aspc, если этот файл существует.
Если аргумент outfile не имеет расширения .tex, выходные данные отправляются в outfile.tex. Если аргумент outfile не указан, выходные данные будут отправлены в infile.tex (или в infile.ltx, если встречается объявление \documentclass).
Для команд \anotes разрывы строк и пробелы могут предшествовать сегментам примечаний, что обеспечивает более гибкое форматирование исходного кода; разрывы строк и пробелы будут исключены из вывода.
Например,
\anotes
\ibl0K0\qb0K\nbbl0\qb0{.K}\tbbbl0\tbbl0\tql0L&
\ibbl1m{-2}\qb1{.m}\tbbbl1\tbbl1\qb1l\tql1k\en
является приемлемым и генерирует
\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
Если используется параметр -l ( --log ), создается очень подробный журнал infile.alog.
Если используется параметр -d ( --dotted ), пунктирные лучевые заметки вида \qb{n }{.p} не дается дополнительное пространство; предполагается, что последующая нота будет сдвинута командой, подобной \roff, или командой пробела, такой как \qsk или \hqsk. Команды вида \qlp{p}, \qlpp{p}, ..., \qpb{n}{ p} и \qppb{n}{p} всегда имеют указанные интервалы.
Если имеется один нотоносец, последовательные такты паузы на целый такт объединяются в паузу из нескольких тактов. Тактовые паузы могут быть закодированы с использованием стандартной нотации \def\atnextbar, но нестандартная команда \Cpause (или \Cp) в нотном сегменте также создает тактовую паузу.
Команды пробелов \sk и \bsk в исходниках отбрасываются, но не "маленькие" пропуски \hsk, \qsk, \tqsk, \hqsk или \qqsk, или небольшие "обратные" пропуски \hbsk, \bqsk, \btsk, или \bhск. Более того, нестандартные команды \QQsk, \HQsk, \TQsk и \Qsk в исходниках генерируют "глобальные" пропуски; т. е. эффект \qqsk, \hqsk, \tqsk или \qsk соответственно в каждом нотоносце. Это гарантирует, что нотоносцы остаются синхронизированными, если в каком-либо нотоносце (нотоносцах) требуется дополнительное расстояние.
Глобальные пропуски также можно получить в последовательностях коллективного кодирования, используя до четырех последовательных запятых, чтобы получить эффекты \QQsk, \HQsk, \TQsk или \Qsk соответственно. Глобальные пропуски \tqsk (или, для двойных квартир, \qsk) автоматически вставляются перед знаками случайности ('^', '_', '=', '<', '>') в примечаниях с коллективным кодированием (за исключением случаев, когда предыдущее примечание является «виртуальным», т. е. пропуском). Если этот автоматический дополнительный интервал нежелателен в каком-либо контексте, его можно избежать, заменив случайный знак в последовательности коллективного кодирования любой из явных случайных команд: \sh , \fl, \na, \smallsh, \bigsh и т. д. Если автоматический интервал недостаточен, его можно увеличить, добавив достаточное количество запятых или используя обычную команду примечаний вместо \anotes.
Сегмент примечания может быть полностью пустым, но если сегмент примечания должен начинаться с пробела или содержать его, значение ноты этого пробела должно быть явно указано с помощью команды вида \ha{*}, \qa{. *}, \qa{*}, \ca{*} и т. д.
Начиная с версии 2017-06-14 эффекты вызовов \TransformNotes реализуются препроцессором autosp. Это позволяет использовать musixlyr в оценках autosp; musixlyr.tex несовместим с реализацией \TransformNotes в musixtnt.tex.
Все остальные обычные команды MusiXTeX выводятся точно так же, как и на входе.
autosp определяет интервал для обычных заметок из самих команд заметок; например,
\qa, \qu, \ql, \qp
результат в
\NOtes;
\ca, \cu, \cl, \ds
результат в
\Notes;
и так далее. Интервал для распределенных заметок определяется кратностью лучей, так что \ib... приводит к \Notes, \ibb... приводит к \notes и т. д.
Коллективное кодирование последовательностей нот (включая знаки случайности и точки) обрабатывается путем расширения последовательности до последовательности отдельных команд нот.
autosp масштабирует ноты по соответствующему значению размера инструмента.
autosp предполагает, что & и | (а не \nextinstrument и \nextstaff) используются для разделения инструментов и нотоносцев.
Апподжиатуры и примечания распознаются по использованию \tinynotesize; используется расстояние между нотами 1,45\elemskip. Если это не подходит и не может быть исправлено небольшим пропуском, можно использовать команду \vnotes с любым желаемым интервалом.
autosp поддерживает x-tuplets, представленные с помощью \xtuplet{x} или \xxtuplet{x:y} и <тройки вводятся с помощью любой из следующих команд (независимо от любого переопределения \txt или \tuplettxt):
\triolet
\uptrio
\downtrio
\uptuplet
\downtuplet
autosp предполагает, что x-дуплет должен воспроизводиться в течение (x-1)/x кажущейся длительности x-дуплета. Так, например, триоль в восьмых считается сыгранным за время одной четвертной ноты. Если это предположение неверно, x-туплет должен быть закодирован явно с помощью подходящей команды \vnotes; см. первый такт barsant2.aspc для примера нестандартного x-туплета: 5-кортеж из 64-х нот с предполагаемой продолжительностью шесть 64-х.
В некоторых полиритмических партитурах цифра \txt может быть смещена, даже если сами ноты расположены правильно. В этих случаях можно подавить нормальный вывод \txt, используя нестандартные команды \Triolet (без аргументов) или \Xtuplet{k}\ и поместив цифру в нужное место с помощью \zcn (т. е.\зчарнот).
autosp может работать с одновременными x-туплетами в нескольких нотоносцах при условии, что значения x и общая длительность нот идентичны.
В некоторых барочных партитурах, особенно И.С. Баха, лучевая шестнадцатая нота выровнена по вертикали с третьей нотой триоли восьмых нот в другом нотоносце (подразумевая, что они должны звучать одновременно); например.,
\ibl0L0\qb0{.L}\tqql0L
будет воспроизводиться так, как если бы оно было записано
\uptrio{b}10\ql L\hroff{\cl L}
Следующее кодирование выровняет лучевую шестнадцатую ноту с третьей нотой триоли в другом нотоносце:
\ibl0L0\qb0{.L}\hbsk\tqql0L
и, аналогично, для триолей шестнадцатых нот:
\ibbu0J0\qb0{.J}\hbsk\nqqqu0J\qb0{.J}\hbsk\tqqqu0J
Как правило, пользовательские макросы не обрабатываются и не расширяются; однако определения формы
\def\atnextbar{\znotes ... \en}
генерировать определения, учитывающие \TransformNotes.
Предполагается, что все нотоносцы имеют одинаковый счетчик; см. kinder2.aspc для примера того, как обойти это.
autosp может быть неэффективен для музыки с более чем одним голосом в одном нотоносце. Может быть целесообразно использовать отдельный нотоносец для каждого голоса, чтобы при необходимости избегать \anotes, или изначально опускать определенные голоса и добавлять их в результирующий файл TeX.
См. файлы quod2.aspc, kinder2.aspc, geminiani.aspc и barsant2.aspc для оценок, подходящих для ввода в autosp. Программу tex2aspc можно использовать для преобразования «устаревших» партитур MusiXTeX в формат .aspc.
msxlint(1) tex2aspc(1)
musixdoc.pdf
Эта программа и страница руководства были написаны Бобом Теннетом rdt@cs.queensu.ca.