lilypond-learning: Other sources of information

 
 4.7.4 Other sources of information
 ----------------------------------
 
 The Internals Reference documentation contains a lot of information
 about LilyPond, but even more information can be gathered by looking at
 the internal LilyPond files.  To explore these, you must first find the
 directory appropriate to your system.  The location of this directory
 depends (a) on whether you obtained LilyPond by downloading a
 precompiled binary from lilypond.org or whether you installed it from a
 package manager (i.e.  distributed with GNU/Linux, or installed under
 fink or cygwin) or compiled it from source, and (b) on which operating
 system it is being used:
 
 Downloaded from lilypond.org
 ............................
 
    • GNU/Linux
 
      Navigate to
           INSTALLDIR/lilypond/usr/share/lilypond/current/
 
    • MacOS X
 
      Navigate to
           INSTALLDIR/LilyPond.app/Contents/Resources/share/lilypond/current/
 
      by either ‘cd’-ing into this directory from the Terminal, or
      control-clicking on the LilyPond application and selecting ‘Show
      Package Contents’.
 
    • Windows
 
      Using Windows Explorer, navigate to
           INSTALLDIR/LilyPond/usr/share/lilypond/current/
 
 Installed from a package manager or compiled from source
 ........................................................
 
 Navigate to ‘PREFIX/share/lilypond/X.Y.Z/’, where PREFIX is set by your
 package manager or ‘configure’ script, and X.Y.Z is the LilyPond version
 number.
 
 
    Within this directory the two interesting subdirectories are
 
    • ‘ly/’ - contains files in LilyPond format
    • ‘scm/’ - contains files in Scheme format
 
    Let’s begin by looking at some files in ‘ly/’.  Open
 ‘ly/property-init.ly’ in a text editor.  The one you normally use for
 ‘.ly’ files will be fine.  This file contains the definitions of all the
 standard LilyPond predefined commands, such as ‘\stemUp’ and
 ‘\slurDotted’.  You will see that these are nothing more than
 definitions of variables containing one or a group of ‘\override’
 commands.  For example, ‘/tieDotted’ is defined to be:
 
      tieDotted = {
        \override Tie.dash-period = #0.75
        \override Tie.dash-fraction = #0.1
      }
 
    If you do not like the default values these predefined commands can
 be redefined easily, just like any other variable, at the head of your
 input file.
 
    The following are the most useful files to be found in ‘ly/’:
 
 Filename                      Contents
 --------------------------------------------------------------------------
 ‘ly/engraver-init.ly’         Definitions of engraver Contexts
 ‘ly/paper-defaults-init.ly’   Specifications of paper-related defaults
 ‘ly/performer-init.ly’        Definitions of performer Contexts
 ‘ly/property-init.ly’         Definitions of all common predefined
                               commands
 ‘ly/spanner-init.ly’          Definitions of spanner-related predefined
                               commands
 
    Other settings (such as the definitions of markup commands) are
 stored as ‘.scm’ (Scheme) files.  The Scheme programming language is
 used to provide a programmable interface into LilyPond internal
 operation.  Further explanation of these files is currently outside the
 scope of this manual, as a knowledge of the Scheme language is required.
 Users should be warned that a substantial amount of technical knowledge
 or time is required to understand Scheme and these files (see See
 (lilypond-extending)Scheme tutorial).
 
    If you have this knowledge, the Scheme files which may be of interest
 are:
 
 Filename                      Contents
 --------------------------------------------------------------------------
 ‘scm/auto-beam.scm’           Sub-beaming defaults
 ‘scm/define-grobs.scm’        Default settings for grob properties
 ‘scm/define-markup-commands.scm’Specify all markup commands
 ‘scm/midi.scm’                Default settings for MIDI output
 ‘scm/output-lib.scm’          Settings that affect appearance of frets,
                               colors, accidentals, bar lines, etc
 ‘scm/parser-clef.scm’         Definitions of supported clefs
 ‘scm/script.scm’              Default settings for articulations