=head1 DESCRIPTION
-Some questions that have been answered before.
+Some questions that have been answered before. (note: relative paths
+are meant to be relative to the source directory)
=head2 Installing
+Q: Wow, the webpages look really neat, but if I install the .exe file
+on my windows 3.11 machine, it doesn't work.
+
+A: The dos port is done with the cygnus W32 port of the GNU utils. It
+does I<not> work with windows 3.x; you need NT or w95 (this is not a
+recommendation, btw. We recommend you use Unix, in particular, use
+GNU/Linux)
+
Q: I get all kinds of errors while compiling F<parser.cc>
A: LilyPond uses features of bison version 1.25. Please confirm that
A: [This only applies if you don't do C<make install>, and develop out
of the source directory]
-
+I have a directory which contains all music related stuff,
+
~/something/
which contains:
lilypond/ # the directory as unpacked from the tarball
releases/ # directory for .tar.gz releases
patches/ # directory for patches between different releases
- test/
+ test/ # create tarballs and do diffs from this directory
~/something/lilypond/bin is in the PATH, and contains symlinks to the
-compiled executables.
+compiled executables. For some of the scripts to work, you have to set
+
+ LILYPOND_SOURCEDIR=/home/myself/something/lilypond
+
+in the environment.
If you don't use patches, you'd probably want to symlink
We're not sure on leaving out this feature. If you think this is a
good idea, please let us know.
-Be warned we will I<not> allow you to leave out the C<#> if the note
-already has an accidental. We won't allow
- c# c % no way!
+Q: Why do I have to type the accidentals to the note if I specified them?
-in stead of:
+A: Take this example
cis cis
- #c #c
-Why, you might ask? Because independently of how it was written, you
-would say that you are playing and reading "two C-sharp" notes.
+Independently of how it was written and what the current key was, you
+would say that you are playing and reading "two C-sharp" notes. We
+have tried to make the language somewhat context-free. Of course
+sheet music is not context-free. Unfortunately, sheet music is also 2
+dimensional, and ASCII is not.
+
+Technically it would be feasible to have the Interpreting phase do
+tricky things to add (or leave out) the accidentals, but we think that
+it is impractical: it hampers the readability and portability of your
+source, since you need LilyPond to fill in the details and actually
+make sense of it.
Q: What is C<cis> anyway
a()a()a
+
Q: I want to insert some TeX commands
A: You shouldn't: it's against LilyPond philosophy to have typesetting
output PostScript or render to an X window too), so using TeX will
make sources non-portable at some time.
-=head2 Miscellaneous
+=head2 Do you support ...
Q: Do you support pop songs (chords, single staff, lyrics)?
-A: Yes, see the F<twinkle-pop> example
+A: Yes, see the F<twinkle-pop> example.
Q: Do you support guitar chord diagrams?
fine points of this notation. We would welcome anyone who could give
this a try.
-Q: Do you support TAB notation
+Q: Do you support TAB notation?
A: No. The same as for the previous question goes, but TAB is a lot
more work than diagrams (TAB needs modification of Parser, Lexer,
Staff, Notehead, Stem code and all the code that creates these graphic
elements.)
+Q: Do you support multiple staff-sizes?
+
+A: Yes and no. At this time you can choose between 11, 13, 16, 19,
+20, 23 and 20 pt staff-size. The sizes can't be changed per staff
+(yet). Look at F<standchen.ly> for an example.
+
+
+=head2 How do I ....
+
Q: How do I change the TeX layout?
A: See F<lilyponddefs.tex>, it has some comments.
-Q: How do I learn the C++ code?
+Q: How do I place lyrics under I<each> of the staves in a score, as in
+choral music. I can work out how to put lyrics for each line all under
+the top line, or at the bottom but not between!
+
+A: You change the order lyrics and staves. You have to name all
+staves (lyric and melodic), otherwise they will end up in the same
+staff/lyricline
-A: The entry point is in C<main()>. Good luck. :-)
+
+ \score {
+ < \melodic \type Staff = "treble" \trebleMelody
+ \lyric \type Lyrics = "tlyrics" \trebtext
+ \type Staff = "bass" \melodic \bassMelody
+ \lyric \type Lyrics = "blyrics" \basstext
+ >
+ \paper { }
+ }
-Seriously, read, reread and reread lilygut and CodingStyle, and
-just start anywhere.
-Anywhere? Well, most of the comment doco are in the header files, so
-your best bet would be C<less lily/include/*.hh>. Some of the most
-important data-structures are to be found in:
+Q: How do I put more than one marking on a note.
- - p-col.hh
- - *request.hh
- - engraver.hh
- - performer.hh
- - translator.hh
- - score-elem.hh
- - music.hh
- - music-list.hh
- - music-iterator.hh
- - item.hh
- - spanner.hh
+A: You can stack them
+ c4^"a"^"b"
+
+or use spacing-notes to put markings at different horizontal positions
+
+ < c1
+ { s4\ff s4^"text" s4-\marcato s4 }
+ >
-Q: Why GPL?
-A: Yes.
+
+=head2 Development
Q: Could you implement feature XXXX? It is really easy, just extend
the syntax to allow YYYY!
issue how to adapt the internals to do XXXX. The parser is really a
simple front end to the complicated internals.
+Q: Can I join in on LilyPond development? How do I do this?
+
+A: LilyPond development is open for anyone who wants to join. We try
+to use a Bazaar style development model for LilyPond, see
+http://locke.ccil.org/~esr/writings/cathedral.html. This means:
+frequent releases, everyone can send in a patch or do suggestions and
+all development discussions are public.
+
+To be precise, discussions take place on the gnu-music-discuss mailing
+list, which is open for subscription to everyone.
+
Q: I want to implement XXXX! Should I do this?
"fait accompli", ie., to send me a patch.
+Q: I made some code, how do I get you to include it?
+
+A: Send in a patch:
+
+ diff -urN old-file new-file > patch
+
+or
+
+ diff -urN old-directory/ new-directory/ > patch
+
+Alternatively, you can use F<bin/make-patch.py>. Don't forget to put
+in your name and e-mail address.
+
+Q: How do I learn the C++ code?
+
+A: The entry point is in C<main()>. Good luck. :-)
+
+Seriously, read, reread and reread internals and CodingStyle, and
+just start anywhere.
+
+Anywhere? Well, most of the comment doco are in the header files, so
+your best bet would be C<less lily/include/*.hh>. Some of the most
+important data-structures are to be found in:
+
+ - *request.hh
+ - engraver.hh
+ - performer.hh
+ - translator.hh
+ - score-elem.hh
+ - music.hh
+ - music-list.hh
+ - music-iterator.hh
+ - item.hh
+ - spanner.hh
+
+
+Q: Why GPL?
+
+A: Yes.
+
+
Q: Why do I need g++ >= 2.7?
A: By using g++, GNU LilyPond is portable to all platforms which support
=head2 Running
-Q: I don't get midi-output, even if I use B<-M>
+Q: There are lots of warning messages for the printing, all
+beginning with:
+
+ dvilj4l: warning: Invalid keyword or value in \special -
+
+A: You should use dvips and ghostscript to print it: the slurs and
+beams are PS C<\special> commands
+
+
+Q: My symbols are all messed up after I upgraded, and I get
+dvi-checksum errors!
+
+A: We mucked with the fonts in the upgrade. Remove I<all> previous
+fonts, including the .pk and .tfm fonts in F</var/lib/texmf>. A
+script automating this has been included, see F<bin/clean-fonts.sh>
+
+Q: I don't get midi-output, even if I use B<-M>!
A: Your \score should include a \midi block, eg.
\output "myfile.mid";
\tempo 4=70;
}
+ }
The B<-M> option was added to LilyPond because processing the \paper
block is so slow.