From CHURMS@srvnac1.nac.ac.za Mon Dec 18 06:33 MET 1995 Received: from hprib.lps.u-psud.fr by physol.lps.u-psud.fr with SMTP (1.38.193.4/16.2) id AA10419; Mon, 18 Dec 1995 06:33:55 +0100 Return-Path: Received: from nacdh4.nac.ac.za by hprib.lps.u-psud.fr with SMTP (1.37.109.4/16.2) id AA07379; Mon, 18 Dec 95 06:38:10 +0100 X-Pmrqc: 1 Received: from ferryman.nac.ac.za by nacdh4.nac.ac.za (PMDF V5.0-4 #10122) id <01HYU9FXC4OWBR9ULK@nacdh4.nac.ac.za> for taupin@lps.u-psud.fr; Fri, 15 Dec 1995 14:55:48 +0200 Received: From SRVNAC1/WORKQUEUE by ferryman.nac.ac.za via Charon-4.0A-VROOM with IPX id 100.951215145436.256; Fri, 15 Dec 1995 14:55:19 +0200 Date: Fri, 15 Dec 1995 14:54:34 GMT+200 From: Cecil Churms Subject: Suggested Alterations MusixTeX Document - Chapter 1 To: taupin@lps.u-psud.fr Message-Id: Organization: National Accelerator Center X-Mailer: Pegasus Mail v3.1 (R1a) Content-Transfer-Encoding: 7BIT X-Finfo: DOS,"MUSIXNEW.TEX",,,,Text Priority: normal X-File: MUSIXNEW.TEX Status: RO % -*- Latex -*- \ifx\documentclass\undefined \documentstyle[twoside,11pt,musixdoc,multicol]{report} \else \documentclass[twoside,11pt]{report} \usepackage{multicol} \usepackage{musixdoc} \fi \def\musictex{Music\TeX{}} \startmuflex\makeindex \begin{document} \title{\Huge\bf\musixtex\raise1.5ex\hbox{\large\copyright}\\[\bigskipamount] \LARGE\bf Using \TeX\ to write polyphonic\\or instrumental music\\\Large\sl $\beta$--Test Version T.41~-- \today} \author{\Large\rm Daniel \sc Taupin\\\large\sl Laboratoire de Physique des Solides\\\normalsize\sl (associ\'e au CNRS)\\\normalsize\sl b\^atiment 510, Centre Universitaire, F-91405 ORSAY Cedex\\ E-mail : {\tt taupin@lps.u-psud.fr}\\\medskip \\\Large\rm Ross \sc Mitchell\\\large\sl CSIRO Division of Atmospheric Research,\\\normalsize\sl Private Bag No.1, Mordialloc, Victoria 3195,\\ Australia \\\medskip \\\Large\rm Andreas \sc Egler$^\ddag$\\\large\sl (Ruhr--Uni--Bochum)\\ Ursulastr. 32\\ D-44793 Bochum} \date{} %\show\maketitle \let\endtitleORI\endtitlepage \def\endtitlepage{\vfill\noindent $^\ddag$ {\it For personal reasons, Andreas %begin% %Egler decided to retire from authorship of this work. Nevertherless, he has %done an important work about that, and I decided to maintain his name on this Egler decided to retire from authorship of this work. Nevertheless, he has made an important contribution, and I have decided to keep his name on this %end% first page. {\sc D. Taupin}}\endtitleORI} \maketitle \clearpage \thispagestyle{empty} \null \vfill \begin{flushright}\it %.. All the possible is done,\\ %the impossible is being done,\\ %for miracles I ask for some delay.\\[\smallskipamount] %{\sc N.N.}\\[\bigskipamount] %...~time after time~...\\[\smallskipamount] %{\sc Cindy Lauper}\\[\bigskipamount] If you are not familiar with \TeX{} at all\\ I would recommend to find another software\\ package to do musical typesetting.\\ Setting up \TeX{} and \musixtex\\ on your machine and mastering it\\ is an awesome job which gobbles up\\ a lot of your time and disk space.\\[\medskipamount] But, once you master it...\\[\smallskipamount] {\sc Hans Kuykens} \end{flushright} \clearpage \setcounter{page}1 \tableofcontents \setcounter{secnumdepth}3 \pagestyle{headings} \chapter{What is \musixtex\ ?} \hrule\smallskip \section*{*Preface} \noindent Dear user, This is still a $\beta$--Test version, which means that some features will be added or corrected. However our intent is to avoid removing existing commands, in order to spare your own adaptation problems or your typing time correcting scores you already have in your archive. The manual is progressively enhanced, but still %begin% %somewhat chaotic with any no man's land regions. %Sections with a star indicate, either that text is partly missing or that %something might change inside next time. %Same remark holds when you find ``???'' or ``.!.''. somewhat chaotic with many no man's land regions. Sections marked with a star, ``???'' or ``.!.'' indicate either that text is partly missing, or that something might change before the next release. %end% \smallskip\hrule\medskip \musixtex\ is a set of \TeX\ macros to typeset polyphonic, orchestral or polyphonic music. Therefore, it is mainly supposed to be used to type wide scores -- just because true musicians seldom like to have to frequently turn pages -- and this is not really compatible with \LaTeX's standard page %begin% %formats, even the \verb|A4.sty| the \verb|\textheight| and \verb|\textwidth|, %which are too small for musician needs. formats. Even with \verb|A4.sty|, the \verb|\textheight| and \verb|\textwidth| are too small for musician needs. %end% %begin% % However, a \LaTeX\ style has been also provided (and it is used for the However, a \LaTeX\ style has also been provided (and it is used for the %end% typing of the present paper) but this \verb|musixtex| style is fit for musicographic books rather than for normal scores to be actually played. It should be emphasized that \musixtex\ is not intended to be a compiler which would translate some \ixem{standard musical notation}s into \TeX\, nor to decide by itself about aesthetic problems in music typing. \musixtex\ only typesets staves, notes, chords, beams, slurs and ornaments as requested by the composer. Since it makes very few typesetting decisions, \musixtex\ appears to be a versatile and rather powerful tool. However, due to the important amount of information to be provided to the typesetting %begin% %process, coding \musixtex\ might appear to be awfully complicated, just as %the real keyboard or orchestral music. Therefore, it should be interfaced therefore by process, coding \musixtex\ might appear to be as awfully complicated as the real keyboard or orchestral music. It should therefore be interfaced by %end% some pre-compiler in the case of the composer/typesetter wanting aesthetic decisions to be automatically made by somebody (or something) else. % %\footnote{A short description to all known compilers for \musixtex\ can be %found on page \pageref{compiler}f.}. \section{\musixtex\ principal features} %\check \subsection{Music typesetting is two-dimensional} %begin% % Most of the people who just learnt a bit of music at college probably think %that music is a linear sequence of symbols, just as literary texts to be %\TeX-ed. In fact, with the exception of strictly monodic instruments like Most people who have just learned a bit of music at college, probably think that music is a linear sequence of symbols, similar to literary texts to be \TeX-ed. On the contrary, with the exception of strictly monodic instruments like %end% most orchestral wind instruments and solo voices, one should be aware that %begin% %reading music actually is a matricial operation: the non-soloist musician %successively reads \textit{columns} of simultaneous notes which he actually %plays if he is a pianist, clavichordist or organist, which he actually reads reading music is actually a matricial operation: the non-soloist musician successively reads \textit{columns} of simultaneous notes which he plays if he is a pianist, clavichordist or organist, which he reads %end% and watches if he conducts an orchestra, and which he is supposed to check and partially play when he is a soloist who wants to play in time with the accompanying instrument or choir. In fact, our personal experience of playing piano and organ as well as %begin% %sometimes helping as an alternate Kapellmeister leads us to think that actual %music reading and composing is a slightly more complicated intellectual %process: music reading, music composing and music thinking seems to be a sometimes helping as an alternate Kapellmeister leads us to think that music reading and composing is actually a slightly more complicated intellectual process: music reading, music composing and music thinking seem to be a %end% three layer process. The musician usually reads or thinks several consecutive notes (typically a long \textit{beat} or a group of logically connected notes), then he goes down to the next instrument or voice and finally assembles the whole %begin% %to build a part of music lasting roughly a few seconds. Then he handles the to build a sequence of music lasting roughly a few seconds. He then proceeds to the %end% next \textit{beat} or \textit{bar} of his score. Thus, it appears that the humanly logical way of coding music consists in horizontally accumulating a set of \textit{vertical combs} with \textit{horizontal teeth} as described in Table \ref{readtable}. \def\hboxit#1{\boxit{\rlap{#1}\hphantom{note sequence three}}} \begin{table} \begin{center} \begin{tabular}{|ll|ll|}\hboxit{note sequence one} &\hboxit{note seq.\ four} &\hboxit{note seq.\ seven} &\hboxit{note seq.\ ten}\\\hboxit{note sequence two} &\hboxit{note seq.\ five} &\hboxit{note seq.\ eight} &\hboxit{note seq.\ eleven}\\\hboxit{note sequence three} &\hboxit{note seq.\ six} &\hboxit{note seq.\ nine} &\hboxit{note seq.\ twelve}\\ \end{tabular} \end{center} \caption{The order in which a musician reads music}\label{readtable} \end{table} This is the reason why, in \musixtex\ the fundamental \textit{macro} is of the form \begin{center} \verb|\notes ... & ... & ... \enotes|\footnote{Also available for \keyindex{enotes} is the abbreviation \keyindex{en}.} \end{center}\index{\&} \noindent where the character \verb|&| is used to separate the notes to be typeset on respective staffs of the various instruments, starting from the bottom. In the case of an instrument whose score has to be written with several staffs, these staffs are separated by the character \|. \index{"|@{\tt\char'174}} Thus, a score written for a keyboard instrument and a monodic instrument (for example piano and violin) will be coded as follows: \begin{center} \verb=\notes ... | ... & ...\enotes= \end{center} \noindent for each column of simultaneous \textit{groups of notes}. It is worth emphasizing that we actually said \textit{``groups of notes''}: this means that in each section of the previous macro, the music typesetter is welcome to insert, not only chord notes to be played at once, but small sequences of consecutive notes which build something he understands as a musical phrase. This is why note typing macros are of two kinds in \musixtex, namely the note macros which are not followed by spacing afterwards, and those which induce horizontal spacing afterwards. \subsection{The spacing of the notes} It seems that many books have dealt with this problem. Although it can lead to interesting algorithms, we think it is %begin% %not in practice an important point. not an important point in practice. %end% In fact, each column of notes has not necessarily the same spacing and, in principle, this \itxem{spacing} should depend on the shortest duration of the simultaneous notes. But this cannot be established as a rule, for at least two reasons: \begin{enumerate} \item spacing does not depend only on the local notes, but also on the context, at least in the same bar. \item in the case of polyphonic music, exceptions can easily be found. Here is an example: \begin{music} \generalmeter{\meterfrac44} \startextract\NOtes\zhu j\ql h\hl g\hu k\ql f\enotes\endextract \end{music} \noindent where it can be clearly seen that the half notes at beats 2 and 3 must be spaced as if they were quarter notes since they overlap, which is obvious only because of the presence of the indication of the \itxem{meter} 4/4. \end{enumerate} %begin% %So the typesetter has to take care on his own for good readable spacings. So the typesetter has to take care of good readable spacings on his own. %end% Therefore, we preferred to provide the composer/typesetter with a set of macros which can be found in \ref{newspacings}. %begin% % \subsection{Music tokens, rather than a ready-made generator} \subsection{Music tokens, rather than a ready-made generator} %end% The tokens provided by \musixtex\ are: \begin{itemize} \item the note symbols \textit{without stem}; \item the note symbols \textit{with stems, and hooks for eighth notes and %begin% %beyond}; % \item the indications of beam beginnings and beam ends; % \item the indications of beginnings and ends of ties and slurs; % \item the indications of accidentals; shorter}; \item the indication of beam beginnings and beam ends; \item the indication of beginnings and ends of ties and slurs; \item the indication of accidentals; %end% \item the ornaments: arpeggios, trills, mordents, pinc\'es, turns, staccatos and pizzicatos, fermatas, etc.; \item the bars, the meter and signature changes, etc. \end{itemize} Thus, \verb|\wh a| produces an \textit{A (of nominal frequency 222.5~Hz, unless transposed)} of duration being a \textit{whole note}. In the same way, \verb|\wh h| produces an \textit{A (445~Hz)} of duration represented by a \textit{whole note}, \verb|\qu c| produces a \textit{C (250~Hz approx.)} whose value is a \textit{quarter note with stem up}, \verb|\cl J| produces a \textit{C (125~Hz approx.)} of duration equal to an \textit{eighth note with stem down}, etc. To generate quarter, eighth, sixteenth, etc. chords, the macro %begin% %\keyindex{zq} can be used: it produces a quarter note head the vertical \keyindex{zq} can be used: it produces a quarter note head, the vertical %end% position of which is memorized and recalled when another stemmed note (possibly with a hook) is coded; then the stem is adjusted to link all simultaneous notes. Thus, the perfect C-major chord, i.e. \begin{music} \startextract\NOtes\zq{ceg}\qu j\en\endextract \end{music} \noindent is coded \verb|\zq c\zq e\zq g\qu j| or, in a more concise way, \verb|\zq{ceg}\qu j| (stem up): in fact, single notes are treated\dots\ like one-note chords. \subsection{Beams} \textit{Beams}\index{beams} are generated using macros which define their beginning (at the current horizontal position), together with their altitude, %begin% %their direction (upper of lower), their multiplicity, their slope and their their direction (upper or lower), their multiplicity, their slope and their %end% reference number. This latter feature -- the reference number -- appears to be necessary, since one may want to write beams whose horizontal extents overlap: therefore, it is necessary to specify which beam the notes belong to and which beam is terminated at a given position. \subsection{Setting anything on the score} A general macro (\keyindex{zcharnote}) provides a means of putting any sequence of symbols (in fact, some \verb|\hbox{...}|) at any pitch of any staff of any instrument. Thus, any symbol defined in a font (letters, math symbols, etc.) can be used to typeset music. \section{A simple example} Before giving more details, we give below an example of the two first bars of the sonata in C-major KV545 by {\sc Mozart}\index{Mozart, W.A.@{\sc Mozart, W.A.}}: \begin{music} \parindent10mm \setname1{Piano} \setstaffs12 \generalmeter{\meterfrac44} \startextract \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\ql l\sk\ql n\en \bar \Notes\ibu0f0\qb0{dgf}|\qlp i\en \notes\tbu0\qb0g|\ibbl1j3\qb1j\tbl1\qb1k\en \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en \endextract \end{music} The \textit{coding} is set as follows: \begin{quote}\begin{verbatim} \begin{music} \parindent10mm \instrumentnumber{1} % a single instrument \setname1{Piano} % whose name is Piano \setstaffs1{2} % with two staffs \generalmeter{\meterfrac44}% 4/4 meter chosen \startextract % starting real score \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\ql l\sk\ql n\en \bar \Notes\ibu0f0\qb0{dgf}|\qlp i\en \notes\tbu0\qb0g|\ibbl1j3\qb1j\tbl1\qb1k\en \Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en \endextract % terminate excerpt \end{music} \end{verbatim}\end{quote} \begin{itemize} \item \verb|\ibu0f0| begins an upper beam, aligned on the \textit{f}, reference number 0, slope 0 \item \verb|\tbu0| terminates this beam before writing the second \textit{g} by means of \verb|\qb0g| \item \verb|\qb..| indicates a note belonging to a beam. %begin% % \item \verb|\sk| sets a space between the two quarters at the right \item \verb|\sk| sets a space between the two quarters in the right %end% hand, so that the second is aligned with the third eighth of the left hand. \item\verb|\qlp| is a quarter with a point. \item\verb|\ibbl1j3| begins a double beam, aligned on the \textit{C} (\verb|j| at this pitch) of slope 15\%. \end{itemize} \section{*Three-pass system} %begin% %\TeX's line breaking procedure implicitly assumes %that a normal line of text will contain many words, so that interword \TeX's line-breaking procedure implicitly assumes that a normal line of text will contain many words, so that inter-word %end% glue need not stretch or shrink too much to justify the line. This strategy does not work very well for music. If each bar of music is treated as a word, in the sense that inter-bar glue is placed at the end of each bar, then the usual result is the appearance of unsightly gaps before each bar rule. This follows naturally from the %begin% %fact that the number of bars per line is normally much fewer fact that the number of bars per line is normally many fewer %end% than the number of words in a line of text. To address the above aim, a three pass system was developed. On the first pass, information about each bar is written to an external file, by default \verb|jobname.mx1|. This file begins with a header listing parameters such as line width, paragraph indentation, clef, sign and meter widths, and the first-pass elemental spacing \keyindex{elemskip}. Width information within the bars is classified either as ``soft'' or ``hard'': ``soft'' widths are those amenable to subsequent rescaling (e.g. a note box), while ``hard'' widths represent unscalable material such as clef symbols, key signatures and bar rules.\index{soft width}\index{hard width} After the first pass, an external routine is run to determine optimal values of the elemental spacing (\verb|\elemskip|) for each line, so as to properly fill each line, and to lead to the piece filling an integral number of lines. This routine was written in FORTRAN and now converted to C rather than \TeX, the main reason being the lack of an array handling capability in \TeX, and the concern that if such a routine were added to \musixtex, storage problems might be exacerbated. The resulting routine reads in the file \verb|jobname.mx1|, and writes its output to \verb|jobname.mx2|. The latter file contains a single entry for each line of music in the reformatted output. The key piece of information is the revised value of \keyindex{elemskip} for each line. Next, the file is re-\TeX-ed. On this third pass, the \verb|jobname.mx2| file is read in, and the information used as described above. To give an easy example: after pass 1 you get the following output: \begin{music} \hsize=100mm \generalmeter{\meterfrac24}% \parindent 0pt \setsign1{-3} \startpiece\bigaccid \NOtes\qu{ce}\enotes \bar \NOtes\qu{gh}\enotes \bar \NOtes\qu{=b}\enotes \Notes\ds\cu g\enotes \bar \NOtes\qu{^f=f}\enotes \raggedstoppiece\contpiece% this is cheated, the problem was to get % pass 1 and pass 3 at the same time \NOtes\qu{=e}\itied0e\qu{_e}\enotes \bar \Notes\ttie0\Qqbu ed{_d}c\enotes \bar \Notes\ibu0b{-2}\qb0{=b}\enotes \notes\nbbu0\qb0{=a}\tqh0N\enotes \Notes\Dqbu cf\enotes \raggedstoppiece\contpiece \NOtes\uptext{\it tr}\qu e\uptext{\it tr}\qu d\enotes \bar \NOtes\qu c\qp\enotes \setdoubleBAR\raggedstoppiece \end{music} After running \verb|musixflx| and \TeX-ing the second time you'll get: \begin{music} \hsize=100mm \generalmeter{\meterfrac24}% \parindent 0pt \generalsignature{-3} \startpiece\bigaccid \NOtes\qu{ce}\enotes \bar \NOtes\qu{gh}\enotes \bar \NOtes\qu{=b}\enotes \Notes\ds\cu g\enotes \bar \NOtes\qu{^f=f}\enotes \bar \NOtes\qu{=e}\itied0e\qu{_e}\enotes \bar \Notes\ttie0\Qqbu ed{_d}c\enotes \bar \Notes\ibu0b{-2}\qb0{=b}\enotes \notes\nbbu0\qb0{=a}\tqh0N\enotes \Notes\Dqbu cf\enotes \bar \NOtes\uptext{\it tr}\qu e\uptext{\it tr}\qu d\enotes \bar \NOtes\qu c\qp\enotes \Endpiece \end{music} which was coded as: \begin{verbatim} \hsize=100mm \generalmeter{\meterfrac24}% \parindent 0pt \generalsignature{-3} \startpiece\bigaccid \NOtes\qu{ce}\en\bar \NOtes\qu{gh}\en\bar \NOtes\qu{=b}\en \Notes\ds\cu g\en\bar \NOtes\qu{^f=f}\en\bar \NOtes\qu{=e}\itied0e\qu{_e}\en\bar \Notes\ttie0\Qqbu ed{_d}c\en\bar \Notes\ibu0b{-2}\qb0{=b}\enotes \notes\nbbu0\qb0{=a}\tqh0N\enotes \Notes\Dqbu cf\en\bar \NOtes\uptext{\it tr}\qu e\uptext{\it tr}\qu d\en\bar \NOtes\qu c\qp\en\Endpiece \end{verbatim} %begin% %The biggest advantage using a 3-pass system is the very easy and fast %redesigning (or re-layouting?), especially of a greater (or longer) masterpiece %with changing only one parameter, namely \keyindex{mulooseness}. This value The biggest advantage of using a 3-pass system is the very easy and fast alteration to the layout which is possible, especially of a long masterpiece, by changing only one parameter, namely \keyindex{mulooseness}. This value %end% acts analogous to \TeX's \verb|\looseness| command. For non-\TeX-perts: if you %begin% %end a paragraph and state somewhere inside \verb|\looseness=-1|, then will %\TeX\ try to make this paragraph one line shorter than he normally would do. end a paragraph and state \verb|\looseness=-1| somewhere inside, then \TeX\ will try to make this paragraph one line shorter than it normally would. %end% %begin% %\musixtex\ does the same, but instead for paragraphs, for \textit{sections}. \musixtex\ does the same, but instead of for paragraphs, for \textit{sections}. %end% What is a \textit{section}? As long as you don't force a line break, this means the whole piece. When you force a line break with either \keyindex{stoppiece}, \keyindex{endpiece}, \keyindex{zstoppiece}, \keyindex{Stoppiece}, \keyindex{Endpiece}, \keyindex{alaligne} \keyindex{zalaligne}, \keyindex{alapage} or \keyindex{zalapage} you start a %begin% %new \textit{section}. Somewhere\footnote{One could advise: at the beginning or %at the end, for the sake of clarity.} %before you can change the value of new \textit{section}. Somewhere\footnote{Advisably, at the beginning or at the end of the section, for the sake of clarity.} before the end of the \textit{section}, you can change the value of %end% \keyindex{mulooseness} to something different from the default of 0. %begin% %To give an easy example, changing the last line in previous example to: To give an easy example, changing the last line in the previous example to: %end% \begin{verbatim} \NOtes\qu c\qp\en\mulooseness=1\Endpiece \end{verbatim} yields: \begin{music} \hsize=100mm \generalmeter{\meterfrac24}% \parindent 0pt \generalsignature{-3} \startpiece\bigaccid \NOtes\qu{ce}\enotes \bar \NOtes\qu{gh}\enotes \bar \NOtes\qu{=b}\enotes \Notes\ds\cu g\enotes \bar \NOtes\qu{^f=f}\enotes \bar \NOtes\qu{=e}\itied0e\qu{_e}\enotes \bar \Notes\ttie0\Qqbu ed{_d}c\enotes \bar \Notes\ibu0b{-2}\qb0{=b}\enotes \notes\nbbu0\qb0{=a}\tqh0N\enotes \Notes\Dqbu cf\enotes \bar \NOtes\uptext{\it tr}\qu e\uptext{\it tr}\qu d\enotes \bar \NOtes\qu c\qp\enotes \mulooseness1\Endpiece \end{music} or: \begin{verbatim} \NOtes\qu c\qp\en\mulooseness=-1\Endpiece \end{verbatim} %begin% %yields (a little bit tight, only for demonstration of \keyindex{mulooseness}): yields (a little bit tight, but only for the sake of demonstration of \keyindex{mulooseness}): %end% \begin{music} \hsize=100mm \generalmeter{\meterfrac24}% \parindent 0pt \generalsignature{-3} \startpiece\bigaccid \NOtes\qu{ce}\enotes \bar \NOtes\qu{gh}\enotes \bar \NOtes\qu{=b}\enotes \Notes\ds\cu g\enotes \bar \NOtes\qu{^f=f}\enotes \bar \NOtes\qu{=e}\itied0e\qu{_e}\enotes \bar \Notes\ttie0\Qqbu ed{_d}c\enotes \bar \Notes\ibu0b{-2}\qb0{=b}\enotes \notes\nbbu0\qb0{=a}\tqh0N\enotes \Notes\Dqbu cf\enotes \bar \NOtes\uptext{\it tr}\qu e\uptext{\it tr}\qu d\enotes \bar \NOtes\qu c\qp\enotes \mulooseness-1\Endpiece \end{music} Here is the fastest way to get a satisfactory output: \begin{enumerate} \item build up the piece bar\footnote{Or two or three, %begin% %whatever you prefer.} by bar. Pay much attention on correct spacings, and go whatever you prefer.} by bar. Pay much attention to correct spacings, and go %end% on only when you are really satisfied with them. \item \TeX~$\Longrightarrow$ {\tt musixflx} $\Longrightarrow$ \TeX. %begin% % \item Look at the output and decide if you want to have more or less \item Look at the output and decide if you want to have more or fewer %end% systems lines, e.g.~to fill the page or to get an even number of pages.\index{musixflx@{\tt musixflx}} \item Adjust \keyindex{mulooseness}. \item Delete the \verb|jobname.mx2| and again\\ \TeX~$\Longrightarrow$ \verb|musixflx| $\Longrightarrow$ \TeX \quad{\sl (For hackers: watch the difference in \verb|jobname.mx1|!)} \end{enumerate} %begin% %\noindent If you really follow point by point then your whole layout is %ready and you can hold up your \verb|jobname.mx2|. This counts only as long %as you don't change the spacings inbetween. \noindent If you have really followed this step by step, then your whole layout will be ready and you will not have to generate \verb|jobname.mx2| again. This counts only as long as you don't change any spacings. %end% If you get the warning: \verb|You can't use \raise ...|, than read the upper paragraph again and follow the instruction of point 5. There are some more advantages. Without using \textit{glue} it's possible to compute every horizontal position in a line. This enables using, %begin% %e.g.~octave lines, without specifying a dimension, but with saying e.g.~octave lines, without specifying a dimension, but by saying %end% \verb|\i...| and \verb|\t...|. \subsection{External executable {\tt musixflx}} %begin% %One drawback depending portability to every computer is the executable One drawback affecting portability between computers is the executable %end% {\tt musixflx}\index{musixflx@{\tt musixflx}}. We are still searching for %begin% %people, who are able to compile the C-source and can take care for it. people who are able to compile the C-source and maintain it. %end% %begin% %On most computer the executable is invoked by typing the name of the program %and the name of the file, which shall be computed, means: On most computers, the executable is invoked by typing the name of the program and the name of the file to be acted upon. \textit{i.e.} %end% \verb|musixflx jobname.mx1| %begin% %Optionally you can add a char to indicate one of the debug modes, which are: Optionally, you can add a letter to indicate one of the debug modes, which are: %end% \begin{quote} %begin% %\verb|d | for debug informations to screen\\ %\verb|f | for debug informations to file \verb|jobname.mxl|\\ %\verb|s | to get the computed lines immediately on screen %end% \verb|d | for debug information to screen\\ \verb|f | for debug information to file \verb|jobname.mxl|\\ \verb|s | to get the computed lines immediately on screen \end{quote} %begin% %To allow the easy use with a batch file, \verb|musixflx| can either be fed To allow for ease of use with a batch file, \verb|musixflx| can either be fed %end% with \verb|jobname.mx1|, \verb|jobname.tex| or only %begin% %\verb|jobname|, which all opens \verb|jobname.mx1|. \verb|jobname|, all of which opens \verb|jobname.mx1|. %end% %begin% % \medskip However, for large scores (more than 4 pages approximately), having \medskip For large scores (more than 4 pages approximately), having %end% only one section and an overall value of \verb|\mulooseness| becomes %begin% %unpractical since one wants not only to have nicely spaces systems, but one %alsa usually wants to have completely filled pages to avoid empty top and %bottom margins at the last page. It is then wise to force the total number of %pages and maybe the line breaks in each page, which can be done either using impractical since one wants not only to have nicely spaced systems, but one also usually wants to have completely filled pages to avoid empty top and bottom margins on the last page. It is then wise to force the total number of pages and maybe the line breaks in each page, which can be done by either using %end% explicit \keyindex{alapage} and \keyindex{alaligne}, or more automatically by means of the \keyindex{autolines} command borrowed from \musictex\ and implemented in the additional {\ttxem{musixcpt.tex}} file. %begin% % \subsection{Restrictions and warnings} If you had worked with \musictex\ %before, you must be aware that two main things did change, which are the %spacing (and spacing commands) and the line breaking, see \ref{spacing}, %p.~\pageref{spacing} and \ref{linebreak} p.~\pageref{linebreak}. \subsection{Restrictions and warnings} If you have worked with \musictex\ before, you must be aware that two main things have changed, namely the spacing (and spacing commands) and the line breaking, see section~\ref{spacing}, p.~\pageref{spacing} and section~\ref{linebreak} p.~\pageref{linebreak}. %end% %\check A serious practical problem concerns the effect of unrecorded spaces, such as those created by source lines not ended by \verb|%| \index{%@{\tt\char37}} or \keyindex{relax} or another control sequence ending in a letter. These will result in the dreadful {\bf Overfull hbox} messages appearing during pass 3. \medskip \centerline{\boxit{Considerable discipline is needed to avoid this problem!}} %begin% %When you start using this software package, you will spent a lot of time for %searching the reasons of over/underful-hbox warnings, which will appear during %pass 3. In fact, you should definitely ignore them during pass 1, When you start using this software package, you will spend a lot of time searching for the cause of over/underfull-hbox warnings, which will appear during pass 3. You may ignore them during pass 1, %end% but \textit{you must} find their cause when they appear during pass 3. %begin% %In \musixtex\ there is no glue (only $\pm$ 1pt behind \verb|\writesignatures|, %so it works only, if every space is recorded in the correct way. So never use In \musixtex\ there is no glue (only $\pm$ 1pt behind \verb|\writesignatures|), so it works only if every space is recorded in the correct way. As a result, never use %end% \verb|\hskip| or \verb|\kern| with the exception of `zero'-boxes, like \verb|\rlap|, \verb|\llap|, \verb|\zcharnote|, \verb|\uptext|, etc., or %begin% %(apparently) fixed length boxes like \verb|\hsong|. But that's not all, all %spacing commands\footnote{Except {\Bslash hardspace} which exceptionally has %the opposite purpose.} must be fed with scalable values. Scalable are %\verb|\noteskip|, \verb|\elemskip|, \verb|\afterruleskip| and %\verb|\beforeruleskip|, possibly preceeded by an integer or decimal number. (apparently) fixed length boxes like \verb|\hsong|. But that's not all---all spacing commands\footnote{Except {\Bslash hardspace} which is an exception and has the opposite purpose.} must be fed with scalable values (\textit{e.g.} \verb|\noteskip|, \verb|\elemskip|, \verb|\afterruleskip| and \verb|\beforeruleskip|, optionally preceded by an integer or decimal number). %end% \verb|musixflx| can't work if the values of \verb|\noteskip|, \verb|\afterruleskip|, \verb|\beforeruleskip|, are directly assigned %begin% %``hard''\footnote{Hard are all, which are not scalable} values inbetween ``hard''\footnote{Hard values are all values which are not scalable} values in between %end% \verb|\startpiece| and \verb|\stoppiece|\footnote{{\Bslash endpiece} has the same meaning}.\index{hard spacing} %begin% %These restrictions makes it hardly compatible with most sources designed for %\musictex\footnote{However, most examples provided by D. {\sc Taupin} in These restrictions make it hardly compatible with most sources designed for \musictex\footnote{Most examples provided by D. {\sc Taupin} in %end% \musictex's distribution can be run with \musixtex\ without serious %begin% %problems... But indeed they have been corrected afterwards for the sake of problems... However, they will eventually have to be corrected for the sake of %end% compatibility.}. Most of them have to be adjusted to get things going. Some values are much more important than in \musictex, namely \verb|\elemskip|, \verb|\afterruleskip| and \verb|\beforeruleskip|. %begin% %Especially the ratio between them is very important if you use %\keyindex{mulooseness} more often to adjust the number of lines: %all of them are multiplied with the same factor in each section. The ratio between them is especially very important if you use \keyindex{mulooseness} often to adjust the number of lines: all of them are multiplied by the same factor in each section. %end% %\check \subsection{\musixtex's laws} \begin{enumerate} %begin% % \item Never have line that doesn't finish either with a control sequence %or with a a \verb|%| %inside \verb|startpiece...\stoppiece|\\ \item Never have a line that doesn't finish either with a control sequence or with a \verb|%| inside of \verb|\startpiece...\stoppiece|\\ %end% !!! \musixtex\ forgives NOTHING !!! %begin% % (a space in default font (using plain) causes 3.33pt unrecorded space, % but there is only $\pm$ 1pt glue in \musixtex) (a space in the default font (using plain-\TeX) causes 3.33pt of unrecorded space, but there is only $\pm$ 1pt of glue in \musixtex) %end% \item \verb|\off| must be used with relative values, like \verb|\noteskip|, \verb|\elemskip|, \verb|\after[before]ruleskip| \item \verb|\qsk| and \verb|\hqsk| are now scalable, e.g. \verb|\qsk| %begin% % doesn't mean exactly one notehead width (depends on \verb|\elemskip| doesn't mean exactly one note head width (it depends on \verb|\elemskip| %end% and \verb|flex_factor|) %begin% % \item Text of songs and any not \musixtex\ text must be put in zero boxes, like \item Text of songs and any non-\musixtex\ text must be put in zero boxes, like %end% \verb|\zcharnote, \zchar, \rlap, \lrlap, \llap, \uptext, ...| %begin% % \item Don't touch neither \verb|\noteskip| with hard values, % nor \verb|\after[before]ruleskip| at all inside: \item Don't touch either \verb|\noteskip| with hard values, or \verb|\after[before]ruleskip| at all inside of %end% \verb|\startpiece (\debutmorceau) ... \stop[end]piece (\susp[fin]morceau)| \end{enumerate} \section{Some highlights} %\check \subsection{*Signatures} Signatures can be stated either for all instruments, for example by \keyindex{generalsignature}\verb|{-2}| which sets two flats on each staff, or separately for each instrument. Thus, the \keyindex{generalsignature} can be partly overridden by \keyindex{setsign}\verb|2{1}| which puts one sharp on the staffs of \itxem{instrument number} 2. Of course, the current signature may change at any time as well as the meters and clefs. \subsection{Transposition} An important question is: \textit{``can \musixtex\ transpose a score~?''}. The answer is now 99.5~\% \textit{yes}. If fact, there is an internal register named \keyindex{transpose} the default value of which is zero, but it may be %begin% %set to any reasonable positive of negative value. In that case, it offsets all set to any reasonable positive or negative value. In that case, it offsets all %end% symbols pitched with letter symbols by that number of pitch steps. However, it will neither change the signature nor the local accidentals, and if -- for example -- you transpose a piece written in $C$ by 1 pitch, \musixtex\ will not know whether you want it in $D\flat$, in $D$ or in $D\sharp$. This might become tricky if accidentals occur within the piece, which might have to be converted into flats, naturals, sharps or double sharps, depending on the new chosen signature. To avoid this trouble, \textit{relative} accidentals have been implemented, the actual output of which depends on the pitch of %begin% %this accidental and of the current signature.\index{relative accidentals} this accidental and on the current signature.\index{relative accidentals} %end% %\check \subsection{Selecting special instrument scores} Another question is: \textit{``can I write an orchestral score and extract the separate scores for individual instruments~?''} The answer is 95~\% \textit{yes}: in fact, you can define your own macros \verb|\mynotes...\enotes|, \verb|\myNotes...\enotes| with as many %begin% %arguments as there are in the orchestral score (hope this is less or equal to arguments as there are in the orchestral score (hopefully this is less than, or equal to %end% 9, but \TeX perts know how to work around) and change its definition %begin% %depending on the selected instrument (or insert a test on the value of some depending on the selected instrument (or insert a test dependent on the value of some %end% selection register). But the limitation is that the numbering of instruments may change, so that \verb|\setsign3| may have to become \verb|\setsign1| if instrument 3 is alone. But, in turn, this is not a serious problem for average \TeX\ wizard apprentices. %\check \subsection{Variable staff and note sizes} %begin% % Although the staff size is 20pt as a standard, \musixtex\ allows scores of Although the standard staff size is 20pt, \musixtex\ allows scores of %end% 16pt staff sizes. In addition, any instrument may have a special staff size (usually smaller than the overall staff size) and special commands \verb|\smallnotesize| or \verb|\tinynotesize| enable notes (and also beams or accidentals) to be of a smaller size, in order to quote optional notes or \textit{cadenzas}. %\check \section{*How to get it} Primary site is {\tt hprib.lps.u-psud.fr} (anonymous {\tt ftp}); say: \verb|cd pub/musixtex| \verb|mget musix*.tex| (to get the macros) \verb|cd /pub/musixtex/mf| \verb|mget *.mf| (to get the source of the fonts) \verb|cd /pub/musixtex/tfm| \verb|binary| %begin% % \verb|mget *.tfm| (to get the source of the fonts) \verb|mget *.tfm| (to get the font metrics) %end% \noindent or: \verb|cd /pub/musixtex| \verb|binary| \verb|mget *.zip| (to get the zipped packages) \medskip Official mirrors are %begin% %the CTAN servers. To get it you have tou say: the CTAN servers. To get it you have to say: %end% \verb|cd ctan| (to go to the CTAN server) \verb|cd macros/musixtex/taupin| \verb|binary| \verb|mget *.zip| (to get the zipped packages) \medskip The whole \itxem{distribution} can fits into a single 1.2Mbyte or 1.44Mbyte diskette. All sources (including fonts) are provided, either separately or ``zipped''. %\check \section{Enhancements} \subsection{Recent easy enhancements} Many enhancements have been asked for, to the ``father'' of \musixtex, namely \musictex, and this is a proof that it is considered as useful by many people. Some of these enhancements which seemed hard were in fact rather easy to implement, for example small notes to represent grace notes and cadenzas, or gregorian chant features. Some of them were more difficult, such as handling of lyrics now provided %begin% %sing version T.40. since version T.40. %end% %\check \subsection{Enhancement limitations} Many requested improvements have not been \textit{yet} implemented for several reasons: \begin{itemize} \item The authors' natural laziness (!) \item More seriously: many of them would require using some more registers; unfortunately, \TeX\ registers are not numerous (256 of each kind and the limit of \keyindex{dimen} registers is nearly reached (especially using \LaTeX), but we do our best). \item We do not think it is wise to introduce in \musixtex\ itself a great number of macros which would be poorly used by most users: the reason is that \TeX\ memory and --- moreover --- \TeX\ registers are hardly limited and that unused macros may occupy many of these, leading to things crashing because of \verb|TeX capacity exceeded|. Therefore, many additional %begin% %library files are now provided, which may be invoked or now, %depending on the user's specific needs. Moste of them are used to compile this library files are now provided, which may be invoked or not, depending on the user's specific needs. Most of them are used to compile this %end% \LaTeXe\ manual... except the {\tt musixadd.tex} and {\tt musixmad.tex}. \end{itemize} %\check \section{Acknowledgements} The idea of implementing the present package is due to the previous work (\mutex)\index{mutex@\protect\mutex} of %begin% %Andrea {\sc Steinbach} and Angelika {\sc Schofer}\footnote{Steinbach A. \& \mbox{Andrea {\sc Steinbach}} and Angelika {\sc Schofer}\footnote{Steinbach A. \& %end% Schofer A., \textit{Theses} (1987, 1988), Rheinische Friedrich-Wilhelms Universit\"at, Bonn, Germany.}. This work provided the basis of the Metafont codes which are still used here... with 100\% corrections and updates.\index{Schofer, A.@{\sc Schofer, A.}}\index{Steinbach, A.@{\sc Steinbach, A.}} %\check \end{document}