lilypond-0.1.33
[lilypond.git] / Documentation / faq.pod
blobb121c5c05b91366333831967172cd240d72e67e8
1 =head1 NAME
3 FAQ - GNU LilyPond FAQs
5 =head1 DESCRIPTION
7 Some questions that have been answered before.
9 =head2 Installing
11 Q: I get all kinds of errors while  compiling F<parser.cc>
13 A: LilyPond uses features of bison version 1.25. Please confirm that
14 you are using a version 1.25 or better, that is B<GNU> bison
15 B<1.25>. Don't forget to do "make clean" after installing it. Don't
16 forget to remove the stale F<bison.simple> as well.
18 If the problem persists, then please mail me.
20 Q: Some of your neat scripts fail, what directories do you use:
22 A: [This only applies if you don't do C<make install>, and develop out
23 of the source directory]
24         
25         ~/something/
27 which contains:
29           lilypond/     # the directory as unpacked from the tarball
30           releases/     # directory for .tar.gz releases
31           patches/      # directory for patches between different releases
32           test/
33         
34 ~/something/lilypond/bin is in the PATH, and contains symlinks to the
35 compiled executables.
37 If you don't use patches, you'd probably want to symlink
39         lilypond -> lilypond-x.y.z
41 =head2 Language: mudela
43 Q: Why can't you type C<#c> in stead of C<cis> ?
45 A: We think that C<#c> looks as if you are entering the symbols to
46 print (which you are not; remember, you're entering the musical
47 content in Mudela)
49 We're not sure on leaving out this feature. If you think this is a
50 good idea, please let us know.
52 Be warned we will I<not> allow you to leave out the C<#> if the note
53 already has an accidental. We won't allow
55         c# c    % no way! 
57 in stead of:
59         cis cis
60         #c #c
62 Why, you might ask? Because independently of how it was written, you
63 would say that you are playing and reading "two C-sharp" notes.
66 Q: What is C<cis> anyway
68 A: C<cis> is the dutch naming for C-sharp. The notes are named
69 a, b,.., g. The suffix -is means sharp, and -es flat. This system is
70 common in a number of languages (such as swedish, dutch, german.)
71 Certain other languages (such as English, French and Italian) just add
72 the word for "sharp" to the notename.
74 We chose the Dutch system, because we're dutch. You are free to chose
75 whatever names you like; they are user definable.
77 Q: I can type
79         <a c> <e g>
81 to make a few chords, but why do I have to type
84         < { a~ e } { c ~ g } >
86 instead of
88         <a~ c~> <e g>
90 to generate ties between the chords?
92 A: When you type 
94         <a c> <e g>
96 this is shorthand for
98         < { a } { c } > < { e } { g } >
100 Ties have to be confined to `voices', and the a and the e are in
101 different {} blocks, so they are in different voices. You should view
102 the desired construct as a "generalised chord" (two voices stacked
103 vertically). It might help you visualise this by using the following
104 formatting:
106         < { a ~ e }
107           { c ~ g }
108         >
110 Q: and where do the beams come into this picture?
112 A: Beams are voicegroup-wide, and may be entered in any part of the
113 voicegroup:
115         < { [a ~ e] } { c ~ g } >
116         < { [a ~ e } { c ~ g] } >
117         < { [a ~ e] } { [c ~ g] } >
119 These all give the same result.
121 Q: Why are [] around the notes, and () inbetween?
123 A: [] designate beams, a note can only be in one beam at the same
124 time. () is a slur, which connects notes.  You need to be able to 
125 specify
127         a()a()a
129 Q: how do I place lyrics under _each_ of the staves in a score, as in
130 choral mus$ I can work out how to put lyrics for each line all under
131 the top line, or at the bottom but not between!
132         
133 A: You change the order lyrics and staves.  You have to name all
134 staves (lyric and melodic), otherwise they will end up in the same
135 staff/lyricline
137         
138         \score {
139                 < \melodic \type Staff = "treble" \trebleMelody
140                   \lyric   \type Lyrics = "tlyrics" \trebtext
141                   \type Staff = "bass" \melodic \bassMelody        
142                   \lyric   \type Lyrics = "blyrics" \basstext    
143                 >
144                 \paper {  }
145         }
150 Q: I want to insert some TeX commands
152 A: You shouldn't: it's against LilyPond philosophy to have typesetting
153 commands in the mudela source. Moreover, this would be difficult. The
154 manner in which Request (the basic building blocks of mudela) are
155 translated into printable items is complex: it is not always possible
156 to associate one Request with one Item or Spanner.
158 As a further notice, we want to move away from TeX (and perhaps
159 output PostScript or render to an X window too), so  using TeX will
160 make sources non-portable at some time.
162 =head2 Miscellaneous
164 Q: Do you support pop songs (chords, single staff, lyrics)?
166 A: Yes, see the F<twinkle-pop> example
168 Q: Do you support guitar chord diagrams?
170 A: No, not yet. We ourselves don't play guitar, and don't know the
171 fine points of this notation.  We would welcome anyone who could give
172 this a try.
174 Q: Do you support TAB notation
176 A: No. The same as for the previous question goes, but TAB is a lot
177 more work than diagrams (TAB needs modification of Parser, Lexer,
178 Staff, Notehead, Stem code and all the code that creates these graphic
179 elements.)
181 Q: How do I change the TeX layout?
183 A: See F<lilyponddefs.tex>, it has some comments.
185 Q: How do I learn the C++ code?
187 A: The entry point is in C<main()>. Good luck. :-)
189 Seriously, read, reread and reread lilygut and CodingStyle, and
190 just start anywhere. 
192 Anywhere? Well, most of the comment doco are in the header files, so
193 your best bet would be C<less lily/include/*.hh>. Some of the most
194 important data-structures are to be found in:
196         - p-col.hh
197         - *request.hh
198         - engraver.hh
199         - performer.hh
200         - translator.hh
201         - score-elem.hh
202         - music.hh
203         - music-list.hh
204         - music-iterator.hh
205         - item.hh
206         - spanner.hh
209 Q: Why GPL?
211 A: Yes.
213 Q: Could you implement feature XXXX? It is really easy, just extend
214 the syntax to allow YYYY!
216 A: If it is reasonable, I'll add XXXX to the TODO list. In general
217 finding a cute syntax (such as YYYY) isn't very hard. The complicated
218 issue how to adapt the internals to do XXXX. The parser is really a
219 simple front end to the complicated internals. 
222 Q: I want to implement XXXX!  Should I do this?
224 A: There might be better ways of doing XXXX, so it's a good thing to
225 ask about this before you start hacking.  If you want to keep in touch
226 with current developments, you should subscribe to the mailing list
227 (see the "links" section of the documentation).
230 Q: I want to implement XXXX!  How should I do this?
232 A: Your best bet of getting me to include code, is to present it as a
233 "fait accompli", ie., to send me a patch.
236 Q: Why do I need g++ >= 2.7?
238 A: By using g++, GNU LilyPond is portable to all platforms which support
239 g++ (there are quite a few). Not having to support other compilers
240 saves us a I<lot> of trouble. 
242 =head2 Running
244 Q: I don't get midi-output, even if I use B<-M>
246 A: Your \score should include a \midi block, eg.
248         \score {
249                 \melodic { c4 c g g }
250                 \paper {}       
251                 \midi {
252                         \output "myfile.mid";
253                         \tempo 4=70;
254                 }
256 The B<-M> option was added to LilyPond because processing the \paper
257 block is so slow.
259 Q: A lot of musical stuff doesn't make it to the MIDI file (dynamics,
260 articulation, etc).
262 A: The MIDI output was originally put in as a proof that MIDI could be
263 done, and as a method of proof"reading" the input.  The MIDI support
264 is by no means finished. 
266 Q: I get 
268         can't load library 'libflower.so'
270 A: You are using the dynamically compiled Flower library. Please set
271 LD_LIBRARY_PATH to a directory containing F<libflower.so>
273 =head2 DOZE
275 Q: I want a DOS/NT/W95 port.
277 A.0: Reconsider.  Try Linux.  It's fun!
279 A.1: Currently (0.0.27), GNU LilyPond (and flowerLib) compiles, 
280 links and runs on Windows-nt, using Cygnus' gnu port (release b17.1). 
281 I (JCN) only had to make a minor workaround for missing library calls.  
282 Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond 
283 type C<make>. (I am not promising to maintain this platform, it is just
284 that when forced into doze, i'm sometimes too lazy to reboot.)
286 A.2: I haven't had time to find a Linux GCC crosscompiler (I<with> g++
287 and libg++, mind you) to DOS/Windows (in rpm, please :-)
289 A.3: If you are knowledgeable enough to make w32 compiles from time to
290 time, please do so!  We want to keep away from w32 as far as possible.
292 Q: I just love to blindly run the (sometimes bit stale) .exe's you distribute. 
293 Why do i need cygwin.dll?
295 A: It's all in this cut-n-paste:
297 Minimalist GNU-Win32 Readme                   
298 version 0.1.3                           
299 March 20, 1997                       
300 Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
302 [...]
304 0.3 Fixes and Improvements          
306 [...]
307 In the "coming soon" category I have a version of the GNU Standard C++
308 library ported to Mingw32. This means you can use iostreams, complex
309 numbers and all those neat STL (Standard Template Library) things
310 without needing the Cygwin DLL. I hope to put this port up for
311 downloading soon (along with the source of course).
312        
313 [...] 
315 3.2 C++ Support                                                         
317 To add C++ Support to the above the following extra files are required: 
319 In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-    
320 961023:                                                                         
321         cc1plus.exe                                                   
323 Note that this does not include support for the standard C++ libraries
324 (only the C run time libraries) or for iostreams. That support is still
325 only available with the Cygwin32 API.