diff options
author | Norbert Preining <preining@logic.at> | 2010-11-01 10:17:57 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2010-11-01 10:17:57 +0000 |
commit | 124ab1aa006529a0f1a3fa7c5fa7712e8eb558bf (patch) | |
tree | c5d4002cc3f3d1b2b2e7ca6804d0d012f6390fc6 /Master/texmf-dist | |
parent | 6355d556f7d2698c4d2e0b2a5641737b2005c029 (diff) |
remove musixlyr package, it has been incorporated into musixtex
git-svn-id: svn://tug.org/texlive/trunk@20287 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/musixlyr/COPYING | 339 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/musixlyr/README | 66 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.dvi | bin | 92180 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.mx1 | 1 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.tex | 1780 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/musixlyr/musixlyr.tex | 1102 |
6 files changed, 0 insertions, 3288 deletions
diff --git a/Master/texmf-dist/doc/latex/musixlyr/COPYING b/Master/texmf-dist/doc/latex/musixlyr/COPYING deleted file mode 100644 index e77696ae8dd..00000000000 --- a/Master/texmf-dist/doc/latex/musixlyr/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/Master/texmf-dist/doc/latex/musixlyr/README b/Master/texmf-dist/doc/latex/musixlyr/README deleted file mode 100644 index f8b0b9562f7..00000000000 --- a/Master/texmf-dist/doc/latex/musixlyr/README +++ /dev/null @@ -1,66 +0,0 @@ - - musixlyr -- a MusiXTeX Extension Package for Lyrics Handling - Version 2.0c - - (C) Rainer Dunker 1996-2001 - - -musixlyr is a set of TeX macros to be used with Taupin MusiXTeX -(version T.52 or later) for typesetting vocal music. Its purpose is -to compensate two drawbacks of MusiXTeX's lyrics handling: - - o Typesetting lyrics with the ``native'' MusiXTeX commands \zcharnote, - \zsong etc. tends to be quite inefficient, particularly if the - lyrics have to be changed or corrected. The idea underlying - musixlyr is to separate lyrics coding from music coding and let TeX - weave them together with as little manual interference as - possible. As a result you can enter and edit lyrics (nearly) as - easily as normal text. - - o MusiXTeX has no built-in mechanism for centering hyphens between - syllables and for handling hyphenation at long melismas. This is - implemented in musixlyr following the example of engraved music. - - -New in version 2.0: - - o Support for lyrics on multi-staff instruments - - o Melisma declaration as part of the lyrics definition, - i.e. within \setlyrics - - o Improved scheme for vertical lyrics positioning - - o Using PMX: Automatic detection of upper/lower voice context in - a two-voice staff; explicitly addressing lyrics commands to - auxiliary lyrics with \auxlyr is no longer required - - o Context-dependent lyrics settings that do not need to be - adressed to absolute instrument/staff numbers, making lyrics - assignment robust against PMX part extraction - - o No more TeX register allocations per verse - (i.e. musixlyr uses only a small, fixed number of registers) - - o Facility for posting "extra" lyrics anywhere on a staff, - even where no notes are present at all - - o Slightly more robust processing of undefined verses - - -See the included file mxlyrdoc.dvi about how to make use of musixlyr. -This DVI file has been created using MusiXTeX T.103. If you have -another version installed, the music examples of the manual may be -corrupted due to font incompatibilities. Nevertheless, the rest of -the manual will remain readable so that you will be able to install -musixlyr and recompile the mxlyrdoc.tex file in order to get -everything right. - -All kinds of comments, suggestions, and bug reports are welcome! - -Author: Rainer Dunker - Wachtelweg 31 - 85591 Vaterstetten - Germany - - E-mail: rainer.dunker@web.de diff --git a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.dvi b/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.dvi Binary files differdeleted file mode 100644 index c0bc10f9501..00000000000 --- a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.mx1 b/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.mx1 deleted file mode 100644 index 08fec8881e7..00000000000 --- a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.mx1 +++ /dev/null @@ -1 +0,0 @@ -0.83 diff --git a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.tex b/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.tex deleted file mode 100644 index b182c87252e..00000000000 --- a/Master/texmf-dist/doc/latex/musixlyr/mxlyrdoc.tex +++ /dev/null @@ -1,1780 +0,0 @@ -%% -%% mxlyrdoc.tex: Manual for the MusiXTeX lyrics package musixlyr -%% -%% Copyright (C) 1996-2001 Rainer Dunker -%% -%% This document is free software; you can redistribute it and/or modify -%% it under the terms of the GNU General Public License as published by -%% the Free Software Foundation; either version 2 of the License, or -%% any later version. -%% -%% This document is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -%% GNU General Public License for more details. -%% -%% You should have received a copy of the GNU General Public License -%% along with this document; if not, write to the Free Software -%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -%% -%% Author: -%% Rainer Dunker -%% Wachtelweg 31 -%% 85591 Vaterstetten -%% Germany -%% -%% E-mail: rainer.dunker@web.de -%% -\documentclass[twoside]{article} -\usepackage{musixtex,multicol,makeidx} - -\input musixlyr - -\textwidth210mm \advance\textwidth-2in % These format settings -\textheight297mm \advance\textheight-2in % can be freely changed! -\advance\textheight-\headheight \advance\textheight-\headsep -\footskip0pt \topmargin0pt \evensidemargin0pt \oddsidemargin0pt - -\pagestyle{headings} -\parskip0.5ex plus 0.25ex minus 0.25ex -\parindent0pt -\sloppy - -\nobarnumbers -\smallmusicsize - -% -% command index -% -\makeatletter -\renewenvironment{theindex} - {\let\item\@idxitem - \begin{multicols}{2} - \parskip0pt} - {\end{multicols}} -\def\printcmd#1{{\tt\char92 #1}} -\def\ci#1{\printcmd{#1}\bci{#1}} -\def\bci#1{\index{#1@\printcmd{#1}}} % "blind" command index entry -\makeindex - -\let\myqnwidth\qn@width -\makeatother - -\def\musixlyr{{\tt musixlyr}} -\def\PMX{{\bf PMX}} -\def\var#1{\hbox{$\langle$#1$\rangle$}} -\def\oneversespace{\par\vspace*{2mm}} -\def\twoversesspace{\par\vspace*{7mm}} - - - - -\begin{document} - - -\title{\musixlyr --- a \musixtex\ Extension Package for Lyrics Handling - (Version 2.0c)} -\author{\copyright\ Rainer Dunker 1996--2001\\ - {\tt rainer.dunker@web.de}} -\maketitle -\thispagestyle{empty} - - -{\small\sl (The page layout of this document is tailored to A4 paper - format, but the text width and height can be freely changed in order - to meet other paper sizes; no part of the layout relies on a - particlular size.)\/} - -{\parskip0pt\tableofcontents} - - - -\section{Introduction} - - -\subsection{Basic concepts} - -\musixlyr\ is a set of \TeX\ macros to be used with Taupin \musixtex\ -(version T.52 or later) for typesetting vocal music. Its purpose is -to compensate two drawbacks of \musixtex's lyrics handling: -\begin{itemize} - \item Typesetting lyrics with the ``native'' \musixtex\ commands - \verb|\zcharnote|, \verb|\zsong| etc.\ tends to be quite - inefficient, particularly if the lyrics have to be changed or - corrected. The idea underlying \musixlyr\ is to separate lyrics - coding from music coding and let \TeX\ weave them together with as - little manual interference as possible. As a result you can enter - and edit lyrics (nearly) as easily as normal text. - \item \musixtex\ has no built-in mechanism for centering hyphens between - syllables and for handling hyphenation at long melismas. This is - implemented in \musixlyr\ following the example of engraved music. -\end{itemize} - - - -\subsection{New in version 2.0} - -\begin{itemize} - \item Support for lyrics on multi-staff instruments - $\longrightarrow$~section~\ref{multi-staff-instruments} - % - \item Melisma declaration as part of the lyrics definition, - i.\,e.~within \ci{setlyrics} - $\longrightarrow$~section~\ref{melismas} - % - \item Improved scheme for vertical lyrics positioning - $\longrightarrow$~section~\ref{vertical-positioning} - % - \item Facility for posting lyrics anywhere on a staff, even where no - notes are present at all - $\longrightarrow$~section~\ref{lyric*-verse-numbers} -\end{itemize} - -These features are especially interesting when \musixlyr\ is used in -conjunction with \PMX: - -\begin{itemize} - \item Automatic detection of upper/lower voice context in - a two-voice staff; explicitly addressing lyrics commands to - auxiliary lyrics with \ci{auxlyr} is no longer required - $\longrightarrow$~section~\ref{auxlyr-attachment} - % - \item Context-dependent lyrics settings that do not need to be - adressed to absolute instrument/staff numbers, making lyrics - assignment robust against part extraction - $\longrightarrow$~section~\ref{assignment-by-context} -\end{itemize} - -Finally, a few improvements have been made that do not bear explicit -new features but work rather behind the scenes: -\begin{itemize} - \item No more \TeX\ register allocations for each verse name newly - defined by \ci{setlyrics} or \ci{copylyrics}; the use - of those registers has been replaced by macros. - % - \item Due to the abandoned per-verse register allocations, the - \ci{enableauxlyrics} command is obsolete. It is retained for the - sake of backward compatibility, but it has no effect. - % - \item Slightly more robust processing of undefined verses. An error - is raised immediately when an undefined verse is assigned to a - staff/instrument, and the undefined verse name is implicitly - defined as having empty lyrics. This avoids obscure errors in later - stages of \TeX\ processing. -\end{itemize} - -The current version 2.0c is a mere bugfix version of~2.0. - -Suggestions for other useful things are welcome. - - - -\subsection{Backward incompatibility issues} - -\begin{itemize} - \item - It is no longer possible to represent ``empty syllables'' by - empty \TeX\ environments `\verb|{}|' within \ci{setlyrics}; see - also section~\ref{empty-syllable}. - % - \item - Within \ci{setlyrics}, the underscore character has got a - special meaning and thus can no longer be used as usual; see - section~\ref{melismas-by-underscores}. - % - \item - By default, auxiliary lyrics are now placed vertically {\em - above\/} (no longer below) the staff they are assigned to; see - section~\ref{auxlyr-vertical-position-default}. -\end{itemize} - - - -\subsection{Restrictions} - -\begin{itemize} - \item \musixlyr\ does not influence the \musixtex/{\tt musixflx} - spacing algorithm in order to make the notes spacing dependent on - the space requirements of the lyrics. See section~\ref{horizpos} - about how spacing problems are handled. - % - \item \musixlyr\ seems to work correctly in my preferred working - environment, but I cannot exclude problems in situations I have - not undergone (especially concerning the use of \musixtex\ - preprocessors, the \musixtex\ extension library, and past or - future \musixtex\ releases). Thus it is important that you point out - encountered bugs and incompatibilities to me; there is little - chance that I notice them on my own. - - Please do also bother me if you find this manual --- or parts of - it --- incomprehensible or incomplete. -\end{itemize} - - - -\section{Installation} - -Put the {\tt musixlyr.tex} file into a directory that is included in -your \verb|TEXINPUTS| search path --- that's all. (Refer to your local \TeX\ -documentation for details on this.) - - - -\section{Usage} - -Before using \musixlyr\ macros, state -\begin{quote}\verb|\input musixlyr|\end{quote} -near the beginning of your source file but {\bf after} the -\verb|\input musixtex| (\LaTeX: \verb|\usepackage{musixtex}|) -command. - - - -\subsection{Entering lyrics} - - -\subsubsection{Lyrics as lines of words} - -As opposed to the ``vertical'' music construction of -\musixtex, \musixlyr\ treats lyrics ``horizontally'' as {\em lyrics -lines.\/} Each separate ``thread'' of words is a separate lyrics -line; thus, in the following example\footnote{Excerpt from -``Tourdion'' by {\sc Pierre Attaignant} ({\sl ars -musica\/} vol.\,4, M\"oseler Verlag Wolfenb\"uttel/Z\"urich)}, - -\begin{music} - \setlyrics{soprano} - {Quand je bois du vin clai-ret, a-mi tout} - \setlyrics{alto}{Le bon vin nous} - \setlyrics{tenor}{Bu-vons bien, bu-vons mes a-mis,} - \copylyrics{tenor}{bass} - \assignlyrics4{soprano} - \assignlyrics3{alto} - \assignlyrics2{tenor} - \assignlyrics1{bass} - \setsongraise3{-1.5mm} - \small - \instrumentnumber4 - \generalsignature2 - \generalmeter{\meterfrac32} - \setclef1\bass - \songtop4 - \songbottom1 - \sepbarrules - \startextract - \NOtes\wh{`e}\sk\sk\sk\ha e&% - \wh g\sk\sk\sk\ha e&% - \wh b\sk\sk\sk\ha b&% - \qa{efg'a!gf}\en\bar - \NOTesp\wh{`e}&\wh{'b}&\wh e&\hup e\en - \NOtes\sk\ha{`e}&\sk\ha{'b}&\sk\ha e&\qa{fg'a}\en - % force hyphens of incomplete words: - \def\atnextbar{\znotes\lyric{}&\lyric{}\en}% - \endextract -\end{music} -\oneversespace - -there are four lyrics lines notwithstanding that two of them consist -of the same words. - -Note that the number of lyrics lines does not depend on the number -of staves: Any number of lyrics lines (including none) can be attached -to each staff (more about multiple lyrics lines per staff in -section~\ref{multilyrlines}). - - -\subsubsection{Setting up a lyrics line} - -A lyrics line is set up using the command -\begin{quote} - \ci{setlyrics}\verb|{|\var{name}\verb|}{|\var{words}\/\verb|}| -\end{quote} -where \var{name} is a name\footnote{This name must not contain -backslashes or commas. Most other characters do not cause problems; -however, it is safer to use only letters and digits.} for the lyrics -line (e.\,g.\ the name of the voice singing these lyrics) and -\var{words} is the complete text where multi-syllable words must be -given {\bf hyphenated.} For example, the soprano lyrics of the above -example are set as follows: -\begin{quote} - \bci{setlyrics} - \begin{verbatim} -\setlyrics{soprano} - {Quand je bois du vin clai-ret, a-mi tout}\end{verbatim} -\end{quote} - -The following issues should be considered for using the -\ci{setlyrics} command: -\begin{itemize} - \item - Within the lyrics definition, spaces and hyphens are used to - split the whole text into words or syllables. If you want a space - or hyphen appear {\em within\/} a word/syllable, use the command - \verb|\space| or \ci{lyrhyphenchar}, respectively, instead. - \item - \label{empty-syllable}% - In case you want the lyrics attachment to skip over a note, - i.\,e.~a certain note shall not receive a syllable, you may - achieve this by inserting an empty syllable in the \var{words} - text. However, neither a ``really empty'' syllable (i.\,e.~two - consecutive separating spaces) nor an empty environment \verb|{}| - will work, but you may use either \verb|{\empty}| or - \verb|\empty{}| for this. - - Normally, the \ci{nolyr} command (discussed later in this - manual) should be used for this purpose, but an empty syllable may - be more handy if it occurs in only one of multiple assigned - verses; see also sections~\ref{melismas-by-underscores} - and~\ref{multilyrlines}. - \item - Note that, since lyrics lines are cut into pieces which are - processed separately, you cannot apply things like temporary font - changes in the usual manner (i.\,e.~using \TeX\ - environments). See section~\ref{layoutpar} about how to accomplish - layout changes. - \item - Applying \ci{setlyrics} to the same \var{name} again - redefines the lyrics line. This may be useful at very long pieces - because setting up and applying lyrics in smaller portions - (e.\,g.\ movement by movement) saves both time and memory. - \item - It is possible to specify melismas --- that shall occur later when - a verse is attached to the music --- already within - \ci{setlyrics}; see section~\ref{melismas-by-underscores} for - details. - -\end{itemize} - -If several voices have the same lyrics, you do not have to copy and -paste the lyrics for each further voice; just say -\begin{quote}\ci{copylyrics}\verb|{|\var{from name}% - \verb|}{|\var{to name}\verb|}|\end{quote} -to set up a lyrics line named \var{to name} with the same contents -as \var{from name}. - - -\subsubsection{Assigning lyrics lines to staves} - -{\bf Note:} During the following discussion, the term {\em staff\/} is -used wherever \musixtex\ would precisely use the term {\em -instrument\/} instead, assuming that lyrics are posted to single-staff -instruments only. However, everything also applies to the assignment -of lyrics to staves of multi-staff instruments; see -section~\ref{multi-staff-instruments} about how to use lyrics in a -multi-staff instrument context. - -To assign a lyrics line to a staff, say -\begin{quote}\ci{assignlyrics}\verb|{|\var i% - \verb|}{|\var{name}\verb|}|\end{quote} -where \var i is the instrument number (counted as usual from bottom to -top) and \var{name} the name of the lyrics line. - -The resulting assignment can be redefined everywhere. This is useful -if the arrangement of voices on staves changes within the score; when -a voice is continued on a different staff at the next system, use -\ci{assignlyrics} (preferrably enclosed in \verb|\atnextline{...}|) to -make the respective lyrics line follow this change without -interrupting the flow of words. - -If a lyrics line is assigned to instrument \var i and you want it to be -continued on a different instrument while assigning no other lyrics line -to instrument \var i, you must explicitly cancel the former assignment by -saying \ci{assignlyrics}\verb|{|\var i\verb|}{}|. - -{\bf Caution:} Never assign a lyrics line to more than one -staff simultaneously; if the same lyrics are needed at -several staves in parallel, use \ci{copylyrics} (see above). - -As a summary of this section, here is the complete ``lyrics -definition section'' of the above example: -\begin{quote} - \bci{setlyrics} - \bci{copylyrics} - \bci{assignlyrics} - \begin{verbatim} -\setlyrics {soprano}{Quand je bois du vin clai-ret, a-mi tout} -\setlyrics {alto} {Le bon vin nous} -\setlyrics {tenor} {Bu-vons bien, bu} -\copylyrics{tenor} {bass} -\assignlyrics4{soprano} -\assignlyrics3{alto} -\assignlyrics2{tenor} -\assignlyrics1{bass}\end{verbatim} -\end{quote} - -See also section~\ref{assignment-by-context} about an alternative way -to assign lyrics to staves. - - - -\subsection{Managing the attachment of lyrics to notes} -\label{manipulation} - - -\subsubsection{Automatic lyrics attachment} -\label{auto-attachment} - -By default, the syllables of a lyrics line are consecutively attached to -all {\em spacing\/} notes of the assigned staff. Thus chords get only -one syllable since they usually contain exactly one spacing note. -However, this may be different if you are using auxiliary lyrics; -see section~\ref{auxlyrics} for details. - -``Spacing'' in this context means: generated by one of the commands -\verb|\qu|, \verb|\hu|, \verb|\wh| etc.\ and not by \verb|\zqu|, -\verb|\zhu|, \verb|\zq| etc. Spacing or not does {\em not\/} depend on -whether the note generating command is enclosed in \verb|\znotes| or -any other \verb|\notes| command. So if any note seems to have been -left out by the attachment automatism, first make sure that this -note is generated using a command not beginning with \verb|\z|. - -If the number of words of a lyrics line gets exhausted before all -notes of the respective staff are processed, ``???'' is posted at all -remaining notes. - - -\subsubsection{Addressing manipulations to lyrics} - -In the ``ideal'' case, the attachment automatism perfectly distributes the -lyrics over the music. In practice, however, situations in which the -automatism must be ``helped'' manually are frequent. Such -manipulations must be posted within the music code. Here are the -basic rules: -\begin{enumerate} - \item All lyrics manipulations must be stated inside - \verb|\notes...\enotes|. - \item Lyrics manipulations solely refer to the lyrics line(s) - attached to the current staff (``current'' with respect to the - enclosing `\verb|&|' characters). - \item Similar to many other \musixtex\ commands (e.\,g.\ for beams - and slurs), lyrics manipulations must be issued before the - corresponding note commands. -\end{enumerate} -Examples in the following sections will illustrate the application. - - -\subsubsection{Melismas} -\label{melismas} - -Regarding lyrics and music separately, melismas are no property of -either one; instead, they characterize the relation between both and -play a role only where music and lyrics occur together. Using -\musixlyr, however, lyrics coding and music coding are basically -unrelated, but melismas do have to be specified somewhere. You have to -decide yourself whether you regard melismas as an attribute rather of -the lyrics or rather of the music (this may vary according to the type -of score you are preparing, or may even differ within a score); -\musixlyr\ provides two corresponding styles of melisma specification -which are discussed in the following paragraphs. - -\begin{description} - \item[Melismas as a music property.] - Within the music code, a melisma is initiated and terminated by the - command pair - \begin{quote} - \hspace*{\fill}\ci{beginmel}\hfill\ci{endmel}\hspace*{\fill} - \end{quote} - issued before the first and last note, respectively, of the melisma. - This left-justifies the current word/syllable, suspends lyrics until - after the melisma, and sets up a ``word extension - underline''\footnote{I am not sure whether this is the appropriate - term; it is taken from the {\sl Finale\/} reference manual.} unless - the current word is continued afterwards and thus has to be - hyphenated. For example, - - \begin{music} - \resetlyrics - \instrumentnumber1 - \small\scale{0.6} - \setlyrics{melismatic}{a me-lis-ma} - \assignlyrics1{melismatic} - \startextract - \NOtes\beginmel\qa{def}\endmel\qa e\en\bar - \NOtes\beginmel\qa{def}\endmel\qa g\en\bar - \NOtes\beginmel\qa{'a!gf}\endmel\qa e\en\bar - \NOtes\beginmel\qa{defe}\en\bar - \NOTEs\endmel\wh d\en - \endextract - \end{music} - \oneversespace - - has been coded as: - \begin{quote} - \bci{beginmel} - \bci{endmel} - \begin{verbatim} -... -\NOtes\beginmel\qa{def}\endmel\qa e\en\bar -\NOtes\beginmel\qa{def}\endmel\qa g\en\bar -\NOtes\beginmel\qa{'a!gf}\endmel\qa e\en\bar -\NOtes\beginmel\qa{defe}\en\bar -\NOTEs\endmel\wh d\en -...\end{verbatim} - \end{quote} - If a system break occurs within the melisma, hyphenation or underline - is continued at the next system, thus automatic line breaking is - applicable. - - \item[Melismas as a lyrics property.] - \label{melismas-by-underscores} - To specify a melisma within a lyrics definition (i.e.~within - \ci{setlyrics}), simply append an underscore character to a syllable - to make it span over an additional note, two underscores to span over - two additional notes, and so on. Alternatively, you may append to a - syllable a single underscore followed by a number which denotes the - number of {\em additional\/} melisma notes: \verb|abc_| is equivalent - to \verb|abc_1|, \verb|abc__| to \verb|abc_2|, and so on. - - No matter which of the two underscore appedix styles you use: If a - melismatic syllable is hyphenated to the following one, the melisma - denotation must {\bf precede} the hyphen --- for example: - \verb|abc__-def| ({\bf not:} \verb|abc-__def|). - - All melisma properties mentioned above (lyrics suspension, left - justification of syllable, word extension underline, system break - support) also apply to melismas specified this way. For reference, - here is the lyrics definition section of the example above, this time - utilizing the underscore melisma technique (note that, in this case, - all \ci{beginmel} and \ci{endmel} commands must be omitted in the - music section): - - \begin{quote} - \ci{setlyrics}\verb|{melismatic}{a___ me_3-lis___-ma_4}| - \end{quote} - - \item[Comparing both points of view.] - The music-oriented melisma view (using \ci{beginmel}/\ci{endmel}) is - advantageous for music with a rather loose binding to certain lyrics, - e.g.~folk songs that are to be printed with various verse compilations - or in different languages. You may then enter each verse without - taking care of melismas because they are coded just once as part of - the music. - - On the other hand, the lyrics-focused melisma style (using - underscores) is best suited to pieces with a fixed lyrics-to-music - binding; it is easier to type and to read, but less flexible as - regards combining the same lyrics with different music. It is - especially advantageous for multiple verses (see - section~\ref{multilyrlines}) with different syllables-to-notes - distribution (see verse~3 of the ``Drunken sailor'' example in - section~\ref{versenumbers}); it is much easier to code each verse's - melismas individually than tracking all melismas in parallel using - the \ci{verses} command (see again section~\ref{multilyrlines}). - - \item[Note.] - You may use both styles within the same score but you should avoid to - activate both melisma types simultaneously at the same lyrics line; - the result of such an occurrence is undefined. -\end{description} - - -\subsubsection{Turning automatic lyrics attachment on/off} - -If the attachment automatism is unsuitable for some -situation --- e.\,g.\ at complex polyphonic voicings or wherever you -want to place all syllables manually --- you can turn it off using -\begin{quote}\ci{lyricsoff}\end{quote} -after the last note that shall get a syllable. (If your piece begins -with a lyrics-less section, state \ci{lyricsoff} before the first -note of a staff.) To re-enable automatic lyrics attachment, use -\begin{quote}\ci{lyricson}\end{quote} -before the first note that shall get a syllable. - -If automatic lyrics attachment shall skip over certain single notes -only, the \ci{nolyr} command is more suitable (see -section~\ref{nolyr-command}). - - -\subsubsection{Lyrics repetition and skipping} - -As in the following example of a polyphonic piece, - -\begin{music} - \resetlyrics - \instrumentnumber2 - \setclef1\bass - \songtop2 - \songbottom1 - \small - \setlyrics{amen1} - {\llabel{amenlabel}A-men!} \assignlyrics1{amen1} - \copylyrics{amen1}{amen2} \assignlyrics2{amen2} - \startextract - \NOtes% lower staff: - \itenu0K\beginmel\wh K\sk\sk\sk - \midslur2\tten0\endmel\hlp K&% - % upper staff: - \qa f\lyrnop\lyrpt,\qa g% - \golyr{amenlabel}\lclyr\qa h\lyrnop\lyrpt,\qa{_i}% - \golyr{amenlabel}\lclyr\beginmel\islurd1h\qa{hg}% - \tslur1f\endmel\qa f\en - \NOTEs\wh N&\wh g\en - \endextract -\end{music} -\oneversespace - -it often happens that some lyrics phrases are repeated by some but -not all voices, or that each voice has its individual arrangement of -lyrics repetitions. Nevertheless, you do not have to enter -these repetitions directly within \ci{setlyrics}; instead, you -enter the lyrics as if they were performed in an unbroken -sequence. Repetitions and skips are then handled using a ``goto'' -technique involving the following steps: -\begin{description} - \item[Labelling ``goto'' targets.] A syllable which has to be jumped at - must be preceded (without spaces in between) by - \begin{quote}\ci{llabel}\verb|{|\var{label name}\verb|}|\end{quote} - within \ci{setlyrics}. - \item[Performing jumps.] Within the music code, say - \begin{quote}\ci{golyr}\verb|{|\var{label name}\verb|}|\end{quote} - before the note at which the jump has to be performed. - - {\bf Caution:} If you try to jump to an undefined lyrics label, no - meaningful error message is produced. However, if \TeX\ reports an - error at a \ci{golyr} command, you should check conformity of - defined and used labels. -\end{description} -The following actions must be taken in special cases: -\begin{description} - \item[Adding punctuation marks.] Usually a comma or period is - appended to the word preceding a jump; this is done by the command - \begin{quote}\ci{lyrpt}\var{punctuation char}\end{quote} - where \var{punctuation char} can be any single punctuation - character. - \item[Removing punctuation marks.] Before adding a punctuation mark - to a word as said above, an already existing punctuation mark - should be removed by the command: - \begin{quote}\ci{lyrnop}\end{quote} - \item[Lower case letters.] Words at jump targets often begin with a - capital letter which should appear lower case after a jump; - this can be forced by the command: - \begin{quote}\ci{lclyr}\end{quote} -\end{description} -Here is a code excerpt from the above example, summarizing the use of -all mentioned commands: -\begin{quote}\small - \bci{llabel} - \bci{copylyrics} - \bci{setlyrics} - \bci{lyrnop} - \bci{lyrpt} - \bci{golyr} - \bci{lclyr} - \bci{beginmel} - \bci{endmel} - \begin{verbatim} -\setlyrics{amen1} - {\llabel{amenlabel}A-men!} \assignlyrics1{amen1} -\copylyrics{amen1}{amen2} \assignlyrics2{amen2} -\startextract - \NOtes% lower staff: - \itenu0K\beginmel\wh K\sk\sk\sk - \midslur2\tten0\endmel\hlp K&% - % upper staff: - \qa f\lyrnop\lyrpt,\qa g% - \golyr{amenlabel}\lclyr\qa h\lyrnop\lyrpt,\qa{_i}% - \golyr{amenlabel}\lclyr\beginmel\islurd1h\qa{hg}% - \tslur1f\endmel\qa f\en - \NOTEs\wh N&\wh g\en -\endextract\end{verbatim} -\end{quote} -Note that the goto technique is recommendable mainly if different -voices perform different repetitions or skips on the same lyrics; if -all voices perform the same sequence of repetitions, however, it is -easier to hard-code them within \ci{setlyrics}. - - -\subsubsection{Miscellaneous} -\label{miscmanip} - -\begin{description} - \item[Excluding single notes.] - \label{nolyr-command}% - In the following situation, - - \begin{music} - \resetlyrics - \instrumentnumber1 - \setlyrics1{ca-den-za} - \assignlyrics11 - \startextract - \NOtes\zqlp{'c}\qu e\en - \Notes\qu{'d}\nolyr\cl b\en - \bar - \NOTes\zhl{'c}\hu c\en - \endextract - \end{music} - \oneversespace - - the eighth note must be excluded from receiving a syllable. This - can be accomplished saying - \begin{quote}\ci{nolyr}\end{quote} - before the command generating this note. - \item[Manual lyrics posting.] When automatic lyrics attaching is - switched off, a word or syllable can be placed manually saying - \begin{quote}\ci{lyr}\end{quote} - before the command generating the note that shall get this - word/syllable. - - This command also works independently from a following note command; - you can issue it before a rest, a \verb|\sk| or even alone for - itself in order to place a word/syllable wherever you want (no - matter whether the attachment automatism is on or off). - - Manipulations to the posted word/syllable have to be placed {\em - before\/} the \ci{lyr} command. - \item[Left justification.] Say - \begin{quote}\ci{llyr}\end{quote} - in order to have the next word/syllable left-justified to the - notehead instead of centered. - - If you prefer to have left justification as the default, say - \begin{quote}\ci{leftlyrtrue}\end{quote} - before your piece begins (\ci{leftlyrfalse} to restore centered - lyrics). - \item[Word extension underlines.] The melisma commands (see - \ref{melismas}) automatically manage word extension underlines; - however, they can be set manually: Say - \begin{quote}\ci{lyrrule}\end{quote} - before the respective note command to initiate an underline {\em - after\/} the word, and - \begin{quote}\ci{lyrruleend}\end{quote} - before the note where the underline shall be terminated. - - Note that no underline will be drawn if the word is continued - afterwards so that the underline would interfere with the - hyphenation. - \item[Horizontal offset.] To shift a word/syllable out of its default - horizontal position, say - \begin{quote}\ci{lyroffset}\verb|{|\var n\verb|}|\end{quote} - which --- similar to \verb|\roffset| --- moves the next word/syllable - \var n quarter note head widths to the right (left if \var n - is negative). - - Note that the effect of \ci{lyroffset} may be overridden by - automatic lyrics shifting. If you want to gain complete manual - control over the positioning, you have to disable the shifting - automatism; see section \ref{horizpos} for details. - \item[Extra lyrics.] If, as in the following - example\footnote{Excerpt from ``In the town where I was born'' - ({\sl Eine kleine Melodie,\/} Strube, M\"unchen 1989)}, - - \begin{music} - \resetlyrics - \instrumentnumber2 - \generalsignature1 - \setclef1\bass - \songtop2 - \songbottom1 - \interinstrument=6mm - \setsongraise2{-0.5mm} - \scale{1.5} - \forcelyrhyphenstrue - \small - \setlyrics{lower}{yel-low sub-ma-rine,} \assignlyrics1{lower} - \copylyrics{lower}{upper} \assignlyrics2{upper} - \startextract - \Notes\ibl0N0\zqbp0N\ibu1N0\qbp1b&% - \ibl2f0\zqbp2d\ibu3g0\qbp3g\en - \notes\tbbl0\tbl0\zqb0N\tbbu1\tbu1\qb1b&% - \tbbl2\tbl2\zqb2d\tbbu3\tbu3\qb3g\en - \Notes\ibl0M0\zqbp0M\ibu1N0\qbp1b&% - \ibl2f0\zqbp2d\ibu3g0\qbp3g\en - \notes\tbbl0\tbl0\zqb0M\tbbu1\tbu1\qb1b&% - \tbbl2\tbl2\zqb2d\tbbu3\tbu3\qb3g\en - \Notes\ibl0L{-1}\zqbp0L\hu b&\zhl d\hu g\en - \notes\tbbl0\tbl0\lyric{ya,}\qb0K\en - \Notes\ibl0L1\lyric{ya,}\qbp0L\en - \notes\tbbl0\tbl0\lyric{ya,}\qb0M\en - \endextract - \end{music} - \oneversespace - - a voice has ``extra'' lyrics (such as ``hmm'', ``ah'', ``ya'', etc.) - in addition to the ``main'' lyrics, you need not enter them within - \ci{setlyrics} (which would inhibit using \ci{copylyrics}); - instead, you can enter them directly within the music code using - the command - \begin{quote}\ci{lyric}\verb|{|\var{extra syllable}\verb|}|\end{quote} - before the note where they shall appear. (Note that the effect is - different from using \verb|\csong| which would not apply automatic - hyphenation, horizontal positioning control, and \musixlyr's - vertical positioning scheme.) Automatic lyrics attaching --- if - active --- is suspended at that note. All manipulations can be - applied; they must be given before the \ci{lyric} command. - - If you want the syllable linked to the following one by a hyphen, - use \ci{lyrich} instead of \ci{lyric}. - - It may sometimes be necessary to post lyrics where no note is - present at all, i.e.~in the empty space between notes. This is, - however, possible with \verb|\lyric|, but is is unsuitable because - automatic lyrics attachment shall {\em not\/} be suspended at the - next note. In this case one of the commands \ci{lyric*} or --- for - hyphenated syllables --- \ci{lyrich*} should rather be used; they - have no effect on the ``regular'' flow of lyrics. - \label{lyric*-verse-numbers}% - One application for this are vertically aligned verse numbers. For - example, - - \begin{quote} - \bci{lyric*} - \bci{minlyrspace} - \bci{verses} - \begin{verbatim} -\setlyrics1{Spring time} -\setlyrics2{Au-tumn} -\assignlyrics1{1,2} -... -\znotes\minlyrspace=-5cm - \loffset{2.2}{\verses{\lyric*{1.},\lyric*{2.}}}\en -\hardspace{4mm}% -\NOTes\hu{ee}\en -...\end{verbatim} - \end{quote} - - yields: - - \begin{music} - \resetlyrics - \setlyrics1{Spring time} - \setlyrics2{Au-tumn} - \assignlyrics1{1,2} - \lyrraise1{b -1.5mm} - \scale{1.2} - \startextract - \znotes\minlyrspace=-5cm - \loffset{2.2}{\verses{\lyric*{1.},\lyric*{2.}}}\en - \hardspace{4mm}% - \NOTes\hu{ee}\en - \endextract - \twoversesspace - \end{music} - - (This example uses a few yet unintroduced features: - \begin{itemize} - \item - The \verb|\minlyrspace| command is necessary to allow - shifting the verse numbers left out of the normal ``zero'' - lyrics position; see also section~\ref{horizpos}. - \item - See section~\ref{multilyrlines} about attaching multiple verses - to a single staff.) - \end{itemize} - - You may even obtain verse numbers that are repeated at the - beginning of each system by enclosing the \verb|\znotes...| command - for setting the numbers in \verb|\def\everystaff{...}|. - - Another possible application --- combined with empty syllables --- - is coping with unusual lyrics situations at voltas; for example, - - \begin{music} - \twoversesspace - \resetlyrics - \setlyrics1{first pass} - \setlyrics2{se-cond pass} - \assignlyrics1{1,2} - \scale{2} - \startextract - \NOTEs\wh g\en - \Setvolta1\def\atnextbar{\znotes\verses{,\lyric{}}\en}\bar - \NOTEs\wh g\en - \znotes\verses{,\lyrich*{}}\en \Setvolta2\setendvoltabox\rightrepeat - \NOTEs\verses\lyricsoff\pause\en\bar - \NOTEs\ha{gg}\en\setendvolta - \endextract - \twoversesspace - \end{music} - - is accomplished by: - - \begin{quote} - \bci{verses} - \bci{lyric} - \bci{lyrich*} - \begin{verbatim} -\setlyrics1{first pass} -\setlyrics2{se-cond pass} -\assignlyrics1{1,2} -\startextract - \NOTEs\wh g\en - \Setvolta1\def\atnextbar{\znotes\verses{,\lyric{}}\en}\bar - \NOTEs\wh g\en - \znotes\verses{,\lyrich*{}}\en - \Setvolta2\setendvoltabox\rightrepeat - \NOTEs\verses\lyricsoff\pause\en\bar - \NOTEs\ha{gg}\en\setendvolta -\endextract\end{verbatim} - \end{quote} - - The trick used here is to inject empty syllables into the second - verse at the barlines around the first volta; they serve as anchors - for the hyphenation suspended under this volta. - - Note that the \ci{lyric}, \ci{lyric*}, \ci{lyrich}, and - \ci{lyrich*} commands cannot be used at staves without assigned - lyrics lines. -\end{description} - - - -\subsection{Horizontal positioning} -\label{horizpos} - -\musixlyr\ takes care of blank space between words. If a word --- at -its default position --- would come too close to or overlap the -previous word, it is shifted right in order to ensure a minimum of -blank space. This minimal interword space can be set by -\begin{quote}\ci{minlyrspace}\verb|=|\var{any \TeX\ dimension}\end{quote} -and is initially set to~3\,pt. - -%The situation is different if two syllables belong to the same -%word. Such syllables are allowed to close up; only overlapping is -%inhibited by shifting. If the space between such syllables is -%narrower than a hyphen, the hyphen is omitted unless you force -%hyphens in every spatial situation saying -%\begin{quote}\verb|\forcelyrhyphenstrue|\end{quote} -%(to restore the default behaviour: \verb|\forcelyrhyphensfalse|). In -%this case, enough room is made for the hyphen by shifting the right -%syllable if necessary. - -\leavevmode\label{nicerhyphens}% -The situation is different if two syllables belong to the same -word. Such syllables are allowed to close up; only overlapping is -inhibited by shifting. If the ``natural'' space between such syllables is -narrower than a hyphen, the hyphen is omitted and the two syllables -close up completely (eventually by left-shifting the second syllable -to prevent a small gap). You may though force -hyphens in every spatial situation saying -\begin{quote}\ci{forcelyrhyphenstrue}\end{quote} -(to restore the default behaviour: \ci{forcelyrhyphensfalse}). In -this case, enough room is made for the hyphen by right-shifting the -second syllable if necessary. - -If the note spacing is quite narrow, lyrics shifting may get -accumulated within a system. In order to prevent shifting words too -far out of their original position, a wider note spacing should be -considered. The command -\begin{quote}\ci{showlyrshifttrue}\end{quote} -marks each lyric shift with a black rectangle of the respective -width, thus making it easy to detect questionable positionings. - -If you prefer to completely disable lyrics shifting, set -\ci{minlyrspace} to a large negative value (e.\,g.~$-10$\,cm). - - - -\subsection{Vertical positioning} -\label{vertical-positioning} - -By default, \musixlyr\ places lyrics vertically centered between the -two adjacent staves. Lyrics below the lowest or above the topmost -staff of a system are centered around the system's bottom or top -margin line.% -\footnote{This is not necessarily the most reasonable way, but it is - compatible to \musixtex's \printcmd{csong} behaviour.} - -In most scores, you will have to deviate from this standard and -manually adjust the lyrics' vertical position. This can be done per -staff with the command -\begin{quote} - \ci{lyrraise}\verb|{|\var n\verb|}|\verb|{|\var{pos}\var{raise}\verb|}| -\end{quote} -which applies the following setting to the lyrics attached to staff -number~\var n: \var{pos} is one of the letters \verb|a| -and~\verb|b|. \verb|a| sets the lyrics above the staff, \verb|b| below -the staff. \var{raise} is a dimension value by which the lyrics are -lifted above (or lowered under, if it is negative) the default -position as mentioned above. \ci{lyrraise}\verb|{|\var n\verb|}{b0pt}| -is the initial settting for all staves. - -It is possible to apply changes to the vertical position at any place -within the score, but in most cases it is most reasonable to do so -within \verb|\atnextline{...}| which ensures consistent, even spacing -within each system. - -For the sake of backward compatibility, applying \musixtex's command -\ci{setsongraise}\verb|{|\var n\verb|}{|\var{raise}\verb|}| -implicitly performs a -\ci{lyrraise}\verb|{|\var n\verb|}|\verb|{b|\var{raise}\verb|}|, -but not vice versa --- i.\,e.~\ci{lyrraise} has no effect on lyrics -set with \musixtex's lyrics commands \verb|\csong|, -\verb|\zsong|,~etc. Likewise, the obsolete \musixlyr\ command -\ci{auxsetsongraise} implies \verb|\auxlyr{\lyrraise...{b...}}|, but -not vice versa (see section~\ref{auxlyrics} to learn about the meaning -of \verb|\auxlyr|). - - - -\subsection{Setting lyrics layout parameters} -\label{layoutpar} - - -\subsubsection{Available parameters} - -\begin{description} - \item[Font:] There is no special font command; the current font is - used for lyrics. It can be changed using the usual \TeX/\LaTeX\ - commands. - \item[Minimum length of word extension underlines:] A word extension - underline is omitted if it would become too short. The minimum - length can be set by - \begin{quote}\ci{minlyrrulelength}\verb|=|\var{any \TeX\ dimension} - \end{quote} - and is initially set to~2\,mm. If you prefer to completely inhibit - the underlines, set this parameter to an unsurpassably high value - (e.\,g.~the width of your paper). - \item[Minimum inter-syllable distance for multiple hyphens:] If the - space between two hyphenated syllables (or between one of the - syllables and the respective system margin) is wider than this - distance, it is filled with a line of hyphens instead of a single - hyphen. The minimum distance to be filled with more than one - hyphen can be set by - \begin{quote}\ci{minmulthyphens}\verb|=|\var{any \TeX\ dimension}\end{quote} - and is initially set to~15\,mm. If you prefer to completely inhibit - filling with multiple hyphens, set this parameter to an - unsurpassably high value. - \item[Hyphen character:] This can be redefined by: - \begin{quote}\verb|\def|\ci{lyrhyphenchar}\verb|{|\dots\verb|}|\end{quote} -\end{description} -Further layout parameters discussed elsewhere are: vertical -positioning (section \ref{vertical-positioning}), word justification -(section \ref{miscmanip}), minimum interword distance, and forcing -hyphens (section \ref{horizpos}). - -{\bf Note:} In order to change the mentioned parameters globally, the -respective commands must be issued {\em outside\/} -\verb|\notes...\enotes|. - -\subsubsection{Individual settings per staff} -\label{indivlayout} - -All layout parameters can be set either globally (applying to all -lyrics lines) or individually, i.\,e.\ valid for a single specified staff. -An individual change is accomplished by enclosing the proper command -in -\begin{quote}\ci{lyrlayout}\verb|{|\dots\verb|}|\end{quote} -and issuing this within \verb|\notes...\enotes| in the section of the -referred staff. For example, -\begin{quote} - \verb|\notes...&|\ci{lyrlayout}\verb|{\it\leftlyrtrue}...&...\en| -\end{quote} -applies italic font and left justification to the lyrics line(s) -assigned to the second staff. - -Applying \ci{lyrlayout} to the same staff again overrides -{\em all\/} previous individual settings for this staff; -pay attention to this if you made several individual settings and -want to reset some but retain others. Saying \ci{lyrlayout}\verb|{}| -restores the global settings for a staff. - -The \ci{lyrlayout} command can also be used within -\ci{setlyrics}; this is useful if an individual setting -(especially a font change) should apply to a particular -portion of lyrics rather than to a portion of music. For example, -\begin{quote} - \ci{setlyrics}\verb|{x}{An |\ci{lyrlayout}% - \verb|{\it}em-pha-sized\lyrlayout{} phrase}| -\end{quote} -causes the word ``emphasized'' to appear italic wherever it is posted -within the music. (Be sure to attach \ci{lyrlayout} commands to -the corresponding lyrics portions {\em without\/} blank spaces in -between.) - -{\bf As an exception,} the {\bf vertical positioning of lyrics} cannot be -changed within \ci{lyrlayout}; instead, it is handled staff-wise -using the special commands discussed in -section~\ref{vertical-positioning}. - - - -\subsection{Multiple verses per staff} -\label{multilyrlines} - -An arbitrary number of verses can be assigned to a staff -straightforwardly by saying -\begin{quote}\ci{assignlyrics}\verb|{|\var n\verb|}{|% - \var{names}\verb|}|\end{quote} -where \var{names} is a {\bf comma-separated list} of the desired -lyrics line names, listed from top to bottom. In the following -example\footnote{Excerpt from: ``Non moriar sed vivam'', motet by -{\sc Martin Luther}}, - -\begin{music} - \resetlyrics - \generalmeter\allabreve - \generalsignature2 - \scale{0.9} - \setlyrics{latin} {Non mo-ri-ar sed} - \setlyrics{german}{Ich wer-de nicht ster-ben, son-dern} - \assignlyrics1{latin,german} - \small - \setsongraise1{-1.5mm} - \startextract - \znotes\verses{,\lyrlayout{\footnotesize\it}}\en - \NOTEs\wh{'a}\en\bar - \NOTes\verses{\beginmel}\ha{'b}\verses{\endmel}\ha a\en\bar - \NOtesp\beginmel\qup{'a}\en - \Notes\ca{'b}\en - \NOtes\verses{,\endmel}\qa{'c}\verses{,\beginmel}\itieu0d\qa d\en\bar - \NOtes\ttie0\qa{'d}\endmel\qa c\en - \NOtes\verses{\beginmel}\ha{'d}\en\bar - \NOTes\verses{\endmel}\ha{'ee}\en - \endextract -\end{music} -\twoversesspace - -the lyrics lines have been set up as follows: -\begin{quote} - \bci{assignlyrics} - \begin{verbatim} -\setlyrics{latin} {Non mo-ri-ar sed} -\setlyrics{german}{Ich wer-de nicht ster-ben, son-dern} -\assignlyrics1{latin,german}\end{verbatim} -\end{quote} - - -\subsubsection{Handling verses individually} - -If you code lyrics attachment manipulations the way -described in section~\ref{manipulation}, these manipulations apply -{\em to all lyrics lines\/} of the referred staff {\em -simultaneously.\/} In order to address each lyrics line separately, -use the command -\begin{quote} - \ci{verses}\verb|{|\var{man1}\verb|,|\var{man2}\verb|,|\dots\verb|}| -\end{quote} -where \var{man1} is a sequence of commands to manipulate the upper -lyrics line, \var{man2} to manipulate the second lyrics line from -above, and so on. These command sequences may be empty. Delimiting -commas after the last non-empty list entry can be omitted. For example, -\begin{quote} - \ci{verses}\verb|{,,\beginmel,\golyr{abc}}| -\end{quote} -leaves the upper two lyrics lines unaltered, initiates a melisma at -the third, performs a jump to label {\tt abc} at the fourth, and -leaves all further ones (whatever their number may be) unaltered. As -another example, the font change for the german lyrics of the above -excerpt is accomplished by -\begin{quote} - \verb|\znotes|\ci{verses}\verb|{,\lyrlayout{\footnotesize\it}}\en| -\end{quote} -before the first note is coded. - - -\subsubsection{Vertical positioning} -\label{multiple-vert-pos} - -A block of multiple lyrics lines is vertically centered around the position -which a single lyrics line would have taken; thus you can do things -like - -{\small\setlyrstrut - \resetlyrics - \setlyrics{Winter1}{Win-ter a-de\rlap{,} a-ber dein Schei-den macht\rlap{,}} - \setlyrics{Winter2}{schei-den tut weh\rlap,} - \assignlyrics1{Winter1,Winter2} - \generalmeter{\meterfrac34} - \generalsignature2 - \setsongraise1{-2mm} - \startextract - \NOtes\qa{ffe}\en\bar - \NOTesp\hup d\en\rightrepeat - \assignlyrics1{Winter1}% - \NOtes\qa{fgh}\en\bar - \NOtes\qa h\en - \Notes\beginmel\Ibu0gf1\qb0g\endmel\tqh0f\en - \NOtes\qa g\en - \endextract} -\twoversesspace - -without having to adjust the vertical position within the -piece. (See the source of this manual for the coding of this -example.) - -\leavevmode\label{lyrstrut}% -The vertical distance between the baselines of multiple verses is -appropriate for the default 10~point font size of plain \TeX. -However, the size switching commands \verb|\smalltype|, -\verb|\medtype|~etc.\ do not implicitly adjust the vertical distance -to the chosen font size. Since the vertical distance of lyrics is now -controlled by the concept of a {\em lyrics strut\/}\footnote{In -analogy to \TeX's {\tt\char92 strut}; see {\sl The \TeX book\/} by -{\sc D.~E.~Knuth.}}, you should perform this adjustment explicitly with -the command -\begin{quote}\ci{setlyrstrut}\end{quote} -directly after each ``global'' font size change (i.\,e.~after each size -change not issued within \verb|\lyrlayout{...}|; -see~\ref{indivlayout}) unless you do not want the spacing to be -adjusted. (\TeX perts only: If you like to define your own vertical -spacing, you may redefine the \ci{lyrstrutbox} yourself.) - - - -\subsection{Auxiliary lyrics} -\label{auxlyrics} - -If you have typeset two voices of a polyphonic arrangement within one -staff, you normally want to give each voice its own lyrics lines. -Usually, the two voices are distinguished by means of the notes' stem -direction; the lyrics of the up-stemmed voice are typeset above, -those of the down-stemmed voice below the staff. \musixlyr\ -provides the facility to maintain such two lyrics ``streams'' per -staff; one of them --- which is handled exactly as described so -far --- will be called {\em main lyrics,\/} the second one {\em -auxiliary lyrics.\/} - - -\subsubsection{Addressing auxiliary lyrics} - -Only two rules are to be obeyed for directing commands to auxiliary lyrics: -\begin{enumerate} - \item Enclose everything concerning auxiliary lyrics in: - \begin{quote}\ci{auxlyr}\verb|{...}|\end{quote} - For example, assign lyrics line~{\tt verse1} to staff~2 as - auxiliary lyrics by: - \begin{quote}\ci{auxlyr}\verb|{\assignlyrics{2}{verse1}}|\end{quote} - For example, begin a melisma at the next note of the ``auxiliary'' voice by: - \begin{quote}\ci{auxlyr}\verb|{\beginmel}|\end{quote} - (For \TeX perts: If the argument of \ci{auxlyr} consists of - only one token, the braces can be omitted, so that - \verb|\auxlyr\beginmel| does the same.) - \item There are exactly two exceptions to the first rule. The first - one are the \ci{setlyrics} and \ci{copylyrics} commands which - need not be enclosed in \ci{auxlyr}\verb|{...}|; their function is - independent of the later use of the defined lyrics lines as either - main or auxiliary lyrics. - - The second exception concerns lyrics commands issued as type-1 - \TeX\ strings in a \PMX\ source; see below for details. -\end{enumerate} - -\label{auxlyr-vertical-position-default}% -Auxiliary lyrics are lifted above the staff by default, i.e.~they have -the same vertical position as main lyrics belonging to the staff above -the current staff. If this causes collisions with the main lyrics of -the upper staff, you have to shift the lyrics away from each other -using the vertical spacing commands discussed in -section~\ref{vertical-positioning}. - - -\subsubsection{Automatic attachment of auxiliary lyrics} -\label{auxlyr-attachment} - -While it is easy to attach only one lyrics ``stream'' to a single -voice within a system automatically, the attachment of both main and -auxiliary lyrics involves the task of determining which note belongs -to which voice. Unfortunately, \musixtex\ does not explicitly state a -note's membership of a particular voice; therefore, a heuristic -method has to be used to gather this information. However, -the situation is completely different if you prepare your scores with -the \PMX% -\footnote{If you don't know what \PMX\ is, have a look at: - {\tt http://icking-music-archive.sunsite.dk/musixtex/software/pmx/}} -preprocessor. The following paragraphs explain managing the lyrics -attachment automatism for both cases --- \PMX\ and -non-\PMX\ --- separately. - - -\paragraph{Using \PMX.} - -(This paragraph requires some \PMX\ knowledge.) For \PMX-prepared -scores (which \musixlyr\ detects automagically), the distinction -between the two voices of a staff works fully automatic. This applies -to both the automatic lyrics attachment as well as explicit lyrics -manipulations --- i.e.,~you do not have to use \ci{auxlyr}\verb|{...}| for -manipulating auxiliary lyrics. (This only applies to manipulations -that appear in a voice's context, i.e.~within a type-1 \TeX\ string.) -For reference, see the following example\footnote{Excerpt from -``Waldesnacht, du wunderk\"uhle'' by {\sc Johannes Brahms} ({\sl Eine -kleine Melodie,\/} Strube, M\"unchen 1989)}, - -\oneversespace -\begin{music} - \resetlyrics\small - \setlyrics{soprano}{all der ir-ren Qua-len los.} - \auxlyr{\assignlyrics1{soprano}} - \copylyrics{soprano}{alto} - \assignlyrics1{alto} - - \auxlyr{\lyrraise1{a -3\internote}} - \staffbotmarg5.5\Interligne - \stafftopmarg5\Interligne - \generalsignature2 - \lyrmodealter0 - - \startextract\addspace\afterruleskip - \scale{1.2}% - \NOtes\zhu{=j}\lower6\internote\qp\lifthpause{-3}\sk\qu h\en - \bar - \NOtes\auxlyr\beginmel\roffset{.8}{\isluru2j}\zhup f\lower8\internote\qp\en - \NOTes\hl{^d}\en - \NOTes\zql e\itieu0e\qu e\en - \bar - \NOtes\beginmel\islurd1c\zql c\ttie0\tslur2h\auxlyr\endmel\qu e% - \roff{\endmel\tsslur1d\zhl d}\qu{=d}% - \auxlyr\beginmel\itieu0d\hu d% - \ql d\en - \bar - \NOTes\zhl d\ttie0\auxlyr\endmel\hu d% - \zhl a\hu c\en - \bar - \NOTes\zhl a\fermataup l\hu d\hpause\en - \setdoubleBAR\endextract -\end{music} -\oneversespace - -which can be obtained by the following \PMX\ code (processed with -\PMX\ version~2.3): -\begin{quote} -\bci{auxlyr} -\begin{verbatim} ---- -\input musixtex % These commands are necessary -\input pmx % because pmx.tex MUST be \input -\input musixlyr % before musixlyr.tex! - -\setlyrics{soprano} % \setlyrics and \copylyrics - {all der ir-ren Qua-len los.} % need not be enclosed in -\copylyrics{soprano}{alto} % \auxlyr{...}. - -\assignlyrics1{alto} -\auxlyr{\assignlyrics1{soprano} - \lyrraise1{a 3\Interligne}} - -\let\BM\beginmel % For brevity within the subsequent -\let\EM\endmel % music coding recommended. ---- -1 1 4 4 0 0 3 2 0 5 20 0 - -t -./ - -% 1st and 2nd bar: -r4-6 r2-6 | r4-8 d24s e4 // -c25n a4 | \BM\ f2d s+4 \isu0e{.8}\ e4 / -% 3rd bar: -\BM\ c s \EM\ d2r s d4 // -\ts0e0\EM\ e s+3 dn \BM\ d2 s / -% 4th bar: - d2 a // % Note that \BM and \EM -\EM\ d s c / % apply either to main -% 5th bar: % or to auxiliary lyrics, -a r+0 // % depending on which voice -d of rb / % they appear in.\end{verbatim} -\end{quote} - -By default, main lyrics are attached to the lower voice (whose -lines end with \verb|//| in the \PMX\ source), auxiliary lyrics to the -upper voice; due to \PMX\ internals, this ensures that if only one -voice is present, main lyrics are attached to it. However, situations -exist in which it is desirable to have main lyrics attached to the -upper voice, e.\,g.~when you have only main lyrics and want to -synchronize them with the soprano voice instead of the alto voice -(both of them set on the same staff). In this case, you can toggle the -attachment of lyrics to voices with the command -\begin{quote}\ci{lyrmodealter}\verb|{|\var n\verb|}|\end{quote} for -staff number \var n; the command -\begin{quote}\ci{lyrmodenormal}\verb|{|\var n\verb|}|\end{quote} -restores the default behaviour. If $\hbox{\var n}=0$, the change -affects all staves. - - -\paragraph{Using ``plain'' \musixtex\ without \PMX.} - -In this context, there are two basically different modes for lyrics -attachment: -\begin{enumerate} - \item In {\em normal mode\/} (which is active by default) only main - lyrics are provided automatically as described in - section~\ref{auto-attachment}. All auxiliary lyrics must be issued - manually by saying \ci{auxlyr}\ci{lyr} before the respective note. - This mode is useful when you do not have auxiliary lyrics at all - or when auxiliary lyrics occur only occasionally within the piece. - \item In {\em alternative mode\/}, both main and auxiliary lyrics - are provided automatically. The two voices of a staff are - distinguished by means of their notes' stem direction; the lower - voice gets main lyrics, the upper one auxiliary lyrics. This - implies that the automatism fails at stemless - notes\footnote{Ancient notes, namely breve, longa, and maxima, are - also treated as stemless notes by \musixtex's internals.}, thus you - have to provide lyrics manually by saying \ci{lyr} or - \ci{auxlyr}\ci{lyr}, respectively, before such notes. This mode is - meant for staves which continuously contain two polyphonic voices - with separate lyrics. -\end{enumerate} - -The appropriate mode can be chosen staff-wise: The command -\begin{quote}\ci{lyrmodealter}\verb|{|\var n\verb|}|\end{quote} -enables alternative mode for staff number \var n; the command -\begin{quote}\ci{lyrmodenormal}\verb|{|\var n\verb|}|\end{quote} -restores normal mode. As stated above, $\hbox{\var n}=0$ performs the -choice affecting all staves. - -For illustration, have a look at the following -example\footnote{Excerpt from ``Audite nova'' by {\sc Orlando di -Lasso} ({\sl ars musica\/} vol.\,4, M\"oseler Verlag -Wolfenb\"uttel/Z\"urich)}: - -\oneversespace -\begin{music} - \resetlyrics \small - \lyrmodealter0 - \setlyrics{soprano}{bring her die Gans,} \auxlyr{\assignlyrics1{soprano}} - \copylyrics{soprano}{alto} \assignlyrics1{alto} - - \generalsignature{-2} - \advance\stafftopmarg3\Interligne - \advance\staffbotmarg2\Interligne - - \startextract\addspace\afterruleskip - \NOtes\zqu g\ql e\en - \bar - \Notes\zqu i\beginmel\ibslurd0f\ibl0f{-1}\qb0f\en - \Notes\qb0e\en - \Notes\auxlyr\beginmel\ibsluru1i\zqup i\qb0d\en - \Notes\tqb0e\en - \Notes\endmel\tbslurd0e\ql c\en - \notes\ibbu0h{-1}\qb0h\en - \notes\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} -\oneversespace - -The lyrics were defined as follows: -\begin{quote} - \bci{auxlyr} - \bci{assignlyrics} - \begin{verbatim} -\setlyrics{soprano}{bring her die Gans,} -\copylyrics{soprano}{alto} - -\assignlyrics1{alto} -\auxlyr{\assignlyrics1{soprano}} - -\lyrmodealter0 % provide main + aux. lyrics automatically\end{verbatim} -\end{quote} - -This is the complete notes section: -\begin{quote} - \bci{auxlyr} - \begin{verbatim} -\NOtes\zqu g\ql e\en -\bar -\Notes\zqu i\beginmel\ibslurd0f\ibl0f{-1}\qb0f\en -\Notes\qb0e\en -\Notes\auxlyr\beginmel\ibsluru1i\zqup i\qb0d\en -\Notes\tqb0e\en -\Notes\endmel\tbslurd0e\ql c\en -\notes\ibbu0h{-1}\qb0h\en -\notes\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.\end{verbatim} -\end{quote} - -Note that, as opposed to using \PMX, there is no special provision -for attaching main lyrics to the upper voice. If you desire a single -lyrics ``thread'' synchronized with the upper voice, please use -auxiliary lyrics instead and position them below the staff (see -section~\ref{vertical-positioning}). -Alternatively, you may use main lyrics in normal lyrics mode and code -the lower voice completely non-spacing (in the sense explained -in~\ref{auto-attachment}), the upper voice completely spacing; this -should not be too complicated for mainly homophonic pieces. - - - -\subsection{Lyrics at multi-staff instruments} -\label{multi-staff-instruments} - -So far in this manual, the term {\em staff\/} has always been used for -what \musixtex\ precisely calls an {\em instrument\/}. This section, -however, correctly adopts the \musixtex\ terminology. - -Lyrics can be assigned to staves of a multi-staff instrument. To do -so, use -\begin{quote} - \ci{assignlyricsmulti}\verb|{|\var i\verb|}{|\var s\verb|}{...}| -\end{quote} -instead of \verb|\assignlyrics...|; here, \var s~adresses the desired -staff number (counted from bottom to top) of instrument~\var i. - -Nevertheless, -\ci{assignlyrics}\verb|{|\var i\verb|}{...}| -can be used as well if instrument~\var i has multiple staves; in this -case, it is equivalent to -\verb|\assignlyricsmulti{|\var i\verb|}{1}{...}|, -i.\,e.~it affects only the first staff (and not all staves, as may be -presumed). - -In the same spirit, the following ``multi'' commands replace the -standard ones within a multi-staff instrument context: -\begin{quote} - \ci{lyrraisemulti}\\ - \ci{lyrmodenormalmulti}\\ - \ci{lyrmodealtermulti} -\end{quote} - -All other \musixlyr\ commands or features can be used the same way as -within a single-staff instrument context. - -Using lyrics at multi-staff instruments can be useful, for example, -for typesetting songs with piano accompaniment:% -\footnote{Example taken from songbook {\sl Am Brunnen vor dem Tore\/}, -Delphin Verlag M\"unchen/Z\"urich 1981} - -\begin{music} - \resetlyrics - \setlyrics{verse}{Gu-ter Mond, du gehst_ so_ stil_-le} - \assignlyricsmulti11{} - \assignlyricsmulti12{verse} - \lyrraisemulti12{b 2\internote} - \setstaffs12 - \generalsignature{-1} - \generalmeter\meterC - \setclef1\bass - \interstaff{13} - \scale{1.3} - \startextract - \Notes\qp|\ibl0j{-2}\qb0j\tqb0i\en - \bar\hardspace{1.7\myqnwidth}% - \NOtes\isluru1d\lq c\zq M\ql d|\qa h\en - \NOtes\zq c\zq M\ql e|\qa h\en - \Notes\lq c\zq M\ql d|\islurd0h\ibu0h2\qb0h\tslur0i\tqh0i\en - \Notes\tslur1e\zq c\zq M\ql e|\isluru0j\ibl0j2\qb0j\tslur0k\tqb0k\en - \bar\hardspace\myqnwidth - \Notes\isluru1d\lq c\zq M\ql d|\isluru0j\ibl0j{-2}\qb0j\tslur0i\tqb0i\en - \NOtes\zq c\zq M\ql e|\qa g\en - \NOtes\lq c\zq M\ql d|\qp\en - \znotes\midslur2\tsslur1d\en - \zendextract -\end{music} - -The lyrics of this example are defined as follows: -\begin{quote} - \bci{assignlyricsmulti} - \bci{lyrraisemulti} - \begin{verbatim} -\setlyrics{verse}{Gu-ter Mond, du gehst_ so_ stil_-le} -\assignlyricsmulti{1}{2}{verse} -\lyrraisemulti {1}{2}{b \internote}\end{verbatim} -\end{quote} - - - -\subsection{Managing lyrics assignment according to current context} -\label{assignment-by-context} - -Managing the properties of lyrics lines assignment to instruments by -absolute instrument numbers --- as it is done with the -\ci{assignlyrics}, \ci{lyrraise}, and \ci{lyrmodealter} -commands --- may cause difficulties whenever the score's number and -order of instruments shall be rearranged; in this case instrument -numbers change, thus the instrument number parameters of the -mentioned lyrics-related commands have to be adjusted. - -This is especially unpleasant where such a rearrangement is done -automatically, e.\,g.~by \PMX's part extraction facility {\em -scor2prt\/}; this is intended to work without any manual editing -of the generated part files. - -To address this issue, \musixlyr\ provides {\em context-dependent\/} -variants of the commands mentioned above. For example: Instead of -\verb|\assignlyrics{2}{soprano}|, you may say something like: -\begin{quote} - \verb|\notes...&|\ci{assignlyricshere}\verb|{soprano}...\en| -\end{quote} -\ci{assignlyricshere}\verb|{|\var{name(s)}\verb|}| assigns the given verse -\var{name(s)} to the instrument/staff whose context it occurs in within the -\verb|\notes...\en| construct; no absolute instrument/staff number needs to -be specified. - -For example, the following two code fragments are equivalent: - -\begin{quote} - \footnotesize - \hfill - \def\arraystretch{1}% - \begin{tabular}{l@{\qquad}|@{\qquad}l} - \begin{tabular}[t]{@{}l@{}} - \ci{assignlyrics}\verb| {1} {acct}%|\\ - \ci{assignlyricsmulti}\verb|{2}{2}{verse}%|\\ - \verb.\NOtes\qa c&\qa e|\qa g\en. - \end{tabular} - & - \begin{tabular}[t]{@{}l@{}} - \verb|\NOtes|\ci{assignlyricshere}\verb|{acct}\qa c%|\\ - \verb| &\qa e%|\\ - \verb. |.\ci{assignlyricshere}\verb|{verse}\qa g\en| - \end{tabular} - \end{tabular} - \hfill\strut -\end{quote} - -Using \PMX, the context-dependent commands must be given as type-1 -inline \TeX\ strings. Here is the same example, coded as \PMX input: - -\begin{quote} - \footnotesize - \hfill - \def\arraystretch{1}% - \begin{tabular}{l@{\qquad}|@{\qquad}l} - \begin{tabular}[t]{@{}l@{}} - \ci{assignlyrics}\verb| {1} {acct}\|\\ - \ci{assignlyricsmulti}\verb|{2}{2}{verse}\|\\ - \verb|c44 /|\\ - \verb|e44 /|\\ - \verb|g44 /|\\ - \end{tabular} - & - \begin{tabular}[t]{@{}l@{}} - \hphantom{\tt .NOtes.assignlyricshere.acct..qa cg.en}\\ - \\ - \ci{assignlyricshere}\verb|{acct}\ c44 /|\\ - \verb| e44 /|\\ - \ci{assignlyricshere}\verb|{verse}\ g44 /|\\ - \end{tabular} - \end{tabular} - \hfill\strut -\end{quote} - -The first one (left) results in wrong lyrics assignments in {\em -scor2prt\/} output; the second one (right) is robust against part -extraction. - -This is the complete set of ``here'' commands that can be applied the -same way: -\begin{quote} - \ci{assignlyricshere}\\ - \ci{lyrraisehere}\\ - \ci{lyrmodenormalhere}\\ - \ci{lyrmodealterhere} -\end{quote} - -All other \musixlyr\ commands are context-driven anyway, i.\,e.~using -the mentioned ``here'' commands you can completely omit any absolute -instrument/staff number assignment. - - - -\subsection{Miscellaneous} - -\subsubsection{Avoiding problems after {\tt\char92 - endpiece...\char92 startpiece}} - -Sometimes, after having suspended the music with \verb|\endpiece| and -restarted it with \verb|\startpiece| (or the respective -\verb|\...extract| commands), the lyrics lines are totally misaligned -because the internal lyrics positioning parameters are not reset -properly. Saying -\begin{quote}\ci{resetlyrics}\end{quote} -before the beginning of the new music section should solve this -problem. - - -\subsubsection{Improved centering of words with punctuation marks} - -Centered words with an attached punctuation mark often seem a bit -left-shifted since the punctuation mark also counts for the -centering. To have a word centered solely with respect to its -letters, enclose the punctuation mark in \verb|\rlap{...}| as it is -done in the example of section~\ref{multiple-vert-pos}. Unfortunately, -this circumvents the lyrics shifting automatism, and is incompatible -with the use of \ci{lyrnop}. - - -\subsubsection{Verse numbers} -\label{versenumbers} - -There is no special command for this topic. See the following example: - -\begin{music} - \resetlyrics - \generalmeter{\meterfrac24} - \scale{1.8} - \setlyrics{sailor1} - {\llap{1.} What shall we do with a drun-ken sail-or\rlap{?}} - \setlyrics{sailor2} - {\llap{2.} Take him and shake him and try to\lyrlink a-wake him,} - \setlyrics{sailor3}{\llap{3.} Give him a dose of_ salt and wa-ter,} - \setlyrics{sailor4}{\llap{4.} Give him a dash with a bo-som's rub-ber,} - \assignlyrics1{sailor1,sailor2,sailor3,sailor4} - \small\setlyrstrut - \setsongraise1{-6mm} - \startextract - \znotes\minlyrspace=-10cm% to inhibit right-shifting of the numbers - \llyr\lyroffset{-2}% make the numbers stand off to the left - \lyr% post the numbers - \en - \Notes\ibu0h0\qb0h\en - \notes\nbbu0\qb0h\tqh0h\en - \Notes\ibu0h0\qb0h\en - \notes\nbbu0\qb0h\tqh0h\en\bar - \Notes\Dqbu hd\Dqbu fh\en - \endextract -\end{music} -\oneversespace -\twoversesspace - -To see how this is accomplished, look for the example's coding within -{\tt mxlyrdoc.tex}. - -Section~\ref{lyric*-verse-numbers} explains an alternative method for -setting vertically aligned verse numbers. - - -\subsubsection{``Lyrics slurs''} - -If two consecutive syllables of a lyrics line share the same note (as -in the second verse of the above example), you may want to link them -together with a small slur under them \mbox{like\lyrlink this.} To do -this, use the command \ci{lyrlink} instead of the respective blank -space within the \verb|\setlyrics| definition. - -If any of the adjacent characters expand under their \TeX\ baseline -(like `g', `j', `p', etc.), use \ci{lowlyrlink} which lowers the -slur accordingly (e.\,g.: \mbox{sing\lowlyrlink gladly}). - - - -\pagebreak[4] -\section{Command index} -\printindex - - - -\section{Software license} - -\musixlyr\ (including this manual) is free software; you can -redistribute it and/or modify it under the terms of the GNU General -Public License as published by the Free Software Foundation; either -version~2 of the License, or any later version. - -\musixlyr\ is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with \musixlyr; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -\medskip -Author: -\begin{tabular}[t]{l} - Rainer Dunker\\ - Wachtelweg 31\\ - 85591 Vaterstetten\\[0.5ex] - Germany\\[1ex] - E-mail: \tt rainer.dunker@web.de -\end{tabular} - -\end{document} diff --git a/Master/texmf-dist/tex/generic/musixlyr/musixlyr.tex b/Master/texmf-dist/tex/generic/musixlyr/musixlyr.tex deleted file mode 100644 index 2143d8c5190..00000000000 --- a/Master/texmf-dist/tex/generic/musixlyr/musixlyr.tex +++ /dev/null @@ -1,1102 +0,0 @@ -%% -%% musixlyr.tex: Convenient lyrics handling for MusiXTeX T.52 or later -%% -%% Copyright (C) 1996-2001 Rainer Dunker -%% -%% This program is free software; you can redistribute it and/or modify -%% it under the terms of the GNU General Public License as published by -%% the Free Software Foundation; either version 2 of the License, or -%% any later version. -%% -%% This program is distributed in the hope that it will be useful, -%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -%% GNU General Public License for more details. -%% -%% You should have received a copy of the GNU General Public License -%% along with this program; if not, write to the Free Software -%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -%% -%% Author: -%% Rainer Dunker -%% Wachtelweg 31 -%% 85591 Vaterstetten -%% Germany -%% -%% E-mail: rainer.dunker@web.de -%% -\ifx\undefined\lyr\else\endinput\fi -\immediate\write10{MusiXLYRics 2.0c\space<December 06, 2001>} - -\makeatletter - -%%%%%%%%%% -% -% register allocation -% -%%%%%%%%%% -\newtoks\alle@texte - -% internal parameters for setting text -\let\evtl@klein\empty -\let\evtl@komma\empty -\let\evtl@punktweg\empty -\let\evtl@offset\empty -\let\evtl@next@lyr\empty -\newif\if@strich -\newif\iflyr@processing -\newif\if@pmx@nextvoice -\newif\if@lyrmode -\newif\if@hyphen -\newif\ifaux@active -\newif\if@single@token -\newdimen\lyr@shift -\newbox\lyr@box -\newbox\lyr@hyphen@box -\newbox\lyr@linkbox -\newbox\lyr@linkdepthbox -\def\ma@sw{lyr@m} % "main/aux switch" - -% helpers for shuffling data around -\newtoks\@rohtext -\newtoks\@textvar - -\let\text@name\empty - -% public parameters -\newif\ifleftlyr -\newif\ifforcelyrhyphens -\newif\ifshowlyrshift -\newdimen\minlyrrulelength \minlyrrulelength=2mm -\newdimen\minmulthyphens \minmulthyphens=1.5cm -\newdimen\minlyrspace \minlyrspace=3pt -\def\lyrhyphenchar{-} -\newbox\lyrstrutbox - -\def\lyrlog#1{\immediate\write16{#1}} % just for debugging convenience - -% for testing token lists for emptyness with \ifx -\def\emp@tst{\empty@test@errmsg} -\def\empty@test@errmsg{% - \errmessage{This shouldn't happen; you have found a musixlyr bug}} - -%%%%%%%%%% -% -% lyrics definition -% -%%%%%%%%%% -% set up text completely -\def\setlyrics#1#2{% iterative variant - % Parameter: - % #1 - lyrics line name - % #2 - text - \@rohtext={#2 -}% - \@textvar={}% - %\lyrlog{setlyrics{#1}, raw text: \the\@rohtext}% - \loop - \expandafter\ifx\expandafter\emp@tst\the\@rohtext\emp@tst % no more text - \let\@weiter n\else \let\@weiter j% - \fi - \ifx\@weiter j% - \expandafter\split@lyr@by@hyphens\the\@rohtext\@end - \repeat - \expandafter\xdef\csname dertext@#1\endcsname{\the\@textvar}% - \expandafter\xdef\csname nochtext@#1\endcsname{\the\@textvar}% - %\lyrlog{setlyrics{#1}: \the\@textvar}% - \initialize@verse{#1}} - -% separate hyphens from syllables -\def\split@lyr@by@hyphens#1-#2\@end{% - % #1: text before first hyphen - % #2: text after first hyphen; may be empty - \ifx\emp@tst#2\emp@tst % -> no hyphen present - \@textvar=\expandafter{\the\@textvar#1}% - \else % -> hyphen present - \@textvar=\expandafter{\the\@textvar#1 @}% - \fi - \@rohtext={#2}% - %\lyrlog{splitlyrics 1: \the\@textvar}% - %\lyrlog{splitlyrics 2: \the\@rohtext}% - } - -% copy whole text under different name -\def\copylyrics#1#2{% - % #1 - existing text name - % #2 - new text name - % text still undefined? - \expandafter\ifx\csname dertext@#1\endcsname\relax - \errmessage{Trying to copy undefined verse "#1" to "#2"}% - \setlyrics{#2}{UNDEFINED}% - \else - \expandafter\let\expandafter\text@copy\csname dertext@#1\endcsname - \global\expandafter\let\csname dertext@#2\endcsname\text@copy - \global\expandafter\let\csname nochtext@#2\endcsname\text@copy - \initialize@verse{#2}% - \fi} - -% at 1st definition of a text name -\def\initialize@verse#1{% - % test whether lyrics line name already defined - \expandafter\ifx\csname stp@#1\endcsname\relax - \expandafter\gdef\csname stp@#1\endcsname{0pt}% tracks horizontal progress - \global\expandafter\let\csname cont@#1\endcsname\relax% context stuff - \expandafter\gdef\csname zwr@#1\endcsname{0}% flag for hyphen/rule status - % for layout definitions - \global\expandafter\let\csname llay@#1\endcsname\relax - % switch on auto-text - {\def\text@name{#1}\lyricson}% - % insert in list of all defined text names - \global\alle@texte=\expandafter{\the\alle@texte#1,}% - \fi} - -% just for more elegance ... -\def\if@multistaff{\ifnum\st@ffs>1 } - -\def\set@texte#1#2{% - % assign assigned lyrics lines to \@texte - % or \empty in case they are empty - % #1: instrument number - % #2: staff number of instrument - \expandafter\let\expandafter\@texte\csname\ma@sw#1-#2\endcsname - \ifx\@texte\relax\let\@texte\empty\fi} - -\def\set@texte@current#1{% - % apply \set@texte to current context - % using PMX, automatically switch to aux lyrics where required - \switch@pmx@aux{% - % get the verses - \ifnum\st@ffs>1 % multi-staff instrument - \set@texte{\the\noinstrum@nt}{\the\noport@@}% - \else - \set@texte{\the\noinstrum@nt}{1}% - \fi - % perform given action - #1}} - -\def\loop@texte#1\@repeat{% - % assumption: \@texte is already set properly, may be empty - % #1: action to be executed - \ifx\@texte\empty\else - \expandafter\loop@texte@step\@texte\@end{#1}% - \fi} - -\def\loop@texte@step#1,#2\@end#3{% - % assumption: text list is not empty, #1 contains list head - % #1: text list head - % #2: text list tail - % #3: action to be executed - % - % perform action on first text - \def\text@name{#1}% - #3\relax - % - % prepare iteration - \ifx\emp@tst#2\emp@tst % list tail empty - \let\@iterate \empty % stop looping - \let\text@name\empty % reset working environment - \else - \def\@iterate{\loop@texte@step#2\@end{#3}}% - \fi - \@iterate} - -% assign text name to staff -\def\assignlyrics#1{% for single-staff instruments - % #1: instrument number - \assignlyricsmulti{#1}1} - -\def\assignlyricshere#1{% assign lyrics to current instrument/staff context - % #1: comma-separated list of text names - \switch@pmx@aux{% - \ifnum\st@ffs>1 % multi-staff instrument - \assignlyricsmulti{\the\noinstrum@nt}{\the\noport@@}{#1}% - \else - \assignlyrics{\the\noinstrum@nt}{#1}% - \fi}} - -\def\assignlyricsmulti#1#2#3{% - % #1: instrument number - % #2: staff number of instrument - % #3: comma-separated list of text names - % gather farthest right current position - % of currently assigned lyrics lines - \y@v=0pt - \set@texte{#1}{#2}% - \loop@texte - % starting position greater than retrieved so far? - \ifdim\csname stp@\text@name\endcsname > \y@v - \y@v=\csname stp@\text@name\endcsname % advance maximum - \fi - \@repeat - % - % new text names list non-empty -> append comma - \ifx\emp@tst#3\emp@tst - \expandafter\global\expandafter\let\csname\ma@sw#1-#2\endcsname\relax - \else - \expandafter\gdef\csname\ma@sw#1-#2\endcsname{#3,}% - \fi - % set parameters according to newly assigned lyrics lines - \set@texte{#1}{#2}% - \loop@texte - % check for existence - \expandafter\ifx\csname stp@\text@name\endcsname\relax - \errmessage{Trying to assign undefined verse "\text@name"}% - \expandafter\setlyrics\expandafter{\text@name}{EMPTY}% - \fi - \reset@params - \@repeat} - - -\def\reset@params{% - \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% - \expandafter\gdef\csname zwr@\text@name\endcsname{0}} - - -% -% reset horizontal positioning parameters of all lyrics lines -% -\def\resetlyrics{% - \edef\@texte{\the\alle@texte}% - \y@v=0pt - \loop@texte \reset@params \@repeat} - - -%%%%%%%%%% -% -% process lyrics verse-wise -% -%%%%%%%%%% -% same action for all assigned verses -\def\forall@verses#1{% - % #1: action to be executed - \ifx\text@name\empty - % perform action for all assigned verses - \set@texte@current{% - \ifx\@texte\empty\else - \vplace@lyrics{\loop@texte \hbox{\lyr@strut #1}\@repeat}% - \fi}% - \else - % text name already selected -> perform action for this one only - #1% - \fi} - - -% specify separate actions per verse -\def\verses#1{% - % #1: comma-separated list of actions (from top to bottom) - \set@texte@current{% - \def\@param{#1}% running variable for per-text actions - \vplace@lyrics{% - \loop@texte \expandafter\one@verse\@param,\@end \@repeat}}} - -\def\one@verse#1,#2\@end{% - % #1: action list head = action for current verse - % #2: action list tail = actions for remaining verses - \def\@param{#2}% - % perfrom action - \hbox{\lyr@strut #1}} - - -%%%%%%%%%% -% -% line spacing for multiple verses -% -%%%%%%%%%% -\def\lyr@strut{\copy\lyrstrutbox} -\def\setlyrstrut{% set up strut according to currently active font - \setbox0=\hbox{()}% - \setbox\lyrstrutbox=\hbox{\vrule height 1.1\ht0 depth 1.1\dp0 width\z@}} -\setlyrstrut % initialize - - -%%%%%%%%%% -% -% retrieve text by syllable -% -%%%%%%%%%% -\def\next@lyr{% - \expandafter\let\expandafter\@nochtext\csname nochtext@\text@name\endcsname - %\show\@nochtext - \ifx\@nochtext\empty - % no more text - \@hyphenfalse\@lyric{???}% - \else - \@textvar=\expandafter{\@nochtext}% - \expandafter\next@syllable\the\@textvar\relax\relax - \fi} - -\def\next@syllable#1 #2#3\relax{% - % #1 - first syllable - % #2 - either hyphenation symbol @ - % or \relax (if text ends after #2) - % or 1st char/group of rest text - % #3 - rest text, may be empty - \parse@melisma{#2}{#3}#1_\@end} - -\def\test@single@token#1#2\@end{% - % #2 is empty if argument consists of a single token - \ifx\emp@tst#2\emp@tst - \@single@tokentrue - \else - \@single@tokenfalse - \fi} - -\def\parse@melisma#1#2#3_#4\@end{% parse trailing underscores - % #1: either hyphenation indicator @ - % or \relax (if text ends after #1), - % or 1st char/group of rest text - % #2: rest text, may be empty - % #3: current syllable; may be empty if melisma pending - % #4: trailing underscores, if any, or - % melisma notes number followed by single underscore, or - % empty if no melisma - % - % evaluate hyphenation sign - \ifx @#1% - \@hyphentrue - \@textvar={#2}% may be empty - \else - \@hyphenfalse - % decide rest text (#1 was no hyphen sign) - \ifx\relax#1% current syllable is final syllable - \@textvar={}% - \else - \test@single@token#1\@end % #1 may have been grouped - \if@single@token - \@textvar={#1#2}% - \else - \@textvar={{#1}#2}% - \fi - \fi - \fi - % - % melisma pending? - \ifx\emp@tst#4\emp@tst % no melisma - \let\melisma@spec\empty - \@lyric{\evtl@klein{\evtl@punktweg{#3}}\evtl@komma}% - \else % melisma - \ifx\emp@tst#3\emp@tst % syllable empty, d.i. in mid-melisma - \parse@melisma@tail#4\@end - \ifx\melisma@spec\empty % final melisma note - \lyrruleend - \fi - \else % syllable non-empty, d.i. at melisma start - \leftlyrtrue\@strichtrue - \parse@melisma@start#4\@end - \@lyric{\evtl@klein{\evtl@punktweg{#3}}\evtl@komma}% - \fi % at melisma start - \fi % in melisma - % - % set remaining text - \expandafter\xdef - \csname nochtext@\text@name\endcsname{\melisma@spec\the\@textvar}} - -\def\parse@melisma@start#1_\@end{% - % Cut trailing underscore and attach it at argument head. - % For underscore sequences, the effect is void. - % For numbers, it converts "num_" to "_num". - % Moreover, append a single space. - \def\melisma@spec{_#1 }} - -\def\parse@melisma@tail#1_\@end{% - % #1: either trailing underscores minus one - % or melisma notes number - % or empty - \ifx\emp@tst#1\emp@tst % no more underscores - \let\melisma@spec\empty - \else - \parse@melisma@tail@ii#1\@end - \fi} - -\def\parse@melisma@tail@ii#1#2\@end{% helper for deciding melisma spec type - % #1#2: either trailing underscores minus one - % or melisma notes number - \if#1_% % underscore sequence given - \def\melisma@spec{#1#2 }% - \else % number given - \ifnum#1#2>1 % more melisma notes pending - \count@=#1#2 - \advance\count@\m@ne - \edef\melisma@spec{_\the\count@\space}% - \else % no more melisma notes - \let\melisma@spec\empty - \fi - \fi} - -\def\@lyric#1{% - % #1: Text - \evtl@offset - % Alles Folgende ist Argument fuer obiges \evtl@offset: - {\csname llay@\text@name\endcsname% Layoutkontext abrufen - \lyr@processingtrue - \setbox\lyr@box=\hbox{#1}% - \setbox\lyr@hyphen@box=\hbox{\lyrhyphenchar}% - % Zwischenraum zu voriger Silbe ermitteln: - \get@lyrspace - \ifleftlyr\else - % Silbe zentriert -> Zwischenraum entspr. kleiner: - \advance\y@v -0.5\wd\lyr@box - \advance\y@v 0.5\qn@width % halbe Notenkopfbreite dazu - \fi - % Bindestrich von voriger Silbe anhaengig? - \expandafter\ifnum\csname zwr@\text@name\endcsname=1 - % Minimalzwischenraum entsprechend aendern: - \ifforcelyrhyphens - % Min. Zw.-R. mindestens so breit wie Bindestrich: - \ifdim\minlyrspace < \wd\lyr@hyphen@box - \minlyrspace=\wd\lyr@hyphen@box - \fi - \else - \minlyrspace=0pt % % kein Zwischenraum noetig - \fi - \fi - \ifdim\y@v < \minlyrspace % Zwischenraum zu klein? - \lyr@shift=\minlyrspace % Silbe um Differenz nach rechts verschieben - \advance\lyr@shift -\y@v - \y@v=\minlyrspace % Zwischenraumbreite = geg. Minimum - \else - \expandafter\ifnum\csname zwr@\text@name\endcsname=1 % Bindestrich anhaengig? - \ifforcelyrhyphens\else % Bindestrich nicht erzwungen? - \ifdim\y@v < \wd\lyr@hyphen@box % Zwischenraum zu schmal? - \advance\lyr@shift -\y@v % => Zw.raum ganz wegnehmen - % Dank an Sebastian Clauss fuer diese Verbesserung - \fi - \fi - \fi - \fi - \rlap{% - \hskip\lyr@shift - {\ifleftlyr - \aftergroup\rlap % linksbuendig - \else - \aftergroup\qlrlap % zentriert - \fi}% - % Alles Folgende ist Argument fuer obiges \qlrlap bzw. \rlap: - {% Ist von voriger Silbe noch ein Bindestrich anhaengig? - \expandafter\ifnum\csname zwr@\text@name\endcsname=1 - % Bindestrich nur setzen, wenn Platz genug vorhanden: - \ifdim\y@v < \wd\lyr@hyphen@box\else - \print@hyphen - \fi - \fi - \ifshowlyrshift - % Mit Rechteck Wortverschiebung zeigen: - \llap{\vrule width \lyr@shift height \ht\strutbox}% - \fi - \unhcopy\lyr@box % Wort setzen - % Startposition des nachfolgenden Zwischenraums festhalten: - \getcurpos - \advance\y@v by \lyr@shift - \ifleftlyr - \advance\y@v \wd\lyr@box - \else - \advance\y@v 0.5\wd\lyr@box - \advance\y@v 0.5\qn@width % halbe Notenkopfbreite dazu - \fi - \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% Startposition setzen - \if@hyphen % Bindestrich gefordert? - \expandafter\gdef\csname zwr@\text@name\endcsname{1}% - \else - \if@strich % Verlaengerungs-Strich gefordert? - \expandafter\gdef\csname zwr@\text@name\endcsname{2}% - \else % nichts gefordert - \expandafter\gdef\csname zwr@\text@name\endcsname{0}% - \fi - \fi}}}} - -\def\print@hyphen{% - \llap{\hbox to \y@v{% - % Zwischenraum mit "Strich-Kette" ausfuellen: - \loop - \hfil\lyrhyphenchar\hss% rechter Raum darf am Systemende negativ werden - \advance\y@v by -\minmulthyphens - \ifdim\y@v > 0pt% - \repeat}}} - -\def\get@lyrspace{% - \getcurpos - \advance\y@v by -\csname stp@\text@name\endcsname - \relax} - -% Verlaengerungs-Striche abschliessen: -\def\lyrruleend{\forall@verses\lyrrule@end} - -\def\lyrrule@end{% - \expandafter\ifcase\csname zwr@\text@name\endcsname - % 0 -> Bindestrich von vorigem System anhaengig (nur bei Melisma; - % wurde bei Systemende zurückgesetzt) - % -> Einstellung fuer Bindestrich-Einfuegen an nächster Note setzen: - \expandafter\gdef\csname zwr@\text@name\endcsname{1}% - \or - % 1 -> Bindestrich anhaengig -> nichts tun - \or - % 2 -> Strich anhaengig: - \roff{% Zum rechten Notenkopf-Rand - \get@lyrspace\print@lyr@rule - % Zwischenraum-Startposition festhalten, wenn Wort nicht nach - % rechts darueber hinausragt: - \getcurpos - \ifdim\csname stp@\text@name\endcsname < \y@v - \expandafter\xdef\csname stp@\text@name\endcsname{\the\y@v}% - \fi}% - % Einstellung zuruecksetzen: - \expandafter\gdef\csname zwr@\text@name\endcsname{0}% - \fi} - -\def\print@lyr@rule{% - % Kleiner Zwischenraum zur vorherigen Silbe: - \advance\y@v by -2pt% - \ifdim \y@v > \minlyrrulelength - \llap{\vrule\@width\y@v\@height\lthick\@depth0pt}% - \fi} - - -%%%%%%%%%% -% -% Textstellen per Label anspringen -% -%%%%%%%%%% -\def\llabel#1{}% Damit Kennzeichnung bei der Ausgabe ohne Effekt bleibt - -\def\golyr#1{\forall@verses{\@golyr{#1}}} - -\def\@golyr#1{{% - \expandafter\let\expandafter\@nochtext\csname dertext@\text@name\endcsname - \def\query@label{#1}% - \loop - \expandafter\find@llabel\@nochtext\ende - \ifx\query@label\cur@label\let\@weiter n\else \let\@weiter j\fi - \if\@weiter j\repeat - \expandafter\global\expandafter\let - \csname nochtext@\text@name\endcsname\@nochtext}} - -\def\find@llabel#1\llabel#2#3\ende{% - % #1 - Text vor erstem \llabel - % #2 - naechstfolgender \llabel-Name - % #3 - Resttext - \def\cur@label{#2}% - \def\@nochtext{#3}} - - -%%%%%%%%%% -% -% Offene Silbentrennungen und -verlaengerungen am Systemende abschliessen -% -%%%%%%%%%% -\let\@orig@z@suspend\z@suspend -\def\z@suspend{% - \znotes\sysend@lyrics\empty\en - \znotes\sysend@lyrics\auxlyr\en - \@orig@z@suspend} - -\def\sysend@verse{% - % Flag auswerten: - \expandafter\ifcase\csname zwr@\text@name\endcsname - % 0 -> fertig; - \or - % 1 -> Bindestrich anhaengig: - \csname llay@\text@name\endcsname% Layoutkontext abrufen - \get@lyrspace - \print@hyphen - % Einstellung zuruecksetzen - % (-> Bindestrich wird nicht im nächsten System fortgesetzt, - % außer bei \lyrrule@end am Melisma-Ende): - \expandafter\gdef\csname zwr@\text@name\endcsname{0}% - \or - % 2 -> Verlaengerungs-Strich anhaengig: - % Platz zum rechten Systemrand, damit Strich nicht in Taktstrich ragt: - \loffset{0.3}{\get@lyrspace\print@lyr@rule}% - \fi - % Startposition fuer naechstes System zuruecksetzen: - \expandafter\gdef\csname stp@\text@name\endcsname{0pt}} - -\def\sysend@lyrics#1{% - % #1: \auxlyr or \empty - #1{\let\switch@pmx@aux\empty \forall@verses\sysend@verse}% - \if@multistaff - % loop over staves of instrument - \ifnum \noport@@ < \st@ffs - \def\@next{\nextstaff\sysend@lyrics#1}% - \else % staves of instrument finished; continue with next instrument - \sysend@lyrics@instrum@loop#1% - \fi - \else % single-staff instrument - \sysend@lyrics@instrum@loop#1% - \fi - % iterate - \@next} - -\def\sysend@lyrics@instrum@loop#1{% - % prepare instruments loop - \ifnum \noinstrum@nt < \nbinstruments - \def\@next{\nextinstrument\sysend@lyrics#1}% - \else % \noinstrum@nt >= \nbinstruments - \let\@next\empty - \fi} - - -%%%%%%%%%% -% -% Zeilenspezifisches Layout festlegen -% -%%%%%%%%%% -\def\lyrlayout#1{% - \forall@verses{% - \expandafter\gdef\csname llay@\text@name\endcsname{#1}% - % Wenn gerade Text verarbeitet wird, Kontext sofort abrufen: - \iflyr@processing #1\fi}} - -% -% Kontextbehandlung fuer Textnamen: -% -% Aktion zu Kontext hinzufuegen: -\def\add@context#1{% - \toks@=\expandafter\expandafter\expandafter - {\csname cont@\text@name\endcsname #1}% - \expandafter\xdef\csname cont@\text@name\endcsname{\the\toks@}} - -% Kontext abrufen: -\def\@context{% - \expandafter\let\expandafter\der@kontext\csname cont@\text@name\endcsname - \clear@context - \der@kontext} - -% Kontext loeschen: -\def\clear@context{% - \global\expandafter\let\csname cont@\text@name\endcsname\empty} - - -%%%%%%%%%% -% -% Zusaetzliche Textzeilen oberhalb der Notenzeile (auxiliary lyrics) -% -%%%%%%%%%% -\let\enableauxlyrics\empty % just for backward compatibility - -% Befehle auf auxlyrics beziehen: -\def\auxlyr#1{{% - \def\ma@sw{lyr@a}% - \aux@activetrue - #1}} - - -%%%%%%%%%% -% -% vertical lyrics positioning -% -%%%%%%%%%% -\def\lyrraise#1{% - % #1: instrument number - \lyrraisemulti{#1}1} - -\def\lyrraisehere#1{% - % #1: position/offset - \switch@pmx@aux{% - \ifnum\st@ffs>1 % multi-staff instrument - \lyrraisemulti{\the\noinstrum@nt}{\the\noport@@}{#1}% - \else - \lyrraise{\the\noinstrum@nt}{#1}% - \fi}} - -\def\lyrraisemulti#1#2#3{% - % #1: instrument number - % #2: staff of instrument - % #3: position/offset - \toks@=\expandafter{\csname l@raise#1-#2\endcsname}% - \expandafter\ifx\the\toks@\relax - % raise parameter still unset - \expandafter\lyrraise@init\the\toks@ - \fi - % now set raise parameter - \expandafter\expandafter\expandafter - \lyr@raise@multii\the\toks@\@end{#1}{#2}{#3}% - %\lyrlog{raise #1-#2: \expandafter\empty\the\toks@}% -} - -\def\lyr@raise@multii#1@#2\@end#3#4#5{% - % #1: current main position/offset - % #2: current aux position/offset - % #3: instrument number - % #4: staff of instrument - % #5: new position/offset - \expandafter\xdef\csname l@raise#3-#4\endcsname{% - \ifaux@active #1@#5\else #5@#2\fi}} - -% be backward compatible -\let\setsongraise@orig\setsongraise -\def\setsongraise#1#2{\setsongraise@orig{#1}{#2}\lyrraise{#1}{b#2}} -\def\auxsetsongraise#1#2{\auxlyr{\lyrraise{#1}{b#2}}} - - -\def\lyrraise@init#1{% - % #1: control sequence to be set to default value - \gdef#1{b0pt@a0pt}} - - -% vertically place lyrics columns -% replaces MusiXTeX's \C@tx -\def\vplace@lyrics#1{% - % find out applicable positioning settings - \edef\placelyr@staff{\ifnum\st@ffs>1 \the\noport@@ \else 1\fi}% - \toks@=\expandafter - {\csname l@raise\the\noinstrum@nt-\placelyr@staff\endcsname}% - % eventually initialize lyrraise setting first - \expandafter\ifx\the\toks@\relax % lyrraise still unset - \expandafter\lyrraise@init\the\toks@ - \fi - \expandafter\expandafter\expandafter\vplace@lyricsii\the\toks@\@end{#1}} - -\def\vplace@lyricsii#1#2@#3#4\@end#5{% - % #1: main lyrics positioning switch (a/b) - % #2: main lyrics raise value - % #3: aux lyrics positioning switch (a/b) - % #4: aux lyrics raise value - % #5: lyrics material to be issued - % - % decice main/aux context - % - \ifaux@active \let\lyr@ab#3\toks@={#4}% - \else \let\lyr@ab#1\toks@={#2}% - \fi - % - % decide placement situation: above/below/in-mid of system or instrument - % - \if\lyr@ab a% above staff - \ifnum\placelyr@staff<\st@ffs % non-highest staff of multiple staves - \vplaceLyricsAboveMultistaff{#5}% - \else % single or highest staff of instrument - \ifnum\noinstrum@nt<\nbinstruments % lyrics go above instrument - \vplaceLyricsAboveInstrument{#5}% - \else % lyrics go into top margin - \vplaceLyricsTopMargin{#5}% - \fi - \fi - \else % below staff - \ifnum\placelyr@staff>1 % non-lowest staff of multiple staves - \vplaceLyricsBelowMultistaff{#5}% - \else % single or lowest staff of instrument - \ifnum\noinstrum@nt>1 % lyrics go below instrument - \vplaceLyricsBelowInstrument{#5}% - \else % lyrics go into bottom margin - \vplaceLyricsBottomMargin{#5}% - \fi - \fi - \fi} - -% -% user-supersedable placement calculations -% -\def\vplaceLyricsBelowMultistaff#1{% - % #1: lyrics material - % reduced \C@Tx algorithm - \y@iv=\the\toks@\relax - \C@Inter % compute \stem@skip (?) - \advance\y@iv -0.5\stem@skip - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} - -\def\vplaceLyricsAboveMultistaff#1{% - % #1: lyrics material - % reduced \C@Tx algorithm - \y@iv=\the\toks@\relax - \C@Inter % compute \stem@skip (?) - \advance\y@iv -0.5\stem@skip - % add height difference to base line of upper staff - \advance\y@iv \interportee - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} - -\def\vplaceLyricsBottomMargin#1{% - % #1: lyrics material - % based on \C@tx - \y@iv=\the\toks@\relax - \advance\y@iv -\staffbotmarg - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} - -\def\vplaceLyricsTopMargin#1{% - % #1: lyrics material - % based on \C@tx, "mirrored" bottom margin situation - \y@iv=\the\toks@\relax - \advance\y@iv \stafftopmarg - \Comp@High \advance\y@iv\y@v % \y@v = total height of instrument - \advance\y@iv \altitude % for multi-staff: - \advance\y@iv-\altportee % reduce by base hight of current staff - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} - -\def\vplaceLyricsBelowInstrument#1{% - % #1: lyrics material - % assumption: \noinstrum@nt > 1 - % based on \C@tx - \y@iv=\the\toks@\relax - \multiply\y@iv 2 % balance division by 2 below - \advance\noinstrum@nt\m@ne - \advance\y@iv -\csname interinstrument\romannumeral\noinstrum@nt\endcsname - \C@Inter % compute \stem@skip (?) - \advance\y@iv -\stem@skip - \divide\y@iv\tw@ - \advance\noinstrum@nt\@ne - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}} - -\def\vplaceLyricsAboveInstrument#1{% - % #1: lyrics material - % assumption: \noinstrum@nt < \nbinstruments - % analogous to \C@tx, but refers to upper instrument instead - \y@iv=\the\toks@\relax - \multiply\y@iv 2 % balance division by 2 below - \advance\y@iv -\csname interinstrument\romannumeral\noinstrum@nt\endcsname - \C@Inter % compute \stem@skip (?) - \advance\y@iv -\stem@skip - \divide\y@iv\tw@ - % add height difference to base line of upper instrument - \begingroup - \advance\y@iv-\altportee \advance\noinstrum@nt\@ne \s@l@ctinstr - \advance\y@iv \altitude - \raise\y@iv\vbox\@to\z@{\vss\offinterlineskip#1\vss}% - \endgroup} - - -%\def\C@tx{% -% \ifnum\noinstrum@nt=\@ne -% \y@iv\staffbotmarg -% \else -% \advance\noinstrum@nt\m@ne -% \y@iv\csname interinstrument\romannumeral\noinstrum@nt\endcsname -% \C@Inter % compute \stem@skip -% \advance\y@iv\stem@skip -% \divide\y@iv\tw@ -% \advance\noinstrum@nt\@ne -% \fi -% \advance\y@iv-\csname T@R\romannumeral\noinstrum@nt\endcsname -% \lower\y@iv\uplap} -%\def\uplap#1{\vbox\@to\z@{\vss#1}} - - -%%%%%%%%%% -% -% Textsatz-Automatik -% -%%%%%%%%%% -% Text automatisch unter alle "spacing"-Noten eines Systems: -\let\orig@writ@note\writ@note -\def\writ@note{% - \ifnum\n@i<\@c % Bedingung fuer's Notenschreiben in \writ@note (warum?) -% \ifx\st@m\beamst@m -% \uptext{\csname s@bl\balken@nr\endcsname}% -% \else - \decide@lyrmode - \main@aux@or@not{\forall@verses{\@context\evtl@next@lyr}}% -% \fi - \fi - \orig@writ@note} - -\def\lyrmode@no {\def\main@aux@or@not##1{}} -\def\lyrmode@main{\def\main@aux@or@not##1{##1}} -\def\lyrmode@aux {\let\main@aux@or@not\auxlyr} -\let\pmx@auxmode\lyrmode@aux - -% Feststellen, ob Haupt- oder Nebentext oder gar nichts gesetzt werden soll: -\ifx\nextvoice\undefined % ohne PMX - \def\decide@lyrmode{% - \call@lyrmode - \if@lyrmode \decide@stem@direction % Notenhals-Automatik - \else % manuell, nur "spacing"-Noten - \ifadvance \lyrmode@main - \else \lyrmode@no - \fi - \fi} - \def\decide@stem@direction{% - \ifx\st@m\upst@m \lyrmode@aux \else - \ifx\st@m\up@flag \lyrmode@aux \else - \ifx\st@m\downst@m \lyrmode@main\else - \ifx\st@m\down@flag\lyrmode@main\else - \ifx\st@m\setst@m \lyrmode@no \else % kein Hals - \ifx\st@m\resetst@m\lyrmode@no \else - \ifx\st@m\beamst@m - \expandafter\ifx\csname s@bl\balken@nr\endcsname o\lyrmode@aux - \else\lyrmode@main - \fi - \else\errmessage{invalid \string\st@m\space setting}% - \fi\fi\fi\fi\fi\fi\fi} -\else % mit PMX - \def\decide@lyrmode{% - \ifadvance % nur "spacing"-Noten - \call@lyrmode - \if@pmx@nextvoice % Oberstimme - \if@lyrmode\lyrmode@main \else\pmx@auxmode \fi - \else % Unterstimme - \if@lyrmode\pmx@auxmode \else\lyrmode@main \fi - \fi - \else - \lyrmode@no % non-spacing Note - \fi} - \let\orig@nextvoice\nextvoice % \nextvoice erweitern - \def\nextvoice{\orig@nextvoice\@pmx@nextvoicetrue} -\fi - -\def\call@lyrmode{% activate lyrmode setting of current staff/instrument - \ifnum\st@ffs>1 % multi-staff instrument - \csname zlm@\the\noinstrum@nt-\the\noport@@\endcsname - \else % single-staff instrument - \csname zlm@\the\noinstrum@nt-1\endcsname - \fi} - -\def\switch@pmx@aux#1{% - % using PMX, automatically activate auxlyr context for #1 after \nextvoice - \ifx\nextvoice\undefined % not using PMX - #1% - \else % using PMX - \call@lyrmode - \if@pmx@nextvoice % upper PMX voice - \if@lyrmode\lyrmode@main \else\pmx@auxmode \fi - \else % lower PMX voice - \if@lyrmode\pmx@auxmode \else\lyrmode@main \fi - \fi - \main@aux@or@not{#1}% - \fi} - - - -% lyrmode umschalten: -\def\switch@lyrmode#1#2#3{% - % #1: instrument number - % #2: staff-of-instrument number - % #3: lyrmode setting - \ifnum#1=0 % % alle Zeilen einbeziehen - \switch@lyrmode@all@instrum#3% - \else % nur 1 Zeile - \global\expandafter\let\csname zlm@#1-#2\endcsname=#3% - \fi} - -% loop over all possible instruments -\def\switch@lyrmode@all@instrum#1{% - \m@loop \switch@lyrmode@all@staves#1\repeat} - -% loop over 4 possible staves of instrument -\def\switch@lyrmode@all@staves#1{% - \begingroup - \count@=0 - \loop - \advance\count@ 1 - \switch@lyrmode{\the\noinstrum@nt}{\the\count@}#1% - \ifnum\count@<4 \repeat - \endgroup} -% ... nicht wahnsinnig effizient, zugegeben ... - - -\def\lyrmodenormal#1{\lyrmodenormalmulti{#1}1} -\def\lyrmodealter #1{\lyrmodealtermulti {#1}1} - -\def\lyrmodenormalmulti#1#2{\switch@lyrmode{#1}{#2}\@lyrmodefalse} -\def\lyrmodealtermulti #1#2{\switch@lyrmode{#1}{#2}\@lyrmodetrue } - -\def\lyrmodenormalhere{\lyrmode@here\@lyrmodefalse} -\def\lyrmodealterhere {\lyrmode@here\@lyrmodetrue } - -\def\lyrmode@here#1{% apply lyrmode to current instrument/staff context - % #1: lyrmode switch - \if@multistaff - \switch@lyrmode{\the\noinstrum@nt}{\the\noport@@}#1% - \else - \switch@lyrmode{\the\noinstrum@nt}1#1% - \fi} - -\lyrmodenormal0 % auf "normal" initialisieren - -% fuer Halsrichtungs-Automatik: Balkenlage in \s@bl<nr> vermerken -\def\balk@nlage#1{\global\expandafter\let - \csname s@bl\balken@nr\endcsname #1\relax} -\let\orig@i@bu\i@bu \def\i@bu{\balk@nlage o\orig@i@bu}% <o>ben -\let\orig@i@bl\i@bl \def\i@bl{\balk@nlage u\orig@i@bl}% <u>nten - -\let\orig@s@l@ctbeam\s@l@ctbeam -\def\s@l@ctbeam#1\relax{\orig@s@l@ctbeam#1\relax \xdef\balken@nr{\number\n@i}} - - -% Auto-Text ein- und ausschalten (innerhalb \notes...\enotes): -\def\lyricson{\forall@verses{\add@context\verse@on@context}} -\def\verse@on@context{% - \let\evtl@next@lyr\next@lyr - \add@context\verse@on@context} - -\def\lyricsoff{\forall@verses\clear@context} - -\def\lyric {\let\evtl@hyph\@hyphenfalse\futurelet\ast@risk\lyric@i} -\def\lyrich{\let\evtl@hyph\@hyphentrue \futurelet\ast@risk\lyric@i} - -\def\lyric@i{% - \ifx\ast@risk*% - \let\evtl@nolyr\relax \let\@next\lyric@ii - \else - \let\evtl@nolyr\nolyr \def\@next{\nolyr\lyric@ii*}% - \fi - \@next} - -% Silben abseits vom Haupttext ausgeben: -\def\lyric@ii*#1{\forall@verses{\@context\evtl@hyph\@lyric{#1}}\evtl@nolyr} - -% Manipulationen einzelner Haupttext-Silben: -\def\forall@context#1{\forall@verses{\add@context{#1}}} - -% 1 Silbe ausgeben: -\def\lyr{\forall@verses{\@context\next@lyr}} - -% Linksbuendig: -\def\llyr{\forall@context{\leftlyrtrue}} - -% Verlaengerungs-Strich: -\def\lyrrule{\forall@context{\@strichtrue}} - -% Horizontale Verschiebung (analog \roffset): -\def\lyroffset#1{\forall@context{\def\evtl@offset{\roffset{#1}}}} - -% Kein automatischer Text: -\def\nolyr{\forall@context{\let\evtl@next@lyr\empty}} - -% Kleinbuchstaben: -\def\lclyr{\forall@context{\let\evtl@klein\@klein}} -\def\@klein#1{\lowercase\expandafter{#1}} - -% Satzzeichen anhaengen: -\def\lyrpt#1{\forall@context{\def\evtl@komma{#1}}} - -% Punkt vom Ende abschneiden: -\def\lyrnop{\forall@context{\let\evtl@punktweg\@punktweg}} -\def\@punktweg#1{{\punktweg@rek#1\ende}} -\def\punktweg@rek#1#2\ende{% - \def\par@ii{#2}% - \ifx\par@ii\empty\else - \aftergroup#1% - \expandafter\punktweg@rek\par@ii\ende - \fi} - -% Melisma beginnen und abschliessen: -\def\beginmel{\forall@verses{\llyr\lyrrule\add@context\lyricsoff}} -\def\endmel{\forall@verses{\lyrruleend\add@context\lyricson}} - -% -% Bindebogen unter zwei Silben derselben Note: -% -\def\lyrlink {\lyr@link0} -\def\lowlyrlink{\lyr@link1} - -\def\lyr@link#1{% - % Bogen erstellen: - \setbox\lyr@linkbox=\hbox{$\smile$}% - % In Box der Breite eines Wortzwischenraums einsetzen: - \setbox\lyr@linkbox=\hbox to\the\fontdimen2\the\font{% - \hss - % Unter die Grundlinie druecken: - \lower\ht\lyr@linkbox\hbox{% - % Zusaetzlicher vertikaler Abstand zur Wortunterseite: - \lower1pt\hbox{% - \if#10\relax - \hbox{$\smile$}% - \else - % Buchstabe mit Unterlaenge -> auch darunter druecken: - \setbox\lyr@linkdepthbox=\hbox{y}% - \lower\dp\lyr@linkdepthbox\hbox{$\smile$}% - \fi}}% - \hss}% - % Keine zusaetzliche Tiefe fuer Bogen anrechnen: - \dp\lyr@linkbox=0pt - % Bogen setzen: - \box\lyr@linkbox} - -\makeatother |