summaryrefslogtreecommitdiff
path: root/macros/musixtex/doc/musixdoc/transposition.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/musixtex/doc/musixdoc/transposition.tex')
-rw-r--r--macros/musixtex/doc/musixdoc/transposition.tex217
1 files changed, 217 insertions, 0 deletions
diff --git a/macros/musixtex/doc/musixdoc/transposition.tex b/macros/musixtex/doc/musixdoc/transposition.tex
new file mode 100644
index 0000000000..4fc9e9d609
--- /dev/null
+++ b/macros/musixtex/doc/musixdoc/transposition.tex
@@ -0,0 +1,217 @@
+ \chapter{Transposition and Octaviation}\label{octaviation}
+Two different subjects are discussed in this section. First, there
+are commands that cause notes to be printed at different pitches than
+entered. We shall refer to this as \ital{logical} transposition.
+Second, there are notations for octaviation that do
+not otherwise alter the appearance of the score, which we'll call
+\ital{octaviation lines}.
+
+\section{Logical transposition and octaviation}
+
+Logical transposition is controlled by an integer-valued \TeX\ register
+\keyindex{transpose}. Its default value is $0$. If you enter
+\verb|\transpose=|$n$ outside of notes commands, then all subsequent pitches specified by
+letters will be transposed by $n$ positions. Normally this method would be
+used to transpose an entire piece. Pitches specified with
+numbers will not be affected, so if you think you will ever want to
+transpose a piece, you should enter all note pitches with letters.
+
+One way to transpose up or down by one octave would be to increase or decrease
+\keyindex{transpose} by $7$.
+A more convenient way to transpose locally up or down by one octave
+makes use respectively of the characters
+\verb|'| (close-quote, interpreted as an \itxem{acute accent}) and \verb|`| (open-quote, interpreted as
+a \itxem{grave accent}),
+placed immediately before the letter specifying the pitch. So
+for example \verb|\qu{'ab}| is equivalent to \verb|\qu{hi}| and
+\verb|\qu{`kl}| is equivalent to \verb|\qu{de}|. These characters have
+cumulative effects; thus,
+for example, \verb|\qu{''A'A}| and \verb|\qu{''A}\qu{'A}| are both equivalent to \verb|\qu{ah}|.
+Alterations to the value of
+\verb|\transpose| in notes commands are \emph{local}: when changing to a different staff or
+instrument or encountering \verb|\en|, \verb|\transpose| will be reset to the
+value it had before the accents were used. (That value is stored in
+another register called \keyindex{normaltranspose}). Another way to localize
+changes to \verb|\transpose| is to create an explicit \TeX\ ''group'' by enclosing commands in \verb|{...}| braces.
+
+At any point it is possible to reset the \verb|\transpose| register
+explicitly to the \verb|\normaltranspose| value
+by prefacing a pitch indication with
+``\verb|!|''. Thus \verb|\qu{!a'a}| always
+gives the note \verb|a| and its upper octave \verb|h|, shifted by the
+value of {\Bslash normaltranspose},
+regardless of the number of grave and
+acute accents earlier in that group.
+
+ \section{Behavior of accidentals under logical transposition}\label{transposeaccids}
+ The above processes indeed change the vertical position of the note heads
+and associated symbols (e.g., stems and beams), but they don't take
+care of the necessary changes of accidentals when transposing. For example,
+suppose an F$\sharp$ occurs in the key of C major. If the piece is
+transposed up three steps to the key of F, the F$\sharp$ should logically
+become a
+B$\natural$. But if all you do is set \verb|\transpose=3|, the note will
+be typeset as a B$\sharp$. In other words, \musixtex\ will interpret the~\verb|\sh|
+or~\verb|^| to mean ``print a $\sharp$''.
+
+Naturally there is a solution, but it requires the typesetter to plan
+ahead: To force accidentals to behave well under transposition, they
+must be entered according to the \ital{relative
+accidental convention}. To alert \musixtex\ that you are using this
+convention to enter notes, you must issue the command
+\keyindex{relativeaccid}. Once you have done this, the meaning of
+accidental macros and characters (accents) in the input file is changed.
+Under the convention, when for example a
+\verb|\sh| is entered, it indicates a note that is supposed to sound
+\ital{one half step higher than what it would normally be under the
+current key signature}. Flats and naturals on entry similarly indicate
+notes one half step lower or at the same pitch as what the key signature
+dictates. \musixtex\ will take account of the key signature, and print
+the correct symbol according to the modern notational convention,
+provided you have explicitly entered the transposed key signature using
+for example \verb|\generalsignature|.
+
+Many people have a difficult time understanding how this works, so
+here are two simple examples in great detail. Consider the case already mentioned
+of the F$\sharp$ in the key of C major. With
+\verb|\relativeaccid| in effect, it should still be entered as \verb|\sh f|, and
+with no transposition it will still appear as F$\sharp$. With
+\verb|\transpose=3| and \verb|\generalsignature{-1}| it will appear
+(correctly) as B$\natural$. Conversely, suppose you want to enter a
+B$\natural$ when originally in the key of F. With \verb|\relativeaccid| in effect, it
+should be entered as \verb|\sh i|. (That's the part that people
+have the most trouble with: ``If I want a natural, why do I have to enter a sharp?'' Answer:
+``Go back and re-read the previous paragraph very carefully.'') With no transposition, it will be
+printed as B$\natural$. Now to transpose this to C major, set
+\verb|\transpose=-3| and \verb|\generalsignature0|, and it will appear
+as F$\sharp$.
+
+If you have invoked \verb|\relativeaccid| and then
+later for some reason wish to revert to the ordinary convention,
+enter \keyindex{absoluteaccid}.
+
+\section{Octaviation lines}
+The first kind of notation for octave transposition covers a
+horizontal range that must be specified at the outset. The sequence
+
+\medskip
+\begin{music}\nostartrule
+\startextract
+\NOTEs\octfinup{10}{3.5}\ql{!'a}\ql b\ql c\ql d\en
+\zendextract
+\end{music}
+\noindent can be coded as
+\verb|\NOTEs\octfinup{10}{3.5}\qu a\qu b\qu c\qu d\en|.
+\zkeyindex{octfinup}
+Here, the dashed line is at staff level 10 and extends \verb|3.5\noteskip|.
+Conversely, lower octaviation can be coded. For example
+
+\begin{music}\nostartrule
+\startextract
+\NOTEs\octfindown{-5}{2.6}\ql j\ql i\ql h\en
+\zendextract
+\end{music}
+\noindent is coded as
+\verb|\NOTEs\octfindown{-5}{2.6}\ql j\ql i\ql h\en|.
+\zkeyindex{octfindown}
+ To change the text that is part of these notations, redefine one of
+the macros \keyindex{octnumberup} or \keyindex{octnumberdown}. The reason for
+the distinction between up and down is that, traditionally, upper octaviation
+only uses the figure
+``8'' to denote its beginning, while lower octaviation uses a more
+elaborate indication such as \hbox{\ppffsixteen8$^{va}$\kern 0.2em\eightit bassa}. Thus
+
+\bigskip
+\begin{music}\nostartrule
+\startextract
+\NOTEs\def\octnumberup{\ppffsixteen8$^{va}$}\octfinup{10}{2.5}\qu c\qu d\qu e\en
+\zendextract
+\end{music}
+\noindent is coded
+
+\noindent\verb|\NOTEs\def\octnumberup{\ppffsixteen8$^{va}$}\octfinup{10}{2.5}\qu c\qu d\qu e\en|
+
+\noindent while
+
+\begin{music}
+\startextract
+\NOTEs\def\octnumberdown{\ppffsixteen8$_{ba}$}\octfindown{-5}{2.5}\ql l\ql
+k\ql j\en
+\endextract
+\end{music}
+\noindent is coded as
+\begin{quote}\begin{verbatim}
+\NOTEs\def\octnumberdown{\ppffsixteen8$_{ba}$}%
+ \octfindown{-5}{2.5}\ql l\ql k\ql j\en
+\end{verbatim}\end{quote}
+
+The foregoing constructions have the drawbacks that (a) the span must be
+indicated ahead of time and (b) they cannot extend across a line break.
+Both restrictions are removed with the use of the alternate macros \keyindex{Ioctfinup},
+\keyindex{Ioctfindown} and
+\keyindex{Toctfin}.
+
+{\Bslash Ioctfinup}~$np$ indicates an upward octave transposition line with reference number
+$n$ and with dashed line at pitch $p$.
+By default $n$ must be in the range $[0,5]$, but
+you can specify a larger maximum number
+directly with \keyindex{setmaxoctlines}\verb|{|$m$\verb|}|
+where $7<m\leq 100$\footnote{This may require e-\TeX.}; the
+reference number will be in the range between $0$ and $m-1$.
+\label{musixmad_setmaxoctlines}
+
+Usually $p$ will be numeric and $>9$,
+but it can also be a letter.
+{\Bslash Ioctfindown}~$np$ starts a lower octave transposition line at pitch $p$
+(usually $p<-1$). Both extend until terminated with {\Bslash Toctfin}. The
+difference between {\Bslash Ioctfinup}~$n$ and {\Bslash Ioctfindown}~$n$ is
+the relative position of the figure ``8'' with respect to the dashed line, and
+the sense of the terminating hook As shorthand, \keyindex{ioctfinup} is equivalent to
+\verb|\Ioctfinup 0| and \keyindex{ioctfindown} is equivalent to
+\verb|\Ioctfindown 0|.
+
+For example,
+
+\medskip
+ \begin{music}\nostartrule
+\instrumentnumber{1}
+\setstaffs12
+\setclef1{6000}
+%
+\startextract
+\notes\wh{CDEFGH}|\wh{cde}\Ioctfinup 1p\wh{fgh}\en
+\bar
+\notes\Ioctfindown 2A\wh{IJKLMN}|\wh{ijklmn}\en
+\bar
+\Notes\wh{NMLKJI}|\wh{nmlkji}\Toctfin1\en
+\bar
+\Notes\wh{HGFED}\Toctfin2\wh C|\wh{hgfedc}\en
+\zendextract
+\end{music}
+\noindent is coded as
+\begin{quote}\begin{verbatim}
+\begin{music}\nostartrule
+\instrumentnumber{1}
+\setstaffs12
+\setclef1{6000}
+%
+\startextract
+\notes\wh{CDEFGH}|\wh{cde}\Ioctfinup 1p\wh{fgh}\en
+\bar
+\notes\Ioctfindown 2A\wh{IJKLMN}|\wh{ijklmn}\en
+\bar
+\Notes\wh{NMLKJI}|\wh{nmlkji}\Toctfin1\en
+\bar
+\Notes\wh{HGFED}\Toctfin2\wh C|\wh{hgfedc}\en
+\zendextract
+\end{music}
+\end{verbatim}\end{quote}
+ %\check
+
+ The elevation of octaviation lines may be changed in midstream using
+\keyindex{Liftoctline}~$n$$p$, where $n$ is the reference number of the
+ octave line, and $p$ a (possibly negative) number of
+\keyindex{internote}s (staff pitch positions) by which elevation of the dashed line should be changed.
+This may be useful when octaviation lines extend over several systems and the
+elevation needs to be changed in systems after the one where it was initiated.
+