]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/faq.pod
release: 0.1.57
[lilypond.git] / Documentation / faq.pod
index b98fa6865cbb25949af2dd939db584173d942424..9611c995d0d571a66023c1bf134166e17cef2a47 100644 (file)
@@ -4,10 +4,19 @@ FAQ - GNU LilyPond FAQs
 
 =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
@@ -20,8 +29,9 @@ If the problem persists, then please mail me.
 Q: Some of your neat scripts fail, what directories do you use:
 
 A: [This only applies if you don't do C<make install>, and develop out
-of the source directory]
-       
+of the source directory] I have a directory which contains all music
+related stuff,
+
        ~/something/
 
 which contains:
@@ -29,10 +39,14 @@ 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
 
@@ -49,18 +63,24 @@ content in Mudela)
 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
@@ -126,6 +146,7 @@ specify
 
        a()a()a
 
+
 Q: I want to insert some TeX commands
 
 A: You shouldn't: it's against LilyPond philosophy to have typesetting
@@ -138,11 +159,11 @@ As a further notice, we want to move away from TeX (and perhaps
 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?
 
@@ -150,29 +171,124 @@ A: No, not yet. We ourselves don't play guitar, and don't know the
 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 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
+
+       
+       \score {
+               < \melodic \type Staff = "treble" \trebleMelody
+                 \lyric \type Lyrics = "tlyrics" \trebtext
+                 \type Staff = "bass" \melodic \bassMelody        
+                 \lyric \type Lyrics = "blyrics" \basstext      
+               >
+               \paper {  }
+       }
+
+
+Q: How do I put more than one marking on a note.
+
+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: How do I get bar numbers?
+
+A: See F<init/engraver.ly>.  You have to uncomment some entries.  To
+do this  `portably' you should redefine some engravers in your own
+source files.  Check out F<init/rhythm.ly>.
+
+=head2 Development
+
+Q: Could you implement feature XXXX? It is really easy, just extend
+the syntax to allow YYYY!
+
+A: If it is reasonable, I'll add XXXX to the TODO list. In general
+finding a cute syntax (such as YYYY) isn't very hard. The complicated
+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?
+
+A: There might be better ways of doing XXXX, so it's a good thing to
+ask about this before you start hacking.  If you want to keep in touch
+with current developments, you should subscribe to the mailing list
+(see the "links" section of the documentation).
+
+
+Q: I want to implement XXXX!  How should I do this?
+
+A: Your best bet of getting me to include code, is to present it as a
+"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 lilygut and CodingStyle, and
+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:
 
-       - p-col.hh
        - *request.hh
        - engraver.hh
        - performer.hh
@@ -189,37 +305,40 @@ Q: Why GPL?
 
 A: Yes.
 
-Q: Could you implement feature XXXX? It is really easy, just extend
-the syntax to allow YYYY!
 
-A: If it is reasonable, I'll add XXXX to the TODO list. In general
-finding a cute syntax (such as YYYY) isn't very hard. The complicated
-issue how to adapt the internals to do XXXX. The parser is really a
-simple front end to the complicated internals. 
+Q: Your make system does not adhere to GNU coding standards, could you
+please fix it?
 
+A: No.  We have evaluated the standard GNU combination for compiling
+programs (autoconf, automake, libtool) and found to be inadequate in
+several respects.  More detailed argumentation is included with
+LilyPond (see F<automake.urgh>)
 
-Q: I want to implement XXXX!  Should I do this?
+Q: Why do I need g++ >= 2.7?
 
-A: There might be better ways of doing XXXX, so it's a good thing to
-ask about this before you start hacking.  If you want to keep in touch
-current developments, you should subscribe to the mailing list.
+A: By using g++, GNU LilyPond is portable to all platforms which support
+g++ (there are quite a few). Not having to support other compilers
+saves us a I<lot> of trouble. 
 
+=head2 Running
 
-Q: I want to implement XXXX!  How should I do this?
+Q: There are lots of warning messages for the printing, all
+beginning with: 
 
-A: Your best bet of getting me to include code, is to present it as a
-"fait accompli", ie., to send me a patch.
+       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: Why do I need g++ >= 2.7?
 
-A: By using g++, GNU LilyPond is portable to all platforms which support
-g++ (there are quite a few). Not having to support other compilers
-saves us a I<lot> of trouble. 
+Q: My symbols are all messed up after I upgraded, and I get
+dvi-checksum errors!
 
-=head2 Running
+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>
+Q: I don't get midi-output, even if I use B<-M>!
 
 A: Your \score should include a \midi block, eg.
 
@@ -230,6 +349,7 @@ 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.
@@ -250,6 +370,12 @@ LD_LIBRARY_PATH to a directory containing F<libflower.so>
 
 =head2 DOZE
 
+Q: I downloaded the W95 port, and it doesn't match the website!
+
+A: The website is usually made from the latest snapshots.  The W95
+binaries are only made every once in a while.  They can lag several
+versions behind the latest version. 
+
 Q: I want a DOS/NT/W95 port.
 
 A.0: Reconsider.  Try Linux.  It's fun!