]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/lilypond.pod
partial: 0.1.59.jcn
[lilypond.git] / Documentation / lilypond.pod
index 3482fa961c231b1401f4d4edf4c6fb4da8c7d9ee..8742d2ec6bcaa8cfc0aa6fc84d25127cd57306cf 100644 (file)
@@ -8,18 +8,10 @@ lilypond - the GNU music typesetter
 
 =head1 DESCRIPTION
 
-Technically GNU LilyPond is a preprocessor which generates TeX
-(or LaTeX) output which contains information to typeset a musical
-score. Practically it is a typesetter, which only uses TeX as an
-output medium. (this is handy because there exist music fonts for TeX)
-
-As a bonus, you can also output a MIDI file of what you typed.
-
-It translates script files (mudela files or F<*.ly>'s) into TeX input.
-Typesetting music is a complex task, whereas the message that printed
-music conveys is usually a simple one. GNU LilyPond is a try at providing
-a simple interface for setting music.
-
+LilyPond is the GNU Project music typesetter.  The program generates
+visual or auditive output from a music definition file: it can typeset 
+formatted sheet music to a TeX file and play (mechanical) performances 
+to a MIDI file.
 
 =head1 OPTIONS
 
@@ -29,20 +21,25 @@ a simple interface for setting music.
 
 add F<FILE> to the search path for input files.
 
-
 =item B<-M,--midi>
 
-do midi output only
+This disables TeX output. If you have a \midi definition, it will do
+the midi output only.
 
 =item B<-d,--debug>,
 
-Turn debugging info. GNU LilyPond will read the file F<.dstreamrc>, which
-tells for what functions and classes may produce copious debugging
+Turn debugging info on.  GNU LilyPond reads the file F<.dstreamrc>, 
+which lists what functions and classes may produce copious debugging
 output.
 
+=item B<-t,--test>,
+
+Switch on any experimental features.  Not for general public use.
+
 =item B<-w,--warranty>,
 
-Show the warranty with which GNU LilyPond comes. (It comes with B<NO WARRANTY>!)
+Show the warranty with which GNU LilyPond comes. (It comes with B<NO
+WARRANTY>!)
 
 =item B<-o,--output=>F<FILE>,
 
@@ -50,25 +47,43 @@ Set the default output file to F<FILE>.
 
 =item B<-h,--help>,
 
-Show a summary of usage
+Show a summary of usage.
+
+=item B<-i,--init=>F<FILE>,
+
+Set init file to F<FILE> (default: F<lily-init.ly>).
+
+=item B<--include, -I>=F<DIRECTORY>,
+
+Add F<DIRECTORY> to the search path for input files.
 
-=item B<-i,--init=>F<FILE>
+=item B<--ignore-version, -V>,
 
-set init file to F<FILE> (default: F<symbol.ini>)
+Make incompatible mudela version non-fatal.
 
-=item B<--include, -I>=F<DIRECTORY>
-add F<DIRECTORY> to the search path for input files.
+=item B<--no-postscript, -P>,
+
+Don't generate embedded PostScript (or MetaFont) symbols, but resort to
+less beautiful fixed-size versions.
+
+LilyPond uses PostScript for variable symbols where possible.  (For some 
+of these symbols runtime MetaFont source will be genarated too.  These are 
+not used unless you also include the appropriate  TeX file too.  See 
+F<tex/fetdefs.tex>.)
 
 =back
 
 =head1 FEATURES
 
+This is an overview of the features that GNU LilyPond supports.  For
+details on how to use them, you should consult mudela(5).
+
 =over 5
 
 =item *
 
 ASCII script input, with identifiers (for music reuse),
-customizable notenames, customizable fontset
+customizable notenames, customisable fontset.
 
 =item *
 
@@ -80,208 +95,203 @@ MIDI to Mudela conversion through the mi2mu program.
 
 =item *
 
-Multiple staffs in one score. Each staff can have a different meters.
+Multiple staffs in one score.  Each staff can have different meters.
 
 =item *
 
-multiple stafftypes (melodic, rhythmic) [broken from  pl28 on]
+Beams, slurs, ties, chords, super/subscripts (accents and text)
+triplets, general n-plet (triplet, quadruplets, etc.), lyrics,
+transposition dynamics (both absolute and hairpin style).
 
 =item *
 
-beams, slurs, chords, super/subscripts (accents and text), triplets,
-general n-plet (triplet, quadruplets, etc.), lyrics, transposition
-dynamics (both absolute and hairpin style)
+Multiple voices within one staff; beams optionally shared
+between voices.  Up to four voices is handled cleanly.
 
 =item *
 
-multiple voices within one staff; beams optionally shared
-between voices. (well, more than 2 voices won't look pretty --yet.)
-
-=item *
-
-multiple scores within one input file. Each score is output to
+Multiple scores within one input file.  Each score is output to
 a different file.
 
 =item *
 
-clef changes, meter changes, cadenza-mode, key changes, repeat bars
+Clef changes, meter changes, cadenza-mode, key changes, repeat bars.
 
 =back
 
-=head1 DESIGN CONSIDERATIONS
+=head1 DISCLAIMER AND COPYING POLICY
 
-GNU LilyPond was written with some considerations in mind:
+GNU LilyPond is copyright 1996-1998 by its authors.  GNU LilyPond is
+distributed under the terms of the GNU General Public License.  GNU LilyPond 
+is provided without any warranty what so ever.
+GNU LilyPond may be freely distributed.  For further information consult 
+the GNU General Public License, from the file F<COPYING>.
 
-=over 5
+=head1 AUTHORS
 
-=item *
+Please consult the documentation file AUTHORS for more detailed
+information, and small contributions. 
 
-Describing a well-defined language for defining music. We call
-this language (rather arrogantly) The Musical Definition Language
-(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
-TeX file.  
+=over 4
 
 =item *
 
-We want to provide 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
-pitch.
+Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
 
 =item *
 
-GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key
-issue: in a future version, GNU LilyPond might bypass TeX, but at the moment
-TeX is very convenient for producing output.
+Jan Nieuwenhuizen <jan@digicash.com>,  http://www.digicash.com/~jan.
+
+=back
+
+
+=head1 PROBLEMS
+
 
-=item  *
+There is an extensive list of todoes and bugs.  See F<TODO>.  If you
+have a problem you should try to find out
 
-Generate 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.
+=over 4
 
 =item *
 
-GNU LilyPond does not display notes directly, nor will it be rehacked to be
-used interactively. GNU LilyPond writes output to a file.  It will not be
-extended to play music, or to recognize music.
+If the bug has been fixed in a newer release.  
 
 =item *
 
-GNU LilyPond is intended to run on Unix platforms, but it should
-be portable to any platform which can run TeX and the GNU tools
+If the bug has been found earlier, consult F<TODO> and F<BUGS>.
+
+=back 
+
+If you have found a bug, then you should send a bugreport.
+
+=over 4
 
 =item *
+Send a copy of the input which causes the error.
 
-GNU LilyPond is free. Commercial windows packages for setting music are
-abundant. Free musicprinting software is scarce.
+=item *
+Send a description of the platform you use.
 
 =item *
+Send a description of the LilyPond version you use (with
+compile/configure options please).
 
-GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
-broken systems.
+=item *
+Send a description of the bug itself.
+
+=item *
+Send it to bug-gnu-music@gnu.org (you don't have to subscribe
+to this mailinglist).
 
 =back
 
-=head1
-DISCLAIMER & COPYING POLICY
+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
+turned on, and send gdb stacktrace of the crash.  It also helps if you
+can print the values of the objects.  So if your trace is
 
-GNU LilyPond is copyright 1996,97 by its authors. GNU LilyPond is
-distributed under the terms of the GNU General Public
-License. GNU LilyPond is provided without any warranty what so ever.
-GNU LilyPond may be freely distributed.  For further information consult
-the GNU General Public License, which is in the file F<COPYING>
+       received SIGSEGV 
+       (gdb) backtrace 12
+       #0  Interval::operator+= (this=0x11fffec60..)
+           at ../flower/interval.hh:50
+       #1  0x12005195c in Item::width (this=0x14008a680) at src/item.cc:39
+       #2  0x12008fdbc in itemlist_width (its=0x11fffed58 ..
+         :
+         :
+
+Than it would help if you send a dump of the Interval and the Item
+(use: C<print *this> or use LilyPond C<print()> methods).
 
-=head1 AUTHORS
+
+=head1 FILES
 
 =over 5
 
-=item *
+=item F<lily-init.ly>
 
-Han-Wen Nienhuys <hanwen@stack.nl>, http://www.stack.nl/~hanwen
+The initialisation file with symbol tables etc.  It
+includes files from the directory F<init/>.
 
-Main author
+=back
 
-=item *
+=head1 ENVIRONMENT
 
-Jan Nieuwenhuizen <jan@digicash.com>,  http://www.digicash.com/~jan.
+B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
 
-Context errors, Lyrics, mi2mu, MIDI stuff, make structure, bits of
-FlowerLib, general comments, Mudela design.
+=head1 BUGS
 
-=item *
+Lots of them.  See F<TODO> and F<BUGS>
 
-Mats Bengtsson <matsb@s3.kth.se>, bugfixes, testing, general comments.
+=head1 SEE ALSO
 
-=back
+=over 4
 
-Your name could be here! If you want to help, then take a look at the
-SMALLISH PROJECTS section of in the file F<TODO>. Some do not involve
-coding C++
+=item internals
 
-=head1 EXAMPLES
+On technical details of LilyPond
 
-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:
+=item mudela-man
 
-       lilypond someinput.ly
-       tex test
-       xdvi test&
+On the input format.  This is a LilyPond-enhanced LaTeX document.
 
-This is what the output looks like over here:
+=item MANIFESTO
 
-       GNU LilyPond 0.0.40 #0/FlowerLib 1.1.7 #2. Compile: Mar 11 1997, 22:58:47 (g++ 2.7.2)
-       Parsing ... [./init//symbol.ini[./init//dynamic.ini][./init//dutch.ini]
-       [./init//script.ini][./init//table_sixteen.ini]][./input/wohltemperirt.ly]
-       Setting up music ...Processing music ............
-       Preprocessing ...
-       Calculating column positions ... [3][6][9]
-       Postprocessing ...
-       TeX output to lelie.out ...
-       midi output to lelie.midi ...
+Goals of the GNU LilyPond project.
 
-       hw:~/musix/spacer$ tex test
-       This is TeX, Version 3.14159 (C version 6.1)
-       (test.tex
-       Hyphenation patterns for english, dutch, loaded.
-       (lilyponddefs.tex) (lelie.uit) [1] [2] )
-       Output written on test.dvi (2 pages, 8420 bytes).
-       Transcript written on test.log.
+=item FAQ
 
-       hw:~/musix/spacer$ xdvi test&
-       [1] 855
+The GNU LilyPond FAQ list
 
-Check out the input files, some of them have comments
+=item http://www.cs.ruu.nl/people/hanwen/lilypond/index.html
 
+GNU LilyPond has her own webpage.  This webpage contains the MIDI, GIF
+and PS files for some standard music files.  It also has the complete
+LilyPond documentation
 
-=head1 PROBLEMS
+=back
 
-If GNU LilyPond bombs out, then please recompile using with debugging info
-turned on, and send a copy of the input which causes the error and a
-gdb stacktrace of the crash. It also helps if you can print the values
-of the objects. So if your trace is
+GNU LilyPond is
+updated very frequently, the latest version is always available at:
+ftp://pcnov095.win.tue.nl/pub/lilypond and
+ftp://alpha.gnu.org/gnu/lilypond/
 
-       (gdb) backtrace 12
-       #0  Interval::operator+= (this=0x11fffec60..)
-           at ../flower/interval.hh:50
-       #1  0x12005195c in Item::width (this=0x14008a680) at src/item.cc:39
-       #2  0x12008fdbc in itemlist_width (its=0x11fffed58 ..
-         :
-         :
 
-Than it would help if you send a dump of the Interval and the Item
-(use: C<print *this> or use GNU LilyPond C<print()> methods).
+For programs which are part of the GNU music project, the following
+mailing list have been setup:
 
-This is a beta version of GNU LilyPond. Please send your helpful comments
-and patches to me (see AUTHORS section)
 
-GNU LilyPond is updated very frequently, the latest version is always available at:
-ftp://pcnov095.win.tue.nl/pub/lilypond.
+=over 4
 
+=item info-gnu-music@gnu.org
 
-=head1 FILES
+For information on the GNU Music project, to subscribe: send mail with
+subject "subscribe" to info-gnu-music-request@gnu.org
 
-=over 5
+=item help-gnu-music@gnu.org
 
-=item F<symbol.ini>
-The initialisation file with symbol tables etc. It
-includes files from the directory F<init/>.
+For help with programs from the GNU music project.  To subscribe: send
+mail with subject "subscribe" to
+help-gnu-music-request@gnu.org
 
-=back
+=item bug-gnu-music@gnu.org
 
-=head1 ENVIRONMENT
+If you have bugreports, you should send them to this list.  If you want
+to read all bugreports, you should subscribe to this list.  To
+subscribe: send mail with subject "subscribe" to
+bug-gnu-music-request@gnu.org
 
-B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
+=item gnu-music-discuss@gnu.org,
 
-=head1 SEE ALSO
+For discussions concerning the GNU Music project, to subscribe: send
+mail with subject "subscribe" to
+gnu-music-discuss-request@gnu.org,
 
-mudela(5)
 
-There are some documentation files  in the subdirectory F<Documentation/>,
-among others: lilygut,  error, faq,
+=back
 
-http://www.stack.nl/~hanwen/lilypond/index.html
+Announces of new versions will be sent to info-gnu-music and
+gnu-music-discuss.
 
 =head1  REMARKS
 
@@ -293,22 +303,27 @@ than the names being similar :-)
 (for a  detailed changelog, see F<NEWS>)
 
 GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane
-MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen
+MusiXTeX macro package for TeX.  A friend of mine, Jan Nieuwenhuizen
 wrote the first 44 versions (0.01 to 0.44), then his program caught my
 attention, and I was slowly sucked in to the interesting problem of
-easily producing beautifully printed music. I contributed some
-code. We soon realised that MPP's design was too fundamentally broken
-to be repaired. It was decided to rewrite MPP.  We debated a lot about
-the requirements to an inputformat (fall 1995). I sat down and started
+easily producing beautifully printed music.  I contributed some
+code.  We soon realised that MPP's design was too fundamentally broken
+to be repaired, so it was decided to rewrite MPP.  We debated a lot about
+the requirements to an inputformat (fall 1995).  I sat down and started
 with a parser-first, bottom-up rewrite called mpp95 (which totally
 failed, obviously).
 
 After long and hard thinking, I came up with an algorithm for the
 horizontal spacing of multiple staffs (april 1996) I coded it (and did
-not test it). After starting with this fundamental piece, I slowly
+not test it).  After starting with this fundamental piece, I slowly
 added the stages which come before spacing, and after.  A half year
-later later, I had a first working version, (october 1996).  I
-announced Patchlevel 0.0.7 (or 8) to the mutex list after asking some
-technical details on spacing; it was downloaded approximately 4 times.
-Then I got the hang of it, and in the subsequent two months, I coded
-until it had doubled in size (pl 23).
+later, I had a first working version, (october 1996).  I announced
+Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical
+details on spacing; it was downloaded approximately 4 times.  Then I
+got the hang of it, and in the subsequent two months, I coded until it
+had doubled in size (pl 23).
+
+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.
+