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