diff options
Diffstat (limited to 'macros/musixtex/doc/musixdoc/lyrics.tex')
-rw-r--r-- | macros/musixtex/doc/musixdoc/lyrics.tex | 407 |
1 files changed, 407 insertions, 0 deletions
diff --git a/macros/musixtex/doc/musixdoc/lyrics.tex b/macros/musixtex/doc/musixdoc/lyrics.tex new file mode 100644 index 0000000000..41d52fa221 --- /dev/null +++ b/macros/musixtex/doc/musixdoc/lyrics.tex @@ -0,0 +1,407 @@ +\chapter{Lyrics}\index{lyrics}\label{lyrics} +\musixtex{} itself doesn't manage lyrics very well. You should use +\verb+musixlyr+ instead, a \musixtex\ extension package for lyrics handling by Rainer Dunker. +The \TeX~source and +\href{http://icking-music-archive.org/software/musixtex/add-ons/mxlyrdoc.pdf} +{\underline{documentation}}~are included in the \musixtex~distribution. + +But first we recall briefly the older methods, which may still be useful when +only a small number of words are involved. + +\section{Native lyrics method: placing single words} +\subsection{Native \musixtex\ commands for lyrics} + \begin{enumerate}\setlength{\itemsep}{0ex} + \item An obvious solution is to use the commands +\keyindex{zcharnote} (expanded to the right), +\keyindex{lcharnote} (expanded to the left), +\keyindex{ccharnote} (centered), to post the text at any position (computed in +\verb|\internote|s) with respect to the lower line of the current staff. +The pitch should be usually negative, to have the text below the staff. + +Example:\quad +\raisebox{0ex}[4ex][3ex]{\musicintextnoclefn{\notes\sk\zcharnote{N}{Word}\wh g\sk\en}} +\quad is coded by \quad +\verb|\zcharnote{N}{Word}\wh g|~. + +\item The vertical position can also be given with a number in the commands +\keyindex{zchar} (expanded to the right), +\keyindex{lchar} (expanded to the left), +\keyindex{cchar} (centered). The number is internally multiplied by \verb|\internote|~. + +Example:\quad +\raisebox{0ex}[4ex][3ex]{\musicintextnoclefn{\notes\sk\cchar{-4}{Word}\wh g\sk\en}} +\quad is coded by \quad +\verb|\cchar{-5}{Word}\wh g|~. + +\item Of easier use are the commands \keyindex{zsong} (right of the note), +\keyindex{lsong} (left) and \keyindex{csong} (centered) which post the lyrics +at the lower staff line \ital{minus} the previous +\keyindex{interinstrument}~$n$ or the \keyindex{staffbotmarg} quantity. These +commands only have one argument, namely the lyrics text: +%\begin{center} +\keyindex{zsong}\verb|{|\ital{text}\verb|}|\quad +\keyindex{lsong}\verb|{|\ital{text}\verb|}|\quad +\keyindex{csong}\verb|{|\ital{text}\verb|}| +%\end{center} + Depending on the values of the inter-instrument spacings and margins, the +resulting vertical position might be inappropriate. Then it can be changed for +any specific $n$-th instrument until further change using +\begin{quote} +\keyindex{setsongraise}~$n$\verb|{|\ital{any \TeX-dimension}\verb|}| +\end{quote} +As an example, the following French song\\ + \begin{music} + \generalsignature{1} + \startextract + \geometricskipscale + \NOtes\zsong{Au }\qu g\en + \NOtes\zsong{clair }\qu g\en + \NOtes\zsong{de }\qu g\en + \NOtes\zsong{la }\qu h\en + \bar + \NOTes\zsong{lu- }\hu i\en + \NOTes\zsong{ne, }\hu h\en + \bar + \NOtes\zsong{mon }\qu g\en + \NOtes\zsong{a- }\qu i\en + \NOtes\zsong{mi }\qu h\en + \NOtes\zsong{Pier- }\qu h\en + \bar + \NOTes\zsong{rot, }\wh g\sk\en + \endextract + \end{music} + +\noindent was coded as: +\begin{quote}\begin{verbatim} + \generalsignature{1} + \startextract + \geometricskipscale + \NOtes\zsong{Au }\qu g\zsong{clair }\qu g\en + \NOtes\zsong{de }\qu g\zsong{la }\qu h\en\bar + \NOTes\zsong{lu- }\hu i\zsong{ne, }\hu h\en\bar + \NOtes\zsong{mon }\qu g\zsong{a- }\qu i\en + \NOtes\zsong{mi }\qu h\zsong{Pier- }\qu h\en\bar + \NOTes\zsong{rot, }\wh g\sk\en + \zendextract +\end{verbatim}\end{quote} +\end{enumerate} + +\subsection{Adapting note spacing for lyrics} + +The command \keyindex{hardlyrics}\verb|{longword}| provides a spacing that is equal to the length +of the text argument \verb|{longword}|. In the same time the argument \verb|{longword}| +is saved in \keyindex{thelyrics} + +As an example \quad +\raisebox{0ex}[5ex][4ex]% +{\musicintextnoclefn{\staffbotmarg2\Interligne% +\hardlyrics{clair}\notes\hsong{\thelyrics}\wh g\en\notes\wh{gg}\en}} +\quad is coded by: +\begin{tabular}{l} +\verb|\hardlyrics{clair}%|\\ +\verb|\notes\hsong{\thelyrics}\wh g\en|\\ +\verb|\notes\wh{gg}\en|\\ +\end{tabular} + +All notes with long lyrics need such a treatment. The commands only carry out on +\verb|\notes| (not on \verb|\Notes|, \verb|\NOtes|...). + +If you want to go back to the normal placing on an easy way, you simply can replace +'\verb|\hardlyrics|' by '\verb|\softlyrics|'. + + A complete score is given in example {\tt glorias.tex}\label{glorias} and in +{\tt gloriab.tex}, the latter exhibiting not only the song tune but also the +organ accompaniment. + +Alternate versions of \verb|\hsong| are \keyindex{dhsong} which has a fixed +length of \verb|2\noteskip| and \keyindex{thsong} whose fixed length is +\verb|3\noteskip|. These are useful when the text is set below (or above) a +collective coding of two or three notes. + +\section{Musixlyr}\label{musixlyr} + +Lyrics are best handled by the \texttt{musixlyr}\index{musixlyr} package by Rainer Dunker. +The package can be used by inserting a line in your source code: +\begin{quote}\begin{verbatim} +\input musixtex +\input musixlyr +... +\end{verbatim}\end{quote} + +The manual, the input file and a few examples are in \musixtex\ distributions, or they +may be downloaded +\href{http://icking-music-archive.org/software/musixtex/add-ons/musixlyr21c.zip} +{\underline{for Windows}} or \href{http://icking-music-archive.org/software/musixtex/add-ons/musixlyr21c.tgz} +{\underline{for \unix}}. Look at the manual for a detailed description. Here is an overview +of the commands and an example of use.\pagebreak + +\def\keyexample#1{\keyindex{#1}} + +\noindent\begin{small}\begin{tabbing} +\verb|\NOtes|\keyexample{assignlyricshere}\verb|{alto}\qa c\en|\quad\= assigning without staff number\kill +Example\> Explanation +\end{tabbing} +\vspace{-1ex} +\hrule +\vspace{-2ex} +\begin{tabbing} +\verb|\NOtes|\keyexample{assignlyricshere}\verb|{alto}\qa c\en|\quad\= assigning without staff number\kill +\keyexample{setlyrics}\verb|{sopr}{the ly_-ric words_}|\> defining the lyrics text\\ +\keyexample{copylyrics}\verb|{sopr}{alto}|\> alto has same lyrics as soprano\\ +\keyexample{appendlyrics}\verb|{alto}{more words}|\> alto lyrics is longer\\ +\keyexample{assignlyrics}\verb|2{sopr,alto}|\>soprano and alto lyrics at staff $2$\\ +\keyexample{assignlyricsmulti}\verb|{1}{2}{alto}|\>assign alto lyrics to staff $2$ of instrument $1$\\ +\verb|\NOtes|\keyexample{assignlyricshere}\verb|{alto}\qa c\en|\>assigning without staff number\\ +\keyexample{auxlyr}\verb|\assignlyrics{2}{sopr}|\> assign soprano above staff $2$\\[.8ex] +\keyexample{lyrrule}\verb|\qu c|...\keyexample{lyrruleend}\verb|\qu c|\>make a melisma by hand\\ +\keyexample{beginmel}\verb|\qu c|...\keyexample{endmel}\verb|\qu c|\>melisma, same as word extension underline\\[.8ex] +\keyexample{lyr}\verb|\qu c|\>force a syllable from lyrics text at this note or rest\\ +\keyexample{lyric}\verb|{word}\qu c|\>insert syllable 'word' at this note\\ +\verb|\loffset{2}{|\keyexample{lyric*}\verb|{1.}}\qu c|\>combine \verb|1.| with regular syllable\\ +\keyexample{lyrich}\verb|{syl}\qu c|\>same as \verb|\lyric|, but with hyphenation\\ +\keyexample{lyrich*}\verb|{}\qu c|\>same as \verb|\lyric*|, but with hyphenation\\ +\keyexample{lyricsoff}...\keyexample{lyricson}\>stop lyrics, then start again\\ +\keyexample{nolyr}\verb|\qu c|\>no syllable at this note\\[.8ex] +\keyexample{llabel}\verb|{labelname}name|\>labelling a ``go to'' target in text\\ +\keyexample{golyr}\verb|{labelname}\qu c|\>perform a jump, in music code\\[.8ex] +\keyexample{lyrpt}\verb|,\qu c|\>add a comma to the syllable under this note\\ +\keyexample{lyrnop}\verb|\qu c|\>remove last character in syllable\\ +\keyexample{lclyr}\verb|\qu c|\>make first character lower case\\ +\keyexample{llyr}\verb|\qu c|\>left justified syllable\\ +\keyexample{leftlyrtrue}\verb|\qu c|...\keyexample{leftlyrfalse}\verb|\qu c|\>start and stop left justification as the default\\ +\keyexample{lyroffset}\verb|{-4}\qu c|\>shift syllable $1$ notehead to the left\\[.8ex] +\keyexample{minlyrspace}\verb|{3pt}\qu c|\>define minimum space between the words\\ +\keyexample{forcelyrhyphenstrue}\verb|\qu c|\>always use a hyphen from now on\\ +\keyexample{forcelyrhyphensfalse}\verb|\qu c|\>remove hyphen and make one word if necessary \\ +\keyexample{showlyrshifttrue}\verb|\qu c|\>show the lyric shift\\[.8ex] +\keyexample{lyrraise}\verb|{1}{a 2\Interligne}|\>raise lyrics below staff $1$ by \verb|2\Interligne|\\ +\keyexample{lyrraisemulti}\verb|{1}{2}{a 2\Interligne}|\>raise alto lyrics above staff $2$ of instrument $1$\\ +\keyexample{lyrraisehere}\verb|{b 2\Interligne}\qu c|\>raise lyrics below this staff by \verb|2\Interligne|\\[.8ex] +\keyexample{minlyrrulelength}\verb|{2mm}|\>melismas shorter than $2$mm are not shown \\ +\keyexample{minmulthyphens}\verb|{15mm}|\>distance between hyphens in 'hyphen melisma'\\ +\verb|\def|\keyexample{lyrhyphenchar}\verb|{-}|\>chose a hyphen character\\ +\verb|\setlyrics{|\keyexample{lyrlayout}\verb|{\it}..}|\>apply italics to all lyrics lines\\ +\keyexample{verses}\verb|{,\beginmel}\qu c|\>initiate melisma at second verse\\[.8ex] +\verb|\small|\keyexample{setlyrstrut}\>adapt the vertical distance between lyrics lines\\ +\keyexample{lyrstrutbox}\verb|{10pt}|\> (re)define the distance between the lyrics lines\\[.8ex] +\keyexample{lyrmodealter}\verb|2|\>attach lyrics of staff $2$ to the upper voice\\ +\keyexample{lyrmodealtermulti}\verb|{1}{2}|\>attach lyrics of instr.\ $1$ staff $2$ to the upper voice\\ +\keyexample{lyrmodealterhere}\verb|\qu c|\>attach lyrics of this staff to the upper voice\\ +\keyexample{lyrmodenormal}\verb|2|\>restore the default behaviour\\ +\keyexample{lyrmodenormalmulti}\verb|{1}{2}|\>restore the default behaviour at staff $2$ of instr.\ $1$\\ +\keyexample{lyrmodenormalhere}\verb|\qu c|\>restore the default behaviour of this staff\\[.8ex] +\keyexample{lyrlink}\>linking two words with a '$_{_\smile}$'\\ +\keyexample{lowlyrlink}\>same as \verb|\lyrlink| but a little bit lower\\[.8ex] +\keyexample{resetlyrics}\>set word pointer to the first word in all lyrics lines\\[.8ex] +\keyexample{enableauxlyrics}\>don't use this anymore\\ +\keyexample{setsongraise}\verb|{1}{2\Interligne}|\>same as \verb|{\lyrraise}{1}{b 2\Interligne}|\\ +\keyexample{auxsetsongraise}\verb|{1}{2\Interligne}|\>same as \verb|{\lyrraisemulti}{1}{b 2\Interligne}|\\ +\keyexample{oldlyrlinestart}\>don't let the lyrics extend to the left margin\\ +\end{tabbing}\end{small} + +As a further illustration of the use of the commands, have a look at the following +example\footnote{The example is taken from the \texttt{musixlyr} manual.}: + +\medskip\medskip +%\oneversespace +\begin{music} +\input musixlyr + \resetlyrics \small +\lyrmodealter0 + \setlyrics{soprano}{bring her die Gans,} \auxlyr{\assignlyrics1{soprano}} + \copylyrics{soprano}{alto} \assignlyrics1{alto} + + \generalsignature{-2} + \advance\stafftopmarg1\Interligne + \advance\staffbotmarg2\Interligne + + \startextract\addspace\afterruleskip + \NOtes\zqu g\ql e\en + \bar + \Notes\zqu i\beginmel\ibslurd0f\ibl0f{-1}\qb0{fe}\en + \Notes\auxlyr\beginmel\ibsluru1i\zqup i\qb0d\en + \Notes\tqb0e\en + \Notes\endmel\tbslurd0e\ql c\en + \notes\ibbu0h{-1}\qb0h\tqh0g\en + \NOtes\auxlyr\endmel\tbsluru1h\zqu h\ql c\en + \bar + \NOTEs\auxlyr\lyr\zwh i% The lyrics of the whole notes + \lyr\wh b\en % must be given manually. + \endextract + \lyrmodenormal0 +\end{music} +\medskip + +%\oneversespace + +which was coded as: +\begin{quote} +\begin{verbatim} +% define lyrics above the staff +\setlyrics{soprano}{bring her die Gans,} +% lyric beneath the staff are the same +\copylyrics{soprano}{alto} +% assign alto lyrics below staff 1 on the notes with stem down +\assignlyrics1{alto} +% assign soprano lyrics above staff 1 on the notes with stem up +\auxlyr{\assignlyrics1{soprano}} +% attach both lyrics to the upper voice +\lyrmodealter0 +\generalsignature{-2} +% make place for the lyrics +\advance\stafftopmarg1\Interligne\advance\staffbotmarg2\Interligne +\startextract\addspace\afterruleskip +\NOtes\zqu g\ql e\en\bar +% start melisma in lower lyrics +\Notes\zqu i\beginmel\ibslurd0f\ibl0f{-1}\qb0{fe}\en +% start melisma in upper lyrics +\Notes\auxlyr\beginmel\ibsluru1i\zqup i\qb0d\tqb0e\en +% end melisma in lower lyrics +\Notes\endmel\tbslurd0e\ql c\en +\notes\ibbu0h{-1}\qb0h\tqh0g\en +% start melisma in upper lyrics +\NOtes\auxlyr\endmel\tbsluru1h\zqu h\ql c\en\bar +% The lyrics of the whole notes (without stem) must be given manually. +\NOTEs\auxlyr\lyr\zwh i\lyr\wh b\en +\endextract +\lyrmodenormal0 +\end{verbatim}\end{quote} + + \section{Getting enough vertical space for lyrics} + Since songs are +usually equivalent to a one-staff instrument (possibly with several voices) +the recommended solution consists in adjusting the distance between +instruments using either \keyindex{interinstrument}\verb|=|\ital{any +\TeX-dimension} to give more place below all instruments or using +\keyindex{setinterinstrument} to make more space above. Note that {\Bslash +setinterinstrument} defines spacing above and not below an instrument. Since +lyrics are usually set below the staff, the first argument of a +\verb|\setinterinstrument| should be the song instrument number \ital{minus +one}. + + In the case of a single staff tune, or if the song instrument is the lowest +one, then additional place can be provided using \keyindex{staffbotmarg}. + +\section{Fine tuning the placement of the lyrics} + When not using \verb|\hardlyrics|, on short notes, sometimes + the lyrics are shifted away from the notes or they collide with other words. + This are a few approaches to get around this: +\begin{enumerate}\setlength{\itemsep}{0ex} +\item Making more music lines for the notes to go further apart. This could be done with +\verb|\mulooseness|. +\item Stretch a bar with short notes in it by i.e.,~replacing \verb|\notes| by \verb|\NOTes|. +\item Insert space between the notes by using \verb|\sk|, \verb|\hsk|, \verb|\qsk|, \verb|\qqsk|, ... +\item Stretch a bar with short notes in it by using the command \keyindex{scale}: +\begin{verbatim} +\scale{1.6}\notes..\en\scale{1}% +\end{verbatim} +This method can be used in \textbf{PMX} but only with care, because it changes horizontal spacing +in a way that \textbf{PMX} will not be aware of. It will not move bars to the next line, but +will shorten the other bars on the line. + +As an example, the lyrics of this music line are better placed by using \verb|\scale| in +the first bar and moving to the left the word 'mon'. Note that the hyphen is removed +when there is no place for it: + + \begin{music} + \input musixlyr + \resetlyrics + \setlyrics{v1}{Au clair de la lu-ne, mon a-mi Pier-rot,}% + \assignlyrics1{}\assignlyrics1{v1}% + \staffbotmarg2\Interligne\generalsignature{1}% + \startextract + \geometricskipscale + \notes\qu{gggh}\en\bar + \Notes\hu{ih}\en\bar + \notes\qu{gihh}\en\bar + \Notes\wh g\en + \endextract +% \end{music} +%%%%% combined for saving registers %%%%% +% \begin{music}\nostartrule +% \input musixlyr + \resetlyrics + \setlyrics{v1}{Au clair de la lu-ne, \kernm1exmon a-mi Pier-rot,}% + \assignlyrics1{}\assignlyrics1{v1}% + \staffbotmarg2\Interligne\generalsignature{1}% + \startextract \geometricskipscale + \scale{1.4}\notes\qu{gggh}\en\bar\scale{1}% + \Notes\hu{ih}\en\bar + \notes\qu{gihh}\en\bar + \Notes\wh g\en + \endextract + \end{music} + +\medskip +The code of the second music line is (\verb|\assignlyrics1{}| is only needed because +lyrics are assigned before this in this manual): +\begin{quote}\begin{verbatim} + \begin{music} + \input musixlyr + \resetlyrics + \setlyrics{v1}{Au clair de la lu-ne, \kernm1exmon a-mi Pier-rot,}% + \assignlyrics1{}\assignlyrics1{v1}% + \staffbotmarg2\Interligne\generalsignature{1}% + \startextract \geometricskipscale + \scale{1.4}\notes\qu{gggh}\en\bar\scale{1}% + \Notes\hu{ih}\en\bar + \notes\qu{gihh}\en\bar + \Notes\wh g\en + \endextract + \end{music} +\end{verbatim}\end{quote} + +\item Moving a word in any direction + +\begin{small} +\noindent\begin{tabular}{ll} +\multicolumn{2}{l}{\Bslash setlyrics\{alto\}\{\Bslash kernm3ex1.$\sim\sim$firstsyllable...\}}\\ +& left-move verse number\\ +\verb|\setlyrics{alto}{...\kern1exword...}| &right-move a single word\\ +\verb|\setlyrics{alto}{...\lower2pt\hbox{word}...}|& lower a single word\\ +\verb|\setlyrics{alto}{...\raise2pt\hbox{word}...}|& raise a single word\\ +\multicolumn{2}{l}{\Bslash def\Bslash strut\{\Bslash vbox to 2\Bslash Interligne\{\}\}% +\Bslash setlyrics\{alto\}\{\Bslash lyrlayout\{\Bslash strut\}...\}} \\ +& control distance between verses\\ +\verb|\lyrlayout{\vphantom{Mp(\lowlyrlink}|& minimum distance between verses\\ +\multicolumn{2}{l}{\Bslash setbox\Bslash lyrstrutbox=\Bslash hbox\{\Bslash vphantom\{yM\Bslash lyrlink\}\}}\\ +& redefine default lyrstrut +\end{tabular} +\end{small} + +\item Placing of accents can be made easier as shows this example: +\begin{center} +\begin{minipage}{50mm} +\begin{music}\nostartrule +\input musixlyr +\catcode`\ä\active \defä{\"a} +\catcode`\ö\active \defö{\"o} +\catcode`\å\active \letå\aa +\setlyrics1{å ä ö} +\assignlyrics1{}\assignlyrics11 +\startextract + \setsongraise1{1ex}\NOtes\qa{ggg}\en +\zendextract +\end{music} +\end{minipage}% +\begin{minipage}{80mm} +\verb|\catcode`\|\"a\verb|\active \def|\"a\verb|{\"a}|\\ +\verb|\catcode`\|\"o\verb|\active \def|\"o\verb|{\"o}|\\ +\verb|\catcode`\|\aa\verb|\active \let|\aa\verb|\aa|\\ +\verb|\setlyrics1{|\aa\ \"a\ \"o\verb|} \assignlyrics1{}|\\ +\verb|\assignlyrics11|\\ +\verb|\startextract|\\ +\verb|\NOtes\qa{ggg}\en|\\ +\verb|\zendextract|\\ +\end{minipage} +\end{center} +\item Using an 8-bit encoded characterset.\label{8bit} +If you use default (Computer Modern) fonts, you will want to switch to +the EC variants +by putting +%\verb+\input plainenc\relax\inputencoding{cp850}+ % doesn't work! +\verb+\input musixec+ +after \verb+\input musixtex+ in your source file. + +\end{enumerate} + |