]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/faq.pod
release: 0.0.68pre
[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. Don't forget to do "make
15 clean" after installing it
16
17 If the problem persists, then please mail me.
18
19 Q: Some of your neat scripts fail, what directories do you use:
20
21 A:
22         
23         ~/something/
24
25 which contains:
26
27           lilypond/     # the directory as unpacked from the tarball
28           releases/     # directory for .tar.gz releases
29           patches/      # directory for patches between different releases
30           test/
31         
32 ~/something/lilypond/bin is in the PATH, and contains symlinks to the
33 compiled executables.
34
35 If you don't use patches, you'd probably want to symlink
36
37         lilypond -> lilypond-x.y.z
38
39 =head2 Language: mudela
40
41 Q: Why can't you type C<#c> in stead of C<cis> ?
42
43 A: We think that C<#c> looks as if you are entering the symbols to
44 print (which you are not; remember, you're entering the musical
45 content in Mudela)
46
47 We're not sure on leaving out this feature. If you think this is a
48 good idea, please let us know.
49
50 Be warned we will I<not> allow you to leave out the C<#> if the note
51 already has an accidental. We won't allow
52
53         c# c    % no way! 
54
55 in stead of:
56
57         cis cis
58         #c #c
59
60 Why, you might ask? Because independently of how it was written, you
61 would say that you are playing and reading "two C-sharp" notes.
62
63
64 Q: What is C<cis> anyway
65
66 A: C<cis> is the dutch naming for C-sharp. The notes are named
67 a, b,.., g. The suffix -is means sharp, and -es flat. This system is
68 common in a number of languages (such as swedish, dutch, german.)
69 Certain other languages (such as English, French and Italian) just add
70 the word for "sharp" to the notename.
71
72 We chose the Dutch system, because we're dutch. You are free to chose
73 whatever names you like; they are user definable.
74
75 Q: I can type
76
77         <a c> <e g>
78
79 to make a few chords, but why do I have to type
80
81
82         < { a~ e } { c ~ g } >
83
84 instead of
85
86         <a~ c~> <e g>
87
88 to generate ties between the chords?
89
90 A: When you type 
91
92         <a c> <e g>
93
94 this is shorthand for
95
96         < { a } { c } > < { e } { g } >
97
98 Ties have to be confined to `voices', and the a and the e are in
99 different {} blocks, so they are in different voices. You should view
100 the desired construct as a "generalised chord" (two voices stacked
101 vertically). It might help you visualise this by using the following
102 formatting:
103
104         < { a ~ e }
105           { c ~ g }
106         >
107
108 Q: and where do the beams come into this picture?
109
110 A: Beams are voicegroup-wide, and may be entered in any part of the
111 voicegroup:
112
113         < { [a ~ e] } { c ~ g } >
114         < { [a ~ e } { c ~ g] } >
115         < { [a ~ e] } { [c ~ g] } >
116
117 These all give the same result.
118
119 Q: Why are [] around the notes, and () inbetween?
120
121 A: [] designate beams, a note can only be in one beam at the same
122 time. () is a slur, which connects notes.  You need to be able to 
123 specify
124
125         a()a()a
126
127 Q: Why shouldn't I put all commands (\clef, \meter) inside the music?
128
129 A: You should do what you like, but at some time we will enable
130 quoting of music ("Stichnoten"). Besides if you are going to type an
131 orchestral score, then you'd probably want to enter most of the meter,
132 repeat commands only once.
133
134 Q: I want to insert some TeX commands
135
136 A: You shouldn't: it's against LilyPond philosophy to have typesetting
137 commands in the mudela source. Moreover, this would be difficult. The
138 manner in which Request (the basic building blocks of mudela) are
139 translated into printable items is complex: it is not always possible
140 to associate one Request with one Item or Spanner.
141
142 As a further notice, we want to move away from TeX (and perhaps
143 output PostScript or render to an X window too)
144
145 =head2 Miscellaneous
146
147 Q: How do I change the TeX layout?
148
149 A: See lilyponddefs.tex, it has some comments.
150
151 Q: How do I learn the C++ code?
152
153 A: The entry point is in main(). Good luck. :-)
154
155 Seriously, read, reread and reread lilygut and CodingStyle, and
156 just start anywhere. 
157
158 Anywhere? Well, most of the comment doco are in the header files, so
159 your best bet would be C<less lily/include/*.hh>. Some of the most
160 important data-structures are to be found in:
161
162         - p-col.hh
163         - *request.hh
164         - register.hh
165         - score-elem.hh
166         - input-music.hh
167         - linespace.hh
168         - item.hh
169         - spanner.hh
170         - voice.hh
171
172
173 Q: Why GPL?
174
175 A: Yes.
176
177 Q: Could you implement feature XXXX? It is really easy, just extend
178 the syntax to allow YYYY!
179
180 A: If it is reasonable, I'll add XXXX to the TODO list. In general
181 finding a cute syntax (such as YYYY) isn't very hard. The complicated
182 issue how to adapt the internals to do XXXX. The parser is really  a
183 simple front end to the complicated internals. 
184
185 Q: Why do I need g++ >= 2.7?
186
187 A: By using g++, GNU LilyPond is portable to all platforms which support
188 g++ (there are quite a few). Not having to support other compilers
189 saves us a I<lot> of trouble. GNU LilyPond and FlowerLib use:
190
191 =over 4
192
193 =item *
194
195 builtin bool
196
197 =item *
198
199 64 bit integral type long long
200
201 =item *
202
203 typeof
204
205 =item *
206
207 operator <?, operator >?
208
209 =item *
210
211 the new for-scope
212
213 =item    *
214
215 class Rational (libg++)
216
217 =back
218
219 =head2 Running
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 (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links
235 and runs on windhoos-nt, using the 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 type
238 C<make $OSTYPE>. (I am not promising to maintain this platform, it is just 
239 that when having to use 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/win (in rpm, please :).
243
244
245 Q: I-m dozed enough to 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