\input texinfo @c -*-texinfo-*- @setfilename mudela-book.info @settitle mudela-book Manual @titlepage @title mudela-book Manual @subtitle Integrating mudela with LateX and TeXinfo @author Tom Cato Amundsen and Han-Wen Nienhuys Copyright @copyright 1999 by the authors @vskip 0pt plus 1filll Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the sections entitled ``Copying'' and ``GNU General Public License'' are included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. @end titlepage @ifinfo This file documents GNU LilyPond. Copyright 1999 Tom Cato Amundsen and Han-Wen Nienhuys Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries a copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the sections entitled ``Copying'' and ``GNU General Public License'' are included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. @end ifinfo @node Top, , , (dir) @top @section Introduction [TODO: THIS MANUAL IS OUTDATED. FIXME.] Mudela-book is a script that process your \LaTeX file and with great help from GNU LilyPond it translates blocks of mudela code it finds inside @code{mudela} environments to tex or eps graphics. It then creates a new file that can be sent through \LaTeX to create a @file{.dvi} file with lines of music integrated with text. Mudela-book will do its best to try to align the music to the left and right margins. Currently the most used papersizes and one- and twocolumn mode is supported, but if you use the geometry-package from LaTeX or change the margins things will break. This document assumes you have basic knowledge of GNU LilyPond and LaTeX. So what does this look like? Well, here is an example: @mudela[veryverbatim, intertext="produces this music:"] \score{ \notes\relative c'{ \time 5/8; [e16( g b c a g][e a b d] | )e2 d,8 | [e16( g b c a g][e a b d] | )b2 [a16( f] | [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] | [f( a b d b a][f a b d] | )e2 } } @end mudela If you are lucky, the above example show a nice feature of LilyPond and LaTeX. Since LilyPond can output the music as \TeX graphics, LaTeX can insert pagebreaks between the lines of music. Notice that there is no @code{\paper} statement in the example above. Mudela-book will insert some code for you that defines the linewidth and the font to use. If you don't want to change the default, there is no need to put an empty @code{\paper@{@}} inside the @code{\score}. In the example above, something like this might be inserted before your code: @example \include "paper16.ly" \paper@{ \paper_sixteen linewidth = 390.\pt; castingalgorithm = \Gourlay; @} @end example The actual values for linewidth will differ depending on papersize and number of columns. Also, if you use a different fontsize for the music, another file than @code{paper16.ly} will be included. If you want to make the music not so wide, you can insert a @code{\paper} statement that set the linewidth: @mudela[veryverbatim, intertext="produces this music:"] \score{ \notes\relative c'{ \time 5/8; [e16( g b c a g][e a b d] | )e2 d,8 | [e16( g b c a g][e a b d] | )b2 [a16( f] | [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] | [f( a b d b a][f a b d] | )e2 } \paper{linewidth = 10.\cm;} } @end mudela Very often, if you mix music and text, the music is often only a few notes or at most a few bars. This music should be as short as possible and not stretched to be aligned to the right margin. If you only write voice-contents in the mudela block, mudela-book will set the @code{linewidth} variable to -1, so Lilypond will make the music as short as possible but without breaking the line. Here is a well know harmonic progression: @mudela[veryverbatim, intertext="produce a well known harmonic progression:"] @end mudela If you want to place music examples in the text, @mudela[eps] @end mudela , you can use the @code{eps} option. This will create the music as eps graphics and include it into the document with the @code{\includegraphics} command. The code used look like this: @example @mudela[eps] @end mudela @end example You can also use the @code{eps} option if the block is a complete mudela source. This 5 cm long empty line, @mudela[eps] \score{ \notes{s} \paper{ linewidth = 5.\cm;} } @end mudela was created with this code: @example @mudela[eps] \score{ \notes{s} \paper{ linewidth = 5.\cm;} } @end mudela @end example To avoid that LaTeX places the music on a line of its one, there should be no empty lines between the normal text and the mudela environment. You can also use @code{mudelafile} (on a separate line, FIXME), to include another file. Files with name ending with @code{.sly} @section Fontsize options You can use all lilypond fontsizes in mudela-book. The default 16pt fontsize is probably to big to be included in the middle of the text, 11pt or 13pt is probably better. The code can look like this: @example @mudela[13pt, eps] @end mudela @end example The following options set the fontsize: @itemize @item @code{11pt} @mudela[11pt, eps] \relative c'{ r16 [c d e][f d e c] [g'8 c][b-\prall c] | [d16 g, a b][c a b g][d'8 g f-\prall g] } @end mudela @item @code{13pt} @mudela[13pt, eps] \relative c'{ r16 [c d e][f d e c] [g'8 c][b-\prall c] | [d16 g, a b][c a b g][d'8 g f-\prall g] } @end mudela @item @code{16pt} @mudela[16pt, eps] \relative c'{ r16 [c d e][f d e c] [g'8 c][b-\prall c] | [d16 g, a b][c a b g][d'8 g f-\prall g] } @end mudela @item @code{20pt} @mudela[20pt, eps] \relative c'{ r16 [c d e][f d e c] [g'8 c][b-\prall c] | [d16 g, a b][c a b g][d'8 g f-\prall g] } @end mudela @item @code{26pt} @mudela[26pt, eps] \relative c'{ r16 [c d e][f d e c] [g'8 c][b-\prall c] | [d16 g, a b][c a b g][d'8 g f-\prall g] } @end mudela @end itemize @section More options @itemize @item The @code{singleline} option set @code{linewidth} to -1.0. @item The @code{multiline} option set @code{linewidth} to a value letting the music be aligned to the right margin. The music can span several lines. @end itemize @section Just in case... The options @code{fragment} and @code{nonfragment} will override mudela-book when it scans the mudela code to see if it is voice contents or complete code. This might be useful if mudela-book choose wrong. Since there is no finder's fee which doubles every year, there is no need to wait for the price money to grow. So send a bug report today if you need this one of these options. @section Examples This was all options to @code{\begin}. The rest of the mudela document will show some ways you can use mudela in LaTeX documents. It will also act as a simple test-suite for mudela-book. You can place @code{eps} mudela in and marginspars just as any other included eps graphics. @mudela \score{ \notes\relative c'{ \time 12/8; r4-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--] [f16-.( )f-. dis8-- gis16-.( )gis-.] cis4.-\fermata | r4.-\fermata [cis,16 cis g'8 f16 f b8][g16 g f8 b16 b] dis4.-\fermata } \paper{linewidth = 7.\cm;} } @end mudela To the right you can see some bars from the trumpet fanfara from the beginning of the fantastic street opera ``Houdini the Great'', by the Danish composer Andy Pape. The music is put inside a @code{floatingfigure} environment, and the music will be aligned by the right marging if you set floatingfigure width and mudela linewidth to the same value. The code looks like this: @mudela[verbatim] \score{ \notes\relative c'{ \time 12/8; r4.-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--] [f16-.( )f-. dis8-- gis16-.( )gis-.] cis8.-\fermata | r4.-\fermata [cis,16 cis g'8 f16 f b8] [g16 g f8 b16 b] dis4.-\fermata } \paper{linewidth = 7.\cm;} } @end mudela If you have a lot of small music examples like this in the middle of your text, you might get a nicer look by using ``double'' line spacing. Put the @code{\linespread@{1.6@}} command into the preamble of your document. Then the line spacing will not be increased between the lines where you have music printed with the smallest font size. Mudela-book does know about @code{\onecolumn} and @code{\twocolumn}. So the music will be adjusted to the new linewith: Verbatim environments will also ignore the page margins. That is a feature of LaTeX. (But you usually put things inside a verbatim environment when you don't want LaTeX to do any linebreaking) @section Texinfo behavior [TODO] @section Invocation @file{mudela-book} is a script that helps integrating mudela and LaTeX. mudela-book runs LilyPond on fragments of mudela in your source file, and includes the results into document that can be processed with LaTeX. The result is a text document with formatted music integrated. Lilypond will by default create all output files in directory @file{out}. The file to give to latex has ext @file{.latex}. @strong{About the input} If the file contains the ``block'' @example \begin@{mudela@} CONTENTS \end@{mudela@} @end example then LilyPond is run on CONTENTS. mudela-book puts the result back, surrounded by @code{\preMudelaExample} and @code{\postMudelaExample} commands. @code{\preMudelaExample} and @code{posMudelaExample} is defined to nothing by default, and the user can redefine them to whatever he wants. @code{\begin} takes the following options: @table @samp @item eps the music is created as eps graphics that can be inserted in the middle of a text line, not only as a separate paragraph @item verbatim CONTENTS is copied into the TeX source enclosed in a verbatim block. @item 11pt, 13pt, 16pt, 20pt, 26pt set the fontsize to use for the music @item singleline linewidth = -1. @item multiline linewidth = textwidth @item fragment @item nonfragment Override mudela-book autodetection of what type of code is in the mudela block, voice contents or complete code. @end table @table @samp @item --default-mudela-fontsize=??pt Set the fontsize to use for mudela if no fontsize is given as option. @item --force-mudela-fontsize=??pt Force all mudela to use this fontsize, overriding options given to \begin@{mudela@} @item --outname=FILE The name of LaTeX file to output. If this option is not given, the output name derived from the input name. @item --out-www=DIRECTORY The name of the directory to output lilypond output and input to. This must be a name; the subdirectory will be created in the cwd. [FIXME] @item --help Print a short help message @item --dependencies Write dependencies to out-www/filename.dep @item --force-verbatim Make all mudela verbatim. @item --initfile=FILE read command definitions from @file{FILE} @end table @file{mudela-book} is written in python 1.5, so you have to install @uref{http://www.python.org,python}. @section Bugs The LaTeX \includeonly@{...@} command is ignored. Ignores almost all LaTeX commands that changes margins and linewidths. @section Authors @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, @uref{http://www.cs.uu.nl/people/hanwen} @email{tomato@@xoommail.com, Tom Cato Amundsen} @bye