This page documents installation and compilation of GNU LilyPond
-=head1 IMPORTANT
-
-if you have downloaded a
-
- *.pre*
-
-version, then this is version is I<not> meant for producing nice
-output, but to keep your patchsets up to date. It might not even compile.
-
=head1 PREREQUISITES
For compilation you need.
=back
+=head1 RUNNING
+
+GNU LilyPond does use a lot of resources. For operation you need the following:
+
+
+=over 5
+
+=item *
+
+TeX
+
+=item *
+
+The MusixTeX fonts (I included those found in MusixTeX T.73). Beware,
+the clef symbol seems to have changed its position in some versions,
+(notably Egler's, a.k.a. OpusTeX). The MusixTeX fonts are included in
+MusixTeX T.73, which can be had from any CTAN site, eg at
+
+ ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin
+ ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
+ ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
+
+You only need the contents of the F<mf/> subdirectory of the package.
+
=head1 RECOMMENDED
+Although not strictly necessary, these are recommended to have.
+
=over 5
=item *
(GNU) find
+
+=item *
+
+A fast computer (a full page of music typically takes 1 minute
+on my 486/133, using the B<--enable-checking> compile. It's lot slower
+than most MusiXTeX preprocessors)
+
=back
+
=head1 CONFIGURING and COMPILING
to install GNU LilyPond, simply type:
/usr/local/bin/mi2mu
/usr/local/share/lilypond/*
/usr/lib/texmf/texmf/tex/lilypond/*
- /usr/lib/texmf/texmf/fonts/source/lilypond/*
The TeX include directory is detected dynamically, but it can be
adjusted with B<--enable-tex-prefix> and B<--enable-tex-dir>. The
configure --prefix=/home/me_myself_and_I/
-In this case, you will have to set MFINPUTS, and TEINPUTS accordingly.
+In this case, you will have to set MFINPUTS, and TEXINPUTS accordingly.
If you want to install GNU LilyPond in F</usr/local>, and your TeX has
no default hooks for local stuff (mine is broken too), you can do:
=item --enable-mf-dir
-Set then directory tex input is in (idem)
+Set then directory mf input is in (idem)
=back
should do the trick.
-[todo. Obsolete; fonts are in distribution now.]
-
Install the musixtex fonts in a directory which TeX and MF knows (if
you are root, look for a directory which contains the directories with
AMS and CM source (*.mf) files. Create a subdir lilypond or musixtex
Example: my fonts are in F</usr/local/lib/texfonts/musixtex/>, and I
have a symlink pointing to that in
-F</usr/lib/texmf/texmf/fonts/source/public/>
+F</usr/lib/texmf/texmf/fonts/source/public/>. After I copied the
+files, I ran "texhash"
+
+ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip
=head1 CAVEATS
=back
-=head1 RUNNING
-
-GNU LilyPond does use a lot of resources. For operation you need the following:
-
+=head1 EXAMPLE
-=over 5
-
-=item *
-
-A fast computer (a full page of music typically takes 1 minute
-on my 486/66, using the B<--enable-checking> compile. It's lot slower
-than most MusiXTeX preprocessors)
-
-=item *
-
-TeX
-
-=item *
-
-The MusixTeX fonts (I included those found in MusixTeX T.73). Beware,
-the clef symbol has changed position in the Egler version,
-a.k.a. OpusTeX)
-
-=back
-
-At this time, GNU LilyPond output looks nice, but is not of production
-quality. If you're not discouraged; this is what I type in my xterm:
+This is what I type in my xterm:
lilypond someinput.ly
tex lelie.tex
=head1 REDHAT LINUX
RedHat Linux users should be able to get a RPM. A spec file is in
-F<make/lilypond.spec>. You should be able to create an rpm as a normal
+F<make/out/lilypond.spec>. You should be able to create an rpm as a normal
user. Be sure you have a ~/.rpmrc, and edit the RPM-dir in
-F<Variables.make>
+F<Variables.make>. (If you create the RPM as a normal user the
+permissions will not be set correctly, unfortunately)
=head1 WINDOZE
bash configure
make windows32
-=head1 PLATFORMS
-
-GNU LilyPond (pl 0.0.39) is known to compile on the following platforms:
-
-Unix:
-
- * gnu/linux 2.0.x, g++ 2.7.2[.1]
- * aix 4.1, g++ 2.7.2
- * solaris 2.5, g++ 2.7.2
-
-Other:
-
- * windows-nt 4.0, cygnus gnu-windows32 beta17.1 (~=g++ 2.7.2)
- * gnu/linux 2.0.28 X to doze, gcc-go32 (~=g++ 2.7.2) [exec. untested]
-
=head1 AUTHORS
Han-Wen Nienhuys <hanwen@stack.nl>
--- /dev/null
+=head1 NAME
+
+mudela-book - integrate LaTeX and mudela
+
+=head1 SYNOPSIS
+
+ convert-mudela [options] [files]
+
+=head1 DESCRIPTION
+
+mudela-book runs LilyPond on fragments of mudela in your source file,
+and produces a LaTeXable document, with formatted music.
+
+ \begin{mudela}
+ CONTENTS
+ \end{mudela}
+
+runs LilyPond on CONTENTS, and puts the result back, surrounded by
+\preexample and \postexample commands. The \begin takes the
+following options:
+
+=over 4
+
+=item fragment
+
+mudela-book adds some redtape. You
+can substitute voice-contents for CONTENTS in this case.
+
+=item verbatim
+
+CONTENTS is copied into the TeX source enclosed in a verbatim block.
+
+=back
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--outname>
+
+The name of TeX file to output
+
+=item B<--outdir>
+
+The directory to output lilypond output and input to
+
+=back
+
+=head1 BUGS
+
+Doesn't handle incorrect input sanely.
+
+=head1 AUTHOR
+
+Han-Wen Nienhuys <hanwen@gnu.ai.mit.edu>
+pl 76
+ - mudela version bumped to 0.1
+ - mudela-book
+ - doco updates, now some stuff in LaTeX
+ - junked book.{ly,tex} example
+ - progress indicator
+ - rhythm.ly updated
+ - removed mf sources from distribution due to (c) stuff
+ - allowal of breaks handled cleanly
+ - junked Subtle_reqs, junked Request_iterator. Request
+ iteration now by Voice_element_iterator
+ - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver,
+ Span_score_bar
+ - Swallow_performer
+ - removed Staff_engravers, grouping into Line_group_engraver
+ - Head_column as base for Rest_column,Note_column
+ - Score_column derived from PCol
+ - regurgled Line spacing: interface and implementation
+ separate. Idealspacing moved into Spring_spacer
+ - Gourlay style linespacing
+
+pl 75.jcn6
+ - {lyric,meter,key}-performer
+ - span-brace-* (Removed again. Such is life)
+ - doze compile
+ - midi output, notes only
+ - working midi output -- hacked
+ - doze compile, mingw32 configure (still triggers gcc int. comp err)
+
+pl 74pre.jcn2
+ - mi2mu fixes after scott snyder <snyder@d0sgif.fnal.gov> [sss]
+ - mi2mu update for mudela 0.0.61
+ - conflily fixes
+
+*******
+july 21
pl 75
- inbook.ly & book.tex example.
*******
pl 41
- release
+
pl 40.3
- all of the above
- hw's configure.in
+0.1:
+
+ * versioning stuff (cvt mudela, mudela, etc.)
+
Features you cannot find in the doco as working, should be mentioned here.
This is an assorted collection of stuff that will be done, might be
Most of the items are marked in the code as well, with full explanation.
grep for TODO and ugh/ugr
- * script for unified musicological source:
+ * dots into separate item.
- blah blah latex
- \begin{mudela} c4 d4 e4 f4
- \end{mudela}
+ * lyrics in chords still fuck up.
- * lyrics with chords broken
-
- * Redo MIDI output to use Translators
- - remember more horizontal info than melodics:
+ * add to MIDI output:
- tempo change
- repeat
- slurs
- dynamics etc.
- * pushgroup/popgroup
-
- * strict separation between visual and auditive processing.
+ * rewire acknowledge_element() logic with a process_acknowledged()
- * fix depcy/dept stuff in eg. Beam.
+ * pushgroup/popgroup
* whole head on ledger line
* piano staff
- * decent spacing
-
* implement better breaking algorithm
* update 20 pt table
* enter script priority
- * a Hands on tutorial
+ * a hands on tutorial
PROJECTS
* Decent TeX titledefs (\tempo, \metron, etc. )
+ * lily \tempo
+
* C meter iso 4/4, idem for alla breve, etc.
* textspanner: center position
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
cad = \melodic {
Tested Features:test the Collision resolution
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
Tested Features:
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
Tested Features: local key, key, forced accidentals
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
blah = \melodic{
Tested Features: example file with comments
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
% the % is a comment.
}
\score{
- \melodic < \multi 3;
-
- \melodie
- \begeleiding
+ \melodic < \id "Piano" ""; \multi 3;
+ \melodie
+ \begeleiding
>
}
%}
-\version "0.0.61";
+\version "0.1.0";
\score{
\melodic
< \multi 2; { \stem -1; c2 c2 } { \stem 1; c'2 c'2 } >
< \multi 3; { \clef "bass"; c2 c2 } { \meter 2/4;\bar "||"; \key fis cis gis; c'2 c'2 } >
c2 c1
-
+ c1 c1
+ < \multi 1; < \multi 3;
+ { \meter 2/4; \clef "violin"; c2 c2 }
+ { \meter 2/4; \clef "bass"; c2 c2 }
+ >
+ < \multi 3;
+ { \meter 2/4; \clef "violin"; c2 c2 }
+ { \meter 2/4; \clef "bass"; c2 c2 }
+ >
+ >
}
}
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "0.0.61";
+\version "0.1.0";
\score{
\melodic {
unsynced bars
EndMudelaHeader
%}
-\version "0.0.58";
-%
-% Ive' got rhythm!
-%
-% add any impressive examples here, please
-\version "0.0.58";
-ritme = \staff {
- melodicregs
- \melodic{ %\octave ;
+\version "0.1.0";
+
+ritme = \melodic{ %\octave ;
\partial 8;
\octave c';
\meter 4/4;
}
-}
-another = \staff {
- melodicregs
+
+another =
\melodic{ \meter 4/4;
c1. c1. c4 c4 c4 c4 \meter 4/4; c1 c1 c1
}
-}
-yanother = \staff {
- melodicregs
+
+yanother =
\melodic{ \meter 4/4;
c1 c1 c1 c4 c4 c4 c4 c1 c1 c1
}
-}
+
\score{
- ritme
- another
- yanother
+ < \multi 3;
+ \ritme
+ \another
+ \yanother
+ >
- \midi { }
\paper{
- \unitspace 2\cm
- \geometric 1.3
+ unitspace =2.0\cm;
+ geometric =1.6;
}
}
% scales with accents.
%
-\version "0.0.61";
+\version "0.1.0";
blah = \melodic {
\meter 6/8;
\octave 'c ;
Tested Features: scripts, text.
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
blah = \melodic {
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
%% Stuff from MPP version
% \lefttitle{Menuetto}
}
\score{
- \melodic { \IImenuetto }
+ % huh? how to set id_str
+ \melodic{
+ \id "Staff" "Cello"; \IImenuetto
+ }
\paper{
unitspace= 9.0\mm ;% to get lily to use only three lines
geometric= 1.40;
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
\score{
\melodic{\octave c';
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
commands = \melodic{
\skip 2.*4;
}
\score{
- < \multi 3;
+ <
{ \id "Lyric" "1"; \tekstI } % ugh
{ \id "Lyric" "2"; \tekstII }
-
- \melodic < \melodie \commands >
- \melodic < \begeleiding \commands >
+ < \id "Piano" "";
+ \multi 2;
+ \melodic < \melodie \commands >
+ \melodic < \begeleiding \commands >
+ >
>
\paper{
linewidth= 195.\mm;
%}
-\version "0.0.61";
+\version "0.1.0";
toccata_commands = \melodic{
\meter 4/4;
dis4-\rtoe e4-\rheel 'e4-\ltoe |
}
-break = \melodic{ \meter 4/4; r1 }
+break = \melodic{
+ %\meter 4/4;
+ r1
+}
% these should be two separate scores...
\score{
- \melodic < \multi 3;
+ \melodic < \multi 1;
- {\$toccata_right \break \$fuga2_right }
- {\$toccata_left \break \$fuga2_left }
+ < \id Piano ""; \multi 3;
+ {\$toccata_right \break \$fuga2_right }
+ { \$toccata_left \break \$fuga2_left }
+ >
- {\$toccata_pedal \break \$fuga2_pedal }
+ { \$toccata_pedal \break \$fuga2_pedal }
+
>
\paper{}
Tested Features: lyrics
EndMudelaHeader
%}
-\version "0.0.61";
+\version "0.1.0";
melody = \melodic{
\clef violin;
\score{
< \multi 3;
- \melodic <\global \melody >
+ \melodic <
+ \id "Piano" "";\multi 3;
+ < \global
+ \melody >
+ < \global
+ \accompany >
+ >
% ugh
\lyric < \id "Lyric" "1"; \global \tekst \hegedraagjetekst >
% \lyric < \id "Lyric" "2"; \global \texte >
% \lyric < \id "Lyric" "3"; \global \texti \textii \textiii >
- \melodic < \global \accompany >
+
>
\paper{
unitspace= 2.5\cm;
%}
-\version "0.0.61";
+\version "0.1.0";
% should add \need{dutch.ini} for
% correct parsing of note names
\score {
- \melodic < \multi 1;
+ \melodic < \id "Piano" "";
+ \multi 1;
< \multi 2;
\global
\dux
>
>
- \paper{}
+ \paper{
+% unitspace = 40.0\pt; geometric = 1.6;
+ geometric= 1.4; unitspace= 34.\pt;
+ }
\midi {
\tempo 4:84;
}
#include <iostream.h>
// mmm
-#define MUDELA_VERSION "0.0.61"
+#define MUDELA_VERSION "0.1.0"
#include "script-def.hh"
#include "symtable.hh"
%token <id> SCRIPT_IDENTIFIER
%token <id> STAFF_IDENTIFIER
%token <id> REAL_IDENTIFIER
+%token <id> INPUT_TRANS_IDENTIFIER
%token <id> INT_IDENTIFIER
%token <id> SCORE_IDENTIFIER
%token <id> MIDI_IDENTIFIER
old_identifier:
IDENTIFIER
+ | INPUT_TRANS_IDENTIFIER
| MELODIC_REQUEST_IDENTIFIER
| POST_REQUEST_IDENTIFIER
| SCRIPT_IDENTIFIER
$$ = new Request_id(*$1, $3, MELODIC_REQUEST_IDENTIFIER);
delete $1;
}
+ | declarable_identifier '=' input_translator_spec {
+ $$ = new Input_translator_id ( *$1, $3, INPUT_TRANS_IDENTIFIER);
+ delete $1;
+ }
;
;
input_translator_spec_body:
- STRING STRING {
+ INPUT_TRANS_IDENTIFIER {
+ $$ = $1->input_translator(true);
+ $$-> set_spot( THIS->here_input() );
+ }
+ | STRING STRING {
$$ = new Input_translator;
$$->base_str_ = *$1;
$$->type_str_ =*$2;