]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/faq.pod
76ad9e5ddb8806fc6c12339a0115c926e15df5fa
[lilypond.git] / Documentation / faq.pod
1 =head1 NAME
2
3 FAQ - GNU LilyPond FAQs
4
5 =head1 DESCRIPTION
6
7 Some questions that have been answered before. (note: relative paths
8 are meant to be relative to the source directory)
9
10 =head2 Installing
11
12 Q: I get all kinds of errors while  compiling F<parser.cc>
13
14 A: LilyPond uses features of bison version 1.25. Please confirm that
15 you are using a version 1.25 or better, that is B<GNU> bison
16 B<1.25>. Don't forget to do "make clean" after installing it. Don't
17 forget to remove the stale F<bison.simple> as well.
18
19 If the problem persists, then please mail me.
20
21 Q: Some of your neat scripts fail, what directories do you use:
22
23 A: [This only applies if you don't do C<make install>, and develop out
24 of the source directory]
25 I have a directory which contains all music related stuff,
26
27         ~/something/
28
29 which contains:
30
31           lilypond/     # the directory as unpacked from the tarball
32           releases/     # directory for .tar.gz releases
33           patches/      # directory for patches between different releases
34           test/         # create tarballs and do diffs from this directory
35         
36 ~/something/lilypond/bin is in the PATH, and contains symlinks to the
37 compiled executables.  For some of the scripts to work, you have to set
38
39         LILYPOND_SOURCEDIR=/home/myself/something/lilypond
40
41 in the environment.
42
43 If you don't use patches, you'd probably want to symlink
44
45         lilypond -> lilypond-x.y.z
46
47 =head2 Language: mudela
48
49 Q: Why can't you type C<#c> in stead of C<cis> ?
50
51 A: We think that C<#c> looks as if you are entering the symbols to
52 print (which you are not; remember, you're entering the musical
53 content in Mudela)
54
55 We're not sure on leaving out this feature. If you think this is a
56 good idea, please let us know.
57
58
59 Q: Why do I have to type the accidentals to the note if I specified them?
60
61 A: Take this example
62
63         cis cis
64
65 Independently of how it was written and what the current key was, you
66 would say that you are playing and reading "two C-sharp" notes.  We
67 have tried to make the language somewhat context-free.  Of course
68 sheet music is not context-free.  Unfortunately, sheet music is also 2
69 dimensional, and ASCII is not.
70
71 Technically it would be feasible to have the Interpreting phase do
72 tricky things to add (or leave out) the accidentals, but we think that
73 it is impractical: it hampers the readability and portability of your
74 source, since you need LilyPond to fill in the details and actually
75 make sense of it.
76
77
78 Q: What is C<cis> anyway
79
80 A: C<cis> is the dutch naming for C-sharp. The notes are named
81 a, b,.., g. The suffix -is means sharp, and -es flat. This system is
82 common in a number of languages (such as swedish, dutch, german.)
83 Certain other languages (such as English, French and Italian) just add
84 the word for "sharp" to the notename.
85
86 We chose the Dutch system, because we're dutch. You are free to chose
87 whatever names you like; they are user definable.
88
89 Q: I can type
90
91         <a c> <e g>
92
93 to make a few chords, but why do I have to type
94
95
96         < { a~ e } { c ~ g } >
97
98 instead of
99
100         <a~ c~> <e g>
101
102 to generate ties between the chords?
103
104 A: When you type 
105
106         <a c> <e g>
107
108 this is shorthand for
109
110         < { a } { c } > < { e } { g } >
111
112 Ties have to be confined to `voices', and the a and the e are in
113 different {} blocks, so they are in different voices. You should view
114 the desired construct as a "generalised chord" (two voices stacked
115 vertically). It might help you visualise this by using the following
116 formatting:
117
118         < { a ~ e }
119           { c ~ g }
120         >
121
122 Q: and where do the beams come into this picture?
123
124 A: Beams are voicegroup-wide, and may be entered in any part of the
125 voicegroup:
126
127         < { [a ~ e] } { c ~ g } >
128         < { [a ~ e } { c ~ g] } >
129         < { [a ~ e] } { [c ~ g] } >
130
131 These all give the same result.
132
133 Q: Why are [] around the notes, and () inbetween?
134
135 A: [] designate beams, a note can only be in one beam at the same
136 time. () is a slur, which connects notes.  You need to be able to 
137 specify
138
139         a()a()a
140
141
142 Q: I want to insert some TeX commands
143
144 A: You shouldn't: it's against LilyPond philosophy to have typesetting
145 commands in the mudela source. Moreover, this would be difficult. The
146 manner in which Request (the basic building blocks of mudela) are
147 translated into printable items is complex: it is not always possible
148 to associate one Request with one Item or Spanner.
149
150 As a further notice, we want to move away from TeX (and perhaps
151 output PostScript or render to an X window too), so  using TeX will
152 make sources non-portable at some time.
153
154 =head2 Do you support ...
155
156 Q: Do you support pop songs (chords, single staff, lyrics)?
157
158 A: Yes, see the F<twinkle-pop> example.
159
160 Q: Do you support guitar chord diagrams?
161
162 A: No, not yet. We ourselves don't play guitar, and don't know the
163 fine points of this notation.  We would welcome anyone who could give
164 this a try.
165
166 Q: Do you support TAB notation?
167
168 A: No. The same as for the previous question goes, but TAB is a lot
169 more work than diagrams (TAB needs modification of Parser, Lexer,
170 Staff, Notehead, Stem code and all the code that creates these graphic
171 elements.)
172
173 Q: Do you support multiple staff-sizes?
174
175 A: Yes and no.  At this time you can choose between 16 or 20 pt
176 staff-size (you can have other sizes, but you need to tinker with the
177 fonts to get those).  The sizes can't be changed per staff (yet).
178 Look at F<standchen.ly> for an example.
179
180
181 =head2 How do I ....
182
183 Q: How do I change the TeX layout?
184
185 A: See F<lilyponddefs.tex>, it has some comments.
186
187 Q: How do I place lyrics under I<each> of the staves in a score, as in
188 choral music. I can work out how to put lyrics for each line all under
189 the top line, or at the bottom but not between!
190         
191 A: You change the order lyrics and staves.  You have to name all
192 staves (lyric and melodic), otherwise they will end up in the same
193 staff/lyricline
194
195         
196         \score {
197                 < \melodic \type Staff = "treble" \trebleMelody
198                   \lyric \type Lyrics = "tlyrics" \trebtext
199                   \type Staff = "bass" \melodic \bassMelody        
200                   \lyric \type Lyrics = "blyrics" \basstext      
201                 >
202                 \paper {  }
203         }
204
205
206 Q: How do I put more than one marking on a note.
207
208 A: You can stack them 
209
210         c4^"a"^"b"
211
212 or use spacing-notes to put markings at different horizontal positions 
213
214         < c1
215           { s4\ff s4^"text" s4-\marcato s4 }
216         >
217
218
219
220 =head2 Development
221
222 Q: Could you implement feature XXXX? It is really easy, just extend
223 the syntax to allow YYYY!
224
225 A: If it is reasonable, I'll add XXXX to the TODO list. In general
226 finding a cute syntax (such as YYYY) isn't very hard. The complicated
227 issue how to adapt the internals to do XXXX. The parser is really a
228 simple front end to the complicated internals. 
229
230 Q: Can I join in on LilyPond development?  How do I do this?
231
232 A: LilyPond development is open for anyone who wants to join.  We try
233 to use a Bazaar style development model for LilyPond, see
234 http://locke.ccil.org/~esr/writings/cathedral.html.  This means:
235 frequent releases, everyone can send in a patch or do suggestions and
236 all development discussions are public.
237
238 To be precise, discussions take place on the gnu-music-discuss mailing
239 list, which is open for subscription to everyone.
240
241
242 Q: I want to implement XXXX!  Should I do this?
243
244 A: There might be better ways of doing XXXX, so it's a good thing to
245 ask about this before you start hacking.  If you want to keep in touch
246 with current developments, you should subscribe to the mailing list
247 (see the "links" section of the documentation).
248
249
250 Q: I want to implement XXXX!  How should I do this?
251
252 A: Your best bet of getting me to include code, is to present it as a
253 "fait accompli", ie., to send me a patch.
254
255
256 Q: I made some code, how do I get you to include it?
257
258 A: Send in a patch:
259
260         diff -urN old-file new-file > patch
261
262 or 
263
264         diff -urN old-directory/ new-directory/ > patch 
265
266 Alternatively, you can use F<bin/make-patch.py>.  Don't forget to put
267 in your name and e-mail address.
268
269 Q: How do I learn the C++ code?
270
271 A: The entry point is in C<main()>. Good luck. :-)
272
273 Seriously, read, reread and reread internals and CodingStyle, and
274 just start anywhere. 
275
276 Anywhere? Well, most of the comment doco are in the header files, so
277 your best bet would be C<less lily/include/*.hh>. Some of the most
278 important data-structures are to be found in:
279
280         - *request.hh
281         - engraver.hh
282         - performer.hh
283         - translator.hh
284         - score-elem.hh
285         - music.hh
286         - music-list.hh
287         - music-iterator.hh
288         - item.hh
289         - spanner.hh
290
291
292 Q: Why GPL?
293
294 A: Yes.
295
296
297 Q: Why do I need g++ >= 2.7?
298
299 A: By using g++, GNU LilyPond is portable to all platforms which support
300 g++ (there are quite a few). Not having to support other compilers
301 saves us a I<lot> of trouble. 
302
303 =head2 Running
304
305 Q: There are lots of warning messages for the printing, all
306 beginning with: 
307
308         dvilj4l: warning: Invalid keyword or value in \special -
309
310 A: You should use dvips and ghostscript to print it: the slurs and
311 beams are PS C<\special> commands
312
313
314 Q: My symbols are all messed up after I upgraded, and I get
315 dvi-checksum errors!
316
317 A: We mucked with the fonts in the upgrade.  Remove I<all> previous
318 fonts, including the .pk and .tfm fonts in F</var/lib/texmf>.  A
319 script automating this has been included, see F<bin/clean-fonts.sh>
320
321 Q: I don't get midi-output, even if I use B<-M>!
322
323 A: Your \score should include a \midi block, eg.
324
325         \score {
326                 \melodic { c4 c g g }
327                 \paper {}       
328                 \midi {
329                         \output "myfile.mid";
330                         \tempo 4=70;
331                 }
332         }
333
334 The B<-M> option was added to LilyPond because processing the \paper
335 block is so slow.
336
337 Q: A lot of musical stuff doesn't make it to the MIDI file (dynamics,
338 articulation, etc).
339
340 A: The MIDI output was originally put in as a proof that MIDI could be
341 done, and as a method of proof"reading" the input.  The MIDI support
342 is by no means finished. 
343
344 Q: I get 
345
346         can't load library 'libflower.so'
347
348 A: You are using the dynamically compiled Flower library. Please set
349 LD_LIBRARY_PATH to a directory containing F<libflower.so>
350
351 =head2 DOZE
352
353 Q: I want a DOS/NT/W95 port.
354
355 A.0: Reconsider.  Try Linux.  It's fun!
356
357 A.1: Currently (0.0.27), GNU LilyPond (and flowerLib) compiles, 
358 links and runs on Windows-nt, using Cygnus' gnu port (release b17.1). 
359 I (JCN) only had to make a minor workaround for missing library calls.  
360 Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond 
361 type C<make>. (I am not promising to maintain this platform, it is just
362 that when forced into doze, i'm sometimes too lazy to reboot.)
363
364 A.2: I haven't had time to find a Linux GCC crosscompiler (I<with> g++
365 and libg++, mind you) to DOS/Windows (in rpm, please :-)
366
367 A.3: If you are knowledgeable enough to make w32 compiles from time to
368 time, please do so!  We want to keep away from w32 as far as possible.
369
370 Q: I just love to blindly run the (sometimes bit stale) .exe's you distribute. 
371 Why do i need cygwin.dll?
372
373 A: It's all in this cut-n-paste:
374
375 Minimalist GNU-Win32 Readme                   
376 version 0.1.3                           
377 March 20, 1997                       
378 Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
379
380 [...]
381
382 0.3 Fixes and Improvements          
383
384 [...]
385 In the "coming soon" category I have a version of the GNU Standard C++
386 library ported to Mingw32. This means you can use iostreams, complex
387 numbers and all those neat STL (Standard Template Library) things
388 without needing the Cygwin DLL. I hope to put this port up for
389 downloading soon (along with the source of course).
390        
391 [...] 
392
393 3.2 C++ Support                                                         
394
395 To add C++ Support to the above the following extra files are required: 
396
397 In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-    
398 961023:                                                                         
399         cc1plus.exe                                                   
400
401 Note that this does not include support for the standard C++ libraries
402 (only the C run time libraries) or for iostreams. That support is still
403 only available with the Cygwin32 API.
404