=head1 NAME FAQ - GNU LilyPond FAQs =head1 DESCRIPTION Some questions that have been answered before. =head2 Installing Q: I get all kinds of errors while compiling parser.cc A: LilyPond uses features of bison version 1.25. Please confirm that you are using a version 1.25 or better. Don't forget to do "make clean" after installing it If the problem persists, then please mail me. =head2 Language: mudela Q: Why can't you type C<#c> in stead of C ? A: We think that C<#c> looks as if you are entering the symbols to print (which you are not; remember, you're entering the musical content in Mudela) We're not sure on leaving out this feature. If you think this is a good idea, please let us know. Be warned we will I allow you to leave out the C<#> if the note already has an accidental. We won't allow c# c % no way! in stead of: cis cis #c #c Q: I can type to make a few chords, but why do I have to type < { a~ e } { c ~ g } > instead of to generate ties between the chords? A: When you type this is shorthand for < { a } { c } > < { e } { g } > Ties have to be confined to `voices', and the a and the e are in different {} blocks, so they are in different voices. You should view the desired construct as a "generalised chord" (two voices stacked vertically). It might help you visualise this by using the following formatting: < { a ~ e } { c ~ g } > Q: and where do the beams come into this picture? A: Beams are voicegroup-wide, and may be entered in any part of the voicegroup: < { [a ~ e] } { c ~ g } > < { [a ~ e } { c ~ g] } > < { [a ~ e] } { [c ~ g] } > These all give the same result. Q: Why are [] around the notes, and () inbetween? A: [] designate beams, a note can only be in one beam at the same time. () is a slur, which connects notes. You need to be able to specify a()a()a Q: Why shouldn't I put all commands (\clef, \meter) inside the music? A: You should do what you like, but at some time we will enable quoting of music ("Stichnoten"). Besides if you are going to type an orchestral score, then you'd probably want to enter most of the meter, repeat commands only once. Q: I want to insert some TeX commands A: You shouldn't: it's against LilyPond philosophy to have typesetting commands in the mudela source. Moreover, this would be difficult. The manner in which Request (the basic building blocks of mudela) are translated into printable items is complex: it is not always possible to associate one Request with one Item or Spanner. As a further notice, we want to move away from TeX (and perhaps output PostScript or render to an X window too) =head2 Miscellaneous Q: How do I change the TeX layout? A: See lilyponddefs.tex, it has some comments. Q: How do I learn the C++ code? A: The entry point is in main(). Good luck. :-) Seriously, read, reread and reread lilygut and CodingStyle, and just start anywhere. Anywhere? Well, most of the comment doco are in the header files, so your best bet would be C. Some of the most important data-structures are to be found in: - p-col.hh - *request.hh - register.hh - score-elem.hh - input-music.hh - linespace.hh - item.hh - spanner.hh - voice.hh Q: Why GPL? A: Yes. Q: Could you implement feature XXXX? It is really easy, just extend the syntax to allow YYYY! 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 simple front end to the complicated internals. Q: Why do I need g++ >= 2.7? A: By using g++, GNU LilyPond is portable to all platforms which support g++ (there are quite a few). Not having to support other compilers saves us a I of trouble. GNU LilyPond and FlowerLib use: =over 4 =item * builtin bool =item * 64 bit integral type long long =item * typeof =item * operator ? =item * the new for-scope =item * class Rational (libg++) =back =head2 Running Q: I get can't load library 'libflower.so' A: You are using the dynamically compiled Flower library. Please set LD_LIBRARY_PATH to a directory containing F =head2 DOZE Q: I want a DOS/NT/W95 port. A.0: Reconsider. Try Linux/GNU. It's fun! A.1: Currently (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links and runs on windhoos-nt, using the cygnus gnu port (release b17.1). I (JCN) only had to make a minor workaround for missing library calls. Have a look at http://www.cygnus.com/gnu-win32. To make GNU LilyPond type C. (I am not promising to maintain this platform, it is just 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 g++ and libg++, mind you) to DOS/win (in rpm, please :). Q: I-m dozed enough to run the (sometimes bit stale) .exe-s you distribute. Why do i need cygwin.dll? A: It-s all in this cut-n-paste: Minimalist GNU-Win32 Readme version 0.1.3 March 20, 1997 Colin Peters [...] 0.3 Fixes and Improvements [...] In the "coming soon" category I have a version of the GNU Standard C++ library ported to Mingw32. This means you can use iostreams, complex numbers and all those neat STL (Standard Template Library) things without needing the Cygwin DLL. I hope to put this port up for downloading soon (along with the source of course). [...] 3.2 C++ Support To add C++ Support to the above the following extra files are required: In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2- 961023: cc1plus.exe Note that this does not include support for the standard C++ libraries (only the C run time libraries) or for iostreams. That support is still only available with the Cygwin32 API.