--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Custodes may be engraved in various styles.
+" }
+
+\layout {
+ \context {
+ \Staff
+ \consists Custos_engraver
+ }
+ ragged-right = ##t
+}
+
+{
+ \override Staff.Custos #'neutral-position = #4
+
+ \override Staff.Custos #'style = #'hufnagel
+ c'1^"hufnagel"
+ \break < d' a' f''>1
+
+ \override Staff.Custos #'style = #'medicaea
+ c'1^"medicaea"
+ \break < d' a' f''>1
+
+ \override Staff.Custos #'style = #'vaticana
+ c'1^"vaticana"
+ \break < d' a' f''>1
+
+ \override Staff.Custos #'style = #'mensural
+ c'1^"mensural"
+ \break < d' a' f''>1
+}
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+The property @{chordNameExceptions@} can used to store a list of special notations for specific chords.
+" }
+
+% 7sus4 denoted with ^7 wahh
+chExceptionMusic = {
+ <c f g bes>1-\markup { \super "7" "wahh" }}
+
+ % add to existing exceptions.
+chExceptions = #(append
+ (sequential-music-to-chord-exceptions chExceptionMusic #t)
+ ignatzekExceptions)
+
+theMusic = \chordmode {
+ c:7sus4 c:dim7/+f
+ \set chordNameExceptions = #chExceptions
+ c:7sus4 c:dim7/+f
+}
+
+\layout { ragged-right = ##t }
+
+<< \context ChordNames \theMusic
+ \context Voice \theMusic
+>>
+
\header { texidoc = "
l.v. ties should avoid dots and staff lines, similar to normal ties. They have fixed size. Their formatting can be tuned with
-@code{tie-configuration}
+@code@{tie-configuration@}
" }
\paper {
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+l.v. ties should avoid dots and staff lines, similar to normal ties. They have fixed size. Their formatting can be tuned with
+@code@{tie-configuration@}
+" }
+
+\paper {
+ ragged-right = ##t
+}
+
+\relative {
+ <c e g>\laissezVibrer r4
+ <c f g>\laissezVibrer r
+ <c d f g>\laissezVibrer r
+ <c d f g>4.\laissezVibrer r
+
+ <c d e f>4\laissezVibrer r
+ \override LaissezVibrerTieColumn #'tie-configuration
+ = #'((-7 . -1)
+ (-5 . -1)
+ (-3 . 1)
+ (-1 . 1))
+ <c d e f>4\laissezVibrer r
+}
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Clusters are a device to denote that a complete range of notes is to be played.
+" }
+
+\layout { ragged-right = ##t }
+
+fragment = \relative c' {
+ c4 f4 <e d'>4
+ <g a>8 <e a> a4 c2 <d b>4 e4
+ c4
+}
+
+<<
+ \new Staff \fragment
+ \new Staff \makeClusters \fragment
+>>
--- /dev/null
+\version "2.10.0"
+%% +.ly: Be the first .ly file for lys-to-tely.py.
+%% Better to make lys-to-tely.py include "introduction.texi" or
+%% other .texi documents too?
+
+\header{
+texidoc = #(string-append "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file.
+
+This document is for LilyPond version
+" (lilypond-version) "." )
+}
+
+% make sure .png is generated.
+\lyrics { " " }
--- /dev/null
+
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work? No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES=
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
--- /dev/null
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Breathing signs are available in different tastes: commas (default), ticks, vees and `railroad tracks' (caesura).
+" }
+
+{
+ %% Modern notation:
+ \new Staff {
+ \relative c'' {
+ \key es \major \time 3/4
+
+ %% this bar contains no \breathe
+ <<
+ { g4 as g } \\
+ { es4 bes es }
+ >> |
+
+ %% by default, \breathe uses the rcomma, just as if saying:
+ %% \override BreathingSign #'text =
+ % #(make-musicglyph-markup "scripts.rcomma")
+ <<
+ { g4 as g } \\
+ { es4 \breathe bes es }
+ >> |
+
+ %% rvarcomma and lvarcomma are variations of the default rcomma
+ %% and lcomma
+
+ %% N.B.: must use Staff context here, since we start a Voice below
+ \override Staff.BreathingSign #'text =
+ #(make-musicglyph-markup "scripts.rvarcomma")
+ <<
+ { g4 as g } \\
+ { es4 \breathe bes es }
+ >> |
+
+ %% wedge
+ \override BreathingSign #'text =
+ #(make-musicglyph-markup "scripts.upbow")
+ es8 d es f g8 \breathe f |
+
+ %% caesura
+ \override BreathingSign #'text =
+ #(make-musicglyph-markup "scripts.caesura")
+ es8[ d] \breathe es[ f g f] |
+ es2 r4 \bar "||" \break
+ }
+ }
+}
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+With the new chord syntax, it is possible to associate fingerings uniquely with notes. This makes it possible to add horizontal fingerings to notes.
+" }
+
+\layout { ragged-right= ##t }
+
+
+
+\relative c'{
+ \set fingeringOrientations = #'(left)
+ < c-1 e-2 g-3 b-5 > 4
+
+ \set fingeringOrientations = #'(down left)
+ < c-1 e-2 g-3 b-5 > 4
+
+ \set fingeringOrientations = #'(down left up)
+ < c-1 e-2 g-3 b-5 > 4
+
+ \once \override Fingering #'staff-padding = #'()
+ < c-1 e-2 g-3 b-5 > 4
+
+ \set fingeringOrientations = #'(up left)
+ < c-1 e-2 g-3 b-5 > 4
+
+ \set fingeringOrientations = #'(right)
+ < c-1 e-2 g-3 b-5 > 4
+
+}
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Between notes, there may be simple glissando lines. Here, the first two glissandi are not consecutive.
+
+The engraver does no time-keeping, so it involves some trickery to get
+<< @{ s8 s8 s4 @} @{ c4 \gliss d4 @} >> working correctly.
+" }
+
+\layout{
+ line-width = 50.\mm
+ indent = 0
+}
+
+\new Staff \relative c''{
+ \override Glissando #'breakable = ##t
+
+ %% gliss non gliss and
+ c4 \glissando d e \glissando f \glissando \break
+ %% consecutive
+ c \glissando d, \glissando e'
+ << { \stemUp e8 \glissando g8 }
+ \context Voice = VB {\stemDown \repeat unfold 4 d16 } >>
+ \override Glissando #'style = #'zigzag
+ c4 \glissando c,, \glissando c' \glissando d
+}
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Displays all available line styles.
+" }
+
+\paper {
+ ragged-right = ##t
+}
+
+\relative c'' {
+ \override Glissando #'breakable = ##t
+
+ s2
+ d2 \glissando d'2
+ \once \override Glissando #'dash-fraction = #0.5
+ d,2 \glissando d'2
+ \override Glissando #'style = #'dotted-line
+ d,2 \glissando d'2
+
+ \override Glissando #'style = #'zigzag
+ d,2 \glissando d'2
+ \override Glissando #'style = #'trill
+ d,2 \glissando d'2
+}
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Marks can be printed as numbers.
+By setting @{markFormatter@} we may choose a different style of mark printing. Also, marks can be specified manually, with a markup argument.
+" }
+
+\paper { ragged-right = ##t }
+
+\relative c''{
+ \set Score.markFormatter = #format-mark-numbers
+ c1 | \mark \markup { \musicglyph #"scripts.coda" }
+ c1 | \mark \default
+ c1 | \mark \default
+ \set Score.markFormatter
+ = #(lambda (mark context)
+ (make-box-markup (format-mark-numbers mark context)))
+ c1 | \mark \default
+ \set Score.markFormatter
+ = #(lambda (mark context)
+ (make-circle-markup (format-mark-numbers mark context)))
+ c1 | \mark \default
+}
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+The @{\tag@} command marks music expressions with a name. These tagged expressions can be filtered out later. This mechanism can be used to make different versions of the same music. In this example, the top stave displays the music expression with all tags included. The bottom two staves are filtered: the part has cue notes and fingerings, but the score has not.
+" }
+
+\layout { ragged-right= ##t }
+
+common =
+\relative c'' {
+
+ c1
+ \relative c' <<
+ \tag #'part <<
+ R1 \\
+ {
+ \set fontSize = #-1
+ c4_"cue" f2 g4 }
+ >>
+ \tag #'score R1
+ >>
+ c1-\tag #'part ^4
+}
+
+
+
+\simultaneous {
+ \new Staff {
+ \set Staff.instrumentName = #"both"
+ \common
+ }
+ \new Staff {
+ \set Staff.instrumentName = #"part"
+ \keepWithTag #'part \common
+ }
+ \new Staff {
+ \set Staff.instrumentName = #"score"
+ \keepWithTag #'score \common
+ }
+}
+
+
\version "2.10.12"
\header { texidoc = "
-By setting voltaOnThisStaff, repeats can be put also over other staves than the topmost one in a score.
+By setting @{voltaOnThisStaff@}, repeats can be put also over other staves than the topmost one in a score.
" }
\layout { ragged-right = ##t }
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+By setting @{voltaOnThisStaff@}, repeats can be put also over other staves than the topmost one in a score.
+" }
+
+\layout { ragged-right = ##t }
+vmus = { \repeat volta 2 c1 \alternative { d e } }
+
+\relative c'' <<
+ \new StaffGroup <<
+ \context Staff \vmus
+ \new Staff \vmus
+ >>
+ \new StaffGroup <<
+ \new Staff <<
+ \set Staff.voltaOnThisStaff = ##t
+ \vmus >>
+ \new Staff \vmus
+ >>
+>>
\version "2.10.12"
\header { texidoc = "
-By setting properties in NonMusicalPaperColumn, vertical spacing of page layout can be adjusted.
+By setting properties in @{NonMusicalPaperColumn@}, vertical spacing of page layout can be adjusted.
-For technical reasons, overrideProperty has to be used for setting properties on individual object. \override may still be used for global overrides.
+For technical reasons, @{overrideProperty@} has to be used for setting properties on individual object. @{\override@} may still be used for global overrides.
-By setting annotate-spacing, we can see the effect of each property.
+By setting @{annotate-spacing@}, we can see the effect of each property.
" }
#(set-global-staff-size 11)
\version "2.10.12"
\header { texidoc = "
-Proportional notation can be created by setting proportionalNotationDuration. Notes will be spaced proportional to the distance for the given duration.
+Proportional notation can be created by setting @{proportionalNotationDuration@}. Notes will be spaced proportional to the distance for the given duration.
" }
\paper { ragged-right = ##t }
\version "2.10.12"
\header { texidoc = "
-With strict-note-spacing spacing for grace notes (even multiple ones), is floating as well.
+With @{strict-note-spacing@} spacing for grace notes (even multiple ones), is floating as well.
" }
\paper {
\version "2.10.12"
\header { texidoc = "
-If strict-note-spacing is set, then spacing of notes is not influenced by bars and clefs half-way on the system. Rather, they are put just before the note that occurs at the same time. This may cause collisions.
+If @code@{strict-note-spacing@} is set, then spacing of notes is not influenced by bars and clefs half-way on the system. Rather, they are put just before the note that occurs at the same time. This may cause collisions.
" }
\paper {
\version "2.10.12"
\header { texidoc = "
-By setting properties in NonMusicalPaperColumn, vertical spacing of alignments can be adjusted per system.
+By setting properties in @{NonMusicalPaperColumn@}, vertical spacing of alignments can be adjusted per system.
-By setting alignment-extra-space or fixed-alignment-extra-space an individual system may be stretched vertically.
+By setting @{alignment-extra-space@} or @{fixed-alignment-extra-space@} an individual system may be stretched vertically.
-For technical reasons, overrideProperty has to be used for setting properties on individual object. override in a \context block may still be used for global overrides
+For technical reasons, @{overrideProperty@} has to be used for setting properties on individual object. @{override@} in a @{\context@} block may still be used for global overrides
" }
#(set-global-staff-size 13)
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Page breaking details can be stored for later reference.
+
+(you should run this snippet on your own computer; we cannot compute the two-pass layout here)
+" }
+
+\paper {
+ #(define write-page-layout #t)
+}
+bla = \new Staff {
+ c1 c1
+ \break
+ \grace { c16 } c1\break
+ \repeat unfold 5 \relative { c1 c1 c1 }
+}
+
+
+\book {
+ \score {
+ \bla
+ \layout {
+ #(define tweak-key "blabla")
+ }
+ }
+}
+
+tweakFileName = #(format "~a-page-layout.ly" (ly:parser-output-name parser))
+
+#(newline)
+
+#(ly:progress "Contents of: '~a'" (ly:gulp-file tweakFileName))
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+By setting properties in @{NonMusicalPaperColumn@}, vertical spacing of page layout can be adjusted.
+
+For technical reasons, @{overrideProperty@} has to be used for setting properties on individual object. @{\override@} may still be used for global overrides.
+
+By setting @{annotate-spacing@}, we can see the effect of each property.
+" }
+
+#(set-global-staff-size 11)
+
+\book {
+ \score {
+ \relative c'' \new PianoStaff <<
+ \new Voice {
+ c1_"followed by default spacing"\break
+ c\break
+
+ \overrideProperty
+ #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details
+ #'((Y-extent . (-30 . 10)))
+ c_"Big bounding box (property Y-extent)"\break
+
+ \overrideProperty
+ #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details
+ #'((refpoint-Y-extent . (-37 . -10)))
+ c_\markup {
+ \column {
+ "Refpoints further apart (property refpoint-Y-extent)."
+ "Stretchable space runs between refpoints"
+ }
+ }
+
+ \break
+
+ \overrideProperty
+ #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details
+ #'((next-padding . 10))
+
+ c_"Followed by padding, ie unstretchable space. (property next-padding)" \break
+ \overrideProperty
+ #"Score.NonMusicalPaperColumn"
+ #'line-break-system-details
+ #'((next-space . 20))
+ c_"Followed by stretchable space (property next-space)"\break
+ c\break
+ \overrideProperty
+ #"Score.NonMusicalPaperColumn" #'line-break-system-details
+ #'((bottom-space . 25.0))
+ c_"25 staff space to the bottom of the page. (property bottom-space)"\break
+
+
+ }
+ { c1 c c c c c c c }
+ >>
+ }
+ \paper {
+ ragged-last-bottom = ##f
+ annotate-spacing = ##t
+ between-system-space = 1.0
+ #(set! text-font-defaults
+ (acons
+ 'font-size 6
+ text-font-defaults)
+
+ )
+ }
+}
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Proportional notation can be created by setting @{proportionalNotationDuration@}. Notes will be spaced proportional to the distance for the given duration.
+" }
+
+\paper { ragged-right = ##t }
+
+\relative c''
+<<
+ \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
+ \new Staff { c8[ c c c c c] c4 c2 r2 }
+ \new Staff { c2 \times 2/3 { c8 c c } c4 c1 }
+>>
+
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+With @{strict-note-spacing@} spacing for grace notes (even multiple ones), is floating as well.
+" }
+
+\paper {
+ ragged-right = ##t
+ indent = 0
+}
+
+\relative c''
+{
+ \override Score.SpacingSpanner #'strict-note-spacing = ##t
+ \set Score.proportionalNotationDuration = #(ly:make-moment 1 12)
+ c8[ \grace { c16[ c] } c8 c8 c8]
+ c2
+}
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+If @code@{strict-note-spacing@} is set, then spacing of notes is not influenced by bars and clefs half-way on the system. Rather, they are put just before the note that occurs at the same time. This may cause collisions.
+" }
+
+\paper {
+ ragged-right = ##t
+ indent = 0
+}
+\layout {
+ \context {
+ \Score
+ }
+}
+
+\relative c'' <<
+ \override Score.SpacingSpanner #'strict-note-spacing = ##t
+ \set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
+ \new Staff {
+ c8[ c \clef alto c c \grace { d16 } c8 c] c4 c2
+ \grace { c16[ c16] }
+ c2 }
+ \new Staff {
+ c2 \times 2/3 { c8 \clef bass cis,, c }
+ c4
+ c1
+ }
+>>
\version "2.10.12"
\header { texidoc = "
-The vertical positions of staff lines may be specified individually, by setting the line-positions property of the StaffSymbol.
+The vertical positions of staff lines may be specified individually, by setting the @{line-positions@} property of the StaffSymbol.
" }
\new Staff \relative c' {
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+The vertical positions of staff lines may be specified individually, by setting the @{line-positions@} property of the StaffSymbol.
+" }
+
+\new Staff \relative c' {
+ \override Staff.StaffSymbol #'line-positions = #'(-7 -2 0 3 9)
+ g c f b e a
+}
\version "2.10.12"
\header { texidoc = "
-The default font families for text can be overridden with make-pango-font-tree
+The default font families for text can be overridden with @{make-pango-font-tree@}
" }
\paper {
\header { texidoc = "
Ambituses indicate pitch ranges for voices.
-Accidentals only show up if they're not part of key signature. AmbitusNoteHead grobs also have ledger lines.
+Accidentals only show up if they're not part of key signature. @{AmbitusNoteHead@} grobs also have ledger lines.
" }
\layout {
--- /dev/null
+\version "2.10.12"
+
+\header { texidoc = "
+Ambituses indicate pitch ranges for voices.
+
+Accidentals only show up if they're not part of key signature. @{AmbitusNoteHead@} grobs also have ledger lines.
+" }
+
+\layout {
+ ragged-right = ##t
+ \context {
+ \Voice
+ \consists Ambitus_engraver
+ }
+}
+
+\relative
+<<
+ \new Staff { \time 2/4 c4 f' }
+ \new Staff \relative {
+ \time 2/4
+ \key d \major
+ cis as'
+ }
+>>
+
\version "2.10.12"
\header { texidoc = "
-With the \lyricsto mechanism, individual lyric lines can be associated with one melody line. For each lyric line, they can be tuned whether to follow melismata or not.
+With the @{\lyricsto@} mechanism, individual lyric lines can be associated with one melody line. For each lyric line, they can be tuned whether to follow melismata or not.
" }
<<