]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/faq.pod
release: 0.0.67
[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           lilypond      # the directory as unpacked from the tarball
25           releases      # directory for .tar.gz releases
26           patches       # directory for patches between different releases
27
28 ~/something/lilypond/bin is in the PATH, and contains symlinks to the
29 compiled executables.
30
31 =head2 Language: mudela
32
33 Q: Why can't you type C<#c> in stead of C<cis> ?
34
35 A: We think that C<#c> looks as if you are entering the symbols to
36 print (which you are not; remember, you're entering the musical
37 content in Mudela)
38
39 We're not sure on leaving out this feature. If you think this is a
40 good idea, please let us know.
41
42 Be warned we will I<not> allow you to leave out the C<#> if the note
43 already has an accidental. We won't allow
44
45         c# c    % no way! 
46
47 in stead of:
48
49         cis cis
50         #c #c
51
52
53 Q: I can type
54
55         <a c> <e g>
56
57 to make a few chords, but why do I have to type
58
59
60         < { a~ e } { c ~ g } >
61
62 instead of
63
64         <a~ c~> <e g>
65
66 to generate ties between the chords?
67
68 A: When you type 
69
70         <a c> <e g>
71
72 this is shorthand for
73
74         < { a } { c } > < { e } { g } >
75
76 Ties have to be confined to `voices', and the a and the e are in
77 different {} blocks, so they are in different voices. You should view
78 the desired construct as a "generalised chord" (two voices stacked
79 vertically). It might help you visualise this by using the following
80 formatting:
81
82         < { a ~ e }
83           { c ~ g }
84         >
85
86 Q: and where do the beams come into this picture?
87
88 A: Beams are voicegroup-wide, and may be entered in any part of the
89 voicegroup:
90
91         < { [a ~ e] } { c ~ g } >
92         < { [a ~ e } { c ~ g] } >
93         < { [a ~ e] } { [c ~ g] } >
94
95 These all give the same result.
96
97 Q: Why are [] around the notes, and () inbetween?
98
99 A: [] designate beams, a note can only be in one beam at the same
100 time. () is a slur, which connects notes.  You need to be able to 
101 specify
102
103         a()a()a
104
105 Q: Why shouldn't I put all commands (\clef, \meter) inside the music?
106
107 A: You should do what you like, but at some time we will enable
108 quoting of music ("Stichnoten"). Besides if you are going to type an
109 orchestral score, then you'd probably want to enter most of the meter,
110 repeat commands only once.
111
112 Q: I want to insert some TeX commands
113
114 A: You shouldn't: it's against LilyPond philosophy to have typesetting
115 commands in the mudela source. Moreover, this would be difficult. The
116 manner in which Request (the basic building blocks of mudela) are
117 translated into printable items is complex: it is not always possible
118 to associate one Request with one Item or Spanner.
119
120 As a further notice, we want to move away from TeX (and perhaps
121 output PostScript or render to an X window too)
122
123 =head2 Miscellaneous
124
125 Q: How do I change the TeX layout?
126
127 A: See lilyponddefs.tex, it has some comments.
128
129 Q: How do I learn the C++ code?
130
131 A: The entry point is in main(). Good luck. :-)
132
133 Seriously, read, reread and reread lilygut and CodingStyle, and
134 just start anywhere. 
135
136 Anywhere? Well, most of the comment doco are in the header files, so
137 your best bet would be C<less lily/include/*.hh>. Some of the most
138 important data-structures are to be found in:
139
140         - p-col.hh
141         - *request.hh
142         - register.hh
143         - score-elem.hh
144         - input-music.hh
145         - linespace.hh
146         - item.hh
147         - spanner.hh
148         - voice.hh
149
150
151 Q: Why GPL?
152
153 A: Yes.
154
155 Q: Could you implement feature XXXX? It is really easy, just extend
156 the syntax to allow YYYY!
157
158 A: If it is reasonable, I'll add XXXX to the TODO list. In general
159 finding a cute syntax (such as YYYY) isn't very hard. The complicated
160 issue how to adapt the internals to do XXXX. The parser is really  a
161 simple front end to the complicated internals. 
162
163 Q: Why do I need g++ >= 2.7?
164
165 A: By using g++, GNU LilyPond is portable to all platforms which support
166 g++ (there are quite a few). Not having to support other compilers
167 saves us a I<lot> of trouble. GNU LilyPond and FlowerLib use:
168
169 =over 4
170
171 =item *
172
173 builtin bool
174
175 =item *
176
177 64 bit integral type long long
178
179 =item *
180
181 typeof
182
183 =item *
184
185 operator <?, operator >?
186
187 =item *
188
189 the new for-scope
190
191 =item    *
192
193 class Rational (libg++)
194
195 =back
196
197 =head2 Running
198
199 Q: I get 
200
201         can't load library 'libflower.so'
202
203 A: You are using the dynamically compiled Flower library. Please set
204 LD_LIBRARY_PATH to a directory containing F<libflower.so>
205
206 =head2 DOZE
207
208 Q: I want a DOS/NT/W95 port.
209
210 A.0: Reconsider.  Try Linux.  It's fun!
211
212 A.1: Currently (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links
213 and runs on windhoos-nt, using the cygnus gnu port (release b17.1). 
214 I (JCN) only had to make a minor workaround for missing library calls.  
215 Have a look at http://www.cygnus.com/gnu-win32.  To make GNU LilyPond type
216 C<make $OSTYPE>. (I am not promising to maintain this platform, it is just 
217 that when having to use doze, i-m sometimes too lazy to reboot.)
218
219 A.2: I haven't had time to find a GCC crosscompiler (I<with> g++ and
220 libg++, mind you) to DOS/win (in rpm, please :).
221
222
223 Q: I-m dozed enough to run the (sometimes bit stale) .exe-s you distribute. 
224 Why do i need cygwin.dll?
225
226 A: It-s all in this cut-n-paste:
227
228 Minimalist GNU-Win32 Readme                   
229 version 0.1.3                           
230 March 20, 1997                       
231 Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
232
233 [...]
234
235 0.3 Fixes and Improvements          
236
237 [...]
238 In the "coming soon" category I have a version of the GNU Standard C++
239 library ported to Mingw32. This means you can use iostreams, complex
240 numbers and all those neat STL (Standard Template Library) things
241 without needing the Cygwin DLL. I hope to put this port up for
242 downloading soon (along with the source of course).
243        
244 [...] 
245
246 3.2 C++ Support                                                         
247
248 To add C++ Support to the above the following extra files are required: 
249
250 In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-    
251 961023:                                                                         
252         cc1plus.exe                                                   
253
254 Note that this does not include support for the standard C++ libraries
255 (only the C run time libraries) or for iostreams. That support is still
256 only available with the Cygwin32 API.
257