<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.lilypond.community/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rudi+Guggt</id>
	<title>LilyPond wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.lilypond.community/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rudi+Guggt"/>
	<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/wiki/Special:Contributions/Rudi_Guggt"/>
	<updated>2026-05-03T07:25:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/Neuigungen/Rhythmus-Markup&amp;diff=6484</id>
		<title>User:Rudi Guggt/Neuigungen/Rhythmus-Markup</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/Neuigungen/Rhythmus-Markup&amp;diff=6484"/>
		<updated>2026-03-28T09:40:56Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: rhythm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Textbeschriftungsbefehl \rhythm wurde hinzugefügt. Er bietet einen einfachen Weg, um Rhythmen gemischt mit Text einzugeben, wie beispielsweise in „Swing“-Angaben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
    \relative {&lt;br /&gt;
      \tempo \markup {&lt;br /&gt;
        Swing&lt;br /&gt;
        \hspace #0.4&lt;br /&gt;
        \rhythm { 8[ 8] } = \rhythm { \tuplet 3/2 { 4 8 } }&lt;br /&gt;
      }&lt;br /&gt;
      b8 g&#039; c, d ees d16 ees d c r8&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/Lilypond&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=6483</id>
		<title>User:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=6483"/>
		<updated>2026-03-28T09:39:46Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m using Lilypond not regularly, so here I collect useful snippets.&lt;br /&gt;
&lt;br /&gt;
== Bar lines ==&lt;br /&gt;
&lt;br /&gt;
*[[Many types of bar lines]]&lt;br /&gt;
*[[User:Rudi Guggt/section|section]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== old style ==&lt;br /&gt;
&lt;br /&gt;
*[[Chant or psalm notation]]&lt;br /&gt;
&lt;br /&gt;
==my test pages==&lt;br /&gt;
&lt;br /&gt;
[[User:Rudi Guggt/test]]&lt;br /&gt;
&lt;br /&gt;
==scheme==&lt;br /&gt;
&lt;br /&gt;
[[User:Rudi Guggt/scheme-functions]]&lt;br /&gt;
&lt;br /&gt;
== interessante Neuigungen ==&lt;br /&gt;
[[User:Rudi Guggt/Neuigungen/Rhythmus-Markup]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/test&amp;diff=6482</id>
		<title>User:Rudi Guggt/test</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/test&amp;diff=6482"/>
		<updated>2026-03-27T07:37:52Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: qr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;something from the lilypond-user mailing list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24.0&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\score { &lt;br /&gt;
\relative { &lt;br /&gt;
\set Score.finalFineTextVisibility = ##t &lt;br /&gt;
s1 &lt;br /&gt;
\repeat segno 2 { &lt;br /&gt;
\repeat volta 3 { &lt;br /&gt;
s1 &lt;br /&gt;
\alternative { &lt;br /&gt;
\volta 1 { s1 } &lt;br /&gt;
\volta 2 { s1 \bar &amp;quot;||&amp;quot; } &lt;br /&gt;
\volta 3 { s1 \bar &amp;quot;|.&amp;quot; \fine } &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
s1 &lt;br /&gt;
\bar &amp;quot;||&amp;quot; &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
% ab Version 2.25... \markup \qr-code #10 &amp;quot;https://lilypond.org&amp;quot;&lt;br /&gt;
\markup  &amp;quot;QR-Code ab Version 2.25 möglich&amp;quot;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6481</id>
		<title>Splitting chords</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6481"/>
		<updated>2026-03-23T14:38:22Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet is a 2009 contribution by Gilles Thibault in [https://lists.gnu.org/archive/html/lilypond-user/2009-01/msg00685.html lilypond-user]. It splits a chord sequence into two separated voices: the first one built on the first note (usually the lowest) of every chord and the other on the remaining notes. It works well in 2.24.4 and even in 2.25.35. I find it very useful. It also preserves articulations and slurs. The only drawback: it doesn&#039;t work if you use «q» to repeat last chord. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #(define (has-duration? music)&lt;br /&gt;
 (ly:duration? (ly:music-property music &#039;duration)))&lt;br /&gt;
 &lt;br /&gt;
 #(define (not-has-duration? music)&lt;br /&gt;
 (not (has-duration? music)))&lt;br /&gt;
 &lt;br /&gt;
 keepsOnlyFirstNote = #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
 (music-map&lt;br /&gt;
  (lambda (evt)&lt;br /&gt;
   (if (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
      (let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
       (if (has-duration? (car elts))&lt;br /&gt;
            (ly:music-set-property! evt &#039;elements (cons&lt;br /&gt;
                 (car elts)&lt;br /&gt;
                 (filter not-has-duration? (cdr elts)))))))&lt;br /&gt;
  evt)&lt;br /&gt;
 music))&lt;br /&gt;
 &lt;br /&gt;
 deleteFirstNote = #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
 (music-map&lt;br /&gt;
  (lambda (evt)&lt;br /&gt;
   (if (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
      (let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
           (if (has-duration? (car elts))&lt;br /&gt;
                (ly:music-set-property! evt &#039;elements  (cdr elts)))))&lt;br /&gt;
  evt)&lt;br /&gt;
 music))&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 music =\relative c&#039; {&lt;br /&gt;
 &amp;lt;c e&amp;gt;4-&amp;gt; &amp;lt;d f&amp;gt;( &amp;lt;b g&#039;&amp;gt;) &amp;lt;c e&amp;gt;-. g2 c2&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 \markup { Music with chords }&lt;br /&gt;
 \new Staff \music&lt;br /&gt;
 \markup { Music splitted in 2 staffs }&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
   \new Staff \deleteFirstNote \music&lt;br /&gt;
   \new Staff \keepsOnlyFirstNote \music&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Chords]]&lt;br /&gt;
[[category:Scheme]]&lt;br /&gt;
[[category:Really cool]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6480</id>
		<title>Splitting chords</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6480"/>
		<updated>2026-03-23T14:37:33Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet is a 2009 contribution by Gilles Thibault in [https://lists.gnu.org/archive/html/lilypond-user/2009-01/msg00685.html lilypond-user]. It splits a chord sequence into two separated voices: the first one built on the first note (usually the lowest) of every chord and the other on the remaining notes. It works well in 2.24.4 and even in 2.25.35. I find it very useful. It also preserves articulations and slurs. The only drawback: it doesn&#039;t work if you use «q» to repeat last chord. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #(define (has-duration? music)&lt;br /&gt;
 (ly:duration? (ly:music-property music &#039;duration)))&lt;br /&gt;
 &lt;br /&gt;
 #(define (not-has-duration? music)&lt;br /&gt;
 (not (has-duration? music)))&lt;br /&gt;
 &lt;br /&gt;
 keepsOnlyFirstNote = #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
 (music-map&lt;br /&gt;
  (lambda (evt)&lt;br /&gt;
   (if (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
      (let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
       (if (has-duration? (car elts))&lt;br /&gt;
            (ly:music-set-property! evt &#039;elements (cons&lt;br /&gt;
                 (car elts)&lt;br /&gt;
                 (filter not-has-duration? (cdr elts)))))))&lt;br /&gt;
  evt)&lt;br /&gt;
 music))&lt;br /&gt;
 &lt;br /&gt;
 deleteFirstNote = #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
 (music-map&lt;br /&gt;
  (lambda (evt)&lt;br /&gt;
   (if (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
      (let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
           (if (has-duration? (car elts))&lt;br /&gt;
                (ly:music-set-property! evt &#039;elements  (cdr elts)))))&lt;br /&gt;
  evt)&lt;br /&gt;
 music))&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 music =\relative c&#039; {&lt;br /&gt;
 &amp;lt;c e&amp;gt;4-&amp;gt; &amp;lt;d f&amp;gt;( &amp;lt;b g&#039;&amp;gt;) &amp;lt;c e&amp;gt;-. g2 c2&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 \markup { Music with chords }&lt;br /&gt;
 \new Staff \music&lt;br /&gt;
 \markup { Music splitted in 2 staffs }&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
   \new Staff \deleteFirstNote \music&lt;br /&gt;
   \new Staff \keepsOnlyFirstNote \music&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Chords]]&lt;br /&gt;
[[category:Scheme]]&lt;br /&gt;
[[category:Really Cool]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Hiding_part_of_a_glissando_when_clashing_a_clef&amp;diff=6473</id>
		<title>Hiding part of a glissando when clashing a clef</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Hiding_part_of_a_glissando_when_clashing_a_clef&amp;diff=6473"/>
		<updated>2026-03-19T10:13:24Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: ps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When a glissando crosses a G or F clef, the &amp;lt;code&amp;gt;\whiteout&amp;lt;/code&amp;gt; function does not hide it properly.&lt;br /&gt;
&lt;br /&gt;
Here are two clef-combining stencils that offer something more accurate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;nodoc&amp;quot;&amp;gt;&lt;br /&gt;
For technical reasons, this doesn&#039;t show up in the Wiki because &amp;lt;code&amp;gt;\postscript&amp;lt;/code&amp;gt; only works with LilyPond&#039;s PS backend and is neither supported in the SVG (used in this Wiki) nor in the Cairo backend.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; &amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=886&lt;br /&gt;
&lt;br /&gt;
%LSR by P.P.Schneider&lt;br /&gt;
&lt;br /&gt;
%here starts the snippet:&lt;br /&gt;
&lt;br /&gt;
#(set-global-staff-size 25)&lt;br /&gt;
&lt;br /&gt;
GlissCrossClefG = {&lt;br /&gt;
    \once \override Staff.Clef.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.Clef.text = &lt;br /&gt;
    \markup {  &lt;br /&gt;
        \combine&lt;br /&gt;
          \postscript &amp;quot; 1.1 4.2 moveto&lt;br /&gt;
              2 3.5 1.9 2.3 1.25 1.5 curveto&lt;br /&gt;
              1.4 1 lineto&lt;br /&gt;
              2.1 1 2.9 -0.1 1.7 -1.05 curveto&lt;br /&gt;
              1.7 -1.4 1.9 -1.7 1.1 -2.2 curveto&lt;br /&gt;
              0 -2.3 -0.25 -1.6 0.1 -1 curveto&lt;br /&gt;
              0.3 -0.9 lineto&lt;br /&gt;
              0.3 -0.8 lineto&lt;br /&gt;
              0.2 -0.8 -1.1 0.5 0.5 1.8 curveto&lt;br /&gt;
              0.5 1.8 0 3.5 1 4.2 curveto&lt;br /&gt;
              closepath&lt;br /&gt;
  	      1 setgray	&lt;br /&gt;
              fill&amp;quot;&lt;br /&gt;
          \musicglyph &amp;quot;clefs.G_change&amp;quot; &lt;br /&gt;
    }&lt;br /&gt;
    \clef G&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
GlissCrossClefF = {&lt;br /&gt;
    \once \override Staff.Clef.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.Clef.text = &lt;br /&gt;
    \markup {  &lt;br /&gt;
        \combine&lt;br /&gt;
          \postscript &amp;quot; -0.2 -0.3 moveto&lt;br /&gt;
              -0.5 0.9  0.4 1.6  1.7 0.8 curveto&lt;br /&gt;
              2.0 0.8 lineto&lt;br /&gt;
              2.25 0.6 lineto&lt;br /&gt;
              2.25 -0.5 lineto&lt;br /&gt;
              2.0 -0.75 lineto&lt;br /&gt;
              1.65 -0.75 lineto&lt;br /&gt;
              1.65 -0.75  0.9 -1.7  -0.1 -1.8 curveto&lt;br /&gt;
              -0.1 -1.8 -0.5 -1.7 -0.3 -1.5 curveto&lt;br /&gt;
              0 -0.7 lineto&lt;br /&gt;
              0.6 -0.6 lineto&lt;br /&gt;
              0.7 -0.4 lineto&lt;br /&gt;
              0.4 -0.5 lineto&lt;br /&gt;
              closepath&lt;br /&gt;
  	      1 setgray	&lt;br /&gt;
              fill&amp;quot;&lt;br /&gt;
          \musicglyph &amp;quot;clefs.F_change&amp;quot; &lt;br /&gt;
    }&lt;br /&gt;
    \clef F&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff {&lt;br /&gt;
    \override Score.StaffSymbol.layer = #3&lt;br /&gt;
    \override Staff.Clef.layer = #2&lt;br /&gt;
    \clef F&lt;br /&gt;
    \time 4/4&lt;br /&gt;
    \cadenzaOn&lt;br /&gt;
    \set glissandoMap = #&#039;((2 . 0) (1 . 1) (0 . 2))&lt;br /&gt;
    \once\override TextScript.extra-offset = #&#039;(-3 . 1) &lt;br /&gt;
    &amp;lt;e, c c&#039;&amp;gt;1 ^\markup\column {&lt;br /&gt;
                   \vspace #1 %% LSR-problem-workaround&lt;br /&gt;
                   \line { &amp;quot;Using&amp;quot; \italic &amp;quot;whiteout&amp;quot; &amp;quot;:&amp;quot;} }&lt;br /&gt;
    \glissando&lt;br /&gt;
    \once \override Staff.Clef.whiteout = ##t &lt;br /&gt;
    \clef G &lt;br /&gt;
    &amp;lt;a c&#039;&#039; c&#039;&#039;&#039;&amp;gt;&lt;br /&gt;
    \bar &amp;quot;||&amp;quot;&lt;br /&gt;
    \stopStaff&lt;br /&gt;
    s1&lt;br /&gt;
    \startStaff&lt;br /&gt;
    \override Score.StaffSymbol.layer = #3&lt;br /&gt;
    \override Score.Glissando.layer = #2&lt;br /&gt;
    \once\override Staff.Clef.full-size-change = ##t&lt;br /&gt;
    \clef F&lt;br /&gt;
    \time 4/4&lt;br /&gt;
    \set glissandoMap = #&#039;((2 . 0) (1 . 1) (0 . 2))&lt;br /&gt;
    \once\override TextScript.extra-offset = #&#039;(-2 . 1) &lt;br /&gt;
    &amp;lt;e, c c&#039;&amp;gt;1^\markup { &amp;quot;New stencil :&amp;quot;}  \glissando&lt;br /&gt;
    \GlissCrossClefG&lt;br /&gt;
    &amp;lt;a c&#039;&#039; c&#039;&#039;&#039;&amp;gt;&lt;br /&gt;
    \cadenzaOff&lt;br /&gt;
    \bar &amp;quot;||&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \layout {&lt;br /&gt;
    indent = #0&lt;br /&gt;
    \context {&lt;br /&gt;
      \Staff&lt;br /&gt;
      \override TimeSignature.transparent = ##t&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff {&lt;br /&gt;
    \override Score.StaffSymbol.layer = #3&lt;br /&gt;
    \override Staff.Clef.layer = #2&lt;br /&gt;
    \clef G&lt;br /&gt;
    \time 4/4&lt;br /&gt;
    \cadenzaOn&lt;br /&gt;
    \set glissandoMap = #&#039;((2 . 0) (1 . 1) (0 . 2))&lt;br /&gt;
    &amp;lt;c&#039; c&#039;&#039; c&#039;&#039;&#039;&amp;gt;1 \glissando&lt;br /&gt;
    \once \override Staff.Clef.whiteout = ##t &lt;br /&gt;
    \clef F&lt;br /&gt;
    &amp;lt;c, c c&#039;&amp;gt;1 &lt;br /&gt;
    \bar &amp;quot;||&amp;quot;&lt;br /&gt;
    \stopStaff&lt;br /&gt;
    s1&lt;br /&gt;
    \startStaff&lt;br /&gt;
    \override Score.StaffSymbol.layer = #3&lt;br /&gt;
    \override Score.Glissando.layer = #0&lt;br /&gt;
    \once\override Staff.Clef.full-size-change = ##t&lt;br /&gt;
    \clef G&lt;br /&gt;
    \time 4/4&lt;br /&gt;
    \set glissandoMap = #&#039;((2 . 0) (1 . 1) (0 . 2))&lt;br /&gt;
    &amp;lt;c&#039; c&#039;&#039; c&#039;&#039;&#039;&amp;gt;\glissando&lt;br /&gt;
    \GlissCrossClefF&lt;br /&gt;
    &amp;lt;c, c c&#039;&amp;gt;1 &lt;br /&gt;
    \cadenzaOff&lt;br /&gt;
    \bar &amp;quot;||&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \layout {&lt;br /&gt;
    indent = #0&lt;br /&gt;
    \context {&lt;br /&gt;
      \Staff&lt;br /&gt;
      \override TimeSignature.transparent = ##t&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Expressive marks]]&lt;br /&gt;
[[Category:Fretted strings]]&lt;br /&gt;
[[Category:Unfretted strings]]&lt;br /&gt;
[[Category:Symbols and glyphs]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=French-style_C_clef&amp;diff=6472</id>
		<title>French-style C clef</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=French-style_C_clef&amp;diff=6472"/>
		<updated>2026-03-19T10:09:46Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: ps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A custom French-style C clef created with postscript.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;nodoc&amp;quot;&amp;gt;&lt;br /&gt;
For technical reasons, this doesn&#039;t show up in the Wiki because &amp;lt;code&amp;gt;\postscript&amp;lt;/code&amp;gt; only works with LilyPond&#039;s PS backend and is neither supported in the SVG (used in this Wiki) nor in the Cairo backend.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=612&lt;br /&gt;
&lt;br /&gt;
%%%%% Valentin Villanave&#039;s macro for the French-style C clef %%%%%%%&lt;br /&gt;
&lt;br /&gt;
altoClef = \markup \postscript &amp;quot;&lt;br /&gt;
gsave newpath&lt;br /&gt;
   0.004 0.004 scale&lt;br /&gt;
   -180 0 translate&lt;br /&gt;
   248 -306 moveto&lt;br /&gt;
	 248 -492 lineto&lt;br /&gt;
	 248 -496 245 -500 240 -500 curveto&lt;br /&gt;
	 218 -500 lineto&lt;br /&gt;
	 213 -500 210 -496 210 -492 curveto&lt;br /&gt;
	 210 492 lineto&lt;br /&gt;
	 210 496 213 500 218 500 curveto&lt;br /&gt;
	 240 500 lineto&lt;br /&gt;
	 245 500 248 496 248 492 curveto&lt;br /&gt;
	 248 292 lineto&lt;br /&gt;
	 274 270 348 242 370 242 curveto&lt;br /&gt;
	 404 242 462 228 462 453 curveto&lt;br /&gt;
	 462 560 476 670 576 670 curveto&lt;br /&gt;
	 628 670 671 626 671 571 curveto&lt;br /&gt;
	 671 516 628 471 576 471 curveto&lt;br /&gt;
	 526 471 530 496 520 503 curveto&lt;br /&gt;
	 513 502 510 478 510 437 curveto&lt;br /&gt;
	 510 340 lineto&lt;br /&gt;
	 510 192 490 94 477 79 curveto&lt;br /&gt;
	 442 39 332 70 248 70 curveto&lt;br /&gt;
	 248 -83 lineto&lt;br /&gt;
	 332 -83 442 -53 477 -93 curveto&lt;br /&gt;
	 490 -108 510 -206 510 -354 curveto&lt;br /&gt;
	 510 -451 lineto&lt;br /&gt;
	 510 -491 513 -516 520 -517 curveto&lt;br /&gt;
	 530 -509 526 -485 576 -485 curveto&lt;br /&gt;
	 628 -485 671 -530 671 -584 curveto&lt;br /&gt;
	 671 -640 628 -684 576 -684 curveto&lt;br /&gt;
	 476 -684 462 -574 462 -467 curveto&lt;br /&gt;
	 462 -242 404 -256 370 -256 curveto&lt;br /&gt;
	 348 -256 274 -283 248 -306 curveto&lt;br /&gt;
	closepath&lt;br /&gt;
	130 -500 moveto&lt;br /&gt;
	 8 -500 lineto&lt;br /&gt;
	 4 -500 0 -496 0 -492 curveto&lt;br /&gt;
	 0 492 lineto&lt;br /&gt;
	 0 496 4 500 8 500 curveto&lt;br /&gt;
	 130 500 lineto&lt;br /&gt;
	 134 500 138 496 138 492 curveto&lt;br /&gt;
	 138 -492 lineto&lt;br /&gt;
	 138 -496 134 -500 130 -500 curveto&lt;br /&gt;
	closepath&lt;br /&gt;
fill grestore&amp;quot;&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  \clef &amp;quot;alto&amp;quot;&lt;br /&gt;
  \numericTimeSignature&lt;br /&gt;
  \override Staff.Clef.stencil = #(lambda (grob)&lt;br /&gt;
    (grob-interpret-markup grob altoClef))&lt;br /&gt;
  c1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Symbols and glyphs]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Really cool]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Print_chord_names_with_same_root_and_different_bass_as_slash_and_bass_note&amp;diff=6428</id>
		<title>Print chord names with same root and different bass as slash and bass note</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Print_chord_names_with_same_root_and_different_bass_as_slash_and_bass_note&amp;diff=6428"/>
		<updated>2026-03-06T16:49:14Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: lost word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To print subsequent chord names only differing in their bass note as slash and bass note without a root symbol, use the Scheme engraver defined in this snippet. The behaviour is controlled by the &amp;lt;code&amp;gt;chordChanges&amp;lt;/code&amp;gt; context property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
#(define Bass_changes_equal_root_engraver&lt;br /&gt;
   (lambda (ctx)&lt;br /&gt;
     &amp;quot;Drop root for follow-up chord names that differ only in bass.&lt;br /&gt;
&lt;br /&gt;
In other words, the chord name sequence &#039;D D/C D/B&#039; gets actually&lt;br /&gt;
printed as &#039;D /C /B&#039;.&lt;br /&gt;
&lt;br /&gt;
Set the `chordChanges` context property to `#t` to activate this&lt;br /&gt;
feature.&amp;quot;&lt;br /&gt;
     (let ((chord-pitches &#039;())&lt;br /&gt;
           (last-chord-pitches &#039;())&lt;br /&gt;
           (bass-pitch #f))&lt;br /&gt;
       (make-engraver&lt;br /&gt;
        ((initialize this-engraver)&lt;br /&gt;
         (let ((chord-note-namer (ly:context-property ctx&lt;br /&gt;
                                                      &#039;chordNoteNamer)))&lt;br /&gt;
           ;; Set `chordNoteNamer`, respecting user setting if already&lt;br /&gt;
           ;; done.&lt;br /&gt;
           (ly:context-set-property! ctx &#039;chordNoteNamer&lt;br /&gt;
                                     (if (procedure? chord-note-namer)&lt;br /&gt;
                                         chord-note-namer&lt;br /&gt;
                                         note-name-&amp;gt;markup))))&lt;br /&gt;
&lt;br /&gt;
        (listeners&lt;br /&gt;
         ((note-event this-engraver event)&lt;br /&gt;
          (let* ((pitch (ly:event-property event &#039;pitch))&lt;br /&gt;
                 (pitch-name (ly:pitch-notename pitch))&lt;br /&gt;
                 (pitch-alt (ly:pitch-alteration pitch))&lt;br /&gt;
                 (bass (ly:event-property event &#039;bass #f))&lt;br /&gt;
                 (inversion (ly:event-property event &#039;inversion #f)))&lt;br /&gt;
            ;; We look at the `bass` and `inversion` event properties&lt;br /&gt;
            ;; to decide how to handle the current note event.  If&lt;br /&gt;
            ;; `inversion` is set we add the bass note to the chord as&lt;br /&gt;
            ;; an ordinary member so that we can compare inversed&lt;br /&gt;
            ;; chords; if `bass` is set the bass note is not added to&lt;br /&gt;
            ;; the chord.&lt;br /&gt;
            ;;&lt;br /&gt;
            ;; In the `chord-pitches` list we actually collect only&lt;br /&gt;
            ;; the notes&#039; pitch names (which are integers) and pitch&lt;br /&gt;
            ;; alterations as pairs, ignoring the octave.&lt;br /&gt;
            (cond (bass (set! bass-pitch pitch))&lt;br /&gt;
                  (inversion&lt;br /&gt;
                   (set! bass-pitch pitch)&lt;br /&gt;
                   (set! chord-pitches&lt;br /&gt;
                         (cons (cons pitch-name pitch-alt)&lt;br /&gt;
                               chord-pitches)))&lt;br /&gt;
                  (else&lt;br /&gt;
                   (set! chord-pitches&lt;br /&gt;
                         (cons (cons pitch-name pitch-alt)&lt;br /&gt;
                               chord-pitches)))))))&lt;br /&gt;
&lt;br /&gt;
        (acknowledgers&lt;br /&gt;
         ((chord-name-interface this-engraver grob source-engraver)&lt;br /&gt;
          (let ((chord-changes (ly:context-property ctx&lt;br /&gt;
                                                    &#039;chordChanges #f)))&lt;br /&gt;
            ;; If subsequent chords are equal apart from their bass,&lt;br /&gt;
            ;; we change the `text` property to print only the slash&lt;br /&gt;
            ;; and the bass note (via the formatter stored in the&lt;br /&gt;
            ;; `chordNoteNamer` context property).&lt;br /&gt;
            ;;&lt;br /&gt;
            ;; Equality is tested by comparing the sorted lists of&lt;br /&gt;
            ;; this chord&#039;s elements and the previous chord.  Sorting&lt;br /&gt;
            ;; is needed because inverted chords may have a different&lt;br /&gt;
            ;; order of pitches.  Note that we only do a simplified&lt;br /&gt;
            ;; sorting using the pitch name, ignoring the alteration.&lt;br /&gt;
            (if (and bass-pitch&lt;br /&gt;
                     chord-changes&lt;br /&gt;
                     (equal? (sort chord-pitches car&amp;lt;)&lt;br /&gt;
                             (sort last-chord-pitches car&amp;lt;)))&lt;br /&gt;
                (ly:grob-set-property!&lt;br /&gt;
                 grob &#039;text&lt;br /&gt;
                 (make-line-markup&lt;br /&gt;
                  (list&lt;br /&gt;
                   (ly:context-property ctx &#039;slashChordSeparator)&lt;br /&gt;
                   ((ly:context-property ctx &#039;chordNoteNamer)&lt;br /&gt;
                    bass-pitch&lt;br /&gt;
                    (ly:context-property ctx&lt;br /&gt;
                                         &#039;chordNameLowercaseMinor))))))&lt;br /&gt;
            (set! last-chord-pitches chord-pitches)&lt;br /&gt;
            (set! chord-pitches &#039;())&lt;br /&gt;
            (set! bass-pitch #f))))&lt;br /&gt;
&lt;br /&gt;
        ((finalize this-engraver)&lt;br /&gt;
         (set! last-chord-pitches &#039;()))))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
myChords = \chordmode {&lt;br /&gt;
  % \germanChords&lt;br /&gt;
&lt;br /&gt;
  \set chordChanges = ##t&lt;br /&gt;
  d2:m d:m/cis&lt;br /&gt;
&lt;br /&gt;
  d:m/c&lt;br /&gt;
  \set chordChanges = ##f&lt;br /&gt;
  d:m/b&lt;br /&gt;
&lt;br /&gt;
  e1:7&lt;br /&gt;
  \set chordChanges = ##t&lt;br /&gt;
  e&lt;br /&gt;
  \break&lt;br /&gt;
&lt;br /&gt;
  \once \set chordChanges = ##f&lt;br /&gt;
  e1/f&lt;br /&gt;
  e2/gis e/+gis e e:m/f d:m d:m/cis d:m/c&lt;br /&gt;
  \set chordChanges = ##f&lt;br /&gt;
  d:m/b&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \new ChordNames&lt;br /&gt;
    \with { \consists #Bass_changes_equal_root_engraver }&lt;br /&gt;
    \myChords&lt;br /&gt;
  \new Staff \myChords&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Chords]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Tambourine_example&amp;diff=6424</id>
		<title>Tambourine example</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Tambourine_example&amp;diff=6424"/>
		<updated>2026-03-04T09:59:51Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: category workaround&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A tambourine example, entered with ‘tamb’.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
#(define mydrums &#039;((tambourine default #f 0)))&lt;br /&gt;
&lt;br /&gt;
\new DrumStaff \with { instrumentName = #&amp;quot;Tambourine&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
\drummode {&lt;br /&gt;
  \set DrumStaff.drumStyleTable = #(alist-&amp;gt;hash-table mydrums)&lt;br /&gt;
  \override Staff.StaffSymbol.line-positions = #&#039;( 0 )&lt;br /&gt;
  \override Staff.BarLine.bar-extent = #&#039;(-1.5 . 1.5)&lt;br /&gt;
&lt;br /&gt;
  \time 6/8&lt;br /&gt;
  tamb8. 16 8 8 8 8 |&lt;br /&gt;
  tamb4. 8 8 8 |&lt;br /&gt;
  % The trick with the scaled duration and the shorter rest&lt;br /&gt;
  % is neccessary for the correct ending of the trill-span!&lt;br /&gt;
  tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan |&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Percussion]]&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;br /&gt;
[[Category:Workaround]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Curly_bracket_with_variable_length_(path)&amp;diff=6422</id>
		<title>Curly bracket with variable length (path)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Curly_bracket_with_variable_length_(path)&amp;diff=6422"/>
		<updated>2026-03-04T07:38:18Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: weniger und etwas andere Werte, übersichtlicher?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Curly bracket (or flat brace).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=988&lt;br /&gt;
%% see also: http://lsr.di.unimi.it/LSR/Item?id=986&lt;br /&gt;
%% Credits: PPS on April 2015&lt;br /&gt;
&lt;br /&gt;
%here starts the snippet:&lt;br /&gt;
&lt;br /&gt;
%%% Defining a custom strait brace with a variable length:&lt;br /&gt;
#(define-markup-command (long-curly-bracket layout props arg-height)&lt;br /&gt;
   (number?)&lt;br /&gt;
  &amp;quot;Draw a curly bracket with a variable length.&amp;quot;&lt;br /&gt;
     (interpret-markup layout props&lt;br /&gt;
       (markup&lt;br /&gt;
        #:translate (cons 0 (* arg-height -1))&lt;br /&gt;
        (#:with-dimensions (cons -0.001 0) (cons 0.001 0)&lt;br /&gt;
         (#:override (cons (quote filled) #t)&lt;br /&gt;
          (#:path 0.01 `(&lt;br /&gt;
           (moveto   -0.8   0.0)&lt;br /&gt;
           (curveto  -0.2   0.4  -0.3  0.7 -0.3  1.5)&lt;br /&gt;
           (lineto   -0.3   ,arg-height)&lt;br /&gt;
           (curveto  -0.4   ,(+ arg-height 1.3) 0.5 ,(+ arg-height 2.8) 0.7 ,(+ arg-height 2.8))&lt;br /&gt;
           (curveto   0.6   ,(+ arg-height 2.5) 0.1 ,(+ arg-height 2)   0.1 ,arg-height)&lt;br /&gt;
           (lineto    0.1   1.5)&lt;br /&gt;
           (curveto   0.1   0.7   0.1   0.0  -0.8   0.0)&lt;br /&gt;
           (closepath)&lt;br /&gt;
           (curveto  -0.2  -0.4  -0.3  -0.7  -0.3  -1.5)&lt;br /&gt;
           (lineto   -0.3   ,(* arg-height -1))&lt;br /&gt;
           (curveto  -0.4   ,(* (+ arg-height 1.3) -1) 0.5 ,(* (+ arg-height 2.8) -1) 0.7 ,(* (+ arg-height 2.8) -1))&lt;br /&gt;
           (curveto   0.6   ,(* (+ arg-height 2.5) -1) 0.1 ,(* (+ arg-height 2) -1)   0.1 ,(* arg-height -1))&lt;br /&gt;
           (lineto    0.1  -1.5)&lt;br /&gt;
           (curveto   0.1  -0.7   0.1   0.0  -0.8   0.0)&lt;br /&gt;
           (closepath))))))))&lt;br /&gt;
&lt;br /&gt;
%%%% Examples:&lt;br /&gt;
\markup \with-dimensions #&#039;(-1 . 110) #&#039;(-95 . 3) \column {&lt;br /&gt;
  \italic &amp;quot;long-curly-bracket #Y:&amp;quot;&lt;br /&gt;
  \line {&lt;br /&gt;
    \center-column { &amp;quot;#2.5&amp;quot; \vspace #1 \long-curly-bracket #2.5 }&lt;br /&gt;
    \hspace #4&lt;br /&gt;
    \center-column { &amp;quot;#5&amp;quot; \vspace #1 \long-curly-bracket #5 }&lt;br /&gt;
    \hspace #4&lt;br /&gt;
    \center-column { &amp;quot;#10&amp;quot; \vspace #1 \long-curly-bracket #10 }&lt;br /&gt;
    \hspace #4&lt;br /&gt;
    \center-column { &amp;quot;#22&amp;quot; \vspace #1 \long-curly-bracket #22 }&lt;br /&gt;
  %  \hspace #4&lt;br /&gt;
  %  \center-column { &amp;quot;#40&amp;quot; \vspace #1 \long-curly-bracket #40 }&lt;br /&gt;
    \hspace #30&lt;br /&gt;
    \center-column { &lt;br /&gt;
      &amp;quot;\\rotate #90 &amp;amp; #-90&amp;quot;&lt;br /&gt;
      \vspace #1&lt;br /&gt;
      &amp;quot;#3&amp;quot; &lt;br /&gt;
      \rotate #90 \raise #3 \long-curly-bracket #3&lt;br /&gt;
      \vspace #1&lt;br /&gt;
   %   &amp;quot;#6&amp;quot; &lt;br /&gt;
   %   \rotate #90 \raise #6 \long-curly-bracket #6&lt;br /&gt;
   %   \vspace #1&lt;br /&gt;
      &amp;quot;#12&amp;quot; &lt;br /&gt;
      \rotate #90 \raise #12 \long-curly-bracket #12&lt;br /&gt;
      \vspace #1&lt;br /&gt;
      &amp;quot;#20&amp;quot; &lt;br /&gt;
      \rotate #90 \raise #20 \long-curly-bracket #20&lt;br /&gt;
      \vspace #1&lt;br /&gt;
 %     &amp;quot;#30&amp;quot; &lt;br /&gt;
 %     \rotate #90 \raise #30 \long-curly-bracket #30&lt;br /&gt;
 %     \vspace #1&lt;br /&gt;
 %     &amp;quot;#28&amp;quot; &lt;br /&gt;
 %     \rotate #-90 \raise #28 \long-curly-bracket #28&lt;br /&gt;
 %     \vspace #1&lt;br /&gt;
      &amp;quot;#18&amp;quot; &lt;br /&gt;
      \rotate #-90 \raise #18 \long-curly-bracket #18&lt;br /&gt;
      \vspace #1&lt;br /&gt;
      &amp;quot;#7&amp;quot; &lt;br /&gt;
      \rotate #-90 \raise #7 \long-curly-bracket #7&lt;br /&gt;
      \vspace #1&lt;br /&gt;
  %    &amp;quot;#4&amp;quot; &lt;br /&gt;
  %    \rotate #-90 \raise #4 \long-curly-bracket #4&lt;br /&gt;
  %    \vspace #1&lt;br /&gt;
      &amp;quot;#2&amp;quot; &lt;br /&gt;
      \rotate #-90 \raise #2 \long-curly-bracket #2&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Symbols and glyphs]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adjusting_thickness_of_lyric_hyphens&amp;diff=6418</id>
		<title>Adjusting thickness of lyric hyphens</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adjusting_thickness_of_lyric_hyphens&amp;diff=6418"/>
		<updated>2026-03-02T12:39:37Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Adjusting vertical positioning of lyric hyphens]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adjusting_vertical_positioning_of_lyric_hyphens&amp;diff=6415</id>
		<title>Adjusting vertical positioning of lyric hyphens</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adjusting_vertical_positioning_of_lyric_hyphens&amp;diff=6415"/>
		<updated>2026-03-02T08:03:03Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: thickness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For joining syllables, LilyPond doesn’t use the hyphen of the text font but instead draws a simple line with variable length (this limitation is tracked as {{Issue|1255}}). Its standard vertical position doesn’t always fit the proportions of the text font. When using a font with a large x-height, it may be too low.&lt;br /&gt;
&lt;br /&gt;
You can adjust the vertical positioning of the hyphens manually. To get a good result you may want to insert a “real” hyphen for comparison (like between l-e in the snippet).&lt;br /&gt;
&lt;br /&gt;
Also, you may want to adjust the thickness of the Hyphens:   LyricHyphen.thickness&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
% LSR contributed by Hannes Kuhnert &amp;lt;hannes.kuhnert@gmx.de&amp;gt; 1.2.2012.&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  &amp;lt;&amp;lt;&lt;br /&gt;
    \new Voice = &amp;quot;Lied&amp;quot; {&lt;br /&gt;
      \relative {&lt;br /&gt;
        \clef G&lt;br /&gt;
        \key c \major&lt;br /&gt;
        e&#039;2 d c1&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    \new Lyrics = &amp;quot;Lied&amp;quot;&lt;br /&gt;
    \lyricsto Lied {&lt;br /&gt;
      La -- l-e -- lu.&lt;br /&gt;
    }&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  \layout {&lt;br /&gt;
    \context {&lt;br /&gt;
      \Lyrics&lt;br /&gt;
      \override LyricHyphen.Y-offset = #0.16&lt;br /&gt;
      \override LyricHyphen.thickness = #2.1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  #(define fonts&lt;br /&gt;
    (make-pango-font-tree&lt;br /&gt;
     &amp;quot;Serif&amp;quot;&lt;br /&gt;
     &amp;quot;Sans&amp;quot;&lt;br /&gt;
     &amp;quot;Monospace&amp;quot;&lt;br /&gt;
     (/ 20 20)))&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Paper and layout]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6404</id>
		<title>User:Rudi Guggt/scheme-functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6404"/>
		<updated>2026-02-28T09:19:55Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From the documentation:&lt;br /&gt;
[https://lilypond.org/doc/v2.25/Documentation/internals/scheme-functions scheme-functions]&lt;br /&gt;
&lt;br /&gt;
Scheme functions&lt;br /&gt;
&lt;br /&gt;
Function: [[Customizing the position and number of dots in repeat sign bar lines|add-bar-glyph-print-procedure glyph proc]]&lt;br /&gt;
&lt;br /&gt;
:Specify the single glyph glyph that calls print procedure proc. The procedure proc has to be defined in the form (make-...-bar-line grob extent) even if the extent is not used within the routine. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-context-mod contextmods modification&lt;br /&gt;
&lt;br /&gt;
    Adds the given context modification to the list contextmods of context modifications. &lt;br /&gt;
&lt;br /&gt;
Function: add-grace-property context-name grob sym val&lt;br /&gt;
&lt;br /&gt;
    Set sym=val for grob in context-name. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-interface iface desc props&lt;br /&gt;
&lt;br /&gt;
    Add a new grob interface. iface is the interface name, desc is the interface description, and props is the list of user-settable properties for the interface. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-listener callback disp cl&lt;br /&gt;
&lt;br /&gt;
    Add the single-argument procedure callback as listener to the dispatcher disp. Whenever disp hears an event of class cl, it calls callback with it. &lt;br /&gt;
&lt;br /&gt;
Function: add-new-clef clef-name clef-glyph clef-position transposition c0-position&lt;br /&gt;
&lt;br /&gt;
:Add a new clef to the list of supported clefs.&lt;br /&gt;
:The arguments clef-name, clef-glyph, clef-position, and transposition are used to add an entry to the supported-clefs alist. Arguments clef-glyph and c0-position extend c0-pitch-alist. &lt;br /&gt;
: [[Using non-standard clef positions and adding customized clef definitions|Link to example]]&lt;br /&gt;
&lt;br /&gt;
Function: ly:add-option sym val description rest&lt;br /&gt;
&lt;br /&gt;
    Add program option sym with default value val and docstring description.&lt;br /&gt;
&lt;br /&gt;
    LilyPond uses this function to define Scheme options available on the command line (given by -d or --define-default).&lt;br /&gt;
&lt;br /&gt;
    After start-up, command-line Scheme options are provided to LilyPond by function ly:command-line-options, which returns a key-value alist where all values are Scheme strings. Use the optional argument #:type to specify how such a value string for key sym should be processed by ly:set-option.&lt;br /&gt;
&lt;br /&gt;
        If set to symbol string, don’t do any further conversion and accept the value as a string. This is also necessary if a potentially fitting type predicate gets defined after LilyPond’s command-line option handling (for example, ly:duration?). In such cases, type checking should be performed manually later on.&lt;br /&gt;
        If set to symbol string-or-boolean, do the same as with string but convert strings &amp;quot;#f&amp;quot; and &amp;quot;#t&amp;quot; to Boolean values.&lt;br /&gt;
        If set to symbol string-or-false, do the same as with string but convert a string value &amp;quot;#f&amp;quot; to Boolean value #f.&lt;br /&gt;
        If set to a procedure, handle the value as a Scheme expression and use the procedure as a predicate to check whether the value fits. This is also the default behaviour if #:type is not set, using boolean? as the procedure.&lt;br /&gt;
        If set to a list, handle the value as a Scheme expression and check whether it is one of the list’s elements (u&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6403</id>
		<title>User:Rudi Guggt/scheme-functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6403"/>
		<updated>2026-02-28T09:16:19Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From the documentation:&lt;br /&gt;
[https://lilypond.org/doc/v2.25/Documentation/internals/scheme-functions scheme-functions]&lt;br /&gt;
&lt;br /&gt;
Scheme functions&lt;br /&gt;
&lt;br /&gt;
Function: [[Customizing the position and number of dots in repeat sign bar lines|add-bar-glyph-print-procedure glyph proc]]&lt;br /&gt;
&lt;br /&gt;
:Specify the single glyph glyph that calls print procedure proc. The procedure proc has to be defined in the form (make-...-bar-line grob extent) even if the extent is not used within the routine. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-context-mod contextmods modification&lt;br /&gt;
&lt;br /&gt;
    Adds the given context modification to the list contextmods of context modifications. &lt;br /&gt;
&lt;br /&gt;
Function: add-grace-property context-name grob sym val&lt;br /&gt;
&lt;br /&gt;
    Set sym=val for grob in context-name. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-interface iface desc props&lt;br /&gt;
&lt;br /&gt;
    Add a new grob interface. iface is the interface name, desc is the interface description, and props is the list of user-settable properties for the interface. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-listener callback disp cl&lt;br /&gt;
&lt;br /&gt;
    Add the single-argument procedure callback as listener to the dispatcher disp. Whenever disp hears an event of class cl, it calls callback with it. &lt;br /&gt;
&lt;br /&gt;
Function: add-new-clef clef-name clef-glyph clef-position transposition c0-position&lt;br /&gt;
&lt;br /&gt;
    Add a new clef to the list of supported clefs.&lt;br /&gt;
&lt;br /&gt;
    The arguments clef-name, clef-glyph, clef-position, and transposition are used to add an entry to the supported-clefs alist. Arguments clef-glyph and c0-position extend c0-pitch-alist. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-option sym val description rest&lt;br /&gt;
&lt;br /&gt;
    Add program option sym with default value val and docstring description.&lt;br /&gt;
&lt;br /&gt;
    LilyPond uses this function to define Scheme options available on the command line (given by -d or --define-default).&lt;br /&gt;
&lt;br /&gt;
    After start-up, command-line Scheme options are provided to LilyPond by function ly:command-line-options, which returns a key-value alist where all values are Scheme strings. Use the optional argument #:type to specify how such a value string for key sym should be processed by ly:set-option.&lt;br /&gt;
&lt;br /&gt;
        If set to symbol string, don’t do any further conversion and accept the value as a string. This is also necessary if a potentially fitting type predicate gets defined after LilyPond’s command-line option handling (for example, ly:duration?). In such cases, type checking should be performed manually later on.&lt;br /&gt;
        If set to symbol string-or-boolean, do the same as with string but convert strings &amp;quot;#f&amp;quot; and &amp;quot;#t&amp;quot; to Boolean values.&lt;br /&gt;
        If set to symbol string-or-false, do the same as with string but convert a string value &amp;quot;#f&amp;quot; to Boolean value #f.&lt;br /&gt;
        If set to a procedure, handle the value as a Scheme expression and use the procedure as a predicate to check whether the value fits. This is also the default behaviour if #:type is not set, using boolean? as the procedure.&lt;br /&gt;
        If set to a list, handle the value as a Scheme expression and check whether it is one of the list’s elements (u&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6402</id>
		<title>User:Rudi Guggt/scheme-functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt/scheme-functions&amp;diff=6402"/>
		<updated>2026-02-28T09:12:50Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Created page with &amp;quot;From the documentation: [https://lilypond.org/doc/v2.25/Documentation/internals/scheme-functions scheme-functions]  Scheme functions  Function: add-bar-glyph-print-procedure glyph proc      Specify the single glyph glyph that calls print procedure proc. The procedure proc has to be defined in the form (make-...-bar-line grob extent) even if the extent is not used within the routine.   Function: ly:add-context-mod contextmods modification      Adds the given context modif...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From the documentation:&lt;br /&gt;
[https://lilypond.org/doc/v2.25/Documentation/internals/scheme-functions scheme-functions]&lt;br /&gt;
&lt;br /&gt;
Scheme functions&lt;br /&gt;
&lt;br /&gt;
Function: add-bar-glyph-print-procedure glyph proc&lt;br /&gt;
&lt;br /&gt;
    Specify the single glyph glyph that calls print procedure proc. The procedure proc has to be defined in the form (make-...-bar-line grob extent) even if the extent is not used within the routine. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-context-mod contextmods modification&lt;br /&gt;
&lt;br /&gt;
    Adds the given context modification to the list contextmods of context modifications. &lt;br /&gt;
&lt;br /&gt;
Function: add-grace-property context-name grob sym val&lt;br /&gt;
&lt;br /&gt;
    Set sym=val for grob in context-name. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-interface iface desc props&lt;br /&gt;
&lt;br /&gt;
    Add a new grob interface. iface is the interface name, desc is the interface description, and props is the list of user-settable properties for the interface. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-listener callback disp cl&lt;br /&gt;
&lt;br /&gt;
    Add the single-argument procedure callback as listener to the dispatcher disp. Whenever disp hears an event of class cl, it calls callback with it. &lt;br /&gt;
&lt;br /&gt;
Function: add-new-clef clef-name clef-glyph clef-position transposition c0-position&lt;br /&gt;
&lt;br /&gt;
    Add a new clef to the list of supported clefs.&lt;br /&gt;
&lt;br /&gt;
    The arguments clef-name, clef-glyph, clef-position, and transposition are used to add an entry to the supported-clefs alist. Arguments clef-glyph and c0-position extend c0-pitch-alist. &lt;br /&gt;
&lt;br /&gt;
Function: ly:add-option sym val description rest&lt;br /&gt;
&lt;br /&gt;
    Add program option sym with default value val and docstring description.&lt;br /&gt;
&lt;br /&gt;
    LilyPond uses this function to define Scheme options available on the command line (given by -d or --define-default).&lt;br /&gt;
&lt;br /&gt;
    After start-up, command-line Scheme options are provided to LilyPond by function ly:command-line-options, which returns a key-value alist where all values are Scheme strings. Use the optional argument #:type to specify how such a value string for key sym should be processed by ly:set-option.&lt;br /&gt;
&lt;br /&gt;
        If set to symbol string, don’t do any further conversion and accept the value as a string. This is also necessary if a potentially fitting type predicate gets defined after LilyPond’s command-line option handling (for example, ly:duration?). In such cases, type checking should be performed manually later on.&lt;br /&gt;
        If set to symbol string-or-boolean, do the same as with string but convert strings &amp;quot;#f&amp;quot; and &amp;quot;#t&amp;quot; to Boolean values.&lt;br /&gt;
        If set to symbol string-or-false, do the same as with string but convert a string value &amp;quot;#f&amp;quot; to Boolean value #f.&lt;br /&gt;
        If set to a procedure, handle the value as a Scheme expression and use the procedure as a predicate to check whether the value fits. This is also the default behaviour if #:type is not set, using boolean? as the procedure.&lt;br /&gt;
        If set to a list, handle the value as a Scheme expression and check whether it is one of the list’s elements (u&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=6401</id>
		<title>User:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=6401"/>
		<updated>2026-02-28T09:10:46Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* my test pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m using Lilypond not regularly, so here I collect useful snippets.&lt;br /&gt;
&lt;br /&gt;
== Bar lines ==&lt;br /&gt;
&lt;br /&gt;
*[[Many types of bar lines]]&lt;br /&gt;
*[[User:Rudi Guggt/section|section]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== old style ==&lt;br /&gt;
&lt;br /&gt;
*[[Chant or psalm notation]]&lt;br /&gt;
&lt;br /&gt;
==my test pages==&lt;br /&gt;
&lt;br /&gt;
[[User:Rudi Guggt/test]]&lt;br /&gt;
&lt;br /&gt;
==scheme==&lt;br /&gt;
&lt;br /&gt;
[[User:Rudi Guggt/scheme-functions]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6400</id>
		<title>Expect a warning several times</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6400"/>
		<updated>2026-02-28T09:09:21Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: link to documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are times when your LilyPond source file prints warnings when compiled and you may want to suppress these warnings from the output.  LilyPond has a Scheme function for this: &amp;lt;code&amp;gt;ly:expect-warning&amp;lt;/code&amp;gt;. However, there are times when the same warning is printed  several times and &amp;lt;code&amp;gt;ly:expect-warning&amp;lt;/code&amp;gt; will only hide one warning at a time.  Typing this function several times in a row is tedious.&lt;br /&gt;
&lt;br /&gt;
The Scheme function below takes a string that will match some part of the warning, just like &amp;lt;code&amp;gt;ly:expect-warning&amp;lt;/code&amp;gt;, but it also takes an integer for the number of times the warning is printed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#(define expect-warning-times (lambda args&lt;br /&gt;
   (for-each (lambda _ (apply ly:expect-warning (cdr args)))&lt;br /&gt;
             (iota (car args)))))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A usage example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#(expect-warning-times 4 &amp;quot;omitting tuplet bracket&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hint from the documentation: [https://lilypond.org/doc/v2.25/Documentation/internals/scheme-functions scheme-functions]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Frescobaldi&amp;diff=6354</id>
		<title>Frescobaldi</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Frescobaldi&amp;diff=6354"/>
		<updated>2026-02-19T12:51:08Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: extensibel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.frescobaldi.org/ Frescobaldi] is a free GUI LilyPond sheet music editor. It strives to be lightweight and easy to use, yet powerful. Some of its features include:&lt;br /&gt;
&lt;br /&gt;
* Syntax highlighting&lt;br /&gt;
* Auto-completion&lt;br /&gt;
* Point and click from the PDF display&lt;br /&gt;
* A MIDI player for audio &amp;quot;proof-listen&amp;quot;&lt;br /&gt;
* A Score Wizard to set up templates for editing&lt;br /&gt;
* A snippets library, extensible with own needs&lt;br /&gt;
&lt;br /&gt;
(The Frescobaldi website is out of date.)&lt;br /&gt;
&lt;br /&gt;
You can download the latest release and get the source code at the Frescobaldi [https://github.com/frescobaldi/frescobaldi GitHub repository].&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=6353</id>
		<title>User talk:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=6353"/>
		<updated>2026-02-19T12:48:22Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Deutschsprachiges Lilypondforum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! ==&lt;br /&gt;
&lt;br /&gt;
Hallo Rudi!&lt;br /&gt;
&lt;br /&gt;
Bitte sei vorsichtig mit Änderungen an »offiziellen« Snippets – die kommen alle in das [https://lilypond.org/doc/v2.25/Documentation/snippets.pdf »Snippets« PDF] (und eine nicht geringe Zahl sogar in die [https://lilypond.org/doc/v2.25/Documentation/notation.pdf Notationsreferenz]).  Derzeit ignoriert das &amp;lt;code&amp;gt;makelsr.pl&amp;lt;/code&amp;gt;-Import-Skript alle Wiki-Links, aber ich finde, solch allgemeine Verweise wie &amp;lt;nowiki&amp;gt;[[Rests]]&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;[[Skips]]&amp;lt;/nowiki&amp;gt; passen generell nicht in die LilyPond-Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Daher ersuche ich Dich, diese Änderungen bei allem aus der Kategorie »Included in the official documentation« zu revertieren -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:34, 8 December 2025 (UTC).&lt;br /&gt;
&lt;br /&gt;
:ok, sollte ich dann wohl tun... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:39, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Danke im Voraus!  Ich jetzt auch den Text in [[:Category:Included in the official documentation]] entsprechend aktualisiert. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:46, 8 December 2025 (UTC)&lt;br /&gt;
:::Vielleicht sollte dann auch eine Bearbeitungssperre für Newbies und Ähnliche auf solche Seiten... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:48, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Das wurde von mir angedacht in Diskussionen mit Jean, aber als derzeit nicht notwendig erachtet -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 13:03, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deutschsprachiges Lilypondforum ==&lt;br /&gt;
&lt;br /&gt;
Hi Rudi, du bist doch auch dort unterwegs. Ich komme nicht mehr rein mit der Meldung, dass meine IP dauerhaft blockiert ist.&lt;br /&gt;
&lt;br /&gt;
Gast, du bist aus diesem Forum verbannt!&amp;lt;br&amp;gt;&lt;br /&gt;
blockierter IP-Bereich ist 138.99.37.216/27 (216-254)&amp;lt;br&amp;gt;&lt;br /&gt;
Dein Bann wird nie ablaufen.&lt;br /&gt;
&lt;br /&gt;
Dabei befindet sich meine IP Adresse gar nicht in diesem Bereich. Kommst du ins Forum rein? Wenn ja, könntest du bitte den Admin kontaktieren und ihm das Problem schildern.&lt;br /&gt;
&lt;br /&gt;
Vielen herzlichen Dank [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 22:09, 18 February 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Ja, ich kann mich dort weiterhin anmelden. Ich habe den Admin angeschrieben... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:44, 19 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=6352</id>
		<title>User talk:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=6352"/>
		<updated>2026-02-19T12:44:37Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Deutschsprachiges Lilypondforum */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! ==&lt;br /&gt;
&lt;br /&gt;
Hallo Rudi!&lt;br /&gt;
&lt;br /&gt;
Bitte sei vorsichtig mit Änderungen an »offiziellen« Snippets – die kommen alle in das [https://lilypond.org/doc/v2.25/Documentation/snippets.pdf »Snippets« PDF] (und eine nicht geringe Zahl sogar in die [https://lilypond.org/doc/v2.25/Documentation/notation.pdf Notationsreferenz]).  Derzeit ignoriert das &amp;lt;code&amp;gt;makelsr.pl&amp;lt;/code&amp;gt;-Import-Skript alle Wiki-Links, aber ich finde, solch allgemeine Verweise wie &amp;lt;nowiki&amp;gt;[[Rests]]&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;[[Skips]]&amp;lt;/nowiki&amp;gt; passen generell nicht in die LilyPond-Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Daher ersuche ich Dich, diese Änderungen bei allem aus der Kategorie »Included in the official documentation« zu revertieren -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:34, 8 December 2025 (UTC).&lt;br /&gt;
&lt;br /&gt;
:ok, sollte ich dann wohl tun... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:39, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Danke im Voraus!  Ich jetzt auch den Text in [[:Category:Included in the official documentation]] entsprechend aktualisiert. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:46, 8 December 2025 (UTC)&lt;br /&gt;
:::Vielleicht sollte dann auch eine Bearbeitungssperre für Newbies und Ähnliche auf solche Seiten... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:48, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: Das wurde von mir angedacht in Diskussionen mit Jean, aber als derzeit nicht notwendig erachtet -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 13:03, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deutschsprachiges Lilypondforum ==&lt;br /&gt;
&lt;br /&gt;
Hi Rudi, du bist doch auch dort unterwegs. Ich komme nicht mehr rein mit der Meldung, dass meine IP dauerhaft blockiert ist.&lt;br /&gt;
&lt;br /&gt;
Gast, du bist aus diesem Forum verbannt!&amp;lt;br&amp;gt;&lt;br /&gt;
blockierter IP-Bereich ist 138.99.37.216/27 (216-254)&amp;lt;br&amp;gt;&lt;br /&gt;
Dein Bann wird nie ablaufen.&lt;br /&gt;
&lt;br /&gt;
Dabei befindet sich meine IP Adresse gar nicht in diesem Bereich. Kommst du ins Forum rein? Wenn ja, könntest du bitte den Admin kontaktieren und ihm das Problem schildern.&lt;br /&gt;
&lt;br /&gt;
Vielen herzlichen Dank [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 22:09, 18 February 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Ich habe den Admin angeschrieben... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:44, 19 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Main_Page&amp;diff=6334</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Main_Page&amp;diff=6334"/>
		<updated>2026-02-14T13:01:50Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Undo revision 6333 by CarsonGallop (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the LilyPond wiki! This is a place where you can find and contribute commented code snippets for the [https://lilypond.org GNU LilyPond] music typesetting program.&lt;br /&gt;
&lt;br /&gt;
Use the search box to look for snippets, view the [[Special:AllPages|list of all pages]], or read the [[Help:Contributing|editing help]].  You might also enter a LilyPond Snippet Repository (LSR) number to access a redirection to the corresponding page.&lt;br /&gt;
&lt;br /&gt;
Most snippets are set up to use the current stable LilyPond release 2.24 (the intended version is always shown in the snippet).  To use a newer version, don&#039;t forget to call {{Convert-ly-devel}} on the snippet since the syntax might have changed!&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Slanted_parentheses_around_dynamics&amp;diff=6297</id>
		<title>Talk:Slanted parentheses around dynamics</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Slanted_parentheses_around_dynamics&amp;diff=6297"/>
		<updated>2026-01-31T21:36:27Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Is this Snippet Necessary? */ lilypond-tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Is this Snippet Necessary? ==&lt;br /&gt;
&lt;br /&gt;
Can&#039;t this be done without Scheme code?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
  \relative c&#039;&#039; {&lt;br /&gt;
    \override Parentheses.font-size = #2&lt;br /&gt;
    c4\parenthesize\f c c \dynamicUp c\parenthesize\p&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 16:52, 31 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Drawing_circles_around_note_heads&amp;diff=6296</id>
		<title>Drawing circles around note heads</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Drawing_circles_around_note_heads&amp;diff=6296"/>
		<updated>2026-01-31T21:22:37Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: other notes without circle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A circle can be drawn around a note head by providing a custom Scheme function to temporarily override the &amp;lt;code&amp;gt;stencil&amp;lt;/code&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
% LSR originally contributed by Valentin&lt;br /&gt;
% LSR http://lists.gnu.org/archive/html/lilypond-user/2010-10/msg00523.html&lt;br /&gt;
&lt;br /&gt;
circle = \tweak NoteHead.stencil&lt;br /&gt;
  #(lambda (grob)&lt;br /&gt;
    (let* ((note (ly:note-head::print grob))&lt;br /&gt;
           (combo-stencil (ly:stencil-add&lt;br /&gt;
               note&lt;br /&gt;
               (circle-stencil note 0.1 0.8))))&lt;br /&gt;
          (ly:make-stencil (ly:stencil-expr combo-stencil)&lt;br /&gt;
            (ly:stencil-extent note X)&lt;br /&gt;
            (ly:stencil-extent note Y))))&lt;br /&gt;
  \etc&lt;br /&gt;
&lt;br /&gt;
{ a&#039; b&#039; \circle c&#039;&#039; d&#039;&#039; }&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Mozart%E2%80%99s_Musikalisches_W%C3%BCrfelspiel&amp;diff=6285</id>
		<title>Talk:Mozart’s Musikalisches Würfelspiel</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Mozart%E2%80%99s_Musikalisches_W%C3%BCrfelspiel&amp;diff=6285"/>
		<updated>2026-01-30T14:42:43Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: weird&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Volte in wrong order? ==&lt;br /&gt;
&lt;br /&gt;
It seems to me that the prima volta bar should be seconda volta and vice versa. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 15:08, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Indeed! Fixed, thanks. [[User:Jean Abou Samra|Jean Abou Samra]] ([[User talk:Jean Abou Samra|talk]]) 15:26, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Does not work with 2.25 ==&lt;br /&gt;
&lt;br /&gt;
What changed? Compiling with 2.25 produces an error message [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 18:52, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Fixed, thanks. [[User:Jean Abou Samra|Jean Abou Samra]] ([[User talk:Jean Abou Samra|talk]]) 19:34, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Apostrophe in page title ==&lt;br /&gt;
&lt;br /&gt;
The first word of the page title, &amp;quot;Mozart&#039;s,&amp;quot; should change to “Mozart’s” with a curly (typographical) apostrophe. [[User:Gabriel Ellsworth|Gabriel Ellsworth]] ([[User talk:Gabriel Ellsworth|talk]]) 10:42, 30 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Please try doing that! :-) On the right side of the page there is an entry &#039;Move&#039;.&lt;br /&gt;
:After moving a page you should always check &#039;Special pages → Broken redirects&#039; whether there are problems. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 10:56, 30 January 2026 (UTC)&lt;br /&gt;
::Done! Thank you, Werner. I did not realize that “Move” — note the curly quotation marks 🙂 — was the place to go to change a page’s title. Now I know. [[User:Gabriel Ellsworth|Gabriel Ellsworth]] ([[User talk:Gabriel Ellsworth|talk]]) 11:13, 30 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
May I suggest, that there shouldn&#039;t be any apostrophes at all?! It&#039;s a german Titel, so it&#039;s a german genetiv-s, which does&#039;nt need a &amp;quot;&#039;&amp;quot;. Please move the page to &amp;quot;Mozarts Musikalisches Würfelspiel&amp;quot; (without the apostrophe´s), ;) --[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 13:35, 30 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This is not correct.  The language of this Wiki is English, and the Word “Mozart” is not part of the music piece&#039;s name (“Musikalisches Würfelspiel”); this means that “’s” must be used to express the genitive case. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 13:43, 30 January 2026 (UTC)&lt;br /&gt;
::If you say so. But it looks weird. --[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 14:42, 30 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Mozart%E2%80%99s_Musikalisches_W%C3%BCrfelspiel&amp;diff=6282</id>
		<title>Talk:Mozart’s Musikalisches Würfelspiel</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Mozart%E2%80%99s_Musikalisches_W%C3%BCrfelspiel&amp;diff=6282"/>
		<updated>2026-01-30T13:35:49Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Apostrophe in page title */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Volte in wrong order? ==&lt;br /&gt;
&lt;br /&gt;
It seems to me that the prima volta bar should be seconda volta and vice versa. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 15:08, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Indeed! Fixed, thanks. [[User:Jean Abou Samra|Jean Abou Samra]] ([[User talk:Jean Abou Samra|talk]]) 15:26, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Does not work with 2.25 ==&lt;br /&gt;
&lt;br /&gt;
What changed? Compiling with 2.25 produces an error message [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 18:52, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Fixed, thanks. [[User:Jean Abou Samra|Jean Abou Samra]] ([[User talk:Jean Abou Samra|talk]]) 19:34, 7 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Apostrophe in page title ==&lt;br /&gt;
&lt;br /&gt;
The first word of the page title, &amp;quot;Mozart&#039;s,&amp;quot; should change to “Mozart’s” with a curly (typographical) apostrophe. [[User:Gabriel Ellsworth|Gabriel Ellsworth]] ([[User talk:Gabriel Ellsworth|talk]]) 10:42, 30 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Please try doing that! :-) On the right side of the page there is an entry &#039;Move&#039;.&lt;br /&gt;
:After moving a page you should always check &#039;Special pages → Broken redirects&#039; whether there are problems. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 10:56, 30 January 2026 (UTC)&lt;br /&gt;
::Done! Thank you, Werner. I did not realize that “Move” — note the curly quotation marks 🙂 — was the place to go to change a page’s title. Now I know. [[User:Gabriel Ellsworth|Gabriel Ellsworth]] ([[User talk:Gabriel Ellsworth|talk]]) 11:13, 30 January 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
May I suggest, that there shouldn&#039;t be any apostrophes at all?! It&#039;s a german Titel, so it&#039;s a german genetiv-s, which does&#039;nt need a &amp;quot;&#039;&amp;quot;. Please move the page to &amp;quot;Mozarts Musikalisches Würfelspiel&amp;quot; (without the apostrophe´s), ;) --[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 13:35, 30 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Ripped,_torn_staff-lines&amp;diff=6281</id>
		<title>Ripped, torn staff-lines</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Ripped,_torn_staff-lines&amp;diff=6281"/>
		<updated>2026-01-30T13:22:01Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: nodoc: ps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some macros which can make a single staff appear as though its right side has been torn off. Two styles are available: the first &amp;amp;quot;erases&amp;amp;quot; the ends of individual staff- lines to different lengths; the second draws a zigzag line and erases everything to its right. Furthermore, the first type is capable of producing tear-patterns at random. Both work by temporarily modifying the &amp;lt;code&amp;gt;BarLine&amp;lt;/code&amp;gt; stencil.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;nodoc&amp;quot;&amp;gt;&lt;br /&gt;
For technical reasons, the zigzag lines don&#039;t show up in the Wiki because &amp;lt;code&amp;gt;\postscript&amp;lt;/code&amp;gt; only works with LilyPond&#039;s PS backend and is neither supported in the SVG (used in this Wiki) nor in the Cairo backend.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;style-1-preferences&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== STYLE 1 PREFERENCES: ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tearWidth&amp;lt;/code&amp;gt; ... default is 1&amp;lt;br /&amp;gt;&lt;br /&gt;
horizontal distance (measured in staff-spaces) between the end-points of the shortest and longest staff-lines.&lt;br /&gt;
* &amp;lt;code&amp;gt;tearXext&amp;lt;/code&amp;gt; ... default is &#039;(0 . 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
X-extent of the BarLine stencil, NOT including its width. Can be used as &amp;amp;quot;padding&amp;amp;quot; around the stencil, if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;style-2-preferences&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== STYLE 2 PREFERENCES: ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagDefaultYext&amp;lt;/code&amp;gt; ... default is &#039;(-4 . 4)&amp;lt;br /&amp;gt;&lt;br /&gt;
Y-extent of the zigzag BarLine stencil (measured in staff-spaces).&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagDefaultSerrationCount&amp;lt;/code&amp;gt; ... default is 5&amp;lt;br /&amp;gt;&lt;br /&gt;
Number of &amp;amp;quot;teeth&amp;amp;quot; or &amp;amp;quot;notches&amp;amp;quot; on the zigzag line.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearLineWidth&amp;lt;/code&amp;gt; ... default is 0.1&amp;lt;br /&amp;gt;&lt;br /&gt;
Width of the zigzag line itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearAngle&amp;lt;/code&amp;gt; ... default is 90&amp;lt;br /&amp;gt;&lt;br /&gt;
Angle (measured in degrees) of kinks in the zigzag line.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearXext&amp;lt;/code&amp;gt; ... default is &#039;(0 . 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
X-extent of the zigzag BarLine stencil, NOT including its width. Can be used as &amp;amp;quot;padding&amp;amp;quot; around the stencil, if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;usage&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== USAGE: ===&lt;br /&gt;
&lt;br /&gt;
see the &amp;lt;code&amp;gt;\score { }&amp;lt;/code&amp;gt; block at the end of the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=668&lt;br /&gt;
%% see also http://lilypond.1069038.n5.nabble.com/LSR-v2-18-quot-Ripped-torn-staff-lines-quot-does-not-compile-tc159381.html&lt;br /&gt;
&lt;br /&gt;
%LSR updated by Harm (Feb. 2014)&lt;br /&gt;
%LSR This snippet was contributed by Mark Polesky for version 2.12.0&lt;br /&gt;
&lt;br /&gt;
%% preferences %%&lt;br /&gt;
&lt;br /&gt;
tearWidth = #1&lt;br /&gt;
tearXext = #&#039;(0 . 0)&lt;br /&gt;
&lt;br /&gt;
zigzagDefaultYext = #&#039;(-4 . 4)&lt;br /&gt;
zigzagDefaultSerrationCount = #5&lt;br /&gt;
zigzagTearLineWidth = #0.1&lt;br /&gt;
zigzagTearAngle = #90&lt;br /&gt;
zigzagTearXext = #&#039;(0 . 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% start definitions %%&lt;br /&gt;
&lt;br /&gt;
tearGeneric =&lt;br /&gt;
  #(define-music-function (lengths) (list?)&lt;br /&gt;
  (let ((x-ext&lt;br /&gt;
          (lambda (n)&lt;br /&gt;
            (cons (* (list-ref lengths n) (/ tearWidth 4)) tearWidth)))&lt;br /&gt;
        (y-ext &#039;(1.5 . 2.5)))&lt;br /&gt;
&lt;br /&gt;
  #{&lt;br /&gt;
    \once \override Staff.BarLine.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.BarLine.text = \markup&lt;br /&gt;
      \override #&#039;(baseline-skip . 0) \with-color #white&lt;br /&gt;
      \column {&lt;br /&gt;
        \filled-box #(x-ext 0) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 1) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 2) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 3) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 4) #y-ext #0&lt;br /&gt;
      }&lt;br /&gt;
    \once \override Staff.BarLine.layer = #1&lt;br /&gt;
    \once \override Staff.BarLine.X-extent =&lt;br /&gt;
      #`(,(car tearXext) . ,(- (+ (cdr tearXext) tearWidth) 0.1))&lt;br /&gt;
    \break&lt;br /&gt;
  #}))&lt;br /&gt;
&lt;br /&gt;
tear =&lt;br /&gt;
  #(define-music-function () ()&lt;br /&gt;
  #{&lt;br /&gt;
    \tearGeneric&lt;br /&gt;
      #(let loop ((unused &#039;(0 1 2 3 4))&lt;br /&gt;
                  (lengths &#039;()))&lt;br /&gt;
        (if (= (length lengths) 5)&lt;br /&gt;
            lengths&lt;br /&gt;
            (let* ((x (random (length unused)))&lt;br /&gt;
                   (y (- (length unused) x))&lt;br /&gt;
                   (z (list-ref unused x)))&lt;br /&gt;
             (loop (append (list-tail unused (+ x 1))&lt;br /&gt;
                           (list-tail (reverse unused) y))&lt;br /&gt;
                   (append lengths `(,z))))))&lt;br /&gt;
  #})&lt;br /&gt;
&lt;br /&gt;
tearCustom =&lt;br /&gt;
  #(define-music-function (lengths) (list?)&lt;br /&gt;
  #{ \tearGeneric #lengths #})&lt;br /&gt;
&lt;br /&gt;
zigzagTearCustom =&lt;br /&gt;
  #(define-music-function (y-ext serrations)&lt;br /&gt;
    (pair? number?)&lt;br /&gt;
    (let* ((zigzagTearHeight (- (cdr y-ext) (car y-ext)))&lt;br /&gt;
           (deg2rad (lambda (x) (* x (/ (* (atan 1) 4) 180))))&lt;br /&gt;
           (zigzagTearWidth&lt;br /&gt;
              (/ zigzagTearHeight&lt;br /&gt;
                 serrations&lt;br /&gt;
                 (* (tan (/ (deg2rad zigzagTearAngle) 2)) 2))))&lt;br /&gt;
  #{&lt;br /&gt;
    \once \override Staff.BarLine.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.BarLine.text =&lt;br /&gt;
      \markup \with-dimensions&lt;br /&gt;
               #`(0 . ,zigzagTearWidth)&lt;br /&gt;
               #`(,(car y-ext) . ,(cdr y-ext))&lt;br /&gt;
        \postscript&lt;br /&gt;
&lt;br /&gt;
#(string-append &amp;quot;&lt;br /&gt;
/linewidth &amp;quot; (number-&amp;gt;string zigzagTearLineWidth) &amp;quot; def&lt;br /&gt;
/height &amp;quot; (number-&amp;gt;string zigzagTearHeight) &amp;quot; def&lt;br /&gt;
/serrations &amp;quot; (number-&amp;gt;string serrations) &amp;quot; def&lt;br /&gt;
/width &amp;quot; (number-&amp;gt;string zigzagTearWidth) &amp;quot; def&lt;br /&gt;
/padding &amp;quot; (number-&amp;gt;string (cdr zigzagTearXext)) &amp;quot; 2 width mul add def&lt;br /&gt;
&lt;br /&gt;
/serrationHeight height serrations div def&lt;br /&gt;
/y0 &amp;quot; (number-&amp;gt;string (cdr y-ext)) &amp;quot; def&lt;br /&gt;
/xn width def&lt;br /&gt;
/yn serrationHeight 2 div neg def&lt;br /&gt;
&lt;br /&gt;
/plotAngle {&lt;br /&gt;
  xn yn rlineto&lt;br /&gt;
  xn neg yn rlineto&lt;br /&gt;
} def&lt;br /&gt;
&lt;br /&gt;
/plotSerrations {&lt;br /&gt;
  serrations { plotAngle } repeat&lt;br /&gt;
} def&lt;br /&gt;
&lt;br /&gt;
%% whiteout:&lt;br /&gt;
1 setgray&lt;br /&gt;
linewidth setlinewidth&lt;br /&gt;
0 y0 linewidth add moveto %% (whiteout staff-lines when y-exts are integers)&lt;br /&gt;
0 y0 lineto&lt;br /&gt;
plotSerrations&lt;br /&gt;
0 linewidth neg rlineto %% (whiteout staff-lines when y-exts are integers)&lt;br /&gt;
padding 0 rlineto&lt;br /&gt;
0 height linewidth 2 mul add rlineto %% (account for top and bottom linewidth)&lt;br /&gt;
padding neg 0 rlineto&lt;br /&gt;
fill stroke&lt;br /&gt;
&lt;br /&gt;
%% draw serrations:&lt;br /&gt;
newpath&lt;br /&gt;
0 setgray&lt;br /&gt;
linewidth setlinewidth&lt;br /&gt;
0 y0 moveto&lt;br /&gt;
plotSerrations&lt;br /&gt;
stroke&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    \once \override Staff.BarLine.layer = #1&lt;br /&gt;
    \once \override Staff.BarLine.X-extent =&lt;br /&gt;
      #`(,(car zigzagTearXext) .&lt;br /&gt;
       ,(- (+ (cdr zigzagTearXext) zigzagTearWidth) 0.1))&lt;br /&gt;
    \break&lt;br /&gt;
  #}))&lt;br /&gt;
&lt;br /&gt;
zigzagTear = \zigzagTearCustom #zigzagDefaultYext #zigzagDefaultSerrationCount&lt;br /&gt;
&lt;br /&gt;
%% end definitions %%&lt;br /&gt;
&lt;br /&gt;
%% example of a custom tear-pattern:&lt;br /&gt;
tearRagged = \tearCustom #&#039;(3 1 3 1 3)&lt;br /&gt;
&lt;br /&gt;
music = { g&#039;4 d&#039;&#039; b&#039; d&#039;&#039; }&lt;br /&gt;
\header { tagline=##f }&lt;br /&gt;
\score {&lt;br /&gt;
  {&lt;br /&gt;
    %% random line-lengths:&lt;br /&gt;
    \music \tear&lt;br /&gt;
&lt;br /&gt;
    %% set line-lengths on-the-fly:&lt;br /&gt;
    \music \tearCustom #&#039;(0 1 2 3 4)&lt;br /&gt;
&lt;br /&gt;
    %% define a custom tear-pattern if you want consistency (see above):&lt;br /&gt;
    \music \tearRagged&lt;br /&gt;
&lt;br /&gt;
    %% default zigzag tear:&lt;br /&gt;
    \music \zigzagTear&lt;br /&gt;
&lt;br /&gt;
    %% set zigzag Y-extent and serration-count on-the-fly:&lt;br /&gt;
    \transpose c c&#039; \music \zigzagTearCustom #&#039;(-4 . 7) #4&lt;br /&gt;
  }&lt;br /&gt;
  \layout {&lt;br /&gt;
    indent = #0&lt;br /&gt;
    ragged-right = ##t&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Really cool]]&lt;br /&gt;
[[Category:Snippet]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Correction wanted]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Ripped,_torn_staff-lines&amp;diff=6255</id>
		<title>Ripped, torn staff-lines</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Ripped,_torn_staff-lines&amp;diff=6255"/>
		<updated>2026-01-29T09:40:31Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Zigzag lines dont appear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some macros which can make a single staff appear as though its right side has been torn off. Two styles are available: the first &amp;amp;quot;erases&amp;amp;quot; the ends of individual staff- lines to different lengths; the second draws a zigzag line and erases everything to its right. Furthermore, the first type is capable of producing tear-patterns at random. Both work by temporarily modifying the &amp;lt;code&amp;gt;BarLine&amp;lt;/code&amp;gt; stencil.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;style-1-preferences&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== STYLE 1 PREFERENCES: ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tearWidth&amp;lt;/code&amp;gt; ... default is 1&amp;lt;br /&amp;gt;&lt;br /&gt;
horizontal distance (measured in staff-spaces) between the end-points of the shortest and longest staff-lines.&lt;br /&gt;
* &amp;lt;code&amp;gt;tearXext&amp;lt;/code&amp;gt; ... default is &#039;(0 . 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
X-extent of the BarLine stencil, NOT including its width. Can be used as &amp;amp;quot;padding&amp;amp;quot; around the stencil, if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;style-2-preferences&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== STYLE 2 PREFERENCES: ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagDefaultYext&amp;lt;/code&amp;gt; ... default is &#039;(-4 . 4)&amp;lt;br /&amp;gt;&lt;br /&gt;
Y-extent of the zigzag BarLine stencil (measured in staff-spaces).&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagDefaultSerrationCount&amp;lt;/code&amp;gt; ... default is 5&amp;lt;br /&amp;gt;&lt;br /&gt;
Number of &amp;amp;quot;teeth&amp;amp;quot; or &amp;amp;quot;notches&amp;amp;quot; on the zigzag line.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearLineWidth&amp;lt;/code&amp;gt; ... default is 0.1&amp;lt;br /&amp;gt;&lt;br /&gt;
Width of the zigzag line itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearAngle&amp;lt;/code&amp;gt; ... default is 90&amp;lt;br /&amp;gt;&lt;br /&gt;
Angle (measured in degrees) of kinks in the zigzag line.&lt;br /&gt;
* &amp;lt;code&amp;gt;zigzagTearXext&amp;lt;/code&amp;gt; ... default is &#039;(0 . 0)&amp;lt;br /&amp;gt;&lt;br /&gt;
X-extent of the zigzag BarLine stencil, NOT including its width. Can be used as &amp;amp;quot;padding&amp;amp;quot; around the stencil, if needed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;usage&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== USAGE: ===&lt;br /&gt;
&lt;br /&gt;
see the &amp;lt;code&amp;gt;\score { }&amp;lt;/code&amp;gt; block at the end of the file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=668&lt;br /&gt;
%% see also http://lilypond.1069038.n5.nabble.com/LSR-v2-18-quot-Ripped-torn-staff-lines-quot-does-not-compile-tc159381.html&lt;br /&gt;
&lt;br /&gt;
%LSR updated by Harm (Feb. 2014)&lt;br /&gt;
%LSR This snippet was contributed by Mark Polesky for version 2.12.0&lt;br /&gt;
&lt;br /&gt;
%% preferences %%&lt;br /&gt;
&lt;br /&gt;
tearWidth = #1&lt;br /&gt;
tearXext = #&#039;(0 . 0)&lt;br /&gt;
&lt;br /&gt;
zigzagDefaultYext = #&#039;(-4 . 4)&lt;br /&gt;
zigzagDefaultSerrationCount = #5&lt;br /&gt;
zigzagTearLineWidth = #0.1&lt;br /&gt;
zigzagTearAngle = #90&lt;br /&gt;
zigzagTearXext = #&#039;(0 . 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% start definitions %%&lt;br /&gt;
&lt;br /&gt;
tearGeneric =&lt;br /&gt;
  #(define-music-function (lengths) (list?)&lt;br /&gt;
  (let ((x-ext&lt;br /&gt;
          (lambda (n)&lt;br /&gt;
            (cons (* (list-ref lengths n) (/ tearWidth 4)) tearWidth)))&lt;br /&gt;
        (y-ext &#039;(1.5 . 2.5)))&lt;br /&gt;
&lt;br /&gt;
  #{&lt;br /&gt;
    \once \override Staff.BarLine.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.BarLine.text = \markup&lt;br /&gt;
      \override #&#039;(baseline-skip . 0) \with-color #white&lt;br /&gt;
      \column {&lt;br /&gt;
        \filled-box #(x-ext 0) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 1) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 2) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 3) #y-ext #0&lt;br /&gt;
        \filled-box #(x-ext 4) #y-ext #0&lt;br /&gt;
      }&lt;br /&gt;
    \once \override Staff.BarLine.layer = #1&lt;br /&gt;
    \once \override Staff.BarLine.X-extent =&lt;br /&gt;
      #`(,(car tearXext) . ,(- (+ (cdr tearXext) tearWidth) 0.1))&lt;br /&gt;
    \break&lt;br /&gt;
  #}))&lt;br /&gt;
&lt;br /&gt;
tear =&lt;br /&gt;
  #(define-music-function () ()&lt;br /&gt;
  #{&lt;br /&gt;
    \tearGeneric&lt;br /&gt;
      #(let loop ((unused &#039;(0 1 2 3 4))&lt;br /&gt;
                  (lengths &#039;()))&lt;br /&gt;
        (if (= (length lengths) 5)&lt;br /&gt;
            lengths&lt;br /&gt;
            (let* ((x (random (length unused)))&lt;br /&gt;
                   (y (- (length unused) x))&lt;br /&gt;
                   (z (list-ref unused x)))&lt;br /&gt;
             (loop (append (list-tail unused (+ x 1))&lt;br /&gt;
                           (list-tail (reverse unused) y))&lt;br /&gt;
                   (append lengths `(,z))))))&lt;br /&gt;
  #})&lt;br /&gt;
&lt;br /&gt;
tearCustom =&lt;br /&gt;
  #(define-music-function (lengths) (list?)&lt;br /&gt;
  #{ \tearGeneric #lengths #})&lt;br /&gt;
&lt;br /&gt;
zigzagTearCustom =&lt;br /&gt;
  #(define-music-function (y-ext serrations)&lt;br /&gt;
    (pair? number?)&lt;br /&gt;
    (let* ((zigzagTearHeight (- (cdr y-ext) (car y-ext)))&lt;br /&gt;
           (deg2rad (lambda (x) (* x (/ (* (atan 1) 4) 180))))&lt;br /&gt;
           (zigzagTearWidth&lt;br /&gt;
              (/ zigzagTearHeight&lt;br /&gt;
                 serrations&lt;br /&gt;
                 (* (tan (/ (deg2rad zigzagTearAngle) 2)) 2))))&lt;br /&gt;
  #{&lt;br /&gt;
    \once \override Staff.BarLine.stencil = #ly:text-interface::print&lt;br /&gt;
    \once \override Staff.BarLine.text =&lt;br /&gt;
      \markup \with-dimensions&lt;br /&gt;
               #`(0 . ,zigzagTearWidth)&lt;br /&gt;
               #`(,(car y-ext) . ,(cdr y-ext))&lt;br /&gt;
        \postscript&lt;br /&gt;
&lt;br /&gt;
#(string-append &amp;quot;&lt;br /&gt;
/linewidth &amp;quot; (number-&amp;gt;string zigzagTearLineWidth) &amp;quot; def&lt;br /&gt;
/height &amp;quot; (number-&amp;gt;string zigzagTearHeight) &amp;quot; def&lt;br /&gt;
/serrations &amp;quot; (number-&amp;gt;string serrations) &amp;quot; def&lt;br /&gt;
/width &amp;quot; (number-&amp;gt;string zigzagTearWidth) &amp;quot; def&lt;br /&gt;
/padding &amp;quot; (number-&amp;gt;string (cdr zigzagTearXext)) &amp;quot; 2 width mul add def&lt;br /&gt;
&lt;br /&gt;
/serrationHeight height serrations div def&lt;br /&gt;
/y0 &amp;quot; (number-&amp;gt;string (cdr y-ext)) &amp;quot; def&lt;br /&gt;
/xn width def&lt;br /&gt;
/yn serrationHeight 2 div neg def&lt;br /&gt;
&lt;br /&gt;
/plotAngle {&lt;br /&gt;
  xn yn rlineto&lt;br /&gt;
  xn neg yn rlineto&lt;br /&gt;
} def&lt;br /&gt;
&lt;br /&gt;
/plotSerrations {&lt;br /&gt;
  serrations { plotAngle } repeat&lt;br /&gt;
} def&lt;br /&gt;
&lt;br /&gt;
%% whiteout:&lt;br /&gt;
1 setgray&lt;br /&gt;
linewidth setlinewidth&lt;br /&gt;
0 y0 linewidth add moveto %% (whiteout staff-lines when y-exts are integers)&lt;br /&gt;
0 y0 lineto&lt;br /&gt;
plotSerrations&lt;br /&gt;
0 linewidth neg rlineto %% (whiteout staff-lines when y-exts are integers)&lt;br /&gt;
padding 0 rlineto&lt;br /&gt;
0 height linewidth 2 mul add rlineto %% (account for top and bottom linewidth)&lt;br /&gt;
padding neg 0 rlineto&lt;br /&gt;
fill stroke&lt;br /&gt;
&lt;br /&gt;
%% draw serrations:&lt;br /&gt;
newpath&lt;br /&gt;
0 setgray&lt;br /&gt;
linewidth setlinewidth&lt;br /&gt;
0 y0 moveto&lt;br /&gt;
plotSerrations&lt;br /&gt;
stroke&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    \once \override Staff.BarLine.layer = #1&lt;br /&gt;
    \once \override Staff.BarLine.X-extent =&lt;br /&gt;
      #`(,(car zigzagTearXext) .&lt;br /&gt;
       ,(- (+ (cdr zigzagTearXext) zigzagTearWidth) 0.1))&lt;br /&gt;
    \break&lt;br /&gt;
  #}))&lt;br /&gt;
&lt;br /&gt;
zigzagTear = \zigzagTearCustom #zigzagDefaultYext #zigzagDefaultSerrationCount&lt;br /&gt;
&lt;br /&gt;
%% end definitions %%&lt;br /&gt;
&lt;br /&gt;
%% example of a custom tear-pattern:&lt;br /&gt;
tearRagged = \tearCustom #&#039;(3 1 3 1 3)&lt;br /&gt;
&lt;br /&gt;
music = { g&#039;4 d&#039;&#039; b&#039; d&#039;&#039; }&lt;br /&gt;
\header { tagline=##f }&lt;br /&gt;
\score {&lt;br /&gt;
  {&lt;br /&gt;
    %% random line-lengths:&lt;br /&gt;
    \music \tear&lt;br /&gt;
&lt;br /&gt;
    %% set line-lengths on-the-fly:&lt;br /&gt;
    \music \tearCustom #&#039;(0 1 2 3 4)&lt;br /&gt;
&lt;br /&gt;
    %% define a custom tear-pattern if you want consistency (see above):&lt;br /&gt;
    \music \tearRagged&lt;br /&gt;
&lt;br /&gt;
    %% default zigzag tear:&lt;br /&gt;
    \music \zigzagTear&lt;br /&gt;
&lt;br /&gt;
    %% set zigzag Y-extent and serration-count on-the-fly:&lt;br /&gt;
    \transpose c c&#039; \music \zigzagTearCustom #&#039;(-4 . 7) #4&lt;br /&gt;
  }&lt;br /&gt;
  \layout {&lt;br /&gt;
    indent = #0&lt;br /&gt;
    ragged-right = ##t&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Really cool]]&lt;br /&gt;
[[Category:Snippet]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Correction wanted]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Ripped,_torn_staff-lines&amp;diff=6254</id>
		<title>Talk:Ripped, torn staff-lines</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Ripped,_torn_staff-lines&amp;diff=6254"/>
		<updated>2026-01-29T09:35:52Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* zigzag */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== zigzag ==&lt;br /&gt;
&lt;br /&gt;
here in the wiki the zigzag lines seem to be omitted. The code itself does work. --[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 09:35, 29 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Manuela/Main_Page&amp;diff=6249</id>
		<title>User talk:Manuela/Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Manuela/Main_Page&amp;diff=6249"/>
		<updated>2026-01-26T10:58:34Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Farbe */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Farbe ==&lt;br /&gt;
&lt;br /&gt;
Hallo Manuela,&lt;br /&gt;
&lt;br /&gt;
schöner Entwurf für die Hauptseite! Bei der Farbe für die Schrift würde ich eher was Grünes sehen wollen...  &lt;br /&gt;
Vielleicht &amp;quot;#8b5&amp;quot; oder ähnlich. Was meinst du?&lt;br /&gt;
&lt;br /&gt;
Und &amp;quot;Wiki&amp;quot; statt &amp;quot;WIKI&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
LG -- [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 10:58, 26 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Using_path_expressions_to_override_stencils&amp;diff=6074</id>
		<title>Talk:Using path expressions to override stencils</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Using_path_expressions_to_override_stencils&amp;diff=6074"/>
		<updated>2026-01-04T09:03:25Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== distance to barline ==&lt;br /&gt;
&lt;br /&gt;
hello,&lt;br /&gt;
&lt;br /&gt;
it seems to be an issue, that the distance between clef and following bar varies with the zooming.  &lt;br /&gt;
How to solve that?&lt;br /&gt;
[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 09:02, 4 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Using_path_expressions_to_override_stencils&amp;diff=6073</id>
		<title>Talk:Using path expressions to override stencils</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Using_path_expressions_to_override_stencils&amp;diff=6073"/>
		<updated>2026-01-04T09:02:40Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* distance to barline */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== distance to barline ==&lt;br /&gt;
&lt;br /&gt;
hello,&lt;br /&gt;
&lt;br /&gt;
it seem to be an issue, that the distance between clef and following bar varies with the zooming.  &lt;br /&gt;
How to solve that?&lt;br /&gt;
[[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 09:02, 4 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Page_label&amp;diff=5573</id>
		<title>Page label</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Page_label&amp;diff=5573"/>
		<updated>2025-12-08T12:50:24Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: undo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page labels may be placed inside music or at top-level, and referred to in markups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
\label license&lt;br /&gt;
\markup &amp;quot;This snippet is available under the Creative Commons&lt;br /&gt;
Public Domain Dedication license.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  \repeat volta 2 {&lt;br /&gt;
    \label startRepeat&lt;br /&gt;
    \repeat unfold 20 { c&#039;2 2 }&lt;br /&gt;
    \pageBreak&lt;br /&gt;
    2 2&lt;br /&gt;
  }&lt;br /&gt;
  \textEndMark \markup {&lt;br /&gt;
    \with-link #&#039;startRepeat \line {&lt;br /&gt;
      To page \page-ref #&#039;startRepeat &amp;quot;0&amp;quot; &amp;quot;?&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup {&lt;br /&gt;
  See page \page-ref #&#039;license &amp;quot;0&amp;quot; &amp;quot;?&amp;quot; for&lt;br /&gt;
  licensing information.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Spacing]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5572</id>
		<title>User talk:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5572"/>
		<updated>2025-12-08T12:48:44Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! ==&lt;br /&gt;
&lt;br /&gt;
Hallo Rudi!&lt;br /&gt;
&lt;br /&gt;
Bitte sei vorsichtig mit Änderungen an »offiziellen« Snippets – die kommen alle in das [https://lilypond.org/doc/v2.25/Documentation/snippets.pdf »Snippets« PDF] (und eine nicht geringe Zahl sogar in die [https://lilypond.org/doc/v2.25/Documentation/notation.pdf Notationsreferenz]).  Derzeit ignoriert das &amp;lt;code&amp;gt;makelsr.pl&amp;lt;/code&amp;gt;-Import-Skript alle Wiki-Links, aber ich finde, solch allgemeine Verweise wie &amp;lt;nowiki&amp;gt;[[Rests]]&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;[[Skips]]&amp;lt;/nowiki&amp;gt; passen generell nicht in die LilyPond-Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Daher ersuche ich Dich, diese Änderungen bei allem aus der Kategorie »Included in the official documentation« zu revertieren -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:34, 8 December 2025 (UTC).&lt;br /&gt;
&lt;br /&gt;
:ok, sollte ich dann wohl tun... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:39, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Danke im Voraus!  Ich jetzt auch den Text in [[:Category:Included in the official documentation]] entsprechend aktualisiert. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:46, 8 December 2025 (UTC)&lt;br /&gt;
:::Vielleicht sollte dann auch eine Bearbeitungssperre für Newbies und Ähnliche auf solche Seiten... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:48, 8 December 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5571</id>
		<title>User talk:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5571"/>
		<updated>2025-12-08T12:48:27Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! ==&lt;br /&gt;
&lt;br /&gt;
Hallo Rudi!&lt;br /&gt;
&lt;br /&gt;
Bitte sei vorsichtig mit Änderungen an »offiziellen« Snippets – die kommen alle in das [https://lilypond.org/doc/v2.25/Documentation/snippets.pdf »Snippets« PDF] (und eine nicht geringe Zahl sogar in die [https://lilypond.org/doc/v2.25/Documentation/notation.pdf Notationsreferenz]).  Derzeit ignoriert das &amp;lt;code&amp;gt;makelsr.pl&amp;lt;/code&amp;gt;-Import-Skript alle Wiki-Links, aber ich finde, solch allgemeine Verweise wie &amp;lt;nowiki&amp;gt;[[Rests]]&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;[[Skips]]&amp;lt;/nowiki&amp;gt; passen generell nicht in die LilyPond-Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Daher ersuche ich Dich, diese Änderungen bei allem aus der Kategorie »Included in the official documentation« zu revertieren -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:34, 8 December 2025 (UTC).&lt;br /&gt;
&lt;br /&gt;
:ok, sollte ich dann wohl tun... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:39, 8 December 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Danke im Voraus!  Ich jetzt auch den Text in [[:Category:Included in the official documentation]] entsprechend aktualisiert. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:46, 8 December 2025 (UTC)&lt;br /&gt;
:::Vielleicht sollte dann auch eine Bearbeitungssperre für Newbies und ähnlich auf solche Seiten... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:48, 8 December 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Extending_a_trill_spanner&amp;diff=5569</id>
		<title>Extending a trill spanner</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Extending_a_trill_spanner&amp;diff=5569"/>
		<updated>2025-12-08T12:46:24Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Undo revision 5465 by Rudi Guggt (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For &amp;lt;code&amp;gt;TrillSpanner&amp;lt;/code&amp;gt; grobs, the &amp;lt;code&amp;gt;minimum-length&amp;lt;/code&amp;gt; property becomes effective only if the &amp;lt;code&amp;gt;set-spacing-rods&amp;lt;/code&amp;gt; procedure is called explicitly.&lt;br /&gt;
&lt;br /&gt;
To do this, the &amp;lt;code&amp;gt;springs-and-rods&amp;lt;/code&amp;gt; property should be set to &amp;lt;code&amp;gt;ly:spanner::set-spacing-rods&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  \key c\minor&lt;br /&gt;
  \time 2/4&lt;br /&gt;
  c16( as&#039;) c,-. des-.&lt;br /&gt;
  \once\override TrillSpanner.minimum-length = #15&lt;br /&gt;
  \once\override TrillSpanner.springs-and-rods = #ly:spanner::set-spacing-rods&lt;br /&gt;
  \afterGrace es4&lt;br /&gt;
  \startTrillSpan { d16[( \stopTrillSpan es)] }&lt;br /&gt;
  c( c&#039; g es c g&#039; es d&lt;br /&gt;
  \hideNotes&lt;br /&gt;
  c8)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Syntax and expressions]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode_(2)&amp;diff=5567</id>
		<title>Skips in lyric mode (2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode_(2)&amp;diff=5567"/>
		<updated>2025-12-08T12:41:19Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Undo revision 5557 by Rudi Guggt (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although &amp;lt;samp&amp;gt;s&amp;lt;/samp&amp;gt; skips cannot be used in &amp;lt;code&amp;gt;\lyricmode&amp;lt;/code&amp;gt; (it is taken to be a literal “s”, not a space), double quotes (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) or underscores (&amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;) are available.&lt;br /&gt;
&lt;br /&gt;
So for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \relative c&#039;&#039; { a4 b c d }&lt;br /&gt;
  \new Lyrics \lyricmode { a4 &amp;quot;&amp;quot; _ gap }&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode&amp;diff=5566</id>
		<title>Skips in lyric mode</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode&amp;diff=5566"/>
		<updated>2025-12-08T12:40:48Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Undo revision 5558 by Rudi Guggt (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; syntax for skips is only available in note mode and chord mode. In other situations, for example, when entering lyrics, using the &amp;lt;code&amp;gt;\skip&amp;lt;/code&amp;gt; command is recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \relative c&#039;&#039; { a1 | a }&lt;br /&gt;
  \new Lyrics \lyricmode { \skip 1 bla1 }&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5565</id>
		<title>User talk:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Rudi_Guggt&amp;diff=5565"/>
		<updated>2025-12-08T12:39:27Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitte Vorsicht mit Änderungen an »offiziellen« Snippets! ==&lt;br /&gt;
&lt;br /&gt;
Hallo Rudi!&lt;br /&gt;
&lt;br /&gt;
Bitte sei vorsichtig mit Änderungen an »offiziellen« Snippets – die kommen alle in das [https://lilypond.org/doc/v2.25/Documentation/snippets.pdf »Snippets« PDF] (und eine nicht geringe Zahl sogar in die [https://lilypond.org/doc/v2.25/Documentation/notation.pdf Notationsreferenz]).  Derzeit ignoriert das &amp;lt;code&amp;gt;makelsr.pl&amp;lt;/code&amp;gt;-Import-Skript alle Wiki-Links, aber ich finde, solch allgemeine Verweise wie &amp;lt;nowiki&amp;gt;[[Rests]]&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;[[Skips]]&amp;lt;/nowiki&amp;gt; passen generell nicht in die LilyPond-Dokumentation.&lt;br /&gt;
&lt;br /&gt;
Daher ersuche ich Dich, diese Änderungen bei allem aus der Kategorie »Included in the official documentation« zu revertieren -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 12:34, 8 December 2025 (UTC).&lt;br /&gt;
&lt;br /&gt;
:ok, sollte ich dann wohl tun... [[User:Rudi Guggt|Rudi Guggt]] ([[User talk:Rudi Guggt|talk]]) 12:39, 8 December 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=5562</id>
		<title>User:Rudi Guggt</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Rudi_Guggt&amp;diff=5562"/>
		<updated>2025-12-08T12:05:41Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: /* old style */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m using Lilypond not regularly, so here I collect useful snippets.&lt;br /&gt;
&lt;br /&gt;
== Bar lines ==&lt;br /&gt;
&lt;br /&gt;
*[[Many types of bar lines]]&lt;br /&gt;
*[[User:Rudi Guggt/section|section]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== old style ==&lt;br /&gt;
&lt;br /&gt;
*[[Chant or psalm notation]]&lt;br /&gt;
&lt;br /&gt;
==my test pages==&lt;br /&gt;
&lt;br /&gt;
[[User:Rudi Guggt/test]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adding_rests&amp;diff=5561</id>
		<title>Adding rests</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adding_rests&amp;diff=5561"/>
		<updated>2025-12-08T11:53:06Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rests are entered like notes, with the note name &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, so just type &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; followed by the duration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=158&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  r1 r2 r4 r8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For invisible rests use [[skips]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Rest&amp;diff=5560</id>
		<title>Rest</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Rest&amp;diff=5560"/>
		<updated>2025-12-08T11:51:58Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: redi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Adding rests]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Skips&amp;diff=5559</id>
		<title>Skips</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Skips&amp;diff=5559"/>
		<updated>2025-12-08T11:50:39Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: for lyrics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An invisible [[rest]] (also called a `skip&#039;) can be entered like a note with note name `s&#039; or with \skip duration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=160&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  a4 a4 s4 a4 \skip 1 a4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Skips in Lyrics see [[Skips in lyric mode]] and [[Skips in lyric mode (2)]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Spacing]]&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode&amp;diff=5558</id>
		<title>Skips in lyric mode</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode&amp;diff=5558"/>
		<updated>2025-12-08T11:46:35Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; syntax for [[skips]] is only available in note mode and chord mode. In other situations, for example, when entering lyrics, using the &amp;lt;code&amp;gt;\skip&amp;lt;/code&amp;gt; command is recommended.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \relative c&#039;&#039; { a1 | a }&lt;br /&gt;
  \new Lyrics \lyricmode { \skip 1 bla1 }&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode_(2)&amp;diff=5557</id>
		<title>Skips in lyric mode (2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Skips_in_lyric_mode_(2)&amp;diff=5557"/>
		<updated>2025-12-08T11:45:34Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: [[]]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although &amp;lt;samp&amp;gt;s&amp;lt;/samp&amp;gt; [[skips]] cannot be used in &amp;lt;code&amp;gt;\lyricmode&amp;lt;/code&amp;gt; (it is taken to be a literal “s”, not a space), double quotes (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) or underscores (&amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;) are available.&lt;br /&gt;
&lt;br /&gt;
So for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \relative c&#039;&#039; { a4 b c d }&lt;br /&gt;
  \new Lyrics \lyricmode { a4 &amp;quot;&amp;quot; _ gap }&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Really simple]]&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Colored_arrow&amp;diff=5475</id>
		<title>Colored arrow</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Colored_arrow&amp;diff=5475"/>
		<updated>2025-12-06T09:13:05Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet demonstrates drawing colored arrows in a score, e.g. for analysis purposes. These arrows have a fixed length and angle. If you prefer arrows that adapt to layout changes, please also have a look at snippet 962.&lt;br /&gt;
&lt;br /&gt;
See also [[Colored arrow (2)]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
#(define-markup-command (Arrow layout props color angle length moveX moveY) &lt;br /&gt;
   (color? number? number? number? number?)&lt;br /&gt;
   (interpret-markup layout props&lt;br /&gt;
     #{&lt;br /&gt;
       \markup {&lt;br /&gt;
         \with-dimensions #&#039;(0 . 0) #&#039;(0 . 0)&lt;br /&gt;
         \translate #(cons moveX moveY)&lt;br /&gt;
         \rotate #angle&lt;br /&gt;
         \override #&#039;(thickness . 5)    % line thickness&lt;br /&gt;
         \fontsize #10                  % arrow-head size&lt;br /&gt;
         \with-dimensions #&#039;(0 . 0) #&#039;(0 . 0)&lt;br /&gt;
         \with-color $color&lt;br /&gt;
         \translate #(cons 0 (- 0 length))&lt;br /&gt;
         \combine&lt;br /&gt;
         \draw-line #(cons 0 length)    % can be replaced by \draw-dashed-line or \draw-dotted-line&lt;br /&gt;
         \translate-scaled #&#039;(0 . -0.5) % might have to be adjusted if line thickness is changed&lt;br /&gt;
         \with-color $color &lt;br /&gt;
         \arrow-head #Y #DOWN ##t       % ##t - filled arrow-head, ##f - empty arrow-head&lt;br /&gt;
       }&lt;br /&gt;
     #}))&lt;br /&gt;
&lt;br /&gt;
{&amp;lt;&amp;lt;&lt;br /&gt;
  \new Staff {R1*3} &lt;br /&gt;
  \new Staff {&lt;br /&gt;
    e&#039;1-\tweak layer #-1 -\markup {\Arrow #green #138 #16 #2 #2 }&lt;br /&gt;
    e&#039;1-\tweak layer #-1 -\markup {\Arrow #cyan #255 #14 #-1 #2 }&lt;br /&gt;
    e&#039;1-\tweak layer #2  -\markup {\Arrow #red #172 #11 #1 #2 }&lt;br /&gt;
    % To have the arrow behind the staff, choose a value below 0 for the layer. &lt;br /&gt;
    % If you want the arrows to cover the notes, choose a value of 2 or more.&lt;br /&gt;
  }&lt;br /&gt;
&amp;gt;&amp;gt;}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Education]]&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Syntax and expressions]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Colored_arrow_(2)&amp;diff=5474</id>
		<title>Colored arrow (2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Colored_arrow_(2)&amp;diff=5474"/>
		<updated>2025-12-06T09:12:23Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: s.a.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet demonstrates drawing colored arrows in a score, e.g. for analysis purposes. These arrows will adapt to layout changes, because they are made of spanners between (invisible) note heads. If you need arrows with a fixed length and angle, you might prefer Snippet 961.&lt;br /&gt;
&lt;br /&gt;
See also: [[Colored arrow]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
forwardArrow = #(define-music-function (color)&lt;br /&gt;
                  (color?)&lt;br /&gt;
                  #{ % Cross-staff arrows are made using the VoiceFollower:&lt;br /&gt;
                    \once \override VoiceFollower.layer = #-5&lt;br /&gt;
                    % To have the arrow behind the staff, choose a value below 0 for the layer.&lt;br /&gt;
                    % If you want the arrows to cover the notes, choose a value of 2 or more.&lt;br /&gt;
                    \once \override VoiceFollower.thickness = #&#039;5    % line thickness&lt;br /&gt;
                    \once \override VoiceFollower.color = #color&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.padding = #5&lt;br /&gt;
                    % Padding can be adjusted to move arrow ends closer to the notes&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.arrow = ##t&lt;br /&gt;
                    \once \override VoiceFollower.breakable = ##t  % ##f prevents line breaks within an arrow&lt;br /&gt;
                    % Arrows within the same staff use the Glissando spanner:&lt;br /&gt;
                    \once \override Glissando.layer = #-5&lt;br /&gt;
                    \once \override Glissando.thickness = #&#039;5&lt;br /&gt;
                    \once \override Glissando.color = #color&lt;br /&gt;
                    \once \override Glissando.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override Glissando.bound-details.right.padding = #5&lt;br /&gt;
                    \once \override Glissando.bound-details.right.arrow = ##t&lt;br /&gt;
                    \once \override Glissando.breakable = ##t&lt;br /&gt;
                  #})&lt;br /&gt;
&lt;br /&gt;
backwardArrow = #(define-music-function (color)&lt;br /&gt;
                  (color?)&lt;br /&gt;
                  #{&lt;br /&gt;
                    \once \override VoiceFollower.layer = #-5&lt;br /&gt;
                    \once \override VoiceFollower.thickness = #&#039;5    % line thickness&lt;br /&gt;
                    \once \override VoiceFollower.color = #color&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.padding = #5&lt;br /&gt;
                    % pretty much the same stuff, but arrow head at the left side:&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.arrow = ##t&lt;br /&gt;
                    \once \override VoiceFollower.breakable = ##t&lt;br /&gt;
                    \once \override Glissando.layer = #-5&lt;br /&gt;
                    \once \override Glissando.thickness = #&#039;5&lt;br /&gt;
                    \once \override Glissando.color = #color&lt;br /&gt;
                    \once \override Glissando.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override Glissando.bound-details.right.padding = #5&lt;br /&gt;
                    \once \override Glissando.bound-details.left.arrow = ##t % same here...&lt;br /&gt;
                    \once \override Glissando.breakable = ##t&lt;br /&gt;
                  #})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  &amp;lt;&amp;lt;&lt;br /&gt;
    % Usage: place the arrow function call before the note, the glissando statement after the note&lt;br /&gt;
    \new Staff = upper {c4 d e \backwardArrow #blue c \glissando    R1   R1   R1   R1   R1   c4 d e c   e1 d c}&lt;br /&gt;
    \new Staff = middle {R1    c4 d e c   e8 d e f g f e c    d c d e f e f d    c1    R1    R1*4}&lt;br /&gt;
    \new Staff = lower&lt;br /&gt;
    {&amp;lt;&amp;lt;&lt;br /&gt;
      {R1   R1    c4 d e \forwardArrow #blue c\glissando    R1   c4 d e c    d c b2    R1*4}&lt;br /&gt;
      { \override NoteColumn.ignore-collision = ##t &lt;br /&gt;
        % Cross-staff arrows use an additional voice with hidden notes between them.&lt;br /&gt;
        % To make these notes visible, uncomment the following line:&lt;br /&gt;
        %      \override NoteHead.color = #cyan \override NoteHead.layer = #2&lt;br /&gt;
        % and remove the following &amp;quot;\hideNotes&amp;quot; line:&lt;br /&gt;
        \hideNotes&lt;br /&gt;
        \set Voice.followVoice = ##t&lt;br /&gt;
        \change Staff = &amp;quot;upper&amp;quot;  c4 s2.&lt;br /&gt;
        % place the arrow function call immediately before the staff change:&lt;br /&gt;
        \backwardArrow #green&lt;br /&gt;
        \change Staff = &amp;quot;middle&amp;quot;  g4 s2.&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;lower&amp;quot;  c4  s2.    s1    c4 s2.&lt;br /&gt;
        \break&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;middle&amp;quot;  c4 s2.&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;upper&amp;quot;  c4 s2.&lt;br /&gt;
      }&lt;br /&gt;
    &amp;gt;&amp;gt;}&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Breaks]]&lt;br /&gt;
[[Category:Paper and layout]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Connecting notes]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Colored_arrows_(alternative_method)&amp;diff=5473</id>
		<title>Colored arrows (alternative method)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Colored_arrows_(alternative_method)&amp;diff=5473"/>
		<updated>2025-12-06T09:11:36Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Rudi Guggt moved page Colored arrows (alternative method) to Colored arrow (2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Colored arrow (2)]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Colored_arrow_(2)&amp;diff=5472</id>
		<title>Colored arrow (2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Colored_arrow_(2)&amp;diff=5472"/>
		<updated>2025-12-06T09:11:36Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: Rudi Guggt moved page Colored arrows (alternative method) to Colored arrow (2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet demonstrates drawing colored arrows in a score, e.g. for analysis purposes. These arrows will adapt to layout changes, because they are made of spanners between (invisible) note heads. If you need arrows with a fixed length and angle, you might prefer Snippet 961.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
forwardArrow = #(define-music-function (color)&lt;br /&gt;
                  (color?)&lt;br /&gt;
                  #{ % Cross-staff arrows are made using the VoiceFollower:&lt;br /&gt;
                    \once \override VoiceFollower.layer = #-5&lt;br /&gt;
                    % To have the arrow behind the staff, choose a value below 0 for the layer.&lt;br /&gt;
                    % If you want the arrows to cover the notes, choose a value of 2 or more.&lt;br /&gt;
                    \once \override VoiceFollower.thickness = #&#039;5    % line thickness&lt;br /&gt;
                    \once \override VoiceFollower.color = #color&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.padding = #5&lt;br /&gt;
                    % Padding can be adjusted to move arrow ends closer to the notes&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.arrow = ##t&lt;br /&gt;
                    \once \override VoiceFollower.breakable = ##t  % ##f prevents line breaks within an arrow&lt;br /&gt;
                    % Arrows within the same staff use the Glissando spanner:&lt;br /&gt;
                    \once \override Glissando.layer = #-5&lt;br /&gt;
                    \once \override Glissando.thickness = #&#039;5&lt;br /&gt;
                    \once \override Glissando.color = #color&lt;br /&gt;
                    \once \override Glissando.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override Glissando.bound-details.right.padding = #5&lt;br /&gt;
                    \once \override Glissando.bound-details.right.arrow = ##t&lt;br /&gt;
                    \once \override Glissando.breakable = ##t&lt;br /&gt;
                  #})&lt;br /&gt;
&lt;br /&gt;
backwardArrow = #(define-music-function (color)&lt;br /&gt;
                  (color?)&lt;br /&gt;
                  #{&lt;br /&gt;
                    \once \override VoiceFollower.layer = #-5&lt;br /&gt;
                    \once \override VoiceFollower.thickness = #&#039;5    % line thickness&lt;br /&gt;
                    \once \override VoiceFollower.color = #color&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.right.padding = #5&lt;br /&gt;
                    % pretty much the same stuff, but arrow head at the left side:&lt;br /&gt;
                    \once \override VoiceFollower.bound-details.left.arrow = ##t&lt;br /&gt;
                    \once \override VoiceFollower.breakable = ##t&lt;br /&gt;
                    \once \override Glissando.layer = #-5&lt;br /&gt;
                    \once \override Glissando.thickness = #&#039;5&lt;br /&gt;
                    \once \override Glissando.color = #color&lt;br /&gt;
                    \once \override Glissando.bound-details.left.padding = #4&lt;br /&gt;
                    \once \override Glissando.bound-details.right.padding = #5&lt;br /&gt;
                    \once \override Glissando.bound-details.left.arrow = ##t % same here...&lt;br /&gt;
                    \once \override Glissando.breakable = ##t&lt;br /&gt;
                  #})&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  &amp;lt;&amp;lt;&lt;br /&gt;
    % Usage: place the arrow function call before the note, the glissando statement after the note&lt;br /&gt;
    \new Staff = upper {c4 d e \backwardArrow #blue c \glissando    R1   R1   R1   R1   R1   c4 d e c   e1 d c}&lt;br /&gt;
    \new Staff = middle {R1    c4 d e c   e8 d e f g f e c    d c d e f e f d    c1    R1    R1*4}&lt;br /&gt;
    \new Staff = lower&lt;br /&gt;
    {&amp;lt;&amp;lt;&lt;br /&gt;
      {R1   R1    c4 d e \forwardArrow #blue c\glissando    R1   c4 d e c    d c b2    R1*4}&lt;br /&gt;
      { \override NoteColumn.ignore-collision = ##t &lt;br /&gt;
        % Cross-staff arrows use an additional voice with hidden notes between them.&lt;br /&gt;
        % To make these notes visible, uncomment the following line:&lt;br /&gt;
        %      \override NoteHead.color = #cyan \override NoteHead.layer = #2&lt;br /&gt;
        % and remove the following &amp;quot;\hideNotes&amp;quot; line:&lt;br /&gt;
        \hideNotes&lt;br /&gt;
        \set Voice.followVoice = ##t&lt;br /&gt;
        \change Staff = &amp;quot;upper&amp;quot;  c4 s2.&lt;br /&gt;
        % place the arrow function call immediately before the staff change:&lt;br /&gt;
        \backwardArrow #green&lt;br /&gt;
        \change Staff = &amp;quot;middle&amp;quot;  g4 s2.&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;lower&amp;quot;  c4  s2.    s1    c4 s2.&lt;br /&gt;
        \break&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;middle&amp;quot;  c4 s2.&lt;br /&gt;
        \forwardArrow #red&lt;br /&gt;
        \change Staff = &amp;quot;upper&amp;quot;  c4 s2.&lt;br /&gt;
      }&lt;br /&gt;
    &amp;gt;&amp;gt;}&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Editorial annotations]]&lt;br /&gt;
[[Category:Breaks]]&lt;br /&gt;
[[Category:Paper and layout]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Connecting notes]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Implementing_a_counter_in_markup_text&amp;diff=5471</id>
		<title>Implementing a counter in markup text</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Implementing_a_counter_in_markup_text&amp;diff=5471"/>
		<updated>2025-12-06T09:05:00Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: warning in red&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet shows how to implement a counter in LilyPond for use in markup texts. Whenever you call the &amp;lt;code&amp;gt;\counter #&amp;quot;name&amp;quot;&amp;lt;/code&amp;gt; markup function, the counter named &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; will be increased by one and the new value will be printed as a text markup. The first call will print “1” by default. Example:&lt;br /&gt;
&lt;br /&gt;
 \markup {&lt;br /&gt;
   Initial value of the counter: \counter #&amp;quot;mycounter&amp;quot;.&lt;br /&gt;
   Second call: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
The snippet also implements a &amp;lt;code&amp;gt;\setcounter #&amp;quot;name&amp;quot; newvalue&amp;lt;/code&amp;gt; markup command to set the the counter to a specific value and print it out.&lt;br /&gt;
&lt;br /&gt;
One can have an arbitrary number of simultaneous counters, each indicated by its own name (as a string).&lt;br /&gt;
&lt;br /&gt;
The storage of the counter values is implemented as a global alist &amp;lt;code&amp;gt;counter-alist&amp;lt;/code&amp;gt; (Scheme/Guile&#039;s concept of a hash), where the &amp;lt;code&amp;gt;counter&amp;lt;/code&amp;gt; command simply extracts the current value, increases it by one and stores it back in the alist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
#(define counter-alist &#039;())&lt;br /&gt;
&lt;br /&gt;
#(define-markup-command (counter layout props name) (string?)&lt;br /&gt;
  &amp;quot;Increases and prints out the value of the given counter named @var{name}.&lt;br /&gt;
  If the counter does not yet exist, it is initialized with 1.&amp;quot;&lt;br /&gt;
  (let* ((oldval (assoc-ref counter-alist name))&lt;br /&gt;
         (newval (if (number? oldval) (+ oldval 1) 1)))&lt;br /&gt;
  (set! counter-alist (assoc-set! counter-alist name newval))&lt;br /&gt;
  (interpret-markup layout props&lt;br /&gt;
    (markup (number-&amp;gt;string newval)))))&lt;br /&gt;
&lt;br /&gt;
#(define-markup-command (setcounter layout props name value) (string? number?)&lt;br /&gt;
  &amp;quot;Set the given counter named @var{name} to the given @var{value} and prints&lt;br /&gt;
  out the value. The counter does not yet have to exist.&amp;quot;&lt;br /&gt;
  (set! counter-alist (assoc-set! counter-alist name (- value 1)))&lt;br /&gt;
  (interpret-markup layout props (make-counter-markup name)))&lt;br /&gt;
&lt;br /&gt;
\markup { Initial value of the counter: \counter #&amp;quot;mycounter&amp;quot;. }&lt;br /&gt;
\markup { Second call: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup { It is increasing: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup { A second counter: \counter #&amp;quot;myothercounter&amp;quot; }&lt;br /&gt;
\markup { First counter is increasing: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup { Second counter is increasing: \counter #&amp;quot;myothercounter&amp;quot; }&lt;br /&gt;
\markup { Setting to a specific value works, too: }&lt;br /&gt;
\markup { Set first counter to 15: \setcounter #&amp;quot;mycounter&amp;quot; #15 }&lt;br /&gt;
\markup { It is increasing: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup \with-color #red { Don&#039;t rush it: }&lt;br /&gt;
\markup { Three calls in a row: \counter #&amp;quot;mycounter&amp;quot;, \counter #&amp;quot;mycounter&amp;quot; and \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup { It is increasing: \counter #&amp;quot;mycounter&amp;quot; }&lt;br /&gt;
\markup { Second counter is increasing: \counter #&amp;quot;myothercounter&amp;quot; }&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Using_arbitrary_markup_as_lyric_hyphen&amp;diff=5470</id>
		<title>Using arbitrary markup as lyric hyphen</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Using_arbitrary_markup_as_lyric_hyphen&amp;diff=5470"/>
		<updated>2025-12-06T08:50:30Z</updated>

		<summary type="html">&lt;p&gt;Rudi Guggt: ≋ and hearts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lyric hyphens have several user-modifiable properties such as length and thickness; this doesn’t allow, however, for further tweaking, for example, rendering hyphens as rounded boxes to better match the font possibly used for &amp;lt;code&amp;gt;LyricText&amp;lt;/code&amp;gt;, or even printing hyphens as actual glyphs rather than drawing basic boxes.&lt;br /&gt;
&lt;br /&gt;
This snippet rewrites the &amp;lt;code&amp;gt;LyricHyphen&amp;lt;/code&amp;gt; stencil procedure to use a proper glyph… or indeed any arbitrary markup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
%% Originally contributed by Aaron Hill:&lt;br /&gt;
%% https://lists.gnu.org/archive/html/lilypond-user/2019-03/msg00257.html&lt;br /&gt;
&lt;br /&gt;
#(define (lyric-hyphen-text-stencil grob)&lt;br /&gt;
   &amp;quot;Draws a LyricHyphen using an arbitrary text markup.&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   (define (span-point side common dir)&lt;br /&gt;
     (let ((iv&lt;br /&gt;
            (ly:generic-bound-extent side common)))&lt;br /&gt;
       (if (interval-empty? iv)&lt;br /&gt;
           (ly:grob-relative-coordinate side common X)&lt;br /&gt;
           (interval-bound iv dir))))&lt;br /&gt;
           &lt;br /&gt;
   (define (get-text-stencil grob)&lt;br /&gt;
     (let* ((orig (ly:grob-original grob))&lt;br /&gt;
            (into (ly:spanner-broken-into orig)))&lt;br /&gt;
       (grob-interpret-markup&lt;br /&gt;
        (ly:spanner-bound (if (null? into) orig (first into)) LEFT)&lt;br /&gt;
        (ly:grob-property grob &#039;text &amp;quot;-&amp;quot;))))&lt;br /&gt;
        &lt;br /&gt;
   (let* ((left-bound (ly:spanner-bound grob LEFT))&lt;br /&gt;
          (right-bound (ly:spanner-bound grob RIGHT))&lt;br /&gt;
          (common (ly:grob-common-refpoint left-bound right-bound X))&lt;br /&gt;
          (left-span (span-point left-bound common RIGHT))&lt;br /&gt;
          (right-span (span-point right-bound common LEFT))&lt;br /&gt;
          (span-length (- right-span left-span))&lt;br /&gt;
          (padding (ly:grob-property grob &#039;padding 0.1))&lt;br /&gt;
          (minimum-length (ly:grob-property grob &#039;minimum-length 0.3))&lt;br /&gt;
          (usable-length &lt;br /&gt;
            (- span-length&lt;br /&gt;
               (if (zero? (ly:item-break-dir left-bound)) padding 0)&lt;br /&gt;
               (if (zero? (ly:item-break-dir right-bound)) padding 0))))&lt;br /&gt;
     (if (&amp;lt; usable-length minimum-length) &#039;()&lt;br /&gt;
         (let* ((dash-sten (get-text-stencil grob))&lt;br /&gt;
                (dash-extent (ly:stencil-extent dash-sten X))&lt;br /&gt;
                (dash-length (min (interval-length dash-extent) usable-length))&lt;br /&gt;
                (scaled-sten (ly:stencil-scale&lt;br /&gt;
                              (ly:stencil-translate-axis&lt;br /&gt;
                               dash-sten (- (interval-start dash-extent)) X)&lt;br /&gt;
                              (/ dash-length (interval-length dash-extent)) 1))&lt;br /&gt;
                (dash-period &lt;br /&gt;
                  (max (ly:grob-property grob &#039;dash-period 1.0) dash-length))&lt;br /&gt;
                (dash-count &lt;br /&gt;
                  (1+ (floor (/ (- usable-length dash-length) dash-period))))&lt;br /&gt;
                (extra &lt;br /&gt;
                  (- usable-length &lt;br /&gt;
                     dash-length &lt;br /&gt;
                     (* (- dash-count 1) dash-period)))&lt;br /&gt;
                (offset &lt;br /&gt;
                  (+ (- left-span (ly:grob-relative-coordinate grob common X))&lt;br /&gt;
                     (if (zero? (ly:item-break-dir left-bound)) padding 0)&lt;br /&gt;
                     (/ extra 2))))&lt;br /&gt;
           (apply &lt;br /&gt;
             ly:stencil-add &lt;br /&gt;
             (map &lt;br /&gt;
               (lambda (n)&lt;br /&gt;
                 (ly:stencil-translate-axis &lt;br /&gt;
                   scaled-sten &lt;br /&gt;
                   (+ offset (* n dash-period)) &lt;br /&gt;
                   X))&lt;br /&gt;
               (iota dash-count)))))))&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  indent = 0&lt;br /&gt;
  ragged-right = ##f&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  \omit Staff.TimeSignature&lt;br /&gt;
  \repeat unfold 3 {&lt;br /&gt;
    b4. b8 b4 b4 |&lt;br /&gt;
    b8 b8 b8 b8 b2 \break&lt;br /&gt;
  }&lt;br /&gt;
  r2 b&#039;2~ \break b1~ \break b2 b2&lt;br /&gt;
}&lt;br /&gt;
\addlyrics {&lt;br /&gt;
  \override Score.RehearsalMark.self-alignment-X = #LEFT&lt;br /&gt;
  &lt;br /&gt;
  \mark &amp;quot;LyricHyphen.text is \&amp;quot;-\&amp;quot;&amp;quot;&lt;br /&gt;
  \override LyricHyphen.dash-period = #5&lt;br /&gt;
  \override LyricHyphen.padding = #0.2&lt;br /&gt;
  \override LyricHyphen.stencil = #lyric-hyphen-text-stencil&lt;br /&gt;
  &lt;br /&gt;
  Lo -- rem ip -- sum do -- lor sit a -- met.&lt;br /&gt;
  &lt;br /&gt;
  \mark &amp;quot;LyricHyphen.text is \&amp;quot;–\&amp;quot;&amp;quot;&lt;br /&gt;
  \override LyricHyphen.text = #&amp;quot;–&amp;quot; %#&amp;quot;\xe2\x80\x93&amp;quot; % U+2013&lt;br /&gt;
  \override LyricText.font-series = #&#039;bold&lt;br /&gt;
  Lo -- rem ip -- sum do -- lor sit a -- met.&lt;br /&gt;
  &lt;br /&gt;
%%  \mark \markup { &amp;quot;LyricHyphen.text is &amp;quot; \circle  \with-color #red &amp;quot;&amp;amp;&amp;quot; }&lt;br /&gt;
  \mark \markup { &amp;quot;LyricHyphen.text is &amp;quot; \circle  \with-color #red &amp;quot;♥&amp;quot; }&lt;br /&gt;
  \override LyricHyphen.text = &lt;br /&gt;
    \markup&lt;br /&gt;
      \circle \with-color #red &lt;br /&gt;
      %% For unknown reason &amp;quot;\xe2\x99\xa5&amp;quot;, which is &amp;quot;♥&amp;quot;, U+2665, does not work in LSR, &lt;br /&gt;
      %% replacing it with &amp;quot;&amp;amp;&amp;quot; &lt;br /&gt;
      %% Outside of LSR it works -- Harm&lt;br /&gt;
      %%&lt;br /&gt;
      %% Outside LSR it&#039;s possible to use &amp;quot;♥&amp;quot; directly for guile-v1 and guile-v2  --Harm (May 2022)&lt;br /&gt;
      %% #&amp;quot;&amp;amp;&amp;quot;&lt;br /&gt;
      #&amp;quot;♥&amp;quot;&lt;br /&gt;
  \override LyricText.font-size = #3&lt;br /&gt;
  Lo -- rem ip -- sum do -- lor sit a -- met.&lt;br /&gt;
&lt;br /&gt;
      %% Same here for &amp;quot;\xe2\x89\x8b&amp;quot;, which is &amp;quot;≋&amp;quot;, U+224B, does not work in LSR, &lt;br /&gt;
      %% replacing it with &amp;quot;~&amp;quot; &lt;br /&gt;
      %% Outside of LSR it works -- Harm&lt;br /&gt;
      %%&lt;br /&gt;
      %% Outside LSR it&#039;s possible to use &amp;quot;≋&amp;quot; directly for guile-v1 and guile-v2  --Harm (May 2022)&lt;br /&gt;
&lt;br /&gt;
  \mark \markup { &amp;quot;LyricHyphen.text is blue&amp;quot; \with-color #blue #&amp;quot;≋&amp;quot; }&lt;br /&gt;
  \override LyricHyphen.text = &lt;br /&gt;
    \markup&lt;br /&gt;
      \scale #&#039;(3 . 1) \with-color #blue #&amp;quot;≋&amp;quot;&lt;br /&gt;
  \override LyricText.font-size = #6&lt;br /&gt;
  Break -- ing&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Rudi Guggt</name></author>
	</entry>
</feed>