]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/faq.pod
release: 0.1.26
[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.
8
9 =head2 Installing
10
11 Q: I get all kinds of errors while  compiling parser.cc
12
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.
17
18 If the problem persists, then please mail me.
19
20 Q: Some of your neat scripts fail, what directories do you use:
21
22 A: [This only applies if you don't do C<make install>, and develop out
23 of the source directory]
24         
25         ~/something/
26
27 which contains:
28
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.
36
37 If you don't use patches, you'd probably want to symlink
38
39         lilypond -> lilypond-x.y.z
40
41 =head2 Language: mudela
42
43 Q: Why can't you type C<#c> in stead of C<cis> ?
44
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)
48
49 We're not sure on leaving out this feature. If you think this is a
50 good idea, please let us know.
51
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
54
55         c# c    % no way! 
56
57 in stead of:
58
59         cis cis
60         #c #c
61
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.
64
65
66 Q: What is C<cis> anyway
67
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.
73
74 We chose the Dutch system, because we're dutch. You are free to chose
75 whatever names you like; they are user definable.
76
77 Q: I can type
78
79         <a c> <e g>
80
81 to make a few chords, but why do I have to type
82
83
84         < { a~ e } { c ~ g } >
85
86 instead of
87
88         <a~ c~> <e g>
89
90 to generate ties between the chords?
91
92 A: When you type 
93
94         <a c> <e g>
95
96 this is shorthand for
97
98         < { a } { c } > < { e } { g } >
99
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:
105
106         < { a ~ e }
107           { c ~ g }
108         >
109
110 Q: and where do the beams come into this picture?
111
112 A: Beams are voicegroup-wide, and may be entered in any part of the
113 voicegroup:
114
115         < { [a ~ e] } { c ~ g } >
116         < { [a ~ e } { c ~ g] } >
117         < { [a ~ e] } { [c ~ g] } >
118
119 These all give the same result.
120
121 Q: Why are [] around the notes, and () inbetween?
122
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
126
127         a()a()a
128
129 Q: I want to insert some TeX commands
130
131 A: You shouldn't: it's against LilyPond philosophy to have typesetting
132 commands in the mudela source. Moreover, this would be difficult. The
133 manner in which Request (the basic building blocks of mudela) are
134 translated into printable items is complex: it is not always possible
135 to associate one Request with one Item or Spanner.
136
137 As a further notice, we want to move away from TeX (and perhaps
138 output PostScript or render to an X window too)
139
140 =head2 Miscellaneous
141
142 Q: Do you support pop songs (chords, single staff, lyrics)?
143
144 A: Yes, see the twinkle-pop example
145
146 Q: Do you support guitar chord diagrams?
147
148 A: No, not yet. We ourselves don't play guitar, and don't know the
149 fine points of this notation.  We would welcome anyone who could give
150 this a try.
151
152 Q: Do you support TAB notation
153
154 A: No. The same as for the previous question goes, but TAB is a lot
155 more work than diagrams (TAB needs modification of Parser, Lexer,
156 Notehead, Stem, and stem-code. )
157
158 Q: How do I change the TeX layout?
159
160 A: See lilyponddefs.tex, it has some comments.
161
162 Q: How do I learn the C++ code?
163
164 A: The entry point is in main(). Good luck. :-)
165
166 Seriously, read, reread and reread lilygut and CodingStyle, and
167 just start anywhere. 
168
169 Anywhere? Well, most of the comment doco are in the header files, so
170 your best bet would be C<less lily/include/*.hh>. Some of the most
171 important data-structures are to be found in:
172
173         - p-col.hh
174         - *request.hh
175         - engraver.hh
176         - performer.hh
177         - translator.hh
178         - score-elem.hh
179         - music.hh
180         - music-list.hh
181         - music-iterator.hh
182         - item.hh
183         - spanner.hh
184
185
186 Q: Why GPL?
187
188 A: Yes.
189
190 Q: Could you implement feature XXXX? It is really easy, just extend
191 the syntax to allow YYYY!
192
193 A: If it is reasonable, I'll add XXXX to the TODO list. In general
194 finding a cute syntax (such as YYYY) isn't very hard. The complicated
195 issue how to adapt the internals to do XXXX. The parser is really a
196 simple front end to the complicated internals. 
197
198 Q: Why do I need g++ >= 2.7?
199
200 A: By using g++, GNU LilyPond is portable to all platforms which support
201 g++ (there are quite a few). Not having to support other compilers
202 saves us a I<lot> of trouble. 
203
204 =head2 Running
205
206 Q: I don't get midi-output, even if I use B<-M>
207
208 A: Your \score should include a \midi block, eg.
209
210         \score {
211                 \melodic { c c g g }
212                 \paper {}       
213                 \midi {
214                         \output "myfile.mid";
215                         \tempo 4=70;
216                 }
217
218 The B<-M> option was added to LilyPond because processing the \paper
219 block is so slow.
220
221 Q: I get 
222
223         can't load library 'libflower.so'
224
225 A: You are using the dynamically compiled Flower library. Please set
226 LD_LIBRARY_PATH to a directory containing F<libflower.so>
227
228 =head2 DOZE
229
230 Q: I want a DOS/NT/W95 port.
231
232 A.0: Reconsider.  Try Linux.  It's fun!
233
234 A.1: Currently (0.0.27), GNU LilyPond (and flowerLib) compiles, 
235 links and runs on Windows-nt, using Cygnus' gnu port (release b17.1). 
236 I (JCN) only had to make a minor workaround for missing library calls.  
237 Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond 
238 type C<make>. (I am not promising to maintain this platform, it is just
239 that when forced into doze, i'm sometimes too lazy to reboot.)
240
241 A.2: I haven't had time to find a GCC crosscompiler (I<with> g++ and
242 libg++, mind you) to DOS/Windows (in rpm, please :-)
243
244
245 Q: I just love to blindly run the (sometimes bit stale) .exe's you distribute. 
246 Why do i need cygwin.dll?
247
248 A: It's all in this cut-n-paste:
249
250 Minimalist GNU-Win32 Readme                   
251 version 0.1.3                           
252 March 20, 1997                       
253 Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
254
255 [...]
256
257 0.3 Fixes and Improvements          
258
259 [...]
260 In the "coming soon" category I have a version of the GNU Standard C++
261 library ported to Mingw32. This means you can use iostreams, complex
262 numbers and all those neat STL (Standard Template Library) things
263 without needing the Cygwin DLL. I hope to put this port up for
264 downloading soon (along with the source of course).
265        
266 [...] 
267
268 3.2 C++ Support                                                         
269
270 To add C++ Support to the above the following extra files are required: 
271
272 In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-    
273 961023:                                                                         
274         cc1plus.exe                                                   
275
276 Note that this does not include support for the standard C++ libraries
277 (only the C run time libraries) or for iostreams. That support is still
278 only available with the Cygwin32 API.
279