+#This file controls which classes produce debugging output
+
# class name silence?
Dstream 1
-Subject: LilyPond 0.1 released - GNU Project music typesetter
-
+Subject: LilyPond 0.1 released - The GNU Project music typesetter
BORN
daughter to Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy'
Nienhuys
-Lily is a healthy, bouncing baby weighing 340 kilobytes
+Lily is a healthy, bouncing baby weighing 345 kilobytes
-Visiting hours: 24hrs a day at
+Visiting hours: 24 hours a day at
ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.0.tar.gz (Europe)
- ftp://alpha.gnu.ai.mit.edu/pub/lilypond/lilypond-0.1.0.tar.gz (US)
+ ftp://alpha.gnu.ai.mit.edu/gnu/lilypond-0.1.0.tar.gz (US)
You can see some babyfood, diapers and pictures at
You can send your congratulations to Janneke (jan@digicash.com) and
Wendy (hanwen@stack.nl)
-[ And now the serious part ]
- Announcing
-
- GNU LilyPond
+GNU LilyPond - The GNU Project Music Typesetter
- The Music Typesetter
-Do you pine for the nice days of Linux 0.95, when men were men and
-wrote their own applications? Are you without a nice project and just
-dying to cut your teeth into a bleeding edge application you can
-modify for your needs? Do you find it frustrating that everything
-works in LaTeX? No more all-nighters to get a nifty program working?
-Then this post might be just for you!
-I have been working very hard on a music typesetting system (called
-GNU LilyPond) the past half year, and I finally think it is ready to be
-used and hacked at by a larger public than me and my co-developer.
+``WHAT IS GNU LilyPond?''
-Sources for this project are on:
+Well Mike, GNU LilyPond is a program which converts music definition
+files into visual or auditive output: it can typeset formatted sheet
+music to a TeX file and (mechanical) performances to MIDI files.
- ftp://pcnov095.win.tue.nl/pub/lilypond/
-detailed info and examples can be found on the webpage at:
+We have been working very hard on this system for the past year, and
+we finally think that it is ready to be used and hacked at by a larger
+public than us.
- http://www.stack.nl/~hanwen/lilypond/index.html
-It isn't flashy, but then I wasn't born to be a webartist.
+WHY ?
+We want to create tools to produce production quality scores and parts
+of public domain music.
-[DETAILED DESCRIPTION]
-WHAT IS GNU LilyPond?
+BUT ..
-GNU LilyPond is a program which converts music definition files into
-visual or auditive output: it can typeset formatted sheet music to a
-TeX file and and (mechanical) performances to MIDI files.
+We haven't yet reached that goal:
-WHY?
+* The quality of the output isn't good enough yet due to some
+unsophisticated algorithms
-We want to create tools which can produce production quality scores
-and parts of public music. We haven't quite reached that goal:
+* Some features haven't been implemented, due to lack of time; most of
+them can be done quite simply
-* The quality of the output isn't good enough yet due to
-some (still) unsophisticated algorithms
+This is why we don't consider this software stable yet. It generally
+does what it is supposed to, but we reserve the right to make
+(incompatible) changes to the input format. We consider it
+of BETA quality.
-* A number of features haven't been implemented (although they can be
-quite simple)
-WE WANT YOU!
+WE WANT YOU!
-You can become a user, but we'd really appreciate it you would start
+You can become a user, but we'd really appreciate it if you would start
hacking at Lily, and help us advance our project more quickly.
-WHAT IS NEEDED?
-for compilation you need
+``YES, IT IS FANTASTIC! WHAT DO I NEED?''
+
+For compilation you need
Unix. (windows32 is known to work, too)
GNU C++ v2.7 or better, with libg++ installed.
Flex (2.5.1 or better).
Bison. (1.25 or better)
-for running you need
+For running you need
TeX
- MusiXTeX fonts
+ MusiXTeX fonts
The MusiXTeX fonts are part of the MusiXTeX package version T.73,
available at any CTAN mirror, or http://www.gmd.de/Misc/Music/
-WHAT CAN LILYPOND DO?
+
+``WHAT CAN LILYPOND DO?''
ASCII script input (mudela), with identifiers (for music reuse),
-customizable notenames
+customizable notenames.
MIDI output lets you check if you have entered the correct notes.
MIDI to Mudela conversion through the mi2mu program.
input file. Each score is output to a different file.
Beams, slurs, chords, super/subscripts (accents and text),
-general n-plet (triplet, quadruplets, etc.), lyrics, transposition
+general n-plet (triplet, quadruplets, etc.), lyrics, transposition,
dynamics (both absolute and hairpin style), clef changes, meter
-changes, cadenza-mode, key changes, repeat bars
+changes, cadenza-mode, key changes, repeat bars.
+
+Integration with LaTeX through Perl scripts.
+
-Integration with LaTeX through scripts.
+``WHERE CAN I FIND MORE INFO?''
+
+Sources for this project are on
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
+ ftp://alpha.gnu.ai.mit.edu/gnu/ (US)
+
+More detailed info and examples can be found on the webpage at
+
+ http://www.stack.nl/~hanwen/lilypond/index.html
+THANK YOU,
+Thanks go out to Mats Bengtsson, Werner Lemberg and Richard Stallman
+for comments and contributions.
-30/Jul/97 LilyPond 0.0.77 1
+30/Jul/97 LilyPond 0.1.0 1
[document reintroduced deficiencies.]
-wrong instrument:
-
-cad = \melodic { \id "Staff" "fr horn"; c4 }
-
-\score {
- \melodic {\cad}
-}
-
*******************
'.' -> lilypond: lexer.l:258: int My_lily_lexer::yylex(): Assertion `cnv == 1' failed.
***********************
-2nd staff takes too long.
\score { <
\melodic { \id "Staff" ""; c'4 g'4 }
=head2 MACROS
+The code should not be compilable if proper macro declarations are not
+included.
+Don't laugh. It took us a whole figure out one of these bugs.
=head2 BROKEN CODE
=head1 DESCRIPTION
-This page documents installation and compilation of GNU LilyPond
+This page documents installation and compilation of GNU LilyPond
+
+=head1 ABSTRACT
+
+You do something which looks remotely like
+
+ configure
+ make
+ make install
+ tar -C /usr/lib/texmf/fonts/source/ -zxf musixtex-T73.tgz 'mf/*'
+
+The detailed instructions follow here.
=head1 PREREQUISITES
unices: Linux, AIX, Digital Unix and Solaris.
If you have the Cygnus WINDOWS32 port of the GNU utils, it will even
-work in Windows NT/95, but don't promise to support it.
+work in Windows NT/95, but we don't promise to support it.
=item *
=item ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin
-=item ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
+=item ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
=item ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
package. The primary site of the Taupin version is
ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip
+Andreas Egler's version of MusixTeX, now called OpusTeX, will also
+work. Andreas moved some characters around in the fonts, so you have
+to edit the definitions in tex/eglerdefs.tex (patch appreciated)
+
+
=head1 RECOMMENDED
Although not strictly necessary, these are recommended to have.
=item *
-Perl. Most scripts are written in Perl. The documentation was created
+Perl. Most scripts are written in Perl. Most documentation was created
with the perl's Plain Old Documentation.
=item *
-(GNU) find
+GNU find
=item *
This will install the following files:
/usr/local/man/man1/mi2mu.1
- /usr/local/man/man5/mudela.5
+ /usr/local/man/man1/convert-mudela.1
+ /usr/local/man/man1/mudela-book.1
/usr/local/man/man1/lilypond.1
/usr/local/lib/libflower.{so,a}
/usr/local/bin/lilypond
The TeX include directory is detected dynamically, but it can be
adjusted with B<--enable-tex-prefix> and B<--enable-tex-dir>. The
-above assumes that you are root and have the gnu development tools,
-and your make is gnu make. If this is not the case, you can adjust
+above assumes that you are root and have the GNU development tools,
+and your make is GNU make. If this is not the case, you can adjust
your environment variables to your taste:
export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
Make a shared library (gnu/linux, solaris (?) only )
-=item --enable-printing
+=item --enable-printing
Enable debugging print routines (lilypond B<-d> option)
-=item --enable-optimise
+=item --enable-optimise
-Set maximum optimisation
+Set maximum optimisation: compile with B<-O2>
-=item --enable-profiling
+=item --enable-profiling
Compile with support for profiling
-=item --enable-tex-prefix
+=item --enable-tex-prefix
-Set the directory where texmf lives
+Set the directory where TeX and Metafont live
=item --enable-tex-dir
-Set then directory tex input is in (detected as a subdir of tex-prefix)
+Set then directory TeX input is in (detected as a subdir of tex-prefix)
=item --enable-mf-dir
-Set then directory mf input is in (idem)
+Set then directory mf input is in (idem) [obsolete]
=back
=head1 CAVEATS
-
-
=over 5
=item *
This is what the output looks like over here:
- hw:~/musix/spacer$ lilypond input/kortjakje.ly
- GNU LilyPond 0.0.71 #20/FlowerLib 1.1.20 #0
- Parsing ... [/home/hw/share/lilypond/init//symbol.ini <..snip..>
- .. .ini]][input/kortjakje.ly]
- Creating elements ...
+ GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+ Parsing ... [/home/hw/share/lilypond/init//
+ <..etc..>
+ init//performer.ly]]][input/kortjakje.ly]
+ Creating elements ...[8][16][24][25]
Preprocessing elements...
- Calculating column positions ... [3][8][13][17][21][25]
+ Calculating column positions ... [14][25]
Postprocessing elements...
TeX output to lelie.tex ...
+ Creating MIDI elements ...MIDI output to lelie.midi ...
- hw:~/musix/spacer$ tex lelie
- This is TeX, Version 3.14159 (C version 6.1)
- (lelie.tex
- Hyphenation patterns for english, dutch, german, loaded.
- (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) [1] )
- Output written on lelie.dvi (1 page, 8944 bytes).
- Transcript written on lelie.log.
hw:~/musix/spacer$ xdvi lelie&
[1] 855
you need the cygnus windows32 gnu port development stuff; have a look
at http://www.cygnus.com/gnu-win32.
-to make GNU LilyPond under, brr, aargh, well, simply type:
+to make GNU LilyPond under, brr, aargh, shudder.. windows32, well,
+simply type:
bash configure
make windows32
=item *
-We want to provide an easy-to-use interface for typesetting music in
+Providing an easy-to-use interface for typesetting music in
its broadest sense. This interface should be intuitive from a musical
point of view. By broadest sense we mean: it is designed for music
printed left to right in staffs, using notes to designate rythm and
=item *
-Generate high-quality output. Ideally it should be of a professional
+Generating high-quality output. Ideally it should be of a professional
quality. We'd like to render Herbert Chlapiks words, "Fine music
setting is not possible without a knowledgeable printer," untrue.
=item *
-Make a system which is fully tweakable. It should be possible to
+Making a system which is fully tweakable. It should be possible to
typeset a book on how not to typeset music.
=back
+++ /dev/null
-=head1 NAME
-
-LilyError - LilyPond error messages
-
-=head1 DESCRIPTION
-
-This page documents error messages.
-
-A correctly parsed F<input.ly> does not guarantuee output. A lot
-(most) of the checking is done B<after> parsing (some checks even are
-done after the break calc!); I'm sorry.
-
-Most errors come with a context of the Mudela element that originated
-it. This context may be slightly wrong: the parser sometimes reads a
-few tokens ahead to determine the syntax.
-
-[yep.. has to be written..]
- p-col.hh
- *request.hh
- - register.hh
+ - engraver.hh
+ - performer.hh
+ - translator.hh
- score-elem.hh
- - input-music.hh
- - linespace.hh
+ - music.hh
+ - music-list.hh
+ - music-iterator.hh
- item.hh
- spanner.hh
- - voice.hh
Q: Why GPL?
A: If it is reasonable, I'll add XXXX to the TODO list. In general
finding a cute syntax (such as YYYY) isn't very hard. The complicated
-issue how to adapt the internals to do XXXX. The parser is really a
+issue how to adapt the internals to do XXXX. The parser is really a
simple front end to the complicated internals.
Q: Why do I need g++ >= 2.7?
that when having to use doze, i-m sometimes too lazy to reboot.)
A.2: I haven't had time to find a GCC crosscompiler (I<with> g++ and
-libg++, mind you) to DOS/win (in rpm, please :).
+libg++, mind you) to DOS/win (in rpm, please :-)
Q: I-m dozed enough to run the (sometimes bit stale) .exe-s you distribute.
</a
>
-=item *
-<a href=error.html
->
-errors
-</a
->
-
=back
</a
>
-=item *
+=item *
<a href=ANNOUNCE.txt
>
The announce of 0.1
If you have found a bug, then you should send a bugreport.
- - send a copy of the input which causes the error
- - send a description of the platform you use
- - send a description of the LilyPond version you use (with
- compile/config options please)
- - send a description of the bug itself.
- - send it to bug-gnu-music@vuse.vanderbilt.edu
+=over 4
+
+=item *
+send a copy of the input which causes the error
+
+=item *
+send a description of the platform you use
+
+=item *
+send a description of the LilyPond version you use (with
+compile/config options please)
+
+=item *
+send a description of the bug itself.
+
+=item *
+send it to bug-gnu-music@vuse.vanderbilt.edu
+
+=back
It does help if you can find out where the bug comes from: if GNU
LilyPond bombs out, then please recompile using with debugging info
GNU LilyPond is
updated very frequently, the latest version is always available at:
-ftp://pcnov095.win.tue.nl/pub/lilypond.
+ftp://pcnov095.win.tue.nl/pub/lilypond and
+ftp://alpha.gnu.ai.mit.edu/gnu/
+
For programs which are part of the GNU music project, the following
mailing list have been setup:
got the hang of it, and in the subsequent two months, I coded until it
had doubled in size (pl 23).
-The first large scale release (0.1) was planned after approximately 80
-patchlevels on August 1, 1997.
+Most the other history is described in the NEWS file. The first large
+scale release (0.1) was done after approximately 78 patchlevels on
+August 1, 1997.
+
The GNU LilyPond music typesetter.
-=item mudela(5)
-
-On the LilyPond input format.
-
=item mudela-man
On the input format. This is a LilyPond-enhanced LaTeX document.
INSTALL - installing GNU LilyPond
D\bD\bD\bDE\bE\bE\bES\bS\bS\bSC\bC\bC\bCR\bR\bR\bRI\bI\bI\bIP\bP\bP\bPT\bT\bT\bTI\bI\bI\bIO\bO\bO\bON\bN\bN\bN
- This page documents installation and compilation of GNU
+ This page documents installation and compilation of GNU
LilyPond
+A\bA\bA\bAB\bB\bB\bBS\bS\bS\bST\bT\bT\bTR\bR\bR\bRA\bA\bA\bAC\bC\bC\bCT\bT\bT\bT
+ You do something which looks remotely like
+
+ configure
+ make
+ make install
+ tar -C /usr/lib/texmf/fonts/source/ -zxf musixtex-T73.tgz 'mf/*'
+
+ The detailed instructions follow here.
+
+
P\bP\bP\bPR\bR\bR\bRE\bE\bE\bER\bR\bR\bRE\bE\bE\bEQ\bQ\bQ\bQU\bU\bU\bUI\bI\bI\bIS\bS\bS\bSI\bI\bI\bIT\bT\bT\bTE\bE\bE\bES\bS\bS\bS
For compilation you need.
Solaris.
If you have the Cygnus WINDOWS32 port of the GNU
- utils, it will even work in Windows NT/95, but don't
- promise to support it.
+ utils, it will even work in Windows NT/95, but we
+ don't promise to support it.
+\bo GNU C++ v2.7 or better, with libg++ installed.
Version 2.7.2 or better recommended.
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 _\bm_\bf_\b/
- subdirectory of the package. The primary site of
- the Taupin version is ftp://hprib.lps.u-
- psud.fr/pub/music_zips/musixtex.zip
-R\bR\bR\bRE\bE\bE\bEC\bC\bC\bCO\bO\bO\bOM\bM\bM\bMM\bM\bM\bME\bE\bE\bEN\bN\bN\bND\bD\bD\bDE\bE\bE\bED\bD\bD\bD
- Although not strictly necessary, these are recommended to
- have.
+
+1/Aug/97 LilyPond 0.1.0 1
-29/Jul/97 LilyPond 0.0.77 1
+INSTALL(1) LilyPond documentation INSTALL(1)
+ ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin
-INSTALL(1) LilyPond documentation INSTALL(1)
+ ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin
+
+ You only need the contents of the _\bm_\bf_\b/
+ subdirectory of the package. The primary site of
+ the Taupin version is ftp://hprib.lps.u-
+ psud.fr/pub/music_zips/musixtex.zip
+
+ Andreas Egler's version of MusixTeX, now called
+ OpusTeX, will also work. Andreas moved some
+ characters around in the fonts, so you have to
+ edit the definitions in tex/eglerdefs.tex (patch
+ appreciated)
+R\bR\bR\bRE\bE\bE\bEC\bC\bC\bCO\bO\bO\bOM\bM\bM\bMM\bM\bM\bME\bE\bE\bEN\bN\bN\bND\bD\bD\bDE\bE\bE\bED\bD\bD\bD
+ Although not strictly necessary, these are recommended to
+ have.
- +\bo Perl. Most scripts are written in Perl. The
+ +\bo Perl. Most scripts are written in Perl. Most
documentation was created with the perl's Plain
Old Documentation.
- +\bo (GNU) find
+ +\bo GNU find
+\bo A fast computer (a full page of music typically
takes 1 minute on my 486/133, using the
This will install the following files:
/usr/local/man/man1/mi2mu.1
- /usr/local/man/man5/mudela.5
+ /usr/local/man/man1/convert-mudela.1
+ /usr/local/man/man1/mudela-book.1
/usr/local/man/man1/lilypond.1
/usr/local/lib/libflower.{so,a}
/usr/local/bin/lilypond
The TeX include directory is detected dynamically, but it
can be adjusted with -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-p\bp\bp\bpr\br\br\bre\be\be\bef\bf\bf\bfi\bi\bi\bix\bx\bx\bx and -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-
- d\bd\bd\bdi\bi\bi\bir\br\br\br. The above assumes that you are root and have the gnu
- development tools, and your make is gnu make. If this is
+ d\bd\bd\bdi\bi\bi\bir\br\br\br. The above assumes that you are root and have the GNU
+ development tools, and your make is GNU make. If this is
not the case, you can adjust your environment variables to
your taste:
+
+
+1/Aug/97 LilyPond 0.1.0 2
+
+
+
+
+
+INSTALL(1) LilyPond documentation INSTALL(1)
+
+
export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
configure
configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf
-
-
-29/Jul/97 LilyPond 0.0.77 2
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
Since GNU LilyPond currently is beta, you are advised to
also use
option)
--enable-optimise
- Set maximum optimisation
+ Set maximum optimisation: compile with -\b-\b-\b-O\bO\bO\bO2\b2\b2\b2
--enable-profiling
Compile with support for profiling
--enable-tex-prefix
- Set the directory where texmf lives
+ Set the directory where TeX and Metafont live
--enable-tex-dir
- Set then directory tex input is in (detected as a
+ Set then directory TeX input is in (detected as a
subdir of tex-prefix)
--enable-mf-dir
Set then directory mf input is in (idem)
+ [obsolete]
All options are documented in the _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be help
+
+
+
+1/Aug/97 LilyPond 0.1.0 3
+
+
+
+
+
+INSTALL(1) LilyPond documentation INSTALL(1)
+
+
The option -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-o\bo\bo\bop\bp\bp\bpt\bt\bt\bti\bi\bi\bim\bm\bm\bmi\bi\bi\bis\bs\bs\bse\be\be\be is recommended for
Real Life usage.
Install the musixtex fonts in a directory which TeX and MF
knows (if you are root, look for a directory which
-
-
-
-29/Jul/97 LilyPond 0.0.77 3
-
-
-
-
-
-INSTALL(1) LilyPond documentation INSTALL(1)
-
-
contains the directories with AMS and CM source (*.mf)
files. Create a subdir lilypond or musixtex and copy the
fonts into that). Do not forget to rehash TeX (if
This is what the output looks like over here:
- hw:~/musix/spacer$ lilypond input/kortjakje.ly
- GNU LilyPond 0.0.71 #20/FlowerLib 1.1.20 #0
- Parsing ... [/home/hw/share/lilypond/init//symbol.ini <..snip..>
- .. .ini]][input/kortjakje.ly]
- Creating elements ...
- Preprocessing elements...
- Calculating column positions ... [3][8][13][17][21][25]
- Postprocessing elements...
- TeX output to lelie.tex ...
- hw:~/musix/spacer$ tex lelie
- This is TeX, Version 3.14159 (C version 6.1)
- (lelie.tex
- Hyphenation patterns for english, dutch, german, loaded.
- (/home/hw/lib/texmf/tex/lilypond/lilyponddefs.tex) [1] )
- Output written on lelie.dvi (1 page, 8944 bytes).
- Transcript written on lelie.log.
- hw:~/musix/spacer$ xdvi lelie&
- [1] 855
- Check out the input files, some of them have comments
- Please refer to the man page for more information.
-R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
- RedHat Linux users should be able to get a RPM. A spec
- file is in _\bm_\ba_\bk_\be_\b/_\bo_\bu_\bt_\b/_\bl_\bi_\bl_\by_\bp_\bo_\bn_\bd_\b._\bs_\bp_\be_\bc. You should be able to
- create an rpm as a normal user. Be sure you have a
- ~/.rpmrc, and edit the RPM-dir in _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b._\bm_\ba_\bk_\be. (If you
-29/Jul/97 LilyPond 0.0.77 4
+
+
+
+
+1/Aug/97 LilyPond 0.1.0 4
INSTALL(1) LilyPond documentation INSTALL(1)
+ GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0
+ Parsing ... [/home/hw/share/lilypond/init//
+ <..etc..>
+ init//performer.ly]]][input/kortjakje.ly]
+ Creating elements ...[8][16][24][25]
+ Preprocessing elements...
+ Calculating column positions ... [14][25]
+ Postprocessing elements...
+ TeX output to lelie.tex ...
+ Creating MIDI elements ...MIDI output to lelie.midi ...
+
+ hw:~/musix/spacer$ xdvi lelie&
+ [1] 855
+
+ Check out the input files, some of them have comments
+ Please refer to the man page for more information.
+
+R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
+ RedHat Linux users should be able to get a RPM. A spec
+ file is in _\bm_\ba_\bk_\be_\b/_\bo_\bu_\bt_\b/_\bl_\bi_\bl_\by_\bp_\bo_\bn_\bd_\b._\bs_\bp_\be_\bc. You should be able to
+ create an rpm as a normal user. Be sure you have a
+ ~/.rpmrc, and edit the RPM-dir in _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b._\bm_\ba_\bk_\be. (If you
create the RPM as a normal user the permissions will not
be set correctly, unfortunately)
you need the cygnus windows32 gnu port development stuff;
have a look at http://www.cygnus.com/gnu-win32.
- to make GNU LilyPond under, brr, aargh, well, simply type:
+ to make GNU LilyPond under, brr, aargh, shudder..
+ windows32, well, simply type:
bash configure
make windows32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-29/Jul/97 LilyPond 0.0.77 5
+1/Aug/97 LilyPond 0.1.0 5
+august 1
+
+VERSION 0.1.0
+
+ - bf: output tempo to track 0 too
+ - bf: don't forget to copy id_str_, so moved into Music
+
+pl 78.jcn1
+ - fix for multi-staff midi: wohltemperirt.ly, standchen.ly
+ - doze fixes
+ - bf: conflily, configure (text)
+*****
+july 31
pl 78
- bf: Midi_instrument
- added enable/disable defaults to help.
audio output: it can typeset formatted sheet music in TeX and
and (mechanical) perfomances to MIDI files.
+0.
+
+LilyPond is known to have a minor bug if you use glibc; we will look into it
+Please download 0.1.1 when it's available.
+
+LilyPond exhibits a g++ bug on Solaris 2.5 (The stack frame gets corrupted by
+a constructor) if you compile with -O2. We don't know workarounds
+
+
1. VERSIONING
if you have downloaded a
Have fun!
+6. DOZE
+
+If you have received this file as part of a DOS/Window32 distribution
+(lilypond-*.zip ), then it is advisable to also download the source
+package, since it contains the complete documentation
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
+ ftp://alpha.gnu.ai.mit.edu/gnu/ (US)
+
+The website also contains the complete documentation
+
+ http://www.stack.nl/~hanwen/lilypond/index.html
+
+
+
+
+
-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
+ * versioning stuff (cvt mudela, mudela, etc.)
+
+ * get rid of gif files.
+
+ * set_midi_channel/staff() out of performer.
+
* dots into separate item.
* use String iso Text_def for lyrics.
* use position 0 for center of staff iso bottom.
- * return status
+ * return status on exit
* lyrics in chords still fuck up.
- * add to MIDI output:
- - tempo change
- - repeat
- - slurs
- - dynamics etc.
-
* rewire acknowledge_element() logic with a process_acknowledged()
* progress when creating MIDI elts.
* decent TeX page layout
- * enter script priority
-
- * a hands on tutorial
+ * a tutorial
PROJECTS
+ * add to MIDI output:
+ - tempo change
+ - repeat
+ - slurs
+ - dynamics etc.
+
* grace notes
- adapt for multiple font sizes.
- make separate class for Grace_*_engravers
TOPLEVEL_MAJOR_VERSION = 0
-TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 78
-# use to send patches, always empty for released version:
-# include separator: ".postfix", "-pl" makes rpm barf
+TOPLEVEL_MINOR_VERSION = 1
+TOPLEVEL_PATCH_LEVEL = 0
+# use to send patches, always empty for released version:
+# include separator: ".postfix", don't use -,
+# it makes rpm barf
TOPLEVEL_MY_PATCH_LEVEL =
echo "export PATH=$PATH:$lelie/current/bin/out/"
fi
-configure --prefix=$root --enable-debugging --enable-printing --enable-checking
+configure --prefix=/usr --enable-debugging --enable-printing --enable-checking
{
print "generating TeX doco list\n";
open HTMLLIST, ">tex_manuals.html";
- print HTMLLIST "<html><body><title>LilyPond manuals in TeX</title>\n" .
- "<ul>\n";
+ print HTMLLIST "<HTML><TITLE>LilyPond manuals</title>\n" ;
+ print HTMLLIST "<BODY><h1>LilyPond manuals (in PostScript)</h1>";
+ print HTMLLIST "<ul>\n";
my @todo=();
foreach $a (@texstuff) {
push @todo , "out/$a.ps.gz";
print HTMLLIST "<li><a href=$a.ps.gz>$a.ps.gz</a>";
}
print HTMLLIST "</ul>";
+
+ print HTMLLIST "</BODY></HTML>";
close HTMLLIST;
my_system( "$MAKE -C .. " . join(' ', @todo));
if test $warn_b = "yes" ; then
cat <<EOF
- *******************************
- Warning: configure found errors.
- Please resolve these and rerun configure
- before sending any bugreports.
- *******************************
+ **************************************************
+ Warning: configure encountered warnings or errors.
+ Please try to resolve these, and rerun configure
+ before sending a bugreport.
+ If you cannot resolve some warnings, the make
+ process may still be succesful, but be warned.
+ **************************************************
EOF
fi
if test $warn_b = "yes" ; then
cat <<EOF
- *******************************
- Warning: configure found errors.
- Please resolve these and rerun configure
- before sending any bugreports.
- *******************************
+ **************************************************
+ Warning: configure encountered warnings or errors.
+ Please try to resolve these, and rerun configure
+ before sending a bugreport.
+ If you cannot resolve some warnings, the make
+ process may still be succesful, but be warned.
+ **************************************************
EOF
fi
\version "0.1.0";
-\score {
- \melodic {\id "Staff" "french horn";
+cad = \melodic {\id "Staff" "french horn";
\cadenza 1;
\grouping 1*4;\duration 8;\octave c';
'g2 d2^"tr"
c4
}
-
+\score {
+ \melodic { \cad }
\paper {
unitspace= 14.0\mm;
\melodie
\begeleiding
>
+ \paper{}
+ \midi{}
}
MAJOR_VERSION = 0
-MINOR_VERSION = 0
-PATCH_LEVEL = 78
+MINOR_VERSION = 1
+PATCH_LEVEL = 0
# use to send patches, always empty for released version:
# include separator: ".postfix", "-pl" makes rpm barf
-MY_PATCH_LEVEL =
+MY_PATCH_LEVEL =
Line_spacer *sp =generate_spacing_problem(curline);
Col_hpositions colhpos;
colhpos.cols = curline;
- colhpos.energy = INFTY;
+ colhpos.energy = INFTY_f;
colhpos.ugh_b_ = true;
colhpos.config = sp->default_solution();
delete sp;
Col_hpositions::Col_hpositions()
{
- energy = INFTY;
+ energy = INFTY_f;
ugh_b_ = false;
}
*/
#ifndef CONST_HH
#define CONST_HH
+#include <limits.h>
#include <math.h>
#include "real.hh"
const Real INFTY=HUGE_VAL;
+const Real INFTY_f=(Real)INT_MAX;
+
#endif
public:
int multi_level_i_;
- /// what kind of iterator needed to walk this music?
- String type_str_;
-
- /// what name (or look for this name)
- String id_str_;
Music_list(Music_list const&);
Music_list();
DECLARE_MY_RUNTIME_TYPEINFO;
class Music:public Input {
public:
Music_list * parent_music_l_;
+
+ /** what kind of iterator needed to walk this music? This doesn't
+ make sense for simple (ie non-list) music, but it does no harm
+ here. Yes, it did harm Music_list: you can forget to copy it.
+
+ */
+ String type_str_;
+
+ /// what name (or look for this name)
+ String id_str_;
virtual MInterval time_int()const;
virtual ~Music(){}
virtual bool do_try_request( Request* req_l );
virtual bool try_request(Request*r) { return Performer::try_request(r) ; }
+ // <ugh>
+ virtual void set_track( int& track_i_r );
+ virtual int get_track_i() const;
+ // </ugh>
+
protected:
virtual Translator* find_get_translator_l( String name, String id );
bool is_bottom_performer_b() const;
virtual Performer_group_performer* find_performer_l( String name, String id );
-
virtual void do_print()const;
+
private:
Pointer_list<Performer*> perf_p_list_;
virtual void process_requests();
virtual void set( Moment mom );
+ // <ugh>
+ virtual void set_track( int& track_i_r );
+ virtual int get_track_i() const;
+ // </ugh>
+
virtual bool try_request( Request* req_l );
virtual void do_removal_processing();
virtual void play_event( Midi_item* l );
virtual void do_removal_processing();
virtual void do_creation_processing();
+ // <ugh>
+ virtual void set_track( int& track_i_r );
+ virtual int get_track_i() const;
+ // </ugh>
private:
void header();
Moment midi_mom_;
Midi_track* midi_track_p_;
+
+ int track_i_;
};
#endif // STAFF_PERFORMER_HH
int
min_elt_index(Vector v)
{
- Real m=INFTY; int idx=-1;
+ Real m=INFTY_f;
+ int idx=-1;
for (int i = 0; i < v.dim(); i++){
if (v(i) < m) {
idx = i;
m = v(i);
}
- assert(v(i) <= INFTY);
+ assert(v(i) <= INFTY_f);
}
return idx;
}
if (direction.norm() > EPS) {
mtor << act.status() << '\n';
- Real minalf = INFTY;
+ Real minalf = INFTY_f;
Inactive_iter minidx(act);
else if (m->is_type_b( Voice::static_name()))
p = new Voice_iterator( (Voice*) m);
- if ( m->is_type_b( Music_list::static_name())) {
- Music_list* ml = (Music_list*) m;
- if (ml -> type_str_ != "") {
- Translator * a =report_l->
- find_get_translator_l(ml-> type_str_, ml->id_str_);
-
-
+ if (m -> type_str_ != "") {
+ Translator * a =report_l->
+ find_get_translator_l(m-> type_str_, m->id_str_);
p->set_translator( a);
-
- }
- }
- if (! p->report_to_l() )
+ }
+
+
+ if (! p->report_to_l() )
p ->set_translator(report_l);
return p;
Moment
Chord_iterator::next_moment()const
{
- Moment next_ = INFTY;
+ Moment next_ = INFTY_f;
for (PCursor<Music_iterator*> i(children_p_list_.top()); i.ok(); i++)
next_ = next_ <? i->next_moment() ;
return next_;
*/
+#include <limits.h>
#include "music.hh"
#include "debug.hh"
#include "music-list.hh"
Music_list::Music_list(Music_list const&s)
+ : Music(s)
{
multi_level_i_ = s.multi_level_i_;
for (iter(s.music_p_list_.top(), i); i.ok(); i++)
add(i->clone());
}
-
-
-
IMPLEMENT_IS_TYPE_B1(Music_list, Music);
IMPLEMENT_IS_TYPE_B1(Voice,Music_list);
IMPLEMENT_IS_TYPE_B1(Chord,Music_list);
MInterval
Chord::time_int()const
{
- MInterval m;
+// MInterval m( -(Real)INT_MAX, (Real)INT_MAX );
+ MInterval m( 0, 0 );
for (iter(music_p_list_.top(), i); i.ok(); i++)
m.unite(i->time_int());
return m;
{
return MInterval(0,0);
}
+
void
Music::print()const
{
#ifndef NPRINT
- mtor << name() << "{" ;
+ mtor << name() << "{";
+ if (type_str_!="" || id_str_!="")
+ mtor << "`" <<type_str_ << " = " << id_str_<<"\'";
do_print();
mtor << "}\n";
#endif
return;
// ugh, need to know channel (===track===staff) too
- int channel_i = 0;
+ int channel_i = get_track_i();
Moment mom = get_mom();
if ( !off_mom_ ) { // start note
off_mom_ = mom + note_req_l_->duration();
i->process_requests();
}
+//<ugh>
+int
+Performer_group_performer::get_track_i() const
+{
+ int track_i = Performer::get_track_i();
+
+ for ( int i = 0; i < nongroup_l_arr_.size(); i++ )
+ nongroup_l_arr_[ i ]->set_track( track_i );
+
+ return track_i;
+}
+
+void
+Performer_group_performer::set_track( int& track_i_r )
+{
+ for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ )
+ i->set_track( track_i_r );
+}
+//</ugh>
+
bool
Performer_group_performer::do_try_request( Request* req_l )
{
{
}
+//<ugh>
+int
+Performer::get_track_i() const
+{
+ return daddy_perf_l_->get_track_i();
+}
+
+void
+Performer::set_track( int& )
+{
+}
+//</ugh>
+
bool
Performer::do_try_request( Request* req_l )
{
+ String_convert::i2dec_str( 0, 0, '0' ) );
midi_track.add( Moment( 0 ), &track_name );
+ Midi_tempo tempo ( get_tempo_i());
+ midi_track.add( Moment(0), &tempo);
+
output_stream << midi_track;
}
void
Score_performer::start()
{
+ //<ugh>
+ int track_i = 1;
+ Performer_group_performer::set_track( track_i );
+ //</ugh>
+
if ( midi_l_->outfile_str_ == "" )
midi_l_->outfile_str_ = default_out_fn + ".midi";
}
trans_l->start();
while ( iter->ok() || trans_l->moments_left_i() ) {
- Moment w = INFTY;
+ Moment w = INFTY_f;
if (iter->ok() ) {
w = iter->next_moment();
iter->print();
#include <math.h>
+#include <limits.h>
#include "spring-spacer.hh"
#include "p-col.hh"
#include "debug.hh"
assert(sol_vec.dim());
Array<bool> fix_b_arr;
fix_b_arr.set_size(cols.size() + loose_col_arr_.size());
- Real utter_right_f=-INFTY;
- Real utter_left_f =INFTY;
+ Real utter_right_f=-INFTY_f;
+ Real utter_left_f =INFTY_f;
for (int i=0; i < loose_col_arr_.size(); i++) {
fix_b_arr[loose_col_arr_[i].rank_i_] = false;
}
}
if ( d_iter.ok() && now >= d_iter.when()) {
Durations_iter d2 = d_iter;
- Moment shortest = INFTY;
+ Moment shortest = (Real)INT_MAX; //ugh INFTY;
while (d2.ok() && d2.when() <= now) {
shortest = shortest <? d2.duration();
d2.next();
// lieve wendy, nu heb je mijn track_i_ / get_staff_i weggehaald...
// zie ook note-performer: ugh
// ugh, need to know channel (===track===staff) too
- int channel_i = 0;
+ int channel_i = track_i_;
Midi_instrument instrument( channel_i, instrument_str() );
midi_track_p_->add( Moment( 0 ), &instrument );
midi_track_p_->add( delta_t, l);
}
+
+//<ugh>
+int
+Staff_performer::get_track_i() const
+{
+ return track_i_;
+}
+
+void
+Staff_performer::set_track( int& track_i_r )
+{
+ track_i_ = track_i_r++;
+}
+//</ugh>
+
Interval__instantiate(Rational);
Interval__instantiate(int);
-#ifdef AIX
-const Real INFTY = 1e8; // ARGh. AIX sucks
+const Real INFTY_f = (Real)INT_MAX;
+#if defined AIX || defined _WIN32
+const Real INFTY = 1e8; // ARGh. AIX sucks -- so does doze
#else
const Real INFTY = HUGE_VAL;
#endif
current = stupid_solution(current.cols);
current.energy = - 1; // make sure we break out.
} else
- current.energy = INFTY; // make sure we go back
+ current.energy = INFTY_f; // make sure we go back
} else {
current = solve_line(current.cols);
current.print();
Begin3
Title: LilyPond
-Version: 0.0.78
-Entered-date: 07/30/97
-Description:
-GNU LilyPond is a program which converts music definition files into
-visual or auditive output: it can typeset formatted sheet music to a
-TeX file and and (mechanical) performances to MIDI files. Features
-include multiple staffs, meters, clefs, keys, lyrics, versatile
-input-language, cadenzas beams, slurs, triplets.
-
+Version: 0.1.0
+Entered-date: 08/01/97
+Description: GNU LilyPond is a program which converts music
+ definition files into visual or auditive output: it can
+ typeset formatted sheet music to a TeX file and and
+ (mechanical) performances to MIDI files. Features
+ include multiple staffs, meters, clefs, keys, lyrics,
+ versatile input-language, cadenzas beams, slurs,
+ triplets.
Keywords: music typesetting midi notation
Author: hanwen@stack.nl (Han-Wen Nienhuys)
jan@digicash.com (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps
- 340k lilypond-0.0.78.tar.gz
+ 340k lilypond-0.1.0.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/
- 340k lilypond-0.0.78.tar.gz
-Platform: Unix/win32, GNU C++
+ 340k lilypond-0.1.0.tar.gz
+Platform: Unix/windoze32, GNU C++
Copying-policy: GPL
End
Title: LilyPond
Version: @TOPLEVEL_VERSION@
Entered-date: @DATE@
-Description:
-GNU LilyPond is a program which converts music definition files into
-visual or auditive output: it can typeset formatted sheet music to a
-TeX file and and (mechanical) performances to MIDI files. Features
-include multiple staffs, meters, clefs, keys, lyrics, versatile
-input-language, cadenzas beams, slurs, triplets.
-
+Description: GNU LilyPond is a program which converts music
+ definition files into visual or auditive output: it can
+ typeset formatted sheet music to a TeX file and and
+ (mechanical) performances to MIDI files. Features
+ include multiple staffs, meters, clefs, keys, lyrics,
+ versatile input-language, cadenzas beams, slurs,
+ triplets.
Keywords: music typesetting midi notation
Author: hanwen@stack.nl (Han-Wen Nienhuys)
jan@digicash.com (Jan Nieuwenhuizen)
340k lilypond-@TOPLEVEL_VERSION@.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/
340k lilypond-@TOPLEVEL_VERSION@.tar.gz
-Platform: Unix/win32, GNU C++
+Platform: Unix/windoze32, GNU C++
Copying-policy: GPL
End
Name: lilypond
-Version: 0.0.78
+Version: 0.1.0
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.78.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.1.0.tar.gz
Summary: A preprocessor to make TeX typeset music.
URL: http://www.stack.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@stack.nl>
strip lily/out/lilypond mi2mu/out/mi2mu
make prefix="$RPM_BUILD_ROOT/usr" install
%files
-%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README
+%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README
%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/mudela-course.doc Documentation/mudela-man.doc
%doc Documentation/lelie_logo.gif
/usr/bin/convert-mudela