summaryrefslogtreecommitdiff
path: root/macros/generic/musixtex/doc/musixdoc/preparing.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/musixtex/doc/musixdoc/preparing.tex')
-rw-r--r--macros/generic/musixtex/doc/musixdoc/preparing.tex285
1 files changed, 285 insertions, 0 deletions
diff --git a/macros/generic/musixtex/doc/musixdoc/preparing.tex b/macros/generic/musixtex/doc/musixdoc/preparing.tex
new file mode 100644
index 0000000000..88e3756bf4
--- /dev/null
+++ b/macros/generic/musixtex/doc/musixdoc/preparing.tex
@@ -0,0 +1,285 @@
+\chapter{Preparing to Enter Notes}\label{preparing}
+ \section{After the setup, what next?}
+
+The command \keyindex{startmuflex} initiates the serious business of
+\musixtex. On the first \TeX\ pass it
+opens \ital{jobname}{\tt .mx1} for writing bar-by-bar tabulations of all
+hard and scalable space to be fed to \verb|musixflx| on the second pass.
+\verb|musixflx| generates \ital{jobname}{\tt .mx2} which defines the
+number of bars in each system and the factors relating scalable space
+to hard space in each system. On the third pass both files will be opened
+and read to define the final spacing. These files should be closed before
+leaving \TeX, preferably before
+\keyindex{bye} or \keyindex{end}, with \keyindex{endmuflex}. Normally \TeX\
+closes all open files on its own when terminating the program, but it is still
+cleaner to do this explicitly.
+
+After \verb|\startmuflex|, the command \keyindex{startpiece} will initiate
+the first system, containing all instruments you have previously defined.
+The indentation will be \keyindex{parindent}, so if you want nonzero
+indentation, this register should be set to the desired hard dimension
+before issuing \verb|\startpiece|.
+
+ \section{Horizontal spacing commands}\label{newspacings}
+\subsection{Basic note spacing}
+\musixtex\ provides a set of macros each of which defines a particular
+increment of scalable spacing. The default set is tabulated in
+Figure~\ref{spacingtable}.
+\begin{table}
+\begin{small}
+\begin{center}
+\tinynotesize
+\renewcommand{\arraystretch}{1.5}% I hate LaTeX (attributed to Daniel Taupin)
+\begin{tabular}{|l|l|l@{~~~~}l|}
+\multicolumn{1}{c}{Usage}&
+\multicolumn{1}{c}{spacing}&
+\multicolumn{2}{c}{Suggested use}\\\hline
+\keyindex{znotes}\verb| ... & ... & ... \en|&(non spacing)
+ &&specials\\
+\keyindex{notes}\verb| ... & ... & ... \en|&\verb=2=\keyindex{elemskip}
+ &\ccu1&16th\\
+\keyindex{notesp}\verb| ... & ... & ... \en|&\verb=2.5\elemskip=
+ &\pt1\ccu1&dotted 16th, 8th triplet\\
+\keyindex{Notes}\verb| ... & ... & ... \en|&\verb=3\elemskip=
+ &\cu1&8th\\
+\keyindex{Notesp}\verb| ... & ... & ... \en|&\verb=3.5\elemskip=
+ &\cup1&dotted 8th, quarter triplet\\
+\keyindex{NOtes}\verb| ... & ... & ... \en|&\verb=4\elemskip=
+ &\qu1&quarter\\
+\keyindex{NOtesp}\verb| ... & ... & ... \en|&\verb=4.5\elemskip=
+ &\qup1&dotted quarter, half triplet\\
+\keyindex{NOTes}\verb| ... & ... & ... \en|&\verb=5\elemskip=
+ &\hu1&half\\
+\keyindex{NOTesp}\verb| ... & ... & ... \en|&\verb=5.5\elemskip=
+ &\hup1&dotted half\\
+\keyindex{NOTEs}\verb| ... & ... & ... \en|&\verb=6\elemskip=
+ &\wh1&whole\\\hline
+\end{tabular}\end{center}
+\end{small}
+\caption{Spacing Commands}
+\label{spacingtable}
+\end{table}
+What each of these macros actually does is to set an
+internal dimension register \keyindex{noteskip} to the given multiple
+of the fundamental spacing unit \keyindex{elemskip}
+(which has dimensions of length, usually given in points).
+Normally, every \itxem{spacing note} (e.g.,
+\keyindex{qu},
+\keyindex{qb}, \keyindex{hl}) will then be followed by a spacing of
+width \keyindex{noteskip}. By selecting a particular note spacing macro
+from the above table, the typesetter can thus control the relative spacing
+between notes.
+
+The actual spacing will therefore be determined by the value of
+\verb|\elemskip|. On the first pass, \TeX\ will set a default value for
+\verb|\elemskip| based on the declared music size, or the user can
+set it to any hard dimension he chooses. However, the value on the
+first pass doesn't matter as much as you might think (more about that later).
+On the second pass,
+\verb|musixflx| determines where the system breaks will come,
+and then computes the final value of \verb|\elemskip| for each system.
+
+If the arithmetic progression of note spacings in the above table does not
+meet your wishes, you may activate an alternate set with
+the command \keyindex{geometricskipscale}. As implied by the name, this
+is a geometric progression, where {\Bslash Notes} is
+$\sqrt{2}$ times wider than {\Bslash notes}, {\Bslash NOtes} is $\sqrt{2}$
+times wider than {\Bslash Notes}, and so forth.
+Then the factors in the middle column
+of the above table will be replaced by the sequence
+$2.00$, $2.38$, $2.83$, $3.36$, $4.00$, $4.76$, $5.66$, $6.72$, and $8.00$. Two additional
+macros, \verb|\NOTEsp| and \verb|\NOTES|, will be defined corresponding to
+factors $9.52$ and $11.32$. The original arithmetic progression can be
+restored by \keyindex{arithmeticskipscale}.
+
+If neither of the predefined progressions satisfies you, you may define
+your own, using the more general macro \verb|\vnotes| in the same manner
+that \musixtex\ uses it for the predefined progressions. So for example
+\verb|\def\NOtes{\vnotes5.34\elemskip}| will redefine \verb|\NOtes| in
+the obvious way, and the extension to the other spacing macros should
+likewise be obvious.
+The following abbreviations may be useful:
+\begin{quote}
+\begin{tabular}{lcl}
+ \keyindex{nnotes} &for&\verb|\vnotes1.6\elemskip|\\
+ \keyindex{nnnotes} &for&\verb|\vnotes1.28\elemskip|
+\end{tabular}
+\end{quote}
+
+In addition, inside any pair \verb|\notes...\en| there are two
+equivalent ways to
+locally redefine \verb|\noteskip| to another scalable value, namely by
+issuing a command like
+\verb|\noteskip=2.4\noteskip| or \keyindex{multnoteskip}\verb|{2.4}|, which
+have the expected effect until the notes group is terminated or
+\verb|\noteskip| is further redefined.
+Finally, by issuing a command like
+\keyindex{scale}\verb|{2.4}| outside any notes group, you can scale all subsequent
+\verb|\noteskip|s by any desired factor.
+
+These facilities may be useful, for example,
+to control spacing when there are three equal duration notes in one staff against two
+ in another.
+
+
+%\subsection{\Bslash{\tt elemskip}, \Bslash{\tt beforeruleskip} and
+%\Bslash{\tt afterruleskip}}
+%
+% avr wants to call these "commands", but das doesn't.
+%\subsection{Commands {\Bslash\texttt{elemskip}},
+%{\Bslash\texttt{beforeruleskip}}
+%and {\Bslash\texttt{afterruleskip}}}
+%\subsection{{\Bslash\texttt{elemskip}},
+%{\Bslash\texttt{beforeruleskip}}
+%and {\Bslash\texttt{afterruleskip}}}
+
+\subsection{Before and after rule skips}
+
+
+We've just seen how \verb|\elemskip| is used to scale the spacings between notes.
+There are two other spacing units that share some behavior with \verb|\elemskip|:
+\verb|\beforeruleskip| is the horizontal space that is automatically inserted
+\ital{before} every bar line, while \verb|\afterruleskip| goes \ital{after}
+every bar line. (In
+practice \verb|\beforeruleskip| is almost aways set to \verb|0pt| because there
+will typically already be a space of \verb|1\noteskip| before every barline.)
+On the first pass, just as with \verb|\elemskip|, \musixtex\ assigns them default
+values according to the following table:
+
+%\begin{quote}\begin{tabular}{lrrr}\hline
+%\ital{using}&\keyindex{elemskip}&\keyindex{afterruleskip}
+% &\keyindex{beforeruleskip}\\\hline
+%\keyindex{normalmusicsize}&6pt&8pt&0pt\\
+%\keyindex{smallmusicsize}&4.8pt&6pt&0pt\\\hline
+%\end{tabular}\end{quote}
+
+\begin{center}\begin{tabular}{lrrr}\hline
+\ital{using}&\keyindex{elemskip}&\keyindex{afterruleskip}
+ &\keyindex{beforeruleskip}\\\hline
+\keyindex{normalmusicsize}&{\tt 6pt}&{\tt 8pt}&{\tt 0pt}\\
+\keyindex{smallmusicsize}&{\tt 4.8pt}&{\tt 6pt}&{\tt 0pt}\\\hline
+\end{tabular}\end{center}
+
+\noindent In the second pass, \verb|musixflx| assigns new values to each
+of these dimensions, a different set for each line or system. It does this
+in such a way that available scalable horizontal space in each system is
+exactly filled up.
+
+The values that are assigned to these dimensions on the first pass, whether by
+default or explicitly by the user or in some combination, only matter insofar
+as their relative sizes. That's why we earlier stated that the first-pass value
+of \verb|\elemskip| didn't matter as much as you might think. For both music sizes
+in the table above, it appears that by default \verb|\afterruleskip| is
+\verb|1.3333\elemskip|\footnote{Editor's note: It is a mystery why the authors
+%of \musixtex\ didn't simply define \Bslash{\tt beforeruleskip} and \Bslash{\tt afterruleskip} as
+%specific multiples of \Bslash{\tt elemskip}}.
+of \musixtex\ didn't simply define \Bslash\texttt{beforeruleskip} and \Bslash\texttt{afterruleskip} as
+specific multiples of \Bslash\texttt{elemskip}.}.
+
+Note that if you do want to change any of these
+values, you have to do so \ital{after} setting the
+music size and before \verb|\startpiece|.
+
+Here is an example that illustrates the various dimensions under discussion:\\
+ %\check
+\begin{music}\nostartrule
+\afterruleskip7pt
+\beforeruleskip2pt
+\parindent0pt
+\setclefsymbol1\empty
+% special problems afford special solutions
+\makeatletter\global\clef@skip\z@ \makeatother
+\startpiece
+\zchar{16}{\hbox to\afterruleskip{\downbracefill}}%
+\zchar{19}{\hbox to\afterruleskip{\hss a\hss}}%
+\addspace\afterruleskip
+\zchar{16}{\hbox to2\elemskip{\downbracefill}}%
+\zchar{19}{\hbox to2\elemskip{\hss b\hss}}%
+\zchar{3}{\hbox to\elemskip{\upbracefill}\hbox to\elemskip{\upbracefill}}%
+\zchar{-1}{\hbox to\elemskip{\hss e\hss}\hbox to\elemskip{\hss e\hss}}%
+\notes\qa l\en
+\znotes\en
+\zchar{16}{\hbox to4\elemskip{\downbracefill}}%
+\zchar{19}{\hbox to4\elemskip{\hss c\hss}}%
+\zchar{3}{\hbox to\elemskip{\upbracefill}\hbox to\elemskip{\upbracefill}%
+ \hbox to\elemskip{\upbracefill}\hbox to\elemskip{\upbracefill}}%
+\zchar{-1}{\hbox to\elemskip{\hss e\hss}\hbox to\elemskip{\hss e\hss}%
+ \hbox to\elemskip{\hss e\hss}\hbox to\elemskip{\hss e\hss}}%
+\NOtes\qa l\en
+\znotes\en
+\zchar{16}{\hbox to\beforeruleskip{\downbracefill}}%
+\zchar{19}{\hbox to\beforeruleskip{\hss d\hss}}%
+\setemptybar\endpiece
+\end{music}
+\begin{quote}\begin{tabular}{l@{~$\rightarrow$~}l}
+a&\keyindex{afterruleskip}\\
+b&\keyindex{notes}\verb| = \vnotes 2\elemskip|\\
+c&\keyindex{NOtes}\verb| = \vnotes 4\elemskip|\\
+d&\keyindex{beforeruleskip}\\
+e&\keyindex{elemskip}
+\end{tabular}\end{quote}
+
+\section{Moving from one staff or instrument to another}
+ \label{movingtostaffs}
+
+When entering notes inside \verb|\notes ... \en|, the usual way to suspend
+input for one instrument and start the next (higher) is with the character
+``\verb|&|''\index{"&@{\tt\char'046}}. If the instrument has more than one
+staff, to switch to the next (higher) one you can use the character
+``\verb+|+''\index{\tt\char'174@{\tt\char'174}}.
+
+There are some alternate navigation commands that may be useful in
+ special situations. Due to ``catcode
+problems'' (see Section~\ref{catcodeprobs}) it may sometimes be necessary
+to use the more explicit commands
+\keyindex{nextinstrument} and \keyindex{nextstaff}, which have the same
+meanings as ``\verb|&|'' and ``\verb+|+'' respectively. To switch to the previous
+(next lower) staff of the same instrument, use \keyindex{prevstaff}. This might
+be useful if a beam starts in a higher staff than where it ends. More
+generally, to switch to an arbitrary instrument $n$, use
+\keyindex{selectinstrument}\onen, and to switch to an arbitrary staff $n$
+of the current instrument, use \keyindex{selectstaff}\verb|{|$n$\verb|}|. In the
+latter case if $n$ exceeds the number of staves defined for the instrument, you
+will receive an error message. You can enter part of a successive voice on
+the \ital{same} staff by using \verb|\selectstaff{|$n$\verb|}| with $n$ for
+the \ital{current} staff.
+
+
+\section{Automatic note spacing}
+\label{autosp}
+
+A preprocessor called \texttt{autosp}\index{autosp@{\tt autosp}} automates the generation
+of note-spacing commands by converting (non-standard) commands
+of the form \verb|\anotes ... \en| into one or more conventional
+note-spacing commands, as determined by the note values
+themselves, with \verb|\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, from the input
+\begin{verbatim}
+ \anotes\qa J\qa K&\ca l\qa m\ca n\en
+\end{verbatim}
+\texttt{autosp} generates
+\begin{verbatim}
+ \Notes\qa J\sk\qa K\sk&\ca l\qa m\sk\ca n\en
+\end{verbatim}
+\texttt{autosp} also supports non-standard commands for adding ``global''
+skips (i.e., in every staff) and centered whole-bar rests.
+
+As an option, \emph{all} note-spacing commands (except \verb|\znotes|
+and \verb|\vnotes|) will be processed similarly; this is useful for correcting
+the spacing in single-instrument parts extracted from a multi-instrument score;
+see Section~\ref{musixtnt}.
+
+The \texttt{autosp} package is available in
+\href{https://www.tug.org/texlive/}{\underline{TeXLive}}
+and
+\href{http://miktex.org/}{\underline{MiKTeX}}, and
+can also be found at
+the \href{http://icking-music-archive.org/software/autosp/autosp.zip}
+{\underline{Werner Icking Music Archive}}
+or at
+\href{http://mirrors.ctan.org/support/autosp.zip}{\underline{CTAN}}
+(the Comprehensive \TeX\ Archive Network).
+