<?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=Ksnortum</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=Ksnortum"/>
	<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/wiki/Special:Contributions/Ksnortum"/>
	<updated>2026-05-04T01:48:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Main_Page&amp;diff=6547</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Main_Page&amp;diff=6547"/>
		<updated>2026-04-25T13:57:55Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: 2.24 is no longer the current stable release&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 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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Chord_with_ties_and_interval_bigger_than_a_fifth_(tie_fix)&amp;diff=6542</id>
		<title>Chord with ties and interval bigger than a fifth (tie fix)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Chord_with_ties_and_interval_bigger_than_a_fifth_(tie_fix)&amp;diff=6542"/>
		<updated>2026-04-15T20:11:17Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: &amp;quot;Full&amp;quot; layout not necessary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ties in three or more note chords, on legerlines and interval of a fifth or more.&amp;lt;br /&amp;gt;&lt;br /&gt;
The tie/s encroach upon the note column space, when they shouldn&#039;t.&amp;lt;br /&amp;gt;&lt;br /&gt;
Gould, p. 64, ex. (a) shows tie not going to centre of notehead, where notehead is and there&#039;s an interval bigger than a fifth.&amp;lt;br /&amp;gt;&lt;br /&gt;
This is bug issue 1126 Tie positioning not as expected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
% adapted from the solution at the link below&lt;br /&gt;
% https://gitlab.com/lilypond/lilypond/-/issues/1126&lt;br /&gt;
\relative c&#039;&#039; { \mark without &amp;lt;g d g,&amp;gt;4~ &amp;lt;g, d&#039; g&amp;gt; r2 |&lt;br /&gt;
               &amp;lt;g&#039; d g,&amp;gt;1~ |&lt;br /&gt;
               &amp;lt;g, d&#039; g&amp;gt;1 |&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039;&#039; { \mark with &amp;lt;g d g,&amp;gt;4~ &amp;lt;g d \tweak transparent ##t b g&amp;gt; r2 |&lt;br /&gt;
                &amp;lt;g,~ \tweak transparent ##t b d~ g~&amp;gt;1 |&lt;br /&gt;
                &amp;lt;g \tweak transparent ##t b d g&amp;gt;1 |&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Workaround]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Ksnortum&amp;diff=6536</id>
		<title>User talk:Ksnortum</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Ksnortum&amp;diff=6536"/>
		<updated>2026-04-10T14:58:19Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Please be careful while using &amp;#039;Edit&amp;#039; */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Please be careful while using &#039;Edit&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hello Knute!  There is currently a bug in the &#039;Edit&#039; mode: If you only change some details in the description (i.e., not touching the LilyPond code), the &amp;lt;code&amp;gt;&amp;lt;lilypond&amp;gt;&amp;lt;/code&amp;gt; block gets ‘destroyed’ and is no longer rendered as an image.  Please use &#039;Edit source&#039; instead for the time being to avoid that. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 17:26, 8 April 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Got it, thanks. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 19:34, 8 April 2026 (UTC)&lt;br /&gt;
:...and thanks for cleaning up the mess! [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 14:58, 10 April 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Ksnortum&amp;diff=6535</id>
		<title>User talk:Ksnortum</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User_talk:Ksnortum&amp;diff=6535"/>
		<updated>2026-04-08T19:34:21Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Please be careful while using &amp;#039;Edit&amp;#039; */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Please be careful while using &#039;Edit&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hello Knute!  There is currently a bug in the &#039;Edit&#039; mode: If you only change some details in the description (i.e., not touching the LilyPond code), the &amp;lt;code&amp;gt;&amp;lt;lilypond&amp;gt;&amp;lt;/code&amp;gt; block gets ‘destroyed’ and is no longer rendered as an image.  Please use &#039;Edit source&#039; instead for the time being to avoid that. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 17:26, 8 April 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Got it, thanks. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 19:34, 8 April 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Clef_change_at_the_beginning_of_a_piece&amp;diff=6527</id>
		<title>Clef change at the beginning of a piece</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Clef_change_at_the_beginning_of_a_piece&amp;diff=6527"/>
		<updated>2026-04-08T16:47:08Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add &amp;quot;See also&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When changing the clef at the beginning of the first measure, Lilypond just changes the clef for the staff. This is how to keep the staff clef and add an extra clef after the time signature and before the first note. See also [[Clef change at the beginning of a piece (alternative)]] and [[Initial clef change]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 \version &amp;quot;2.24&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 %% &amp;lt;nowiki&amp;gt;http://lsr.di.unimi.it/LSR/Item?id=792&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 %% see also &amp;lt;nowiki&amp;gt;http://lilypond.org/doc/stable/Documentation/notation/displaying-pitches&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 % Append markup in the text property to the grob&lt;br /&gt;
 #(define (append-markup grob old-stencil)&lt;br /&gt;
   (ly:stencil-combine-at-edge&lt;br /&gt;
     old-stencil X RIGHT (ly:text-interface::print grob)))&lt;br /&gt;
 &lt;br /&gt;
 trebleToBass = {&lt;br /&gt;
   \clef bass&lt;br /&gt;
   % Fake staff clef appearance&lt;br /&gt;
   \once \override Staff.Clef.glyph-name = #&amp;quot;clefs.G&amp;quot;&lt;br /&gt;
   \once \override Staff.Clef.Y-offset = #-1&lt;br /&gt;
   % Make sure any key signatures will printed with respect to&lt;br /&gt;
   % correct middle c position expected for treble clef&lt;br /&gt;
   \once \set Staff.middleCClefPosition = -6&lt;br /&gt;
   % Append change clef to the time signature&lt;br /&gt;
   \once \override Staff.TimeSignature.text = \markup {&lt;br /&gt;
     \hspace #1.2&lt;br /&gt;
     \raise #1&lt;br /&gt;
     \musicglyph &amp;quot;clefs.F_change&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   \once \override Staff.TimeSignature.stencil = #(lambda (grob)&lt;br /&gt;
     (append-markup grob (ly:time-signature::print grob)))&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bassToTreble = {&lt;br /&gt;
   \clef treble&lt;br /&gt;
   % Fake staff clef appearance&lt;br /&gt;
   \once \override Staff.Clef.glyph-name = #&amp;quot;clefs.F&amp;quot;&lt;br /&gt;
   \once \override Staff.Clef.Y-offset = #1&lt;br /&gt;
   % Make sure any key signatures will printed with respect to&lt;br /&gt;
   % correct middle c position expected for bass clef&lt;br /&gt;
   \once \set Staff.middleCClefPosition = 6&lt;br /&gt;
   % Append change clef to the time signature&lt;br /&gt;
   \once \override Staff.TimeSignature.text = \markup {&lt;br /&gt;
     \hspace #1.2&lt;br /&gt;
     \lower #1&lt;br /&gt;
     \musicglyph &amp;quot;clefs.G_change&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   \once \override Staff.TimeSignature.stencil = #(lambda (grob)&lt;br /&gt;
     (append-markup grob (ly:time-signature::print grob)))&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 \relative c {&lt;br /&gt;
   \trebleToBass&lt;br /&gt;
   \key f \major&lt;br /&gt;
   c4 d e f&lt;br /&gt;
   % This should not be visible&lt;br /&gt;
   \clef bass&lt;br /&gt;
   g a b c&lt;br /&gt;
   % This should be visible&lt;br /&gt;
   \clef treble&lt;br /&gt;
   d e f g&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Pitches]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Initial_clef_change&amp;diff=6526</id>
		<title>Initial clef change</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Initial_clef_change&amp;diff=6526"/>
		<updated>2026-04-08T16:45:47Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add &amp;quot;See also&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet handles initial clef changes with a custom engraver. This engraver checks whether there is a difference between the initial clef (as given by &amp;lt;code&amp;gt;\with { \clef ... }&amp;lt;/code&amp;gt; and the clef at the first timestep. If any difference is encountered a new clef (spaced like a cue clef) is created, while the original clef and any key signatures are modified to look like the initial clef values. See also [[Clef change at the beginning of a piece]] and [[Clef change at the beginning of a piece (alternative)]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 \version &amp;quot;2.24&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 %%% This engraver records the initial clef properties (e.g. what is set by \with { \clef ... })&lt;br /&gt;
 %%% If in the first timestep these changed, engrave the original clef, and change formatting and break&lt;br /&gt;
 %%% alignment of the actual clef to mimic a clef change clef. Duplicates some procedure from clef engraver&lt;br /&gt;
 %%% and could easily be integrated.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;(define (initial-clef-change-engraver context)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;  (let ((initial-clef-properties #f) (cclef #f) (keysigs &#039;()))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;    ; macro for checking if any clef property has changed&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;    (define (clef-changed)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       (length initial-clef-properties)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       (length&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;        (filter&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         (lambda (x) (equal? (cdr x) (ly:context-property context (car x))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         initial-clef-properties))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;    (make-engraver&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ; Record initials propertis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ((initialize engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (set!&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       initial-clef-properties&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       `((clefGlyph . ,(ly:context-property context &#039;clefGlyph))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         (clefPosition  . ,(ly:context-property context &#039;clefPosition))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         (middleCClefPosition . ,(ly:context-property context &#039;middleCClefPosition))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         (clefTransposition  . ,(ly:context-property context &#039;clefTransposition)))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ; Record the actual clef to adjust. Use details.muted to not acknowledge clef created by this engraver.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     (acknowledgers&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      ((clef-interface engraver grob source-engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       (if (not (assoc-get &#039;muted (ly:grob-property grob &#039;details) #f))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (set! cclef grob)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      ((key-signature-interface engraver grob source-engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;       (set! keysigs (cons grob keysigs))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ; Create a clef if necessary&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ((process-music engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (if (and initial-clef-properties (clef-changed))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;          (let ((clef (ly:engraver-make-grob engraver &#039;Clef &#039;())))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (ly:grob-set-property! clef &#039;staff-position (assoc-get &#039;clefPosition initial-clef-properties))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (ly:grob-set-property! clef &#039;glyph (assoc-get &#039;clefGlyph initial-clef-properties))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (ly:grob-set-nested-property! clef &#039;(details muted) #t)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (if ((lambda (x) (and (number? x) (not (= 0 x))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                 (assoc-get &#039;clefTransposition initial-clef-properties 0))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                (let ((mod (ly:engraver-make-grob engraver &#039;ClefModifier &#039;()))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (formatter (ly:context-property context &#039;clefTranspositionFormatter))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (style (ly:context-property context &#039;clefTranspositionStyle))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (dir (sign (assoc-get &#039;clefTransposition initial-clef-properties 0)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (abs_trans (1+ (abs (assoc-get &#039;clefTransposition initial-clef-properties 0)))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (if (procedure? formatter)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (ly:grob-set-property! mod &#039;text (formatter (number-&amp;gt;string abs_trans) style)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (ly:grob-set-object! mod &#039;side-support-elements (ly:grob-list-&amp;gt;grob-array (list clef)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (ly:grob-set-parent! mod X clef)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (ly:grob-set-parent! mod Y clef)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (ly:grob-set-property! mod &#039;direction dir))))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ; Adjust the actual clef and key signatures&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ((process-acknowledged engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (if (and cclef initial-clef-properties (clef-changed))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;          (begin&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           ; Key signatures need to be handled if they appear before the cue-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           ; This requires the break alignment information, so this only sets a&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           ; hook which will be processed during `before-line-breaking` of the&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           ; BreakAlignGroups&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (for-each&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (lambda (keysig)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;              (let ((det (ly:grob-property keysig &#039;details))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                    (initial-clef-properties initial-clef-properties))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                (ly:grob-set-property!&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                 keysig&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                 &#039;details&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                 (acons&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  &#039;break-alignment-handler&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (lambda (grob break-alignment)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                    (let ((start-of-line&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                           (vector-ref&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                            (ly:grob-property break-alignment &#039;break-align-orders)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                            2)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                      (if (member &#039;cue-clef (or (member &#039;key-signature start-of-line) &#039;()))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                          (ly:grob-set-property!&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                           grob &#039;c0-position&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                           (assoc-get &#039;middleCClefPosition initial-clef-properties)))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  det))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            keysigs)&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (ly:grob-set-property! cclef &#039;non-default #t)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (ly:grob-set-property! cclef &#039;break-align-symbol &#039;cue-clef)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (if (not (eq? #t (ly:grob-property cclef &#039;full-size-change)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;               (ly:grob-set-property! cclef &#039;glyph-name&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                                     (format #f &amp;quot;~a_change&amp;quot; (ly:grob-property cclef &#039;glyph)))))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ; Unset parameters&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ((stop-translation-timestep engraver)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (set! initial-clef-properties #f)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (set! clef #f)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (set! keysigs &#039;())))))&lt;br /&gt;
 &lt;br /&gt;
 \layout {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \context {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \Staff&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \consists #initial-clef-change-engraver&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \context {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \Score&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \override BreakAlignGroup.before-line-breaking =&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   #(lambda (grob)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;      (let ((grobs (ly:grob-object grob &#039;elements))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (break-alignment (ly:grob-parent grob X)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;        (if (not (null? grobs))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;            (set! grobs (ly:grob-array-&amp;gt;list grobs)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;        (for-each&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         (lambda (grob)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;           (let* ((det (ly:grob-property grob &#039;details))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                  (handler (assoc-get &#039;break-alignment-handler det)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;             (if (procedure? handler)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;                 (handler grob break-alignment))))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         grobs)))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 \new Staff \with { \clef &amp;quot;bass^15&amp;quot; } {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \key bes\major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \clef &amp;quot;treble_8&amp;quot;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; c&#039;1 c&#039;1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \clef bass&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; c&#039;1&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 \score {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \layout {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \context {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \Score&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \override BreakAlignment.break-align-orders =&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     ##((staff-ellipsis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         left-edge&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         cue-end-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         ambitus&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         breathing-sign&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-end-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         signum-repetitionis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         cue-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         staff-bar&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-cancellation&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         time-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-start-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         custos)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;        (staff-ellipsis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         left-edge&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-end-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         cue-end-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         ambitus&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         breathing-sign&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         signum-repetitionis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         cue-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         staff-bar&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-cancellation&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         time-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-start-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         custos)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;        (staff-ellipsis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         left-edge&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-end-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         ambitus&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         breathing-sign&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         signum-repetitionis&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         cue-clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-cancellation&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         key-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         time-signature&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         staff-bar&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         optional-material-start-bracket&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;         custos))&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \new Staff \with { \clef &amp;quot;bass^15&amp;quot; } {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \key bes\major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \clef &amp;quot;treble_8&amp;quot;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   c&#039;1 c&#039;1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \clef bass&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   c&#039;1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 % Basic usage:&lt;br /&gt;
 \score {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;lt;&amp;lt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   % Just the treble clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \new Staff {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \key bes \major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     c&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   % Just the bass clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \new Staff \with { \clef bass  } {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \key bes \major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     c1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   % Initial treble clef, then bass clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \new Staff {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \key bes \major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \clef bass &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     c1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   % Initial bass clef, then treble clef&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \new Staff \with { \clef bass  } {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \key bes \major&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \clef treble &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     c&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;1&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; &amp;gt;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; \layout {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   \context {&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \Staff&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;     \consists #initial-clef-change-engraver&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   }&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt; }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Clef_change_at_the_beginning_of_a_piece_(alternative)&amp;diff=6525</id>
		<title>Clef change at the beginning of a piece (alternative)</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Clef_change_at_the_beginning_of_a_piece_(alternative)&amp;diff=6525"/>
		<updated>2026-04-08T16:44:01Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add &amp;quot;See also&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When changing the clef at the beginning of the first measure, Lilypond just changes the clef for the staff. This is how to keep the staff clef and add an extra clef after the time signature and before the first note. See also [[Initial clef change]] and [[Clef change at the beginning of a piece]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 \version &amp;quot;2.24&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 \relative c&#039; {&lt;br /&gt;
   %%  Start with a bass clef :&lt;br /&gt;
   \clef bass&lt;br /&gt;
   %%  Use a hidden grace note:&lt;br /&gt;
   \once\hideNotes\grace c64&lt;br /&gt;
   %%  Adjust the clef spacing:&lt;br /&gt;
   \once\override Staff.Clef.X-extent = #&#039;(1 . 2)&lt;br /&gt;
   %%  Put in the treble clef:&lt;br /&gt;
   \clef treble&lt;br /&gt;
   c4 c c c | c1&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Pitches]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6516</id>
		<title>Splitting chords</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Splitting_chords&amp;diff=6516"/>
		<updated>2026-04-06T22:09:35Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Node -&amp;gt; Note&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 provides two functions to split a chord sequence into two separate voices, also preserving articulations and slurs: &amp;lt;code&amp;gt;\keepOnlyFirstNote&amp;lt;/code&amp;gt; extracts the first note (as given in the input; this is usually the lowest one) of every chord, and &amp;lt;code&amp;gt;\deleteFirstNote&amp;lt;/code&amp;gt; collects the remaining notes.&lt;br /&gt;
&lt;br /&gt;
Note that these function don&#039;t support &amp;lt;samp&amp;gt;q&amp;lt;/samp&amp;gt; to repeat the last chord.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 \version &amp;quot;2.24&amp;quot;&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;
 keepOnlyFirstNote =&lt;br /&gt;
 #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
    (music-map&lt;br /&gt;
     (lambda (evt)&lt;br /&gt;
       (when (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
 	(let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
 	  (when (has-duration? (car elts))&lt;br /&gt;
 	    (ly:music-set-property!&lt;br /&gt;
 	     evt &#039;elements&lt;br /&gt;
 	     (cons (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 =&lt;br /&gt;
 #(define-music-function (parser location music) (ly:music?)&lt;br /&gt;
    (music-map&lt;br /&gt;
     (lambda (evt)&lt;br /&gt;
       (when (eq? &#039;EventChord (ly:music-property evt &#039;name))&lt;br /&gt;
 	(let ((elts (ly:music-property evt &#039;elements)))&lt;br /&gt;
           (when (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;nowiki&amp;gt;&amp;lt;b g&#039;&amp;gt;) &amp;lt;c e&amp;gt;-. g2 c2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 \markup { Music with chords }&lt;br /&gt;
 \new Staff \music&lt;br /&gt;
 &lt;br /&gt;
 \markup { Music split into two staffs }&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
   \new Staff \deleteFirstNote \music&lt;br /&gt;
   \new Staff \keepOnlyFirstNote \music&lt;br /&gt;
 &amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;/span&amp;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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Piano_%E2%80%9Chalf_sustain_pedal%E2%80%9D_indications&amp;diff=6474</id>
		<title>Piano “half sustain pedal” indications</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Piano_%E2%80%9Chalf_sustain_pedal%E2%80%9D_indications&amp;diff=6474"/>
		<updated>2026-03-19T20:18:43Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When playing the piano, there a quite a few songs that require you to only press the sustain pedal half way (or even a quarter of the way in some cases).&lt;br /&gt;
&lt;br /&gt;
There is currently not a way to show these indications on the generated music in an intuitive way. This snippet provides functions that allow you to easily do this.&lt;br /&gt;
&lt;br /&gt;
The implementation is quite complicated, but basically there are two music functions that get defined, &amp;lt;code&amp;gt;sustainHalfOn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sustainHalfOff&amp;lt;/code&amp;gt;. You can use these just like you would normally use &amp;lt;code&amp;gt;sustainOn&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sustainOff&amp;lt;/code&amp;gt;. You can use any of the sustain pedal styles, and everything will work as expected. You do need to add an explicit call to &amp;lt;code&amp;gt;sustainHalfOff&amp;lt;/code&amp;gt; when you want the half pedal to end. Calling &amp;lt;code&amp;gt;sustainOn&amp;lt;/code&amp;gt; does not automatically turn off &amp;lt;code&amp;gt;sustainHalfOn&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Under the covers, this works by representing sustain half on/half off as Una Corda pedal events. The logic temporarily changes the rendering of Una Corda pedals when you call &amp;lt;code&amp;gt;sustainHalfOn&amp;lt;/code&amp;gt;, and changes it back when you call &amp;lt;code&amp;gt;sustainHalfOff&amp;lt;/code&amp;gt;. We also temporarily change the value of &amp;lt;code&amp;gt;Staff.unaCordaPedalStyle&amp;lt;/code&amp;gt; to match the value of &amp;lt;code&amp;gt;Staff.sustainPedalStyle&amp;lt;/code&amp;gt; for the duration of the half sustain event so that the intended sustain pedal style will be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
%% This snippet defines functions that enable &amp;quot;1/2&amp;quot; pedal indications&lt;br /&gt;
%% to be used.  Using this is quite easy, just add \sustainHalfOn&lt;br /&gt;
%% in place of \sustainOn and \sustainHalfOff in place of \sustainOff&lt;br /&gt;
%%&lt;br /&gt;
%% This implementation fully supports &#039;mixed, &#039;text, and &#039;bracket pedal modes&lt;br /&gt;
%%&lt;br /&gt;
%% The new functions will honor the value of Staff.sustainPedalStyle when&lt;br /&gt;
%% doing the rendering.&lt;br /&gt;
%%&lt;br /&gt;
%% The implementation of these functions is a bit complicated.  In order to&lt;br /&gt;
%% force a new pedal indication when changing from half pedal to full pedal&lt;br /&gt;
%% or vice versa in mixed or bracket mode, internally this implementation&lt;br /&gt;
%% represents the half pedal events as UnaCorda pedal events.  Basically,&lt;br /&gt;
%% when \sustainHalfOn is called, we temporarily change the rendering&lt;br /&gt;
%% of the UnaCorda pedal indications so they look like a half pedal.&lt;br /&gt;
%% When \sustainHalfOff is called, they are changed back.  A side effect of&lt;br /&gt;
%% this is that having the UnaCorda pedal and 1/2 pedal active at the&lt;br /&gt;
%% same time is not possible with this implementation.&lt;br /&gt;
&lt;br /&gt;
%% Definitions of half-pedal functions.  Moving these to a Lilypond include file is recommended.&lt;br /&gt;
&lt;br /&gt;
#(define (half-pedal-stencil grob)&lt;br /&gt;
  (grob-interpret-markup &lt;br /&gt;
    grob &lt;br /&gt;
    (markup #:raise 0.1 &amp;quot;½&amp;quot; #:hspace -0.5 #:musicglyph &amp;quot;pedal.Ped&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
#(define (add-sustain-on note-event)&lt;br /&gt;
  (set! (ly:music-property note-event &#039;articulations)&lt;br /&gt;
   (cons&lt;br /&gt;
    (make-music &#039;UnaCordaEvent &#039;span-direction -1)&lt;br /&gt;
    (ly:music-property note-event &#039;articulations)))&lt;br /&gt;
  note-event)&lt;br /&gt;
&lt;br /&gt;
#(define (override-una-corda-strings)&lt;br /&gt;
  (context-spec-music&lt;br /&gt;
   (make-sequential-music&lt;br /&gt;
    (list&lt;br /&gt;
     (make-property-set &#039;pedalUnaCordaStrings (list &amp;quot;Ped.&amp;quot; &amp;quot;*Ped.&amp;quot; &amp;quot;*&amp;quot;))&lt;br /&gt;
     (make-apply-context&lt;br /&gt;
      (lambda (context)&lt;br /&gt;
       (ly:context-set-property! &lt;br /&gt;
         context &lt;br /&gt;
         &#039;pedalUnaCordaStyle &lt;br /&gt;
         (ly:context-property context &#039;pedalSustainStyle))))))&lt;br /&gt;
   &#039;Staff))&lt;br /&gt;
&lt;br /&gt;
#(define (revert-una-corda-strings)&lt;br /&gt;
  (context-spec-music&lt;br /&gt;
   (make-sequential-music&lt;br /&gt;
    (list&lt;br /&gt;
     (make-property-unset &#039;pedalUnaCordaStrings)&lt;br /&gt;
     (make-property-unset &#039;pedalUnaCordaStyle)))&lt;br /&gt;
   &#039;Staff))&lt;br /&gt;
&lt;br /&gt;
#(define (add-sustain-off note-event)&lt;br /&gt;
  (set! (ly:music-property note-event &#039;articulations)&lt;br /&gt;
   (cons&lt;br /&gt;
    (make-music &#039;UnaCordaEvent &#039;span-direction 1)&lt;br /&gt;
    (ly:music-property note-event &#039;articulations)))&lt;br /&gt;
  note-event)&lt;br /&gt;
&lt;br /&gt;
#(define (use-half-pedal-stencil)&lt;br /&gt;
  (context-spec-music&lt;br /&gt;
   (make-grob-property-set&lt;br /&gt;
    &#039;UnaCordaPedal&lt;br /&gt;
    &#039;stencil&lt;br /&gt;
    half-pedal-stencil)&lt;br /&gt;
   &#039;Staff))&lt;br /&gt;
&lt;br /&gt;
#(define (revert-pedal-stencil)&lt;br /&gt;
  (context-spec-music&lt;br /&gt;
   (make-grob-property-revert&lt;br /&gt;
    &#039;UnaCordaPedal&lt;br /&gt;
    &#039;stencil)&lt;br /&gt;
   &#039;Staff))&lt;br /&gt;
&lt;br /&gt;
sustainHalfOn =&lt;br /&gt;
#(define-music-function&lt;br /&gt;
  (note)&lt;br /&gt;
  (ly:music?)&lt;br /&gt;
&lt;br /&gt;
  (make-sequential-music&lt;br /&gt;
   (list&lt;br /&gt;
    (override-una-corda-strings)&lt;br /&gt;
    (use-half-pedal-stencil)&lt;br /&gt;
    (add-sustain-on note))))&lt;br /&gt;
&lt;br /&gt;
sustainHalfOff =&lt;br /&gt;
#(define-music-function&lt;br /&gt;
  (note)&lt;br /&gt;
  (ly:music?)&lt;br /&gt;
  (make-sequential-music&lt;br /&gt;
   (list&lt;br /&gt;
    (revert-pedal-stencil)&lt;br /&gt;
    (add-sustain-off note)&lt;br /&gt;
    (revert-una-corda-strings))))&lt;br /&gt;
&lt;br /&gt;
%% Half Pedal Example&lt;br /&gt;
&lt;br /&gt;
\new Staff {&lt;br /&gt;
  \set Staff.pedalSustainStyle = #&#039;mixed&lt;br /&gt;
  \sustainHalfOn&lt;br /&gt;
  b&#039;16 c&#039; d&#039; e&#039;&lt;br /&gt;
  \sustainHalfOff&lt;br /&gt;
  f&#039;&lt;br /&gt;
  \sustainOn&lt;br /&gt;
  g&#039; a&#039; a&#039; a&#039; a&#039; a&#039; c&#039;&lt;br /&gt;
  \sustainOff&lt;br /&gt;
  a&#039; a&#039;&lt;br /&gt;
  \sustainOn&lt;br /&gt;
  a&#039; a&#039;&lt;br /&gt;
  \sustainOff\sustainOn&lt;br /&gt;
  a&#039; a&#039; a&#039; a&#039;&lt;br /&gt;
  \sustainOff&lt;br /&gt;
  \set Staff.pedalSustainStyle = #&#039;text&lt;br /&gt;
  a&#039;&lt;br /&gt;
  \sustainHalfOn&lt;br /&gt;
  a&#039; a&#039; a&#039; a&#039;&lt;br /&gt;
  \sustainHalfOff&lt;br /&gt;
  a&#039;&lt;br /&gt;
  \sustainOn&lt;br /&gt;
  a&#039; a&#039; a&#039; a&#039; a&#039;&lt;br /&gt;
  \sustainOff&lt;br /&gt;
  a&#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Expressive marks]]&lt;br /&gt;
[[Category:Workaround]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Airy_tone&amp;diff=6461</id>
		<title>Talk:Airy tone</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Airy_tone&amp;diff=6461"/>
		<updated>2026-03-18T16:40:56Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Circles not displaying in Wiki */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Circles not displaying in Wiki ==&lt;br /&gt;
&lt;br /&gt;
The circles are not displaying in the Wiki.  However, if I copy and paste the code and compile it locally, the circles do display.  Does anyone know how to fix this? [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 16:40, 18 March 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Key_signatures_for_small_staves&amp;diff=6460</id>
		<title>Key signatures for small staves</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Key_signatures_for_small_staves&amp;diff=6460"/>
		<updated>2026-03-18T16:10:58Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Does not need full page layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Traditionally, smaller staves key signature spacing is slightly different than full size staves ones.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a function that automatically calculates the right key signature spacing according to the staff size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
%% =&amp;gt; http://lsr.di.unimi.it/LSR/Item?id=1094&lt;br /&gt;
&lt;br /&gt;
%% This extends \staffSize as defined in &lt;br /&gt;
%% &amp;quot;Changing the size of a staff with a music function&amp;quot;&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=862&lt;br /&gt;
staffSize = #(define-music-function (new-size) (number?)&lt;br /&gt;
  #{&lt;br /&gt;
    \set fontSize = #new-size&lt;br /&gt;
    \override StaffSymbol.staff-space = #(magstep new-size)&lt;br /&gt;
    \override StaffSymbol.thickness = #(magstep new-size)&lt;br /&gt;
    \override KeySignature.padding = #(* 2/3 (- 1 (magstep new-size)))&lt;br /&gt;
  #})&lt;br /&gt;
&lt;br /&gt;
keyTest = { \key cis\major s4*4 \bar &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
\markup\italic &amp;quot;Default output:&amp;quot;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \new Staff \with { &lt;br /&gt;
    fontSize = #-3&lt;br /&gt;
    \override StaffSymbol.staff-space = #(magstep -3)&lt;br /&gt;
    \override StaffSymbol.thickness = #(magstep -3)&lt;br /&gt;
  } \keyTest &lt;br /&gt;
  \new Staff \keyTest &lt;br /&gt;
  &lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\markup\italic &amp;quot;Traditional output:&amp;quot;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \new Staff \with { \staffSize #-3 } \keyTest &lt;br /&gt;
  \new Staff \keyTest &lt;br /&gt;
  &lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%{&lt;br /&gt;
% For v.2.19 and higher:&lt;br /&gt;
&lt;br /&gt;
scaleStaff = #(define-music-function (scaleFac) (number?)&lt;br /&gt;
                 #{&lt;br /&gt;
                   \magnifyStaff #scaleFac&lt;br /&gt;
                   \override KeySignature.padding = #(* 2/3 (- 1 scaleFac))&lt;br /&gt;
                 #})&lt;br /&gt;
&lt;br /&gt;
sizeTest = #5/7&lt;br /&gt;
keyTest = { \key cis\major s4*4 \bar &amp;quot;&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
  \new Staff \with { \scaleStaff #sizeTest } \keyTest&lt;br /&gt;
  \new Staff \keyTest&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:Staff notation]]&lt;br /&gt;
[[Category:Vocal music]]&lt;br /&gt;
[[Category:Spacing]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Workaround]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Box_around_notes&amp;diff=6458</id>
		<title>Box around notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Box_around_notes&amp;diff=6458"/>
		<updated>2026-03-16T21:46:51Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Fix cropping problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet demonstrates how to add boxes around/behind notes. Boxes are automatically sized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
#(define-event-class &#039;music-boxer-event &#039;span-event)&lt;br /&gt;
&lt;br /&gt;
#(define-event-class &#039;box-event &#039;music-event)&lt;br /&gt;
&lt;br /&gt;
#(define (add-grob-definition grob-name grob-entry)&lt;br /&gt;
   (set! all-grob-descriptions&lt;br /&gt;
         (cons ((@@ (lily) completize-grob-entry)&lt;br /&gt;
                (cons grob-name grob-entry))&lt;br /&gt;
               all-grob-descriptions)))&lt;br /&gt;
&lt;br /&gt;
#(add-grob-definition&lt;br /&gt;
  &#039;LyricWord&lt;br /&gt;
  `(;(stencil . ,ly:lyric-word::print)&lt;br /&gt;
     (meta . ((class . Spanner)&lt;br /&gt;
              (interfaces . (lyric-hyphen-interface&lt;br /&gt;
                             lyric-word-interface&lt;br /&gt;
                             text-interface))))))&lt;br /&gt;
&lt;br /&gt;
#(define (make-box thick padding xext yext)&lt;br /&gt;
   (let ((xext (interval-widen xext padding))&lt;br /&gt;
         (yext (interval-widen yext padding)))&lt;br /&gt;
   (ly:stencil-add&lt;br /&gt;
    (make-filled-box-stencil xext (cons (- (car yext) thick) (car yext)))&lt;br /&gt;
    (make-filled-box-stencil xext (cons (cdr yext) (+ (cdr yext) thick)))&lt;br /&gt;
    (make-filled-box-stencil (cons (cdr xext) (+ (cdr xext) thick)) yext)&lt;br /&gt;
    (make-filled-box-stencil (cons (- (car xext) thick) (car xext)) yext))))&lt;br /&gt;
&lt;br /&gt;
#(define (music-boxer-stencil grob)&lt;br /&gt;
   (let* ((elts (ly:grob-object grob &#039;elements))&lt;br /&gt;
          (refp-X (ly:grob-common-refpoint-of-array grob elts X))&lt;br /&gt;
          (X-ext (ly:relative-group-extent elts refp-X X))&lt;br /&gt;
          (refp-Y (ly:grob-common-refpoint-of-array grob elts Y))&lt;br /&gt;
          (Y-ext (ly:relative-group-extent elts refp-Y Y))&lt;br /&gt;
          (padding (ly:grob-property grob &#039;padding 0.3))&lt;br /&gt;
          (stil (make-box 0.1 padding X-ext Y-ext))&lt;br /&gt;
          (offset (ly:grob-relative-coordinate grob refp-X X)))&lt;br /&gt;
     (ly:stencil-translate-axis stil (- offset) X)))&lt;br /&gt;
&lt;br /&gt;
#(define box-stil music-boxer-stencil)&lt;br /&gt;
&lt;br /&gt;
#(add-grob-definition&lt;br /&gt;
  &#039;Box&lt;br /&gt;
  `(&lt;br /&gt;
     (stencil . ,box-stil)&lt;br /&gt;
     (meta . ((class . Item)&lt;br /&gt;
              (interfaces . ())))))&lt;br /&gt;
&lt;br /&gt;
#(add-grob-definition&lt;br /&gt;
  &#039;MusicBoxer&lt;br /&gt;
  `(&lt;br /&gt;
     (stencil . ,music-boxer-stencil)&lt;br /&gt;
     (meta . ((class . Spanner)&lt;br /&gt;
              (interfaces . ())))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#(define box-types&lt;br /&gt;
   &#039;(&lt;br /&gt;
      (BoxEvent&lt;br /&gt;
       . ((description . &amp;quot;A box encompassing music at a single timestep.&amp;quot;)&lt;br /&gt;
          (types . (general-music box-event music-event event))&lt;br /&gt;
          ))&lt;br /&gt;
      ))&lt;br /&gt;
&lt;br /&gt;
#(define music-boxer-types&lt;br /&gt;
   &#039;(&lt;br /&gt;
      (MusicBoxerEvent&lt;br /&gt;
       . ((description . &amp;quot;Used to signal where boxes encompassing music start and stop.&amp;quot;)&lt;br /&gt;
          (types . (general-music music-boxer-event span-event event))&lt;br /&gt;
          ))&lt;br /&gt;
      ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#(set!&lt;br /&gt;
  music-boxer-types&lt;br /&gt;
  (map (lambda (x)&lt;br /&gt;
         (set-object-property! (car x)&lt;br /&gt;
           &#039;music-description&lt;br /&gt;
           (cdr (assq &#039;description (cdr x))))&lt;br /&gt;
         (let ((lst (cdr x)))&lt;br /&gt;
           (set! lst (assoc-set! lst &#039;name (car x)))&lt;br /&gt;
           (set! lst (assq-remove! lst &#039;description))&lt;br /&gt;
           (hashq-set! music-name-to-property-table (car x) lst)&lt;br /&gt;
           (cons (car x) lst)))&lt;br /&gt;
    music-boxer-types))&lt;br /&gt;
&lt;br /&gt;
#(set!&lt;br /&gt;
  box-types&lt;br /&gt;
  (map (lambda (x)&lt;br /&gt;
         (set-object-property! (car x)&lt;br /&gt;
           &#039;music-description&lt;br /&gt;
           (cdr (assq &#039;description (cdr x))))&lt;br /&gt;
         (let ((lst (cdr x)))&lt;br /&gt;
           (set! lst (assoc-set! lst &#039;name (car x)))&lt;br /&gt;
           (set! lst (assq-remove! lst &#039;description))&lt;br /&gt;
           (hashq-set! music-name-to-property-table (car x) lst)&lt;br /&gt;
           (cons (car x) lst)))&lt;br /&gt;
    box-types))&lt;br /&gt;
&lt;br /&gt;
#(set! music-descriptions&lt;br /&gt;
       (append music-boxer-types music-descriptions))&lt;br /&gt;
&lt;br /&gt;
#(set! music-descriptions&lt;br /&gt;
       (append box-types music-descriptions))&lt;br /&gt;
&lt;br /&gt;
#(set! music-descriptions&lt;br /&gt;
       (sort music-descriptions alist&amp;lt;?))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#(define (add-bound-item spanner item)&lt;br /&gt;
   (if (null? (ly:spanner-bound spanner LEFT))&lt;br /&gt;
       (ly:spanner-set-bound! spanner LEFT item)&lt;br /&gt;
       (ly:spanner-set-bound! spanner RIGHT item)))&lt;br /&gt;
&lt;br /&gt;
musicBoxerEngraver =&lt;br /&gt;
#(lambda (context)&lt;br /&gt;
   (let ((span &#039;())&lt;br /&gt;
         (finished &#039;())&lt;br /&gt;
         (current-event &#039;())&lt;br /&gt;
         (event-start &#039;())&lt;br /&gt;
         (event-stop &#039;()))&lt;br /&gt;
&lt;br /&gt;
     `((listeners&lt;br /&gt;
        (music-boxer-event .&lt;br /&gt;
          ,(lambda (engraver event)&lt;br /&gt;
             (if (= START (ly:event-property event &#039;span-direction))&lt;br /&gt;
                 (set! event-start event)&lt;br /&gt;
                 (set! event-stop event)))))&lt;br /&gt;
&lt;br /&gt;
       (acknowledgers&lt;br /&gt;
        (note-column-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:spanner? span)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  (ly:pointer-group-interface::add-grob span &#039;elements grob)&lt;br /&gt;
                  (add-bound-item span grob)))&lt;br /&gt;
             (if (ly:spanner? finished)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  (ly:pointer-group-interface::add-grob finished &#039;elements grob)&lt;br /&gt;
                  (add-bound-item finished grob)))))&lt;br /&gt;
&lt;br /&gt;
        (inline-accidental-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:spanner? span)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  (ly:pointer-group-interface::add-grob span &#039;elements grob)))&lt;br /&gt;
             (if (ly:spanner? finished)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob finished &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        (script-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:spanner? span)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  (ly:pointer-group-interface::add-grob span &#039;elements grob)))&lt;br /&gt;
             (if (ly:spanner? finished)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob finished &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        (finger-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:spanner? span)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  (ly:pointer-group-interface::add-grob span &#039;elements grob)))&lt;br /&gt;
             (if (ly:spanner? finished)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob finished &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        ;; add additional interfaces to acknowledge here&lt;br /&gt;
&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
       (process-music .&lt;br /&gt;
         ,(lambda (trans)&lt;br /&gt;
            (if (ly:stream-event? event-stop)&lt;br /&gt;
                (if (null? span)&lt;br /&gt;
                    (ly:warning &amp;quot;No start to this box.&amp;quot;)&lt;br /&gt;
                    (begin&lt;br /&gt;
                     (set! finished span)&lt;br /&gt;
                     (ly:engraver-announce-end-grob trans finished event-start)&lt;br /&gt;
                     (set! span &#039;())&lt;br /&gt;
                     (set! event-stop &#039;()))))&lt;br /&gt;
            (if (ly:stream-event? event-start)&lt;br /&gt;
                (begin&lt;br /&gt;
                 (set! span (ly:engraver-make-grob trans &#039;MusicBoxer event-start))&lt;br /&gt;
                 (set! event-start &#039;())))))&lt;br /&gt;
&lt;br /&gt;
       (stop-translation-timestep .&lt;br /&gt;
         ,(lambda (trans)&lt;br /&gt;
            (if (and (ly:spanner? span)&lt;br /&gt;
                     (null? (ly:spanner-bound span LEFT)))&lt;br /&gt;
                (ly:spanner-set-bound! span LEFT&lt;br /&gt;
                  (ly:context-property context &#039;currentMusicalColumn)))&lt;br /&gt;
            (if (ly:spanner? finished)&lt;br /&gt;
                (begin&lt;br /&gt;
                 (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                     (ly:spanner-set-bound! finished RIGHT&lt;br /&gt;
                       (ly:context-property context &#039;currentMusicalColumn)))&lt;br /&gt;
                 (set! finished &#039;())&lt;br /&gt;
                 (set! event-start &#039;())&lt;br /&gt;
                 (set! event-stop &#039;())))))&lt;br /&gt;
&lt;br /&gt;
       (finalize&lt;br /&gt;
        (lambda (trans)&lt;br /&gt;
          (if (ly:spanner? finished)&lt;br /&gt;
              (begin&lt;br /&gt;
               (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                   (set! (ly:spanner-bound finished RIGHT)&lt;br /&gt;
                         (ly:context-property context &#039;currentMusicalColumn)))&lt;br /&gt;
               (set! finished &#039;())))&lt;br /&gt;
          (if (ly:spanner? span)&lt;br /&gt;
              (begin&lt;br /&gt;
               (ly:warning &amp;quot;unterminated box :-(&amp;quot;)&lt;br /&gt;
               (ly:grob-suicide! span)&lt;br /&gt;
               (set! span &#039;()))))))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
boxEngraver =&lt;br /&gt;
#(lambda (context)&lt;br /&gt;
   (let ((box &#039;())&lt;br /&gt;
         (ev &#039;()))&lt;br /&gt;
&lt;br /&gt;
     `((listeners&lt;br /&gt;
        (box-event .&lt;br /&gt;
          ,(lambda (engraver event)&lt;br /&gt;
             (set! ev event))))&lt;br /&gt;
&lt;br /&gt;
       (acknowledgers&lt;br /&gt;
        (note-column-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:grob? box)&lt;br /&gt;
                 (begin&lt;br /&gt;
                  ; (set! (ly:grob-parent box X) grob) ;; ??&lt;br /&gt;
                   (set! (ly:grob-parent box Y) grob)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob box &#039;elements grob)))))&lt;br /&gt;
&lt;br /&gt;
        (inline-accidental-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:item? box)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob box &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        (script-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:item? box)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob box &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        (finger-interface .&lt;br /&gt;
          ,(lambda (engraver grob source-engraver)&lt;br /&gt;
             (if (ly:item? box)&lt;br /&gt;
                 (ly:pointer-group-interface::add-grob box &#039;elements grob))))&lt;br /&gt;
&lt;br /&gt;
        ;; add additional interfaces to acknowledge here&lt;br /&gt;
&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
       (process-music .&lt;br /&gt;
         ,(lambda (trans)&lt;br /&gt;
            (if (ly:stream-event? ev)&lt;br /&gt;
                (begin&lt;br /&gt;
                 (set! box (ly:engraver-make-grob trans &#039;Box ev))&lt;br /&gt;
                 (set! ev &#039;())))))&lt;br /&gt;
       (stop-translation-timestep .&lt;br /&gt;
         ,(lambda (trans)&lt;br /&gt;
            (set! box &#039;()))))))&lt;br /&gt;
&lt;br /&gt;
musicBoxerStart =&lt;br /&gt;
#(make-span-event &#039;MusicBoxerEvent START)&lt;br /&gt;
&lt;br /&gt;
musicBoxerEnd =&lt;br /&gt;
#(make-span-event &#039;MusicBoxerEvent STOP)&lt;br /&gt;
&lt;br /&gt;
box = #(make-music &#039;BoxEvent)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXAMPLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
melody = \relative c&#039;&#039; {&lt;br /&gt;
  \set fingeringOrientations = #&#039;(left)&lt;br /&gt;
  %1&lt;br /&gt;
  \repeat volta 2 {&lt;br /&gt;
    \once\override Score.Box.padding = 0.5&lt;br /&gt;
    \box &amp;lt;g-3  c-2 f-1&amp;gt;1&lt;br /&gt;
    \musicBoxerStart d8-4 g,-0 d&#039; g, d&#039;-4 g,-0 d&#039; \musicBoxerEnd g,&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  %2&lt;br /&gt;
  \repeat volta 2 {&lt;br /&gt;
    \box &amp;lt;d&#039;-4  c&#039;-2 f-1&amp;gt;1\f\fermata&lt;br /&gt;
    \musicBoxerStart g8-3 d-0 g d g8-4 d-0 g \musicBoxerEnd d\accent&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff \melody&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%% The following is only for display purposes only and can be removed&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 3.5\cm&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
  indent = #0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Global&lt;br /&gt;
    \grobdescriptions #all-grob-descriptions&lt;br /&gt;
  }&lt;br /&gt;
  \context {&lt;br /&gt;
    \Score&lt;br /&gt;
    \consists \musicBoxerEngraver % for spans&lt;br /&gt;
    \consists \boxEngraver&lt;br /&gt;
  }&lt;br /&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:Paper and layout]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Flip&amp;diff=6457</id>
		<title>Flip</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Flip&amp;diff=6457"/>
		<updated>2026-03-16T21:24:32Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Full page layout not needed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;\scale #&#039;(-1 . 1)&amp;lt;/code&amp;gt; workaround.&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=905&lt;br /&gt;
&lt;br /&gt;
% by P.P.Schneider on March 2014.&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
%here starts the snippet:&lt;br /&gt;
&lt;br /&gt;
%%%% \flip:&lt;br /&gt;
#(define-markup-command (flip layout props arg) (markup?) &lt;br /&gt;
   (interpret-markup layout props&lt;br /&gt;
     (markup &lt;br /&gt;
      #:concat (&lt;br /&gt;
        #:null &lt;br /&gt;
        #:scale (cons -1 1)&lt;br /&gt;
          #:line (arg)))))&lt;br /&gt;
%%%% end \flip.&lt;br /&gt;
&lt;br /&gt;
myScr= { c&#039;1 }&lt;br /&gt;
&lt;br /&gt;
\markuplist {&lt;br /&gt;
  \italic\concat { &lt;br /&gt;
    &amp;quot;This markup uses &amp;quot; &lt;br /&gt;
    \typewriter &amp;quot;\scale #&#039;(-1 . 1)&amp;quot; &lt;br /&gt;
    &amp;quot; to flip a score&amp;quot;&lt;br /&gt;
    \hspace #0.3 &amp;quot;:&amp;quot; &lt;br /&gt;
  }&lt;br /&gt;
  \vspace #0.2&lt;br /&gt;
  \line { &lt;br /&gt;
    \concat { &lt;br /&gt;
      &amp;quot;This flipped score&amp;quot; &lt;br /&gt;
      \hspace#.3 &lt;br /&gt;
      &amp;quot;:&amp;quot; &lt;br /&gt;
    } &lt;br /&gt;
    \raise #1&lt;br /&gt;
    \scale #&#039;(-1 . 1)&lt;br /&gt;
    \score {&lt;br /&gt;
      \myScr&lt;br /&gt;
      \layout {&lt;br /&gt;
        indent = 0&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &amp;quot; is mine.&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#1&lt;br /&gt;
  \concat\italic { &lt;br /&gt;
    &amp;quot;Here&#039;s the side-effect when starting a markup with &amp;quot; &lt;br /&gt;
    \typewriter &amp;quot;\scale #&#039;(-1 . 1)&amp;quot;&lt;br /&gt;
    \hspace #0.3 &lt;br /&gt;
    &amp;quot;:&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#.2&lt;br /&gt;
  \line { &lt;br /&gt;
    \scale #&#039;(-1 . 1)&lt;br /&gt;
    \score {&lt;br /&gt;
      \myScr&lt;br /&gt;
      \layout {&lt;br /&gt;
        indent = 0&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    \lower #1&lt;br /&gt;
    \concat { &lt;br /&gt;
      &amp;quot; My beloved score is leaving&amp;quot;&lt;br /&gt;
      \hspace #0.3 &lt;br /&gt;
      &amp;quot;!&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#1&lt;br /&gt;
  \concat\italic { &lt;br /&gt;
    &amp;quot;Here&#039;s a possible workaround using &amp;quot; &lt;br /&gt;
    \typewriter &amp;quot;\left-align&amp;quot;&lt;br /&gt;
    \hspace #0.3 &lt;br /&gt;
    &amp;quot;:&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#.2&lt;br /&gt;
  \left-align&lt;br /&gt;
  \line { &lt;br /&gt;
    \scale #&#039;(-1 . 1) &lt;br /&gt;
    \score {&lt;br /&gt;
      \myScr&lt;br /&gt;
      \layout {&lt;br /&gt;
        indent = 0&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    \lower #1&lt;br /&gt;
    \concat { &lt;br /&gt;
      &amp;quot; It&#039;s coming back&amp;quot;&lt;br /&gt;
      \hspace #0.3 &lt;br /&gt;
      &amp;quot;!&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#1&lt;br /&gt;
  \concat\italic {&lt;br /&gt;
    &amp;quot;And this one uses a simple &amp;quot; &lt;br /&gt;
    \typewriter &amp;quot;\flip&amp;quot;&lt;br /&gt;
    &amp;quot; command that avoids using &amp;quot; &lt;br /&gt;
    \typewriter &amp;quot;\left-align&amp;quot;&lt;br /&gt;
    \hspace #0.3 &lt;br /&gt;
    &amp;quot;:&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \vspace#.2&lt;br /&gt;
  \line {&lt;br /&gt;
    \flip&lt;br /&gt;
    \score {&lt;br /&gt;
      \myScr&lt;br /&gt;
      \layout {&lt;br /&gt;
        indent = 0&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    \lower #1&lt;br /&gt;
    \concat { &lt;br /&gt;
      &amp;quot; Now it&#039;s home.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&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:Workaround]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Combining_pedal_notes_with_clef_changes&amp;diff=6456</id>
		<title>Combining pedal notes with clef changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Combining_pedal_notes_with_clef_changes&amp;diff=6456"/>
		<updated>2026-03-16T21:16:25Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Full page layout not needed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In piano music, you may occasionally come across a staff in which a held (pedal) note is followed by a clef change and further polyphonic notation.&lt;br /&gt;
&lt;br /&gt;
With a little bit of work involving clef settings, you can overcome this problematic situation.&lt;br /&gt;
&lt;br /&gt;
In the first figure, we can see that a clef change in one voice messes with the pedal note in a lower voice; the tie appears to have changed voices.&lt;br /&gt;
&lt;br /&gt;
You can create a “fake” treble clef which has the properties of a bass clef by overriding the following properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;\set Staff.clefGlyph = #&amp;amp;quot;clefs.G&amp;amp;quot;&amp;lt;/code&amp;gt; - show a G clef&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;\set Staff.clefPosition = #-2&amp;lt;/code&amp;gt; - set the staff position two half spaces below centre line (i.e., on G)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;\set Staff.middleCPosition = #6&amp;lt;/code&amp;gt; - set middle C to the same position as a bass clef&lt;br /&gt;
&lt;br /&gt;
The second figure shows the solution as applied to the final bar of a Wolf lied. The pedal note E flat is followed by a treble clef and a high octave E flat. Since we are effectively still in the bass clef, we have to input the octave E flat as an octave G to produce the required output. Using &amp;lt;code&amp;gt;\tag&amp;lt;/code&amp;gt; splits the musical layout and MIDI so you can use &amp;lt;code&amp;gt;\keepWithTag #&#039;midi&amp;lt;/code&amp;gt; in a MIDI &amp;lt;code&amp;gt;\score&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
The third figure shows a more extended example from Debussy&#039;s &#039;&#039;L&#039;Isle joyeuse&#039;&#039; in which the bass clef is faked.&lt;br /&gt;
&lt;br /&gt;
Finally, the fourth figure shows the same Debussy excerpt with an additional feature you may encounter: the pedal note is preceded by a small cautionary clef printed after the barline.&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=326&lt;br /&gt;
&lt;br /&gt;
% Treble clef with properties of bass clef&lt;br /&gt;
fakeTrebleClef = {&lt;br /&gt;
  \set Staff.clefGlyph = #&amp;quot;clefs.G&amp;quot;&lt;br /&gt;
  \set Staff.clefPosition = #-2&lt;br /&gt;
  \set Staff.middleCPosition = #6&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% Bass clef with properties of treble clef&lt;br /&gt;
fakeBassClef = {&lt;br /&gt;
  \set Staff.clefGlyph = #&amp;quot;clefs.F&amp;quot;&lt;br /&gt;
  \set Staff.clefPosition = #2&lt;br /&gt;
  \set Staff.middleCPosition = #-6&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% Similar to above, but lower and positioned after barline&lt;br /&gt;
fakeBassClefShift = {&lt;br /&gt;
  % Change default prefatory item order so that clef is printed after barline&lt;br /&gt;
  \override Score.BreakAlignment.break-align-orders =&lt;br /&gt;
    #(make-vector 3 &#039;(span-bar&lt;br /&gt;
                      breathing-sign&lt;br /&gt;
                      staff-bar&lt;br /&gt;
                      clef&lt;br /&gt;
                      key&lt;br /&gt;
                      time-signature))&lt;br /&gt;
  \set Staff.clefGlyph = #&amp;quot;clefs.F&amp;quot;&lt;br /&gt;
  \set Staff.clefPosition = #-8&lt;br /&gt;
  \set Staff.middleCPosition = #-6&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup {&lt;br /&gt;
  1. Without tweaking clef properties, output is nonsensical }&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff \relative c {&lt;br /&gt;
    \clef bass \voiceTwo&lt;br /&gt;
    c2 ~&lt;br /&gt;
    &amp;lt;&amp;lt;&lt;br /&gt;
      { c | }&lt;br /&gt;
      \new Voice \relative c&#039;&#039; {&lt;br /&gt;
        \clef treble \voiceOne&lt;br /&gt;
        c8 c g&#039; g |&lt;br /&gt;
      }&lt;br /&gt;
    &amp;gt;&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup {&lt;br /&gt;
  2. Final bar of&lt;br /&gt;
  \italic &amp;quot;Gesegnet sei, durch den die Welt entstund...&amp;quot;&lt;br /&gt;
  from Wolf&#039;s \italic &amp;quot;Italienisches Liederbuch&amp;quot; }&lt;br /&gt;
\score {&lt;br /&gt;
  \new PianoStaff &amp;lt;&amp;lt;&lt;br /&gt;
    \new Staff \relative c&#039; {&lt;br /&gt;
      \key es \major&lt;br /&gt;
      \override DynamicLineSpanner.padding = #2.5&lt;br /&gt;
      &amp;lt;bes es g&amp;gt;8\ppp &amp;lt;bes es g&amp;gt;&lt;br /&gt;
      &amp;lt;bes es g&amp;gt;[ &amp;lt;bes es g&amp;gt;] ~ &amp;lt;bes es g&amp;gt;2\fermata \bar &amp;quot;||&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    \new Staff \relative c \keepWithTag #&#039;layout {&lt;br /&gt;
      \clef bass \key es \major&lt;br /&gt;
      r8. \stemDown &amp;lt;es es,&amp;gt;16 &amp;lt;es es,&amp;gt;4 ~&lt;br /&gt;
      &amp;lt;&amp;lt;&lt;br /&gt;
        { \voiceTwo &amp;lt;es es,&amp;gt;2 }&lt;br /&gt;
        \new Voice {&lt;br /&gt;
          % The faked clef and notes&lt;br /&gt;
          \voiceOne \tag #&#039;layout { \fakeTrebleClef &amp;lt;g g&#039;&amp;gt;\fermata }&lt;br /&gt;
          % The real notes for MIDI output&lt;br /&gt;
          \tag #&#039;midi { &amp;lt;es&#039;&#039; es&#039;&amp;gt; }&lt;br /&gt;
        }&lt;br /&gt;
      &amp;gt;&amp;gt; \bar &amp;quot;|.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup {&lt;br /&gt;
  3. Bars 148 - 151 from Debussy&#039;s \italic &amp;quot;L&#039;Isle joyeuse&amp;quot; }&lt;br /&gt;
\score {&lt;br /&gt;
  \new PianoStaff &amp;lt;&amp;lt;&lt;br /&gt;
    \new Staff \relative c&#039; {&lt;br /&gt;
      \time 3/8&lt;br /&gt;
      \set subdivideBeams = ##t&lt;br /&gt;
      \override TupletNumber.stencil = ##f&lt;br /&gt;
      \override TupletBracket.stencil = ##f&lt;br /&gt;
      \tieDotted&lt;br /&gt;
      &amp;lt;&amp;lt;&lt;br /&gt;
        {&lt;br /&gt;
          \voiceOne&lt;br /&gt;
          \tuplet 3/2 {&lt;br /&gt;
            fis16( e d \repeat unfold 5 { c d e fis e d } c d e) }&lt;br /&gt;
        }&lt;br /&gt;
        \new Voice {&lt;br /&gt;
          \voiceTwo&lt;br /&gt;
          bes4. ~ |&lt;br /&gt;
          bes |&lt;br /&gt;
          bes ~ |&lt;br /&gt;
          bes |&lt;br /&gt;
        }&lt;br /&gt;
      &amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;&amp;gt;^\markup {&lt;br /&gt;
          4. As above, but with small clefs on pedal notes }&lt;br /&gt;
      &amp;lt;&amp;lt;&lt;br /&gt;
        {&lt;br /&gt;
          \tuplet 3/2 {&lt;br /&gt;
            fis&#039;16( e d \repeat unfold 5 { c d e fis e d } c d e) }&lt;br /&gt;
        }&lt;br /&gt;
        \new Voice {&lt;br /&gt;
          \voiceTwo&lt;br /&gt;
          bes4. ~ |&lt;br /&gt;
          bes |&lt;br /&gt;
          bes ~ |&lt;br /&gt;
          bes |&lt;br /&gt;
        }&lt;br /&gt;
      &amp;gt;&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    \new Staff \relative c&#039;&#039; \keepWithTag #&#039;layout {&lt;br /&gt;
      \time 3/8&lt;br /&gt;
      &amp;lt;&amp;lt;&lt;br /&gt;
        {&lt;br /&gt;
          \voiceOne&lt;br /&gt;
          bes8\rest \clef treble as16( c as8)&lt;br /&gt;
          as16( c as8) as16( c)&lt;br /&gt;
          bes( d bes8. d16)&lt;br /&gt;
          bes8.( d16 bes8)&lt;br /&gt;
        }&lt;br /&gt;
        \new Voice {&lt;br /&gt;
          \voiceTwo&lt;br /&gt;
          \tag #&#039;layout {&lt;br /&gt;
            \fakeBassClef&lt;br /&gt;
            a,4. ~ |&lt;br /&gt;
            a ~ |&lt;br /&gt;
            a ~ |&lt;br /&gt;
            a |&lt;br /&gt;
          }&lt;br /&gt;
          \tag #&#039;midi {&lt;br /&gt;
            c,, ~ |&lt;br /&gt;
            c ~ |&lt;br /&gt;
            c ~ |&lt;br /&gt;
            c |&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      &amp;gt;&amp;gt;&lt;br /&gt;
      % Make clefs visible for each bar, except at end of system&lt;br /&gt;
      \override Staff.Clef.break-visibility = #end-of-line-invisible&lt;br /&gt;
      &amp;lt;&amp;lt;&lt;br /&gt;
        {&lt;br /&gt;
          \voiceOne&lt;br /&gt;
          bes&#039;8\rest \clef treble as16( c as8)&lt;br /&gt;
          as16( c as8) as16( c)&lt;br /&gt;
          bes( d bes8. d16)&lt;br /&gt;
          bes8.( d16 bes8)&lt;br /&gt;
        }&lt;br /&gt;
        \new Voice {&lt;br /&gt;
          \voiceTwo&lt;br /&gt;
          \tag #&#039;layout {&lt;br /&gt;
            \fakeBassClef&lt;br /&gt;
            a,4. ~ |&lt;br /&gt;
            % Shrink clef to small size&lt;br /&gt;
            \override Staff.Clef.font-size = #-5&lt;br /&gt;
            % We want to prevent clef size changing,&lt;br /&gt;
            % otherwise first clef is smaller&lt;br /&gt;
            \override Staff.Clef.full-size-change = ##t&lt;br /&gt;
            % The faked bass clef, printed after the barline and next&lt;br /&gt;
            % to the pedal note&lt;br /&gt;
            \fakeBassClefShift&lt;br /&gt;
            a ~ |&lt;br /&gt;
            % Because we have overridden break-visibility,&lt;br /&gt;
            % the cautionary clef is also displayed here...&lt;br /&gt;
            a ~ |&lt;br /&gt;
            % ...and here&lt;br /&gt;
            a |&lt;br /&gt;
            % Return to default clef properties&lt;br /&gt;
            \revert Score.BreakAlignment.break-align-orders&lt;br /&gt;
            \revert Staff.Clef.font-size&lt;br /&gt;
            \revert Staff.Clef.full-size-change&lt;br /&gt;
          }&lt;br /&gt;
          \tag #&#039;midi {&lt;br /&gt;
            c,, ~ |&lt;br /&gt;
            c ~ |&lt;br /&gt;
            c ~ |&lt;br /&gt;
            c |&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      &amp;gt;&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  \layout {&lt;br /&gt;
    \context {&lt;br /&gt;
      \Score&lt;br /&gt;
      \remove &amp;quot;Bar_number_engraver&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Instrument-specific]]&lt;br /&gt;
[[Category:Pitches]]&lt;br /&gt;
[[Category:Keyboards]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Really cool]]&lt;br /&gt;
[[Category:Real music]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Feta_font_chart&amp;diff=6455</id>
		<title>Feta font chart</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Feta_font_chart&amp;diff=6455"/>
		<updated>2026-03-16T21:04:10Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: No need for full page layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This chart shows all articulations or scripts that LilyPond&#039;s “feta” font contains.&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=132&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
    &amp;lt;&amp;lt;&lt;br /&gt;
      \override Score.LyricText.font-family = #&#039;typewriter&lt;br /&gt;
      \override Score.LyricText.font-shape = #&#039;upright&lt;br /&gt;
      \context Staff  {&lt;br /&gt;
	\set Score.timing = ##f&lt;br /&gt;
	\set Score.forbidBreakBetweenBarLines = ##f&lt;br /&gt;
	\override Staff.BarLine.transparent = ##t&lt;br /&gt;
        c&#039;&#039;\accent             c&#039;&#039;\marcato            c&#039;&#039;\staccatissimo&lt;br /&gt;
        c&#039;&#039;\staccato           c&#039;&#039;\tenuto             c&#039;&#039;\portato&lt;br /&gt;
        c&#039;&#039;\upbow              c&#039;&#039;\downbow            c&#039;&#039;\flageolet&lt;br /&gt;
        c&#039;&#039;\thumb              c&#039;&#039;^\lheel              c&#039;&#039;\rheel&lt;br /&gt;
        c&#039;&#039;^\ltoe               c&#039;&#039;\rtoe               c&#039;&#039;\open&lt;br /&gt;
        c&#039;&#039;\stopped            c&#039;&#039;\turn               c&#039;&#039;\reverseturn&lt;br /&gt;
        c&#039;&#039;\trill              c&#039;&#039;\prall              c&#039;&#039;\mordent&lt;br /&gt;
        c&#039;&#039;\prallprall         c&#039;&#039;\prallmordent       c&#039;&#039;\upprall&lt;br /&gt;
        c&#039;&#039;\downprall          c&#039;&#039;\upmordent          c&#039;&#039;\downmordent&lt;br /&gt;
        c&#039;&#039;\pralldown          c&#039;&#039;\prallup            c&#039;&#039;\lineprall&lt;br /&gt;
        c&#039;&#039;\signumcongruentiae c&#039;&#039;\shortfermata       c&#039;&#039;\fermata&lt;br /&gt;
        c&#039;&#039;\longfermata        c&#039;&#039;\verylongfermata    c&#039;&#039;\segno&lt;br /&gt;
        c&#039;&#039;\coda               c&#039;&#039;\varcoda&lt;br /&gt;
      }&lt;br /&gt;
      \context Lyrics \lyricmode {&lt;br /&gt;
        accent__                marcato__               staccatissimo__&lt;br /&gt;
        staccato__              tenuto__                portato__&lt;br /&gt;
        upbow__                 downbow__               flageolet__&lt;br /&gt;
        thumb__                 lheel__                 rheel__&lt;br /&gt;
        ltoe__                  rtoe__                  open__&lt;br /&gt;
        stopped__               turn__                  reverseturn__&lt;br /&gt;
        trill__                 prall__                 mordent__&lt;br /&gt;
        prallprall__            prallmordent__          upprall__&lt;br /&gt;
        downprall__             upmordent__             downmordent__&lt;br /&gt;
        pralldown__             prallup__               lineprall__&lt;br /&gt;
        signumcongruentiae__    shortfermata__          fermata__&lt;br /&gt;
        longfermata__           verylongfermata__       segno__&lt;br /&gt;
        coda__                  varcoda__&lt;br /&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:Symbols and glyphs]]&lt;br /&gt;
[[Category:Expressive marks]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Positioning_a_%5Cfermata_over_the_last_bar_line&amp;diff=6453</id>
		<title>Positioning a \fermata over the last bar line</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Positioning_a_%5Cfermata_over_the_last_bar_line&amp;diff=6453"/>
		<updated>2026-03-15T16:07:16Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Remove old syntax from text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To position a \fermata sign over the last bar line, you must use a specially modified rehearsal mark.&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=1&lt;br /&gt;
&lt;br /&gt;
\relative c&#039;&#039; {&lt;br /&gt;
  \override Score.RehearsalMark.break-visibility = #begin-of-line-invisible&lt;br /&gt;
  c1 \mark \markup { \musicglyph &amp;quot;scripts.ufermata&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Expressive marks]]&lt;br /&gt;
[[Category:Breaks]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Workaround]]&lt;br /&gt;
[[Category:Symbols and glyphs]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Manipulating_slurs_via_%27positions_and_%27extra-offset&amp;diff=6451</id>
		<title>Manipulating slurs via &#039;positions and &#039;extra-offset</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Manipulating_slurs_via_%27positions_and_%27extra-offset&amp;diff=6451"/>
		<updated>2026-03-12T21:43:58Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Undo revision 6450 by Ksnortum (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is a command to change slurs, &amp;lt;code&amp;gt;\override Slur.positions&amp;lt;/code&amp;gt;. Actually the influence of this command is limited, e.g. if you like the shape of the slur and you want to shift it a little bit,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;\override Slur.positions&amp;lt;/code&amp;gt; does not exactly what you want.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;slurShift&amp;lt;/code&amp;gt; shifts the slur exactly the amount you want without changing the shape, &amp;lt;code&amp;gt;slurShiftx&amp;lt;/code&amp;gt; combines &amp;lt;code&amp;gt;slurShift&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Slur.positions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full&amp;gt;&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
slurShift=&lt;br /&gt;
#(define-music-function (amount)&lt;br /&gt;
   (pair?)&lt;br /&gt;
   #{&lt;br /&gt;
     \once \override Slur.extra-offset = $amount&lt;br /&gt;
   #})&lt;br /&gt;
&lt;br /&gt;
slurShiftx=&lt;br /&gt;
#(define-music-function (amount offsets)&lt;br /&gt;
   (pair? pair?)&lt;br /&gt;
   #{&lt;br /&gt;
     \once \override Slur.positions = $offsets&lt;br /&gt;
     \once \override Slur.extra-offset = $amount&lt;br /&gt;
   #})&lt;br /&gt;
&lt;br /&gt;
\relative c, {&lt;br /&gt;
  \clef bass&lt;br /&gt;
  c8(-&amp;quot;default slur&amp;quot; g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
  \slurShift  #&#039;(0 . 1)&lt;br /&gt;
  c,,8(-&amp;quot;slurShift #&#039;(0 . 1)&amp;quot; g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
  \slurShiftx  #&#039;(2 . 2) #&#039;(0 . 6)&lt;br /&gt;
  c,,8(-&amp;quot;slurShiftx #&#039;(2 . 2) #&#039;(0 . 6)&amp;quot;&lt;br /&gt;
  g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Manipulating_slurs_via_%27positions_and_%27extra-offset&amp;diff=6450</id>
		<title>Manipulating slurs via &#039;positions and &#039;extra-offset</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Manipulating_slurs_via_%27positions_and_%27extra-offset&amp;diff=6450"/>
		<updated>2026-03-12T21:40:29Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Does not need full page layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is a command to change slurs, &amp;lt;code&amp;gt;\override Slur.positions&amp;lt;/code&amp;gt;. Actually the influence of this command is limited, e.g. if you like the shape of the slur and you want to shift it a little bit,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;\override Slur.positions&amp;lt;/code&amp;gt; does not exactly what you want.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;slurShift&amp;lt;/code&amp;gt; shifts the slur exactly the amount you want without changing the shape, &amp;lt;code&amp;gt;slurShiftx&amp;lt;/code&amp;gt; combines &amp;lt;code&amp;gt;slurShift&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Slur.positions&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;
slurShift=&lt;br /&gt;
#(define-music-function (amount)&lt;br /&gt;
   (pair?)&lt;br /&gt;
   #{&lt;br /&gt;
     \once \override Slur.extra-offset = $amount&lt;br /&gt;
   #})&lt;br /&gt;
&lt;br /&gt;
slurShiftx=&lt;br /&gt;
#(define-music-function (amount offsets)&lt;br /&gt;
   (pair? pair?)&lt;br /&gt;
   #{&lt;br /&gt;
     \once \override Slur.positions = $offsets&lt;br /&gt;
     \once \override Slur.extra-offset = $amount&lt;br /&gt;
   #})&lt;br /&gt;
&lt;br /&gt;
\relative c, {&lt;br /&gt;
  \clef bass&lt;br /&gt;
  c8(-&amp;quot;default slur&amp;quot; g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
  \slurShift  #&#039;(0 . 1)&lt;br /&gt;
  c,,8(-&amp;quot;slurShift #&#039;(0 . 1)&amp;quot; g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
  \slurShiftx  #&#039;(2 . 2) #&#039;(0 . 6)&lt;br /&gt;
  c,,8(-&amp;quot;slurShiftx #&#039;(2 . 2) #&#039;(0 . 6)&amp;quot;&lt;br /&gt;
  g&#039;&#039; e&#039; g, c g c g )&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Automatic_beams_two_per_two_in_4/4_or_2/2_time_signature&amp;diff=6449</id>
		<title>Automatic beams two per two in 4/4 or 2/2 time signature</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Automatic_beams_two_per_two_in_4/4_or_2/2_time_signature&amp;diff=6449"/>
		<updated>2026-03-12T16:24:15Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Use modern syntax for beaming exceptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In a simple time signature of 2/2 or 4/4, 8th notes are beamed by default as two sets of four.&lt;br /&gt;
&lt;br /&gt;
Using a macro which overrides the autobeaming behavior, this snippet changes the beaming to quarter note beats.&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=605&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Automatic beams two per two in 4/4 or 2/2 time signature&lt;br /&gt;
%              _____&lt;br /&gt;
% Default     | | | |&lt;br /&gt;
%              _   _&lt;br /&gt;
% Required    | | | |&lt;br /&gt;
&lt;br /&gt;
% LSR: The good way adapted from David Bobroff&lt;br /&gt;
&lt;br /&gt;
% macro for beamed two per two in 2/2 and 4/4 time signature&lt;br /&gt;
qBeam = {&lt;br /&gt;
  \set beamExceptions = \beamExceptions{ 8[ 8] 8[ 8] 8[ 8] 8[ 8] }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  &amp;lt;&amp;lt;&lt;br /&gt;
    \new Staff {&lt;br /&gt;
      \relative c&#039;&#039; {&lt;br /&gt;
        \time 4/4&lt;br /&gt;
        g8-&amp;quot;without the macro&amp;quot; g g g g g g g&lt;br /&gt;
        g8 g g g4 g8 g g&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    %Use the macro&lt;br /&gt;
    \new Staff {&lt;br /&gt;
      \relative c&#039;&#039; {&lt;br /&gt;
        \time 4/4&lt;br /&gt;
        \qBeam &lt;br /&gt;
        g8-&amp;quot;with the macro&amp;quot; g g g g g g g&lt;br /&gt;
        g8 g g g4 g8 g g&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  &amp;gt;&amp;gt;&lt;br /&gt;
  \layout {&lt;br /&gt;
    \context {&lt;br /&gt;
      \Staff&lt;br /&gt;
      \numericTimeSignature&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Rhythms]]&lt;br /&gt;
[[Category:Version-specific]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6442</id>
		<title>Adding the current date to the tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6442"/>
		<updated>2026-03-10T19:58:15Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Use https protocol: missed one in the text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a couple ways to get the current date in your score - using Scheme and a header that suits you (as you may find in the “Adding the current date to a score” example), or placing the same Scheme code in a &amp;lt;code&amp;gt;\markup&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
One more option is to place the date in the tagline. This places the date at the bottom of the last page and appears like this -&lt;br /&gt;
&lt;br /&gt;
Engraved on April 26, 2009 with Lilypond 2.12.2 (https://lilypond.org)&lt;br /&gt;
&lt;br /&gt;
The format of the date can be changed according to these parameters:&lt;br /&gt;
&lt;br /&gt;
* %a - is replaced by the locale&#039;s abbreviated weekday name.&lt;br /&gt;
* %A - is replaced by the locale&#039;s full weekday name.&lt;br /&gt;
* %b - is replaced by the locale&#039;s abbreviated month name.&lt;br /&gt;
* %B - is replaced by the locale&#039;s full month name.&lt;br /&gt;
* %c - is replaced by the locale&#039;s appropriate date and time representation.&lt;br /&gt;
* %d - is replaced by the day of the month as a decimal number [01,31].&lt;br /&gt;
* %I - is replaced by the hour (12-hour clock) as a decimal number [01,12].&lt;br /&gt;
* %j - is replaced by the day of the year as a decimal number [001,366].&lt;br /&gt;
* %m - is replaced by the month as a decimal number [01,12].&lt;br /&gt;
* %M - is replaced by the minute as a decimal number [00,59].&lt;br /&gt;
* %p - is replaced by the locale&#039;s equivalent of either a.m. or p.m.&lt;br /&gt;
* %U - is replaced by the week number of the year (Sunday as the first day of the week) as a decimal number [00,53].&lt;br /&gt;
* %w - is replaced by the weekday as a decimal number [0,6], with 0 representing Sunday.&lt;br /&gt;
* %W - is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.&lt;br /&gt;
* %x - is replaced by the locale&#039;s appropriate date representation.&lt;br /&gt;
* %X - is replaced by the locale&#039;s appropriate time representation.&lt;br /&gt;
* %y - is replaced by the year without century as a decimal number [00,99].&lt;br /&gt;
* %Y - is replaced by the year with century as a decimal number.&lt;br /&gt;
* %Z - is replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists.&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=563&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = &amp;quot;Title&amp;quot;&lt;br /&gt;
  composer = &amp;quot;Composer&amp;quot;&lt;br /&gt;
  arranger = &amp;quot;Arranger&amp;quot;&lt;br /&gt;
  tagline = \markup {&lt;br /&gt;
    Engraved on&lt;br /&gt;
    #(strftime &amp;quot;%x at %X&amp;quot; (localtime (current-time)))&lt;br /&gt;
    with&lt;br /&gt;
    \with-url &amp;quot;https://lilypond.org&amp;quot; {&lt;br /&gt;
      LilyPond #(lilypond-version) (https://lilypond.org)&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 6\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c4 d e f&lt;br /&gt;
}&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:Titles]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6441</id>
		<title>Adding the current date to the tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6441"/>
		<updated>2026-03-10T19:55:42Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Remove redundant category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a couple ways to get the current date in your score - using Scheme and a header that suits you (as you may find in the “Adding the current date to a score” example), or placing the same Scheme code in a &amp;lt;code&amp;gt;\markup&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
One more option is to place the date in the tagline. This places the date at the bottom of the last page and appears like this -&lt;br /&gt;
&lt;br /&gt;
Engraved on April 26, 2009 with Lilypond 2.12.2 (http://lilypond.org)&lt;br /&gt;
&lt;br /&gt;
The format of the date can be changed according to these parameters:&lt;br /&gt;
&lt;br /&gt;
* %a - is replaced by the locale&#039;s abbreviated weekday name.&lt;br /&gt;
* %A - is replaced by the locale&#039;s full weekday name.&lt;br /&gt;
* %b - is replaced by the locale&#039;s abbreviated month name.&lt;br /&gt;
* %B - is replaced by the locale&#039;s full month name.&lt;br /&gt;
* %c - is replaced by the locale&#039;s appropriate date and time representation.&lt;br /&gt;
* %d - is replaced by the day of the month as a decimal number [01,31].&lt;br /&gt;
* %I - is replaced by the hour (12-hour clock) as a decimal number [01,12].&lt;br /&gt;
* %j - is replaced by the day of the year as a decimal number [001,366].&lt;br /&gt;
* %m - is replaced by the month as a decimal number [01,12].&lt;br /&gt;
* %M - is replaced by the minute as a decimal number [00,59].&lt;br /&gt;
* %p - is replaced by the locale&#039;s equivalent of either a.m. or p.m.&lt;br /&gt;
* %U - is replaced by the week number of the year (Sunday as the first day of the week) as a decimal number [00,53].&lt;br /&gt;
* %w - is replaced by the weekday as a decimal number [0,6], with 0 representing Sunday.&lt;br /&gt;
* %W - is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.&lt;br /&gt;
* %x - is replaced by the locale&#039;s appropriate date representation.&lt;br /&gt;
* %X - is replaced by the locale&#039;s appropriate time representation.&lt;br /&gt;
* %y - is replaced by the year without century as a decimal number [00,99].&lt;br /&gt;
* %Y - is replaced by the year with century as a decimal number.&lt;br /&gt;
* %Z - is replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists.&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=563&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = &amp;quot;Title&amp;quot;&lt;br /&gt;
  composer = &amp;quot;Composer&amp;quot;&lt;br /&gt;
  arranger = &amp;quot;Arranger&amp;quot;&lt;br /&gt;
  tagline = \markup {&lt;br /&gt;
    Engraved on&lt;br /&gt;
    #(strftime &amp;quot;%x at %X&amp;quot; (localtime (current-time)))&lt;br /&gt;
    with&lt;br /&gt;
    \with-url &amp;quot;https://lilypond.org&amp;quot; {&lt;br /&gt;
      LilyPond #(lilypond-version) (https://lilypond.org)&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 6\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c4 d e f&lt;br /&gt;
}&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:Titles]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6440</id>
		<title>Adding the current date to the tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6440"/>
		<updated>2026-03-10T19:54:14Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Use https protocol in URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a couple ways to get the current date in your score - using Scheme and a header that suits you (as you may find in the “Adding the current date to a score” example), or placing the same Scheme code in a &amp;lt;code&amp;gt;\markup&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
One more option is to place the date in the tagline. This places the date at the bottom of the last page and appears like this -&lt;br /&gt;
&lt;br /&gt;
Engraved on April 26, 2009 with Lilypond 2.12.2 (http://lilypond.org)&lt;br /&gt;
&lt;br /&gt;
The format of the date can be changed according to these parameters:&lt;br /&gt;
&lt;br /&gt;
* %a - is replaced by the locale&#039;s abbreviated weekday name.&lt;br /&gt;
* %A - is replaced by the locale&#039;s full weekday name.&lt;br /&gt;
* %b - is replaced by the locale&#039;s abbreviated month name.&lt;br /&gt;
* %B - is replaced by the locale&#039;s full month name.&lt;br /&gt;
* %c - is replaced by the locale&#039;s appropriate date and time representation.&lt;br /&gt;
* %d - is replaced by the day of the month as a decimal number [01,31].&lt;br /&gt;
* %I - is replaced by the hour (12-hour clock) as a decimal number [01,12].&lt;br /&gt;
* %j - is replaced by the day of the year as a decimal number [001,366].&lt;br /&gt;
* %m - is replaced by the month as a decimal number [01,12].&lt;br /&gt;
* %M - is replaced by the minute as a decimal number [00,59].&lt;br /&gt;
* %p - is replaced by the locale&#039;s equivalent of either a.m. or p.m.&lt;br /&gt;
* %U - is replaced by the week number of the year (Sunday as the first day of the week) as a decimal number [00,53].&lt;br /&gt;
* %w - is replaced by the weekday as a decimal number [0,6], with 0 representing Sunday.&lt;br /&gt;
* %W - is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.&lt;br /&gt;
* %x - is replaced by the locale&#039;s appropriate date representation.&lt;br /&gt;
* %X - is replaced by the locale&#039;s appropriate time representation.&lt;br /&gt;
* %y - is replaced by the year without century as a decimal number [00,99].&lt;br /&gt;
* %Y - is replaced by the year with century as a decimal number.&lt;br /&gt;
* %Z - is replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists.&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=563&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = &amp;quot;Title&amp;quot;&lt;br /&gt;
  composer = &amp;quot;Composer&amp;quot;&lt;br /&gt;
  arranger = &amp;quot;Arranger&amp;quot;&lt;br /&gt;
  tagline = \markup {&lt;br /&gt;
    Engraved on&lt;br /&gt;
    #(strftime &amp;quot;%x at %X&amp;quot; (localtime (current-time)))&lt;br /&gt;
    with&lt;br /&gt;
    \with-url &amp;quot;https://lilypond.org&amp;quot; {&lt;br /&gt;
      LilyPond #(lilypond-version) (https://lilypond.org)&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 6\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c4 d e f&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Titles]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6439</id>
		<title>Adding the current date to the tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Adding_the_current_date_to_the_tagline&amp;diff=6439"/>
		<updated>2026-03-10T19:52:30Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Shorten paper height so that the tagline is more obvious&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a couple ways to get the current date in your score - using Scheme and a header that suits you (as you may find in the “Adding the current date to a score” example), or placing the same Scheme code in a &amp;lt;code&amp;gt;\markup&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
One more option is to place the date in the tagline. This places the date at the bottom of the last page and appears like this -&lt;br /&gt;
&lt;br /&gt;
Engraved on April 26, 2009 with Lilypond 2.12.2 (http://lilypond.org)&lt;br /&gt;
&lt;br /&gt;
The format of the date can be changed according to these parameters:&lt;br /&gt;
&lt;br /&gt;
* %a - is replaced by the locale&#039;s abbreviated weekday name.&lt;br /&gt;
* %A - is replaced by the locale&#039;s full weekday name.&lt;br /&gt;
* %b - is replaced by the locale&#039;s abbreviated month name.&lt;br /&gt;
* %B - is replaced by the locale&#039;s full month name.&lt;br /&gt;
* %c - is replaced by the locale&#039;s appropriate date and time representation.&lt;br /&gt;
* %d - is replaced by the day of the month as a decimal number [01,31].&lt;br /&gt;
* %I - is replaced by the hour (12-hour clock) as a decimal number [01,12].&lt;br /&gt;
* %j - is replaced by the day of the year as a decimal number [001,366].&lt;br /&gt;
* %m - is replaced by the month as a decimal number [01,12].&lt;br /&gt;
* %M - is replaced by the minute as a decimal number [00,59].&lt;br /&gt;
* %p - is replaced by the locale&#039;s equivalent of either a.m. or p.m.&lt;br /&gt;
* %U - is replaced by the week number of the year (Sunday as the first day of the week) as a decimal number [00,53].&lt;br /&gt;
* %w - is replaced by the weekday as a decimal number [0,6], with 0 representing Sunday.&lt;br /&gt;
* %W - is replaced by the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.&lt;br /&gt;
* %x - is replaced by the locale&#039;s appropriate date representation.&lt;br /&gt;
* %X - is replaced by the locale&#039;s appropriate time representation.&lt;br /&gt;
* %y - is replaced by the year without century as a decimal number [00,99].&lt;br /&gt;
* %Y - is replaced by the year with century as a decimal number.&lt;br /&gt;
* %Z - is replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists.&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=563&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = &amp;quot;Title&amp;quot;&lt;br /&gt;
  composer = &amp;quot;Composer&amp;quot;&lt;br /&gt;
  arranger = &amp;quot;Arranger&amp;quot;&lt;br /&gt;
  tagline = \markup {&lt;br /&gt;
    Engraved on&lt;br /&gt;
    #(strftime &amp;quot;%x at %X&amp;quot; (localtime (current-time)))&lt;br /&gt;
    with&lt;br /&gt;
    \with-url &amp;quot;http://lilypond.org/web/&amp;quot; {&lt;br /&gt;
      LilyPond #(lilypond-version) (http://lilypond.org/)&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 6\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c4 d e f&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Titles]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6438</id>
		<title>Extracting text from markup</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6438"/>
		<updated>2026-03-10T19:40:10Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Use newer \relative syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This scheme function extracts a string from markup, removing any formatting information.&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=747&lt;br /&gt;
&lt;br /&gt;
#(define-markup-command (plain-text layout props arg)(markup?)&lt;br /&gt;
                        (interpret-markup layout props (markup (markup-&amp;gt;string arg))))&lt;br /&gt;
&lt;br /&gt;
ttt = \markup {&lt;br /&gt;
  \normal-text { good day and \concat { hello \bold { world } } \italic { and moon }  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = \ttt&lt;br /&gt;
  subtitle = \markup { \normal-text { \italic { \plain-text \ttt } } }&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 5\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative {&lt;br /&gt;
  c&#039;&lt;br /&gt;
}&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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6437</id>
		<title>Extracting text from markup</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6437"/>
		<updated>2026-03-10T19:39:00Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Remove redundant category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This scheme function extracts a string from markup, removing any formatting information.&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=747&lt;br /&gt;
&lt;br /&gt;
#(define-markup-command (plain-text layout props arg)(markup?)&lt;br /&gt;
                        (interpret-markup layout props (markup (markup-&amp;gt;string arg))))&lt;br /&gt;
&lt;br /&gt;
ttt = \markup {&lt;br /&gt;
  \normal-text { good day and \concat { hello \bold { world } } \italic { and moon }  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = \ttt&lt;br /&gt;
  subtitle = \markup { \normal-text { \italic { \plain-text \ttt } } }&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 5\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c&lt;br /&gt;
}&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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6436</id>
		<title>Extracting text from markup</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Extracting_text_from_markup&amp;diff=6436"/>
		<updated>2026-03-10T19:35:20Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Needs full page layout to be able to see the headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This scheme function extracts a string from markup, removing any formatting information.&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=747&lt;br /&gt;
&lt;br /&gt;
#(define-markup-command (plain-text layout props arg)(markup?)&lt;br /&gt;
                        (interpret-markup layout props (markup (markup-&amp;gt;string arg))))&lt;br /&gt;
&lt;br /&gt;
ttt = \markup {&lt;br /&gt;
  \normal-text { good day and \concat { hello \bold { world } } \italic { and moon }  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\header {&lt;br /&gt;
  title = \ttt&lt;br /&gt;
  subtitle = \markup { \normal-text { \italic { \plain-text \ttt } } }&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  paper-height = 5\cm &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\relative c&#039; {&lt;br /&gt;
  c&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Repeat_with_brackets&amp;diff=6431</id>
		<title>Repeat with brackets</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Repeat_with_brackets&amp;diff=6431"/>
		<updated>2026-03-07T15:49:09Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Clearer text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet adds brackets with the number of repetitions above a bar or a group of bars. This is very useful when dealing with minimal music, for instance. To execute it, simply use &amp;lt;code&amp;gt;\repeatBracket &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt; music&amp;lt;/code&amp;gt;, where &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt; is the number of repetitions. Example: &amp;lt;code&amp;gt;\repeatBracket 7 { c&#039;2 e&#039; }&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;
% LSR based on the wonderful spanner by David Nalesnik; see&lt;br /&gt;
% LSR  http://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00446.html&lt;br /&gt;
&lt;br /&gt;
#(define (test-stencil grob text)&lt;br /&gt;
   (let* ((orig (ly:grob-original grob))&lt;br /&gt;
          (siblings (ly:spanner-broken-into orig)) ; have we been split?&lt;br /&gt;
          (refp (ly:grob-system grob))&lt;br /&gt;
          (left-bound (ly:spanner-bound grob LEFT))&lt;br /&gt;
          (right-bound (ly:spanner-bound grob RIGHT))&lt;br /&gt;
          (elts-L (ly:grob-array-&amp;gt;list (ly:grob-object left-bound &#039;elements)))&lt;br /&gt;
          (elts-R (ly:grob-array-&amp;gt;list (ly:grob-object right-bound &#039;elements)))&lt;br /&gt;
          (break-alignment-L&lt;br /&gt;
           (filter&lt;br /&gt;
            (lambda (elt) (grob::has-interface elt &#039;break-alignment-interface))&lt;br /&gt;
            elts-L))&lt;br /&gt;
          (break-alignment-R&lt;br /&gt;
           (filter&lt;br /&gt;
            (lambda (elt) (grob::has-interface elt &#039;break-alignment-interface))&lt;br /&gt;
            elts-R))&lt;br /&gt;
          (break-alignment-L-ext (ly:grob-extent (car break-alignment-L) refp X))&lt;br /&gt;
          (break-alignment-R-ext (ly:grob-extent (car break-alignment-R) refp X))&lt;br /&gt;
          (num&lt;br /&gt;
           (markup text))&lt;br /&gt;
          (num&lt;br /&gt;
           (if (or (null? siblings)&lt;br /&gt;
                   (eq? grob (car siblings)))&lt;br /&gt;
               num&lt;br /&gt;
               (make-parenthesize-markup num)))&lt;br /&gt;
          (num (grob-interpret-markup grob num))&lt;br /&gt;
          (num-stil-ext-X (ly:stencil-extent num X))&lt;br /&gt;
          (num-stil-ext-Y (ly:stencil-extent num Y))&lt;br /&gt;
          (num (ly:stencil-aligned-to num X CENTER))&lt;br /&gt;
          (num&lt;br /&gt;
           (ly:stencil-translate-axis&lt;br /&gt;
            num&lt;br /&gt;
            (+ (interval-length break-alignment-L-ext)&lt;br /&gt;
              (* 0.5&lt;br /&gt;
                (- (car break-alignment-R-ext)&lt;br /&gt;
                  (cdr break-alignment-L-ext))))&lt;br /&gt;
            X))&lt;br /&gt;
          (bracket-L&lt;br /&gt;
           (markup&lt;br /&gt;
            #:path&lt;br /&gt;
            0.1 ; line-thickness&lt;br /&gt;
            `((moveto 0.5 ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (lineto ,(* 0.5&lt;br /&gt;
                         (- (car break-alignment-R-ext)&lt;br /&gt;
                           (cdr break-alignment-L-ext)&lt;br /&gt;
                           (interval-length num-stil-ext-X)))&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (closepath)&lt;br /&gt;
              (rlineto 0.0&lt;br /&gt;
                ,(if (or (null? siblings) (eq? grob (car siblings)))&lt;br /&gt;
                     -1.0 0.0)))))&lt;br /&gt;
          (bracket-R&lt;br /&gt;
           (markup&lt;br /&gt;
            #:path&lt;br /&gt;
            0.1&lt;br /&gt;
            `((moveto ,(* 0.5&lt;br /&gt;
                         (- (car break-alignment-R-ext)&lt;br /&gt;
                           (cdr break-alignment-L-ext)&lt;br /&gt;
                           (interval-length num-stil-ext-X)))&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (lineto 0.5&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (closepath)&lt;br /&gt;
              (rlineto 0.0&lt;br /&gt;
                ,(if (or (null? siblings) (eq? grob (last siblings)))&lt;br /&gt;
                     -1.0 0.0)))))&lt;br /&gt;
          (bracket-L (grob-interpret-markup grob bracket-L))&lt;br /&gt;
          (bracket-R (grob-interpret-markup grob bracket-R))&lt;br /&gt;
          (num (ly:stencil-combine-at-edge num X LEFT bracket-L 0.4))&lt;br /&gt;
          (num (ly:stencil-combine-at-edge num X RIGHT bracket-R 0.4)))&lt;br /&gt;
     num))&lt;br /&gt;
&lt;br /&gt;
#(define-public (Measure_attached_spanner_engraver context)&lt;br /&gt;
   (let ((span &#039;())&lt;br /&gt;
         (finished &#039;())&lt;br /&gt;
         (event-start &#039;())&lt;br /&gt;
         (event-stop &#039;()))&lt;br /&gt;
     (make-engraver&lt;br /&gt;
      (listeners ((measure-counter-event engraver event)&lt;br /&gt;
                  (if (= START (ly:event-property event &#039;span-direction))&lt;br /&gt;
                      (set! event-start event)&lt;br /&gt;
                      (set! event-stop event))))&lt;br /&gt;
      ((process-music trans)&lt;br /&gt;
       (if (ly:stream-event? event-stop)&lt;br /&gt;
           (if (null? span)&lt;br /&gt;
               (ly:warning &amp;quot;You&#039;re trying to end a measure-attached spanner but you haven&#039;t started one.&amp;quot;)&lt;br /&gt;
               (begin (set! finished span)&lt;br /&gt;
                 (ly:engraver-announce-end-grob trans finished event-start)&lt;br /&gt;
                 (set! span &#039;())&lt;br /&gt;
                 (set! event-stop &#039;()))))&lt;br /&gt;
       (if (ly:stream-event? event-start)&lt;br /&gt;
           (begin (set! span (ly:engraver-make-grob trans &#039;MeasureCounter event-start))&lt;br /&gt;
             (set! event-start &#039;()))))&lt;br /&gt;
      ((stop-translation-timestep trans)&lt;br /&gt;
       (if (and (ly:spanner? span)&lt;br /&gt;
                (null? (ly:spanner-bound span LEFT))&lt;br /&gt;
                (moment&amp;lt;=? (ly:context-property context &#039;measurePosition) ZERO-MOMENT)) &lt;br /&gt;
           (ly:spanner-set-bound! span LEFT &lt;br /&gt;
             (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
       (if (and (ly:spanner? finished)&lt;br /&gt;
                (moment&amp;lt;=? (ly:context-property context &#039;measurePosition) ZERO-MOMENT))&lt;br /&gt;
           (begin&lt;br /&gt;
            (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                (ly:spanner-set-bound! finished RIGHT&lt;br /&gt;
                  (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
            (set! finished &#039;())&lt;br /&gt;
            (set! event-start &#039;())&lt;br /&gt;
            (set! event-stop &#039;()))))&lt;br /&gt;
      ((finalize trans)&lt;br /&gt;
       (if (ly:spanner? finished)&lt;br /&gt;
           (begin&lt;br /&gt;
            (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                (set! (ly:spanner-bound finished RIGHT)&lt;br /&gt;
                      (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
            (set! finished &#039;())))&lt;br /&gt;
       (if (ly:spanner? span)&lt;br /&gt;
           (begin&lt;br /&gt;
            (ly:warning &amp;quot;I think there&#039;s a dangling measure-attached spanner :-(&amp;quot;)&lt;br /&gt;
            (ly:grob-suicide! span)&lt;br /&gt;
            (set! span &#039;())))))))&lt;br /&gt;
&lt;br /&gt;
% necessary layout options&lt;br /&gt;
% note that you can have more than one single layout block&lt;br /&gt;
% (some of them may even be outside and some inside \score)&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Staff&lt;br /&gt;
    \consists #Measure_attached_spanner_engraver&lt;br /&gt;
    \override MeasureCounter.font-encoding = #&#039;latin1&lt;br /&gt;
    \override MeasureCounter.font-size = 0&lt;br /&gt;
    \override MeasureCounter.outside-staff-padding = 2&lt;br /&gt;
    \override MeasureCounter.outside-staff-horizontal-padding = #0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function itself&lt;br /&gt;
repeatBracket = #(define-music-function&lt;br /&gt;
     (N note)&lt;br /&gt;
     (number? ly:music?)     &lt;br /&gt;
      #{        &lt;br /&gt;
        \override Staff.MeasureCounter.stencil = &lt;br /&gt;
        #(lambda (grob) (test-stencil grob #{ #(string-append(number-&amp;gt;string N) &amp;quot;×&amp;quot;) #} ))&lt;br /&gt;
        \startMeasureCount&lt;br /&gt;
        \repeat volta #N { $note }&lt;br /&gt;
        \stopMeasureCount&lt;br /&gt;
      #}&lt;br /&gt;
     )&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%% EXAMPLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
{   &lt;br /&gt;
  \repeatBracket 7 {c&#039;1}&lt;br /&gt;
  \repeatBracket 32 {d&#039; g}&lt;br /&gt;
  \repeatBracket 14 {e&#039; f g}&lt;br /&gt;
  \repeatBracket 29 {f&#039; a bes \break cis&#039; e&#039;&#039;}  &lt;br /&gt;
  \repeatBracket 1048 {g&#039;1}  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Repeats]]&lt;br /&gt;
[[Category:Automatic notation]]&lt;br /&gt;
[[Category:Contemporary notation]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Repeat_with_brackets&amp;diff=6429</id>
		<title>Repeat with brackets</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Repeat_with_brackets&amp;diff=6429"/>
		<updated>2026-03-07T15:37:27Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: No need for full page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet adds brackets with the number of repetitions above a bar or a group of bar. Very useful when dealing with minimal music, for instance. To summon it, simply use &amp;lt;code&amp;gt;\repeatBracket &amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;music&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; is the number of repetitions. Example: &amp;lt;code&amp;gt;\repeatBracket 7 { c&#039;2 e&#039; }&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;
% repeatBracket snippet&lt;br /&gt;
% will add .----Nx----. above a bar, where N is the number of repetitions&lt;br /&gt;
% based on the wonderful spanner by David Nalesnik (see: http://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00446.html )&lt;br /&gt;
&lt;br /&gt;
#(define (test-stencil grob text)&lt;br /&gt;
   (let* ((orig (ly:grob-original grob))&lt;br /&gt;
          (siblings (ly:spanner-broken-into orig)) ; have we been split?&lt;br /&gt;
          (refp (ly:grob-system grob))&lt;br /&gt;
          (left-bound (ly:spanner-bound grob LEFT))&lt;br /&gt;
          (right-bound (ly:spanner-bound grob RIGHT))&lt;br /&gt;
          (elts-L (ly:grob-array-&amp;gt;list (ly:grob-object left-bound &#039;elements)))&lt;br /&gt;
          (elts-R (ly:grob-array-&amp;gt;list (ly:grob-object right-bound &#039;elements)))&lt;br /&gt;
          (break-alignment-L&lt;br /&gt;
           (filter&lt;br /&gt;
            (lambda (elt) (grob::has-interface elt &#039;break-alignment-interface))&lt;br /&gt;
            elts-L))&lt;br /&gt;
          (break-alignment-R&lt;br /&gt;
           (filter&lt;br /&gt;
            (lambda (elt) (grob::has-interface elt &#039;break-alignment-interface))&lt;br /&gt;
            elts-R))&lt;br /&gt;
          (break-alignment-L-ext (ly:grob-extent (car break-alignment-L) refp X))&lt;br /&gt;
          (break-alignment-R-ext (ly:grob-extent (car break-alignment-R) refp X))&lt;br /&gt;
          (num&lt;br /&gt;
           (markup text))&lt;br /&gt;
          (num&lt;br /&gt;
           (if (or (null? siblings)&lt;br /&gt;
                   (eq? grob (car siblings)))&lt;br /&gt;
               num&lt;br /&gt;
               (make-parenthesize-markup num)))&lt;br /&gt;
          (num (grob-interpret-markup grob num))&lt;br /&gt;
          (num-stil-ext-X (ly:stencil-extent num X))&lt;br /&gt;
          (num-stil-ext-Y (ly:stencil-extent num Y))&lt;br /&gt;
          (num (ly:stencil-aligned-to num X CENTER))&lt;br /&gt;
          (num&lt;br /&gt;
           (ly:stencil-translate-axis&lt;br /&gt;
            num&lt;br /&gt;
            (+ (interval-length break-alignment-L-ext)&lt;br /&gt;
              (* 0.5&lt;br /&gt;
                (- (car break-alignment-R-ext)&lt;br /&gt;
                  (cdr break-alignment-L-ext))))&lt;br /&gt;
            X))&lt;br /&gt;
          (bracket-L&lt;br /&gt;
           (markup&lt;br /&gt;
            #:path&lt;br /&gt;
            0.1 ; line-thickness&lt;br /&gt;
            `((moveto 0.5 ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (lineto ,(* 0.5&lt;br /&gt;
                         (- (car break-alignment-R-ext)&lt;br /&gt;
                           (cdr break-alignment-L-ext)&lt;br /&gt;
                           (interval-length num-stil-ext-X)))&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (closepath)&lt;br /&gt;
              (rlineto 0.0&lt;br /&gt;
                ,(if (or (null? siblings) (eq? grob (car siblings)))&lt;br /&gt;
                     -1.0 0.0)))))&lt;br /&gt;
          (bracket-R&lt;br /&gt;
           (markup&lt;br /&gt;
            #:path&lt;br /&gt;
            0.1&lt;br /&gt;
            `((moveto ,(* 0.5&lt;br /&gt;
                         (- (car break-alignment-R-ext)&lt;br /&gt;
                           (cdr break-alignment-L-ext)&lt;br /&gt;
                           (interval-length num-stil-ext-X)))&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (lineto 0.5&lt;br /&gt;
                ,(* 0.5 (interval-length num-stil-ext-Y)))&lt;br /&gt;
              (closepath)&lt;br /&gt;
              (rlineto 0.0&lt;br /&gt;
                ,(if (or (null? siblings) (eq? grob (last siblings)))&lt;br /&gt;
                     -1.0 0.0)))))&lt;br /&gt;
          (bracket-L (grob-interpret-markup grob bracket-L))&lt;br /&gt;
          (bracket-R (grob-interpret-markup grob bracket-R))&lt;br /&gt;
          (num (ly:stencil-combine-at-edge num X LEFT bracket-L 0.4))&lt;br /&gt;
          (num (ly:stencil-combine-at-edge num X RIGHT bracket-R 0.4)))&lt;br /&gt;
     num))&lt;br /&gt;
&lt;br /&gt;
#(define-public (Measure_attached_spanner_engraver context)&lt;br /&gt;
   (let ((span &#039;())&lt;br /&gt;
         (finished &#039;())&lt;br /&gt;
         (event-start &#039;())&lt;br /&gt;
         (event-stop &#039;()))&lt;br /&gt;
     (make-engraver&lt;br /&gt;
      (listeners ((measure-counter-event engraver event)&lt;br /&gt;
                  (if (= START (ly:event-property event &#039;span-direction))&lt;br /&gt;
                      (set! event-start event)&lt;br /&gt;
                      (set! event-stop event))))&lt;br /&gt;
      ((process-music trans)&lt;br /&gt;
       (if (ly:stream-event? event-stop)&lt;br /&gt;
           (if (null? span)&lt;br /&gt;
               (ly:warning &amp;quot;You&#039;re trying to end a measure-attached spanner but you haven&#039;t started one.&amp;quot;)&lt;br /&gt;
               (begin (set! finished span)&lt;br /&gt;
                 (ly:engraver-announce-end-grob trans finished event-start)&lt;br /&gt;
                 (set! span &#039;())&lt;br /&gt;
                 (set! event-stop &#039;()))))&lt;br /&gt;
       (if (ly:stream-event? event-start)&lt;br /&gt;
           (begin (set! span (ly:engraver-make-grob trans &#039;MeasureCounter event-start))&lt;br /&gt;
             (set! event-start &#039;()))))&lt;br /&gt;
      ((stop-translation-timestep trans)&lt;br /&gt;
       (if (and (ly:spanner? span)&lt;br /&gt;
                (null? (ly:spanner-bound span LEFT))&lt;br /&gt;
                (moment&amp;lt;=? (ly:context-property context &#039;measurePosition) ZERO-MOMENT)) &lt;br /&gt;
           (ly:spanner-set-bound! span LEFT &lt;br /&gt;
             (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
       (if (and (ly:spanner? finished)&lt;br /&gt;
                (moment&amp;lt;=? (ly:context-property context &#039;measurePosition) ZERO-MOMENT))&lt;br /&gt;
           (begin&lt;br /&gt;
            (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                (ly:spanner-set-bound! finished RIGHT&lt;br /&gt;
                  (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
            (set! finished &#039;())&lt;br /&gt;
            (set! event-start &#039;())&lt;br /&gt;
            (set! event-stop &#039;()))))&lt;br /&gt;
      ((finalize trans)&lt;br /&gt;
       (if (ly:spanner? finished)&lt;br /&gt;
           (begin&lt;br /&gt;
            (if (null? (ly:spanner-bound finished RIGHT))&lt;br /&gt;
                (set! (ly:spanner-bound finished RIGHT)&lt;br /&gt;
                      (ly:context-property context &#039;currentCommandColumn)))&lt;br /&gt;
            (set! finished &#039;())))&lt;br /&gt;
       (if (ly:spanner? span)&lt;br /&gt;
           (begin&lt;br /&gt;
            (ly:warning &amp;quot;I think there&#039;s a dangling measure-attached spanner :-(&amp;quot;)&lt;br /&gt;
            (ly:grob-suicide! span)&lt;br /&gt;
            (set! span &#039;())))))))&lt;br /&gt;
&lt;br /&gt;
% necessary layout options&lt;br /&gt;
% note that you can have more than one single layout block (some of them may even be outside and some inside \score)&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Staff&lt;br /&gt;
    \consists #Measure_attached_spanner_engraver&lt;br /&gt;
    \override MeasureCounter.font-encoding = #&#039;latin1&lt;br /&gt;
    \override MeasureCounter.font-size = 0&lt;br /&gt;
    \override MeasureCounter.outside-staff-padding = 2&lt;br /&gt;
    \override MeasureCounter.outside-staff-horizontal-padding = #0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function itself&lt;br /&gt;
repeatBracket = #(define-music-function&lt;br /&gt;
     (N note)&lt;br /&gt;
     (number? ly:music?)     &lt;br /&gt;
      #{        &lt;br /&gt;
        \override Staff.MeasureCounter.stencil = &lt;br /&gt;
        #(lambda (grob) (test-stencil grob #{ #(string-append(number-&amp;gt;string N) &amp;quot;×&amp;quot;) #} ))&lt;br /&gt;
        \startMeasureCount&lt;br /&gt;
        \repeat volta #N { $note }&lt;br /&gt;
        \stopMeasureCount&lt;br /&gt;
      #}&lt;br /&gt;
     )&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%% EXAMPLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
{   &lt;br /&gt;
  \repeatBracket 7 {c&#039;1}&lt;br /&gt;
  \repeatBracket 32 {d&#039; g}&lt;br /&gt;
  \repeatBracket 14 {e&#039; f g}&lt;br /&gt;
  \repeatBracket 29 {f&#039; a bes \break cis&#039; e&#039;&#039;}  &lt;br /&gt;
  \repeatBracket 1048 {g&#039;1}  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Repeats]]&lt;br /&gt;
[[Category:Automatic notation]]&lt;br /&gt;
[[Category:Contemporary notation]]&lt;br /&gt;
[[Category:Specific notation]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6419</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=6419"/>
		<updated>2026-03-02T15:24:49Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add Category&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 [https://lilypond.org/doc/v2.24/Documentation/internals/scheme-functions 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 n . arg)&lt;br /&gt;
   (for-each (lambda _ (apply ly:expect-warning arg))&lt;br /&gt;
             (iota n)))&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;
[[Category:Scheme]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6410</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=6410"/>
		<updated>2026-02-28T14:52:05Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Inline the Scheme function URL and change to version 2.24&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 [https://lilypond.org/doc/v2.24/Documentation/internals/scheme-functions 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 n . arg)&lt;br /&gt;
   (for-each (lambda _ (apply ly:expect-warning arg))&lt;br /&gt;
             (iota n)))&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;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6409</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=6409"/>
		<updated>2026-02-28T14:46:25Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: args -&amp;gt; arg&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 n . arg)&lt;br /&gt;
   (for-each (lambda _ (apply ly:expect-warning arg))&lt;br /&gt;
             (iota n)))&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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Expect_a_warning_several_times&amp;diff=6392</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=6392"/>
		<updated>2026-02-27T23:43:28Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Scheme function to suppress several warnings&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;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Ksnortum&amp;diff=6388</id>
		<title>User:Ksnortum</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Ksnortum&amp;diff=6388"/>
		<updated>2026-02-25T15:24:16Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add a link to The Mutopia Project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a neurotic programmer/musician and an Admin here at the LilyPond wiki.  If you want to learn more about me, see [https://snortum.net/knute/ my webpage].  (Please note that I am &#039;&#039;not&#039;&#039; a web designer!)  You can see the scores I&#039;ve done in [https://github.com/search?q=owner%3Aksnortum+lilypond&amp;amp;type=repositories LilyPond on GitHub] and [https://www.mutopiaproject.org/cgibin/make-table.cgi?searchingfor=snortum&amp;amp;Composer=&amp;amp;Instrument=&amp;amp;Style=&amp;amp;timelength=1&amp;amp;timeunit=week&amp;amp;lilyversion=&amp;amp;preview=1 The Mupotia Project].&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User:Ksnortum&amp;diff=6387</id>
		<title>User:Ksnortum</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=User:Ksnortum&amp;diff=6387"/>
		<updated>2026-02-23T15:56:39Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add link to GitHub Lilypond scores&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am a neurotic programmer/musician and an Admin here at the LilyPond wiki.  If you want to learn more about me, see [https://snortum.net/knute/ my webpage].  (Please note that I am &#039;&#039;not&#039;&#039; a web designer!)  You can see the scores I&#039;ve done in [https://github.com/search?q=owner%3Aksnortum+lilypond&amp;amp;type=repositories LilyPond on GitHub].&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Automatically_display_key_names_above_key_signatures&amp;diff=6379</id>
		<title>Talk:Automatically display key names above key signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Automatically_display_key_names_above_key_signatures&amp;diff=6379"/>
		<updated>2026-02-22T20:28:53Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Avoid key cancellation signs? */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Avoid key cancellation signs? ==&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t it be better to cancel the KeyCancellation objects? Add &amp;lt;code&amp;gt;\override KeyCancellation.break-visibility = #all-invisible&amp;lt;/code&amp;gt; to the layout statement. Another suggestion is to alter the engraver so that the notes do not start after the complete text, analog to &amp;lt;code&amp;gt;\textLengthOff&amp;lt;/code&amp;gt; [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 10:20, 21 February 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think removing the key cancelation is best done with &amp;lt;code&amp;gt;\set Staff.printKeyCancellation = ##f&amp;lt;/code&amp;gt;, but that&#039;s my opinion. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 20:54, 21 February 2026 (UTC)&lt;br /&gt;
::I tested it, &amp;lt;code&amp;gt;\set Staff.printKeyCancellation = ##f&amp;lt;/code&amp;gt; killed the engraver, too. [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 16:58, 22 February 2026 (UTC)&lt;br /&gt;
:::I made the change to the page and I think it looks better. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 20:28, 22 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Automatically_display_key_names_above_key_signatures&amp;diff=6378</id>
		<title>Automatically display key names above key signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Automatically_display_key_names_above_key_signatures&amp;diff=6378"/>
		<updated>2026-02-22T20:25:50Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Don&amp;#039;t use key cancelation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet automatically displays the name of the key above the key signature. This is helpful when learning the key signatures, or to easily see whether a key is major, minor, or modal (dorian, phrygian, lydian, etc.). It works by creating a custom key signature engraver.&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=856&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
%% see also lists.gnu.org/archive/html/lilypond-user/2013-12/msg00828.html&lt;br /&gt;
% by Paul Morris&lt;br /&gt;
&lt;br /&gt;
% tonic-num: number of the tonic note 0-6, C=0, B=6&lt;br /&gt;
% acc-type: the accidental sign type, 1/2=sharp, -1/2=flat&lt;br /&gt;
% acc-count: the number and type of accidentals in the key signature&lt;br /&gt;
%                  values are: -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7&lt;br /&gt;
%                  (negative = flats, positive = sharps)&lt;br /&gt;
% tonic-acc: #f if the tonic note is not sharp or flat, otherwise a pair&lt;br /&gt;
% maj-num: number of the tonic note 0-6, if the key sig were major&lt;br /&gt;
% mode-num: number of the mode 0-6&lt;br /&gt;
% txt-size: size of key name text&lt;br /&gt;
% padd: padding between key signature and key name&lt;br /&gt;
% mult: for correct resizing when the staff is resized&lt;br /&gt;
&lt;br /&gt;
#(define Custom_key_engraver&lt;br /&gt;
   (make-engraver&lt;br /&gt;
    (acknowledgers&lt;br /&gt;
     ((key-signature-interface engraver grob source-engraver)&lt;br /&gt;
      ;; if key cancellation then do nothing,&lt;br /&gt;
      ;; else modify the key signature stencil&lt;br /&gt;
      (if (not (eq? &#039;KeyCancellation&lt;br /&gt;
                    (grob::name grob)))&lt;br /&gt;
          (let* ((context (ly:translator-context engraver))&lt;br /&gt;
                 (tonic-pitch (ly:context-property context &#039;tonic))&lt;br /&gt;
                 (tonic-num (ly:pitch-notename tonic-pitch))&lt;br /&gt;
                 (acc-list (ly:grob-property grob &#039;alteration-alist))&lt;br /&gt;
&lt;br /&gt;
                 (acc-type (if (null? acc-list)&lt;br /&gt;
                               0 (cdr (list-ref acc-list 0))))&lt;br /&gt;
&lt;br /&gt;
                 (acc-count (* (length acc-list)&lt;br /&gt;
                              (if (&amp;lt; acc-type 0) -1 1)))&lt;br /&gt;
&lt;br /&gt;
                 (maj-num (case acc-count&lt;br /&gt;
                            ((0) 0)&lt;br /&gt;
                            ((1) 4) ((2) 1) ((3) 5) ((4) 2) ((5) 6) ((6) 3) ((7) 0)&lt;br /&gt;
                            ((-1) 3) ((-2) 6) ((-3) 2) ((-4) 5) ((-5) 1) ((-6) 4) ((-7) 0)))&lt;br /&gt;
&lt;br /&gt;
                 (mode-num (modulo (- tonic-num maj-num) 7))&lt;br /&gt;
                 (key-letter (case tonic-num&lt;br /&gt;
                               ((0) &amp;quot;C&amp;quot; ) ((1) &amp;quot;D&amp;quot; ) ((2) &amp;quot;E&amp;quot; ) ((3) &amp;quot;F&amp;quot; )&lt;br /&gt;
                               ((4) &amp;quot;G&amp;quot; ) ((5) &amp;quot;A&amp;quot; ) ((6) &amp;quot;B&amp;quot; )))&lt;br /&gt;
&lt;br /&gt;
                 (mult (magstep (ly:grob-property grob &#039;font-size 0.0)))&lt;br /&gt;
&lt;br /&gt;
                 (txt-sharp #{ \markup {&lt;br /&gt;
                   \translate #(cons (* mult -0.3) (* mult 0.8))&lt;br /&gt;
                   \magnify #(* mult 0.9) \sharp&lt;br /&gt;
                   } #})&lt;br /&gt;
&lt;br /&gt;
                 (txt-flat #{ \markup {&lt;br /&gt;
                   \translate #(cons (* mult -0.2) (* mult 0.4))&lt;br /&gt;
                   \magnify #(* mult 0.9) \flat&lt;br /&gt;
                   } #})&lt;br /&gt;
&lt;br /&gt;
                 (tonic-acc (if (pair? (assq tonic-num acc-list))&lt;br /&gt;
                                (if (= acc-type 0.5) txt-sharp txt-flat)&lt;br /&gt;
                                &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
                 (key-mode (case mode-num&lt;br /&gt;
                             ((0) &amp;quot;Major&amp;quot;) ((1) &amp;quot;Dorian&amp;quot;) ((2) &amp;quot;Phrygian&amp;quot;) ((3) &amp;quot;Lydian&amp;quot;)&lt;br /&gt;
                             ((4) &amp;quot;Mixolydian&amp;quot;) ((5) &amp;quot;Minor&amp;quot;) ((6) &amp;quot;Locrian&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
                 ;; F Major and D Minor each get extra padding&lt;br /&gt;
                 ;; so the name appears above the staff&lt;br /&gt;
                 (padd (if (= acc-count -1)&lt;br /&gt;
                           (+ 0.5 (* mult 1.2))&lt;br /&gt;
                           0.5))&lt;br /&gt;
&lt;br /&gt;
                 (txt-size 0.7)&lt;br /&gt;
                 (key-name #{ \markup { #key-letter #tonic-acc #key-mode } #})&lt;br /&gt;
                 (key-name-scaled (ly:stencil-scale&lt;br /&gt;
                                   (grob-interpret-markup grob key-name)&lt;br /&gt;
                                   txt-size txt-size))&lt;br /&gt;
&lt;br /&gt;
                 (key-sig-stencil (ly:key-signature-interface::print grob))&lt;br /&gt;
                 (grob-y-ext (ly:grob-property grob &#039;Y-extent)))&lt;br /&gt;
&lt;br /&gt;
            ;; Names for C Major, A Minor, etc. have to be moved up above the staff&lt;br /&gt;
            ;; padd has no effect if there are no sharps or flats in the key signature&lt;br /&gt;
            (if (equal? grob-y-ext (cons +inf.0 -inf.0))&lt;br /&gt;
                (set! key-name-scaled&lt;br /&gt;
                      (ly:stencil-translate-axis key-name-scaled 3 Y)))&lt;br /&gt;
&lt;br /&gt;
            (ly:grob-set-property! grob &#039;stencil&lt;br /&gt;
              (ly:stencil-combine-at-edge key-sig-stencil 1 1&lt;br /&gt;
                key-name-scaled padd))))))))&lt;br /&gt;
&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Staff&lt;br /&gt;
    \consists \Custom_key_engraver&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup \null % avoid clipped text&lt;br /&gt;
&lt;br /&gt;
\new Staff \relative f&#039;&#039; {&lt;br /&gt;
  \set Staff.printKeyCancellation = ##f&lt;br /&gt;
  \key c \major&lt;br /&gt;
  c1&lt;br /&gt;
  \key a \minor&lt;br /&gt;
  a1&lt;br /&gt;
  \key a \major&lt;br /&gt;
  a1&lt;br /&gt;
  \key fis \minor&lt;br /&gt;
  fis1&lt;br /&gt;
  \key ees \major&lt;br /&gt;
  ees1&lt;br /&gt;
  \key c \minor&lt;br /&gt;
  c&#039;1&lt;br /&gt;
  \key c \dorian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \phrygian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \lydian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \mixolydian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \locrian&lt;br /&gt;
  c1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Automatically_display_key_names_above_key_signatures&amp;diff=6377</id>
		<title>Automatically display key names above key signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Automatically_display_key_names_above_key_signatures&amp;diff=6377"/>
		<updated>2026-02-22T20:23:00Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Don&amp;#039;t use &amp;quot;full&amp;quot; modifier in lilypond version tag to remove empty place from the bottom of the displayed area&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This snippet automatically displays the name of the key above the key signature. This is helpful when learning the key signatures, or to easily see whether a key is major, minor, or modal (dorian, phrygian, lydian, etc.). It works by creating a custom key signature engraver.&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=856&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
%% see also lists.gnu.org/archive/html/lilypond-user/2013-12/msg00828.html&lt;br /&gt;
% by Paul Morris&lt;br /&gt;
&lt;br /&gt;
% tonic-num: number of the tonic note 0-6, C=0, B=6&lt;br /&gt;
% acc-type: the accidental sign type, 1/2=sharp, -1/2=flat&lt;br /&gt;
% acc-count: the number and type of accidentals in the key signature&lt;br /&gt;
%                  values are: -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7&lt;br /&gt;
%                  (negative = flats, positive = sharps)&lt;br /&gt;
% tonic-acc: #f if the tonic note is not sharp or flat, otherwise a pair&lt;br /&gt;
% maj-num: number of the tonic note 0-6, if the key sig were major&lt;br /&gt;
% mode-num: number of the mode 0-6&lt;br /&gt;
% txt-size: size of key name text&lt;br /&gt;
% padd: padding between key signature and key name&lt;br /&gt;
% mult: for correct resizing when the staff is resized&lt;br /&gt;
&lt;br /&gt;
#(define Custom_key_engraver&lt;br /&gt;
   (make-engraver&lt;br /&gt;
    (acknowledgers&lt;br /&gt;
     ((key-signature-interface engraver grob source-engraver)&lt;br /&gt;
      ;; if key cancellation then do nothing,&lt;br /&gt;
      ;; else modify the key signature stencil&lt;br /&gt;
      (if (not (eq? &#039;KeyCancellation&lt;br /&gt;
                    (grob::name grob)))&lt;br /&gt;
          (let* ((context (ly:translator-context engraver))&lt;br /&gt;
                 (tonic-pitch (ly:context-property context &#039;tonic))&lt;br /&gt;
                 (tonic-num (ly:pitch-notename tonic-pitch))&lt;br /&gt;
                 (acc-list (ly:grob-property grob &#039;alteration-alist))&lt;br /&gt;
&lt;br /&gt;
                 (acc-type (if (null? acc-list)&lt;br /&gt;
                               0 (cdr (list-ref acc-list 0))))&lt;br /&gt;
&lt;br /&gt;
                 (acc-count (* (length acc-list)&lt;br /&gt;
                              (if (&amp;lt; acc-type 0) -1 1)))&lt;br /&gt;
&lt;br /&gt;
                 (maj-num (case acc-count&lt;br /&gt;
                            ((0) 0)&lt;br /&gt;
                            ((1) 4) ((2) 1) ((3) 5) ((4) 2) ((5) 6) ((6) 3) ((7) 0)&lt;br /&gt;
                            ((-1) 3) ((-2) 6) ((-3) 2) ((-4) 5) ((-5) 1) ((-6) 4) ((-7) 0)))&lt;br /&gt;
&lt;br /&gt;
                 (mode-num (modulo (- tonic-num maj-num) 7))&lt;br /&gt;
                 (key-letter (case tonic-num&lt;br /&gt;
                               ((0) &amp;quot;C&amp;quot; ) ((1) &amp;quot;D&amp;quot; ) ((2) &amp;quot;E&amp;quot; ) ((3) &amp;quot;F&amp;quot; )&lt;br /&gt;
                               ((4) &amp;quot;G&amp;quot; ) ((5) &amp;quot;A&amp;quot; ) ((6) &amp;quot;B&amp;quot; )))&lt;br /&gt;
&lt;br /&gt;
                 (mult (magstep (ly:grob-property grob &#039;font-size 0.0)))&lt;br /&gt;
&lt;br /&gt;
                 (txt-sharp #{ \markup {&lt;br /&gt;
                   \translate #(cons (* mult -0.3) (* mult 0.8))&lt;br /&gt;
                   \magnify #(* mult 0.9) \sharp&lt;br /&gt;
                   } #})&lt;br /&gt;
&lt;br /&gt;
                 (txt-flat #{ \markup {&lt;br /&gt;
                   \translate #(cons (* mult -0.2) (* mult 0.4))&lt;br /&gt;
                   \magnify #(* mult 0.9) \flat&lt;br /&gt;
                   } #})&lt;br /&gt;
&lt;br /&gt;
                 (tonic-acc (if (pair? (assq tonic-num acc-list))&lt;br /&gt;
                                (if (= acc-type 0.5) txt-sharp txt-flat)&lt;br /&gt;
                                &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
                 (key-mode (case mode-num&lt;br /&gt;
                             ((0) &amp;quot;Major&amp;quot;) ((1) &amp;quot;Dorian&amp;quot;) ((2) &amp;quot;Phrygian&amp;quot;) ((3) &amp;quot;Lydian&amp;quot;)&lt;br /&gt;
                             ((4) &amp;quot;Mixolydian&amp;quot;) ((5) &amp;quot;Minor&amp;quot;) ((6) &amp;quot;Locrian&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
                 ;; F Major and D Minor each get extra padding&lt;br /&gt;
                 ;; so the name appears above the staff&lt;br /&gt;
                 (padd (if (= acc-count -1)&lt;br /&gt;
                           (+ 0.5 (* mult 1.2))&lt;br /&gt;
                           0.5))&lt;br /&gt;
&lt;br /&gt;
                 (txt-size 0.7)&lt;br /&gt;
                 (key-name #{ \markup { #key-letter #tonic-acc #key-mode } #})&lt;br /&gt;
                 (key-name-scaled (ly:stencil-scale&lt;br /&gt;
                                   (grob-interpret-markup grob key-name)&lt;br /&gt;
                                   txt-size txt-size))&lt;br /&gt;
&lt;br /&gt;
                 (key-sig-stencil (ly:key-signature-interface::print grob))&lt;br /&gt;
                 (grob-y-ext (ly:grob-property grob &#039;Y-extent)))&lt;br /&gt;
&lt;br /&gt;
            ;; Names for C Major, A Minor, etc. have to be moved up above the staff&lt;br /&gt;
            ;; padd has no effect if there are no sharps or flats in the key signature&lt;br /&gt;
            (if (equal? grob-y-ext (cons +inf.0 -inf.0))&lt;br /&gt;
                (set! key-name-scaled&lt;br /&gt;
                      (ly:stencil-translate-axis key-name-scaled 3 Y)))&lt;br /&gt;
&lt;br /&gt;
            (ly:grob-set-property! grob &#039;stencil&lt;br /&gt;
              (ly:stencil-combine-at-edge key-sig-stencil 1 1&lt;br /&gt;
                key-name-scaled padd))))))))&lt;br /&gt;
&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Staff&lt;br /&gt;
    \consists \Custom_key_engraver&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\markup \null % avoid clipped text&lt;br /&gt;
&lt;br /&gt;
\new Staff \relative f&#039;&#039; {&lt;br /&gt;
  \key c \major&lt;br /&gt;
  c1&lt;br /&gt;
  \key a \minor&lt;br /&gt;
  a1&lt;br /&gt;
  \key a \major&lt;br /&gt;
  a1&lt;br /&gt;
  \key fis \minor&lt;br /&gt;
  fis1&lt;br /&gt;
  \key ees \major&lt;br /&gt;
  ees1&lt;br /&gt;
  \key c \minor&lt;br /&gt;
  c&#039;1&lt;br /&gt;
  \key c \dorian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \phrygian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \lydian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \mixolydian&lt;br /&gt;
  c1&lt;br /&gt;
  \key c \locrian&lt;br /&gt;
  c1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Contexts and engravers]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Automatically_display_key_names_above_key_signatures&amp;diff=6374</id>
		<title>Talk:Automatically display key names above key signatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Automatically_display_key_names_above_key_signatures&amp;diff=6374"/>
		<updated>2026-02-21T20:54:42Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Avoid key cancellation signs? */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Avoid key cancellation signs? ==&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t it be better to cancel the KeyCancellation objects? Add &amp;lt;code&amp;gt;\override KeyCancellation.break-visibility = #all-invisible&amp;lt;/code&amp;gt; to the layout statement. Another suggestion is to alter the engraver so that the notes do not start after the complete text, analog to &amp;lt;code&amp;gt;\textLengthOff&amp;lt;/code&amp;gt; [[User:Manuela|Manuela]] ([[User talk:Manuela|talk]]) 10:20, 21 February 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think removing the key cancelation is best done with &amp;lt;code&amp;gt;\set Staff.printKeyCancellation = ##f&amp;lt;/code&amp;gt;, but that&#039;s my opinion. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 20:54, 21 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Frescobaldi&amp;diff=6348</id>
		<title>Frescobaldi</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Frescobaldi&amp;diff=6348"/>
		<updated>2026-02-18T17:05:01Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Frescobaldi is a GUI editor for LilyPond&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&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>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Displaying_LilyPond%27s_data_directory&amp;diff=6347</id>
		<title>Talk:Displaying LilyPond&#039;s data directory</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Talk:Displaying_LilyPond%27s_data_directory&amp;diff=6347"/>
		<updated>2026-02-18T16:42:43Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* No LilyPond tag on scheme code */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== No LilyPond tag on scheme code ==&lt;br /&gt;
&lt;br /&gt;
I purposely did not use the &amp;lt;code&amp;gt;&amp;lt;lilypond&amp;gt;&amp;lt;/code&amp;gt; tag on this code because I didn&#039;t want to expose the Wiki&#039;s internal structure.  If I&#039;m being overly paranoid we can add it later. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 16:42, 18 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Displaying_LilyPond%27s_data_directory&amp;diff=6346</id>
		<title>Displaying LilyPond&#039;s data directory</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Displaying_LilyPond%27s_data_directory&amp;diff=6346"/>
		<updated>2026-02-18T16:38:04Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[Frescobaldi]], you can install LilyPond while editing the Settings options.  However, it is not always clear what directory LilyPond is installed in.  Using the following code will display LilyPond&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
\version &amp;quot;2.24.4&amp;quot;&lt;br /&gt;
#(display&lt;br /&gt;
  (string-append &amp;quot;\nThe LilyPond data directory is located at: &amp;quot;&lt;br /&gt;
                 (ly:get-option &#039;datadir)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Thanks to Mark Knoop for this code.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Snippet]] [[Category:Scheme]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Displaying_LilyPond%27s_data_directory&amp;diff=6345</id>
		<title>Displaying LilyPond&#039;s data directory</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Displaying_LilyPond%27s_data_directory&amp;diff=6345"/>
		<updated>2026-02-18T16:33:53Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: How to display LilyPond&amp;#039;s data directory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[Frescobaldi]], you can install LilyPond while editing the Settings options.  However, it is not always clear what directory LilyPond is installed in.  Using the following code will display LilyPond&#039;s data directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
\version &amp;quot;2.24.4&amp;quot;&lt;br /&gt;
#(display&lt;br /&gt;
  (string-append &amp;quot;\nThe LilyPond data directory is located at: &amp;quot;&lt;br /&gt;
                 (ly:get-option &#039;datadir)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Thanks to Mark Knoop for this code.)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=User_talk:Manuela/Main_Page&amp;diff=6304</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=6304"/>
		<updated>2026-02-01T16:41:33Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Farbe */ Reply&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;br /&gt;
&lt;br /&gt;
:I second &amp;quot;Wiki&amp;quot; instead of &amp;quot;WIKI&amp;quot;.  It&#039;s a word, not an acronym. [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 16:41, 1 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Slanted_parentheses_around_dynamics&amp;diff=6303</id>
		<title>Slanted parentheses around dynamics</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Slanted_parentheses_around_dynamics&amp;diff=6303"/>
		<updated>2026-02-01T16:16:15Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Another way to parenthesize  dynamic text w/o Scheme code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Although the easiest way to add parentheses to a dynamic mark is to use a &amp;lt;code&amp;gt;\markup&amp;lt;/code&amp;gt; block, this method has a downside: the created objects behave like text markups and not like dynamics.&lt;br /&gt;
&lt;br /&gt;
However, it is possible to create a similar object using the equivalent Scheme code (as described in the Notation Reference), combined with the &amp;lt;code&amp;gt;make-dynamic-script&amp;lt;/code&amp;gt; function. This way, the markup is regarded as a dynamic and therefore remains compatible with commands such as &amp;lt;code&amp;gt;\dynamicUp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\dynamicDown&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;
paren =&lt;br /&gt;
#(define-event-function (dyn) (ly:event?)&lt;br /&gt;
   (make-dynamic-script&lt;br /&gt;
    #{ \markup \concat {&lt;br /&gt;
         \normal-text \italic \fontsize #2 (&lt;br /&gt;
         \pad-x #0.2 #(ly:music-property dyn &#039;text)&lt;br /&gt;
         \normal-text \italic \fontsize #2 )&lt;br /&gt;
       }&lt;br /&gt;
    #}))&lt;br /&gt;
&lt;br /&gt;
\relative c&#039;&#039; {&lt;br /&gt;
  c4\paren\f c c \dynamicUp c\paren\p&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way to do parenthesize dynamics is to use the &amp;lt;code&amp;gt;\parenthesize&amp;lt;/code&amp;gt; command, although this way doesn&#039;t give you the fine-tuning of the dynamic text.&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;
[[Category:Expressive marks]]&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Text]]&lt;br /&gt;
[[Category:Workaround]]&lt;br /&gt;
[[Category:Included in the official documentation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Slanted_parentheses_around_dynamics&amp;diff=6301</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=6301"/>
		<updated>2026-02-01T15:25:29Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Is this Snippet Necessary? */ Reply&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;br /&gt;
&lt;br /&gt;
:IMHO the answer is no.  &amp;lt;code&amp;gt;\parenthesize&amp;lt;/code&amp;gt; doesn&#039;t allow the fine-tuning necessary to get good output with slanted text.   It might sense, however, to improve the documentation, mentioning &amp;lt;code&amp;gt;\parenthesize&amp;lt;/code&amp;gt;. -- [[User:Lemzwerg|Lemzwerg]] ([[User talk:Lemzwerg|talk]]) 06:17, 1 February 2026 (UTC)&lt;br /&gt;
::Should I add my code to the snippet, or create an issue on the documentation? [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 15:25, 1 February 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Metronome_marks_with_more_options&amp;diff=6295</id>
		<title>Metronome marks with more options</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Metronome_marks_with_more_options&amp;diff=6295"/>
		<updated>2026-01-31T17:12:13Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Consistent spelling of LilyPond&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you need, in &#039;&#039;&#039;metronome marks&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* change the default &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; sign to other symbol, you can use the property &amp;lt;code&amp;gt;tempoEquationText&amp;lt;/code&amp;gt;.&lt;br /&gt;
* change the default &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; sign between tempo values (e.g. 100-120) to, say, 100~120, you can use the property &amp;lt;code&amp;gt;tempoBetweenText&amp;lt;/code&amp;gt;.&lt;br /&gt;
* hide the default parenthesis in metronome marks, you can set the property &amp;lt;code&amp;gt;tempoHideParenthesis&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
* change the color of the tempo value, you can use the property &amp;lt;code&amp;gt;tempoNumberColor&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This snippet also changes the size of metronome marks:&lt;br /&gt;
&lt;br /&gt;
* the text (e.g., &#039;&#039;&#039;Allegro&#039;&#039;&#039;) is a bit larger than the default of LilyPond.&lt;br /&gt;
* the note (e.g., ♪) is a bit smaller than the default of LilyPond.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This snippet is based on a snippet by Arnold Theresius. The original snippet create a formatter called &amp;lt;code&amp;gt;format-metronome-markup-approx&amp;lt;/code&amp;gt;, and the default value to &amp;lt;code&amp;gt;tempoEquationText&amp;lt;/code&amp;gt; in that snippet is &amp;amp;quot;≈&amp;amp;quot;. I changed back this default to LilyPond default, and added the &amp;lt;code&amp;gt;tempoBetweenText&amp;lt;/code&amp;gt; property. Also, I changed the sizing of some elements, as described above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://lsr.di.unimi.it/LSR/Item?id=869 Original snippet by Arnold Theresius]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot; full=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
%%&lt;br /&gt;
%  Metronome markup formatter, with more options than the LilyPond&lt;br /&gt;
%  default formatter, and changes in sizing (see below).&lt;br /&gt;
%  Properties read:&lt;br /&gt;
%  - tempoEquationText:    text to be put between note and tempo value(s)&lt;br /&gt;
%                          Default: &amp;quot;=&amp;quot;&lt;br /&gt;
%  - tempoBetweenText:     text to be put between the tempo values. Used&lt;br /&gt;
%                          only in ranges of tempo values.&lt;br /&gt;
%                          Default: &amp;quot;-&amp;quot;&lt;br /&gt;
%  - tempoHideParenthesis: boolean. If true, the parenthesis are hide.&lt;br /&gt;
%                          Default: false.&lt;br /&gt;
%  - tempoNumberColor:     color. If set, the tempo value will be formatted&lt;br /&gt;
%                          to this color.&lt;br /&gt;
%                          Default: not set.&lt;br /&gt;
%  The size of the text (&amp;quot;Allegro&amp;quot; etc) is a bit larger than LilyPond default.&lt;br /&gt;
%  Similarly, the size of the note is smaller than LilyPond default.&lt;br /&gt;
%&lt;br /&gt;
%  To use this snippet, just \include this file. To revert default&lt;br /&gt;
%  LilyPond formatter inside the score:&lt;br /&gt;
%  \set Score.metronomeMarkFormatter = #format-metronome-markup&lt;br /&gt;
%&lt;br /&gt;
%  tested: Version &amp;quot;2.21.2&amp;quot;&lt;br /&gt;
%&lt;br /&gt;
%  This snippet is based on a snippet by Arnold Theresius. The original&lt;br /&gt;
%  snippet create a formatter called  &amp;quot;format-metronome-markup-approx&amp;quot;,&lt;br /&gt;
%  and the default value to tempoEquationText in that snippet is &amp;quot;≈&amp;quot;.&lt;br /&gt;
%  I changed back this default to LilyPond default, and added the&lt;br /&gt;
%  tempoBetweenText property.&lt;br /&gt;
%&lt;br /&gt;
%  Original header of the Theresius snippet:&lt;br /&gt;
%% http://lsr.di.unimi.it/LSR/Item?id=869&lt;br /&gt;
&lt;br /&gt;
%by: ArnoldTheresius&lt;br /&gt;
&lt;br /&gt;
%tested: Version &amp;quot;2.21.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% lilypond 2.14.x:&lt;br /&gt;
% Almost copied from .../scm/translation-functions.scm:&lt;br /&gt;
% --&amp;gt; added »-approx« to the function names of&lt;br /&gt;
%     »format-metronome-markup« and »metronome-markup«&lt;br /&gt;
% --&amp;gt; replaced &amp;quot;=&amp;quot; with &amp;quot;≈&amp;quot; (approx. instead of equal)&lt;br /&gt;
&lt;br /&gt;
#(define-public (format-metronome-markup-custom event context)&lt;br /&gt;
  (let ((eq-sym-def (ly:context-property context &#039;tempoEquationText))             ; added option&lt;br /&gt;
        (bet-sym-def (ly:context-property context &#039;tempoBetweenText))             ; added option&lt;br /&gt;
        (hide-paren (eq? #t (ly:context-property context &#039;tempoHideParenthesis))) ; added option&lt;br /&gt;
        (num-color (ly:context-property context &#039;tempoNumberColor #f))            ; added option&lt;br /&gt;
        (hide-note (ly:context-property context &#039;tempoHideNote #f))&lt;br /&gt;
        (text (ly:event-property event &#039;text))&lt;br /&gt;
        (dur (ly:event-property event &#039;tempo-unit))&lt;br /&gt;
        (count (ly:event-property event &#039;metronome-count)))&lt;br /&gt;
&lt;br /&gt;
    (metronome-markup-custom text dur count hide-note eq-sym-def bet-sym-def hide-paren num-color)))&lt;br /&gt;
&lt;br /&gt;
#(define-public (metronome-markup-custom text dur count hide-note eq-sym-def bet-sym-def hide-paren col)&lt;br /&gt;
  (let* ((note-mark (if (and (not hide-note) (ly:duration? dur))&lt;br /&gt;
                        (make-teeny-markup                            ; note smaller than LilyPond default&lt;br /&gt;
                         (make-note-by-number-markup (ly:duration-log dur)&lt;br /&gt;
                                                     (ly:duration-dot-count dur)&lt;br /&gt;
                                                     1))&lt;br /&gt;
                        #f))&lt;br /&gt;
         (count-markup (cond ((number? count)&lt;br /&gt;
                              (if (&amp;gt; count 0)&lt;br /&gt;
                                  (number-&amp;gt;string count)&lt;br /&gt;
                                  #f))&lt;br /&gt;
                             ((pair? count)&lt;br /&gt;
                              (make-concat-markup&lt;br /&gt;
                               (list&lt;br /&gt;
                                (number-&amp;gt;string (car count))&lt;br /&gt;
                                (ly:wide-char-&amp;gt;utf-8 #x2009)      ; x2009: &amp;quot;thin space&amp;quot;&lt;br /&gt;
                                (if (string? bet-sym-def)&lt;br /&gt;
                                    bet-sym-def&lt;br /&gt;
                                    (ly:wide-char-&amp;gt;utf-8 #x2013)) ; x2013: &amp;quot;en dash&amp;quot;&lt;br /&gt;
                                (ly:wide-char-&amp;gt;utf-8 #x2009)      ; x2009: &amp;quot;thin space&amp;quot;&lt;br /&gt;
                                (number-&amp;gt;string (cdr count)))))&lt;br /&gt;
                             (else #f)))&lt;br /&gt;
         (note-markup (if (and (not hide-note) count-markup)&lt;br /&gt;
                          (make-concat-markup&lt;br /&gt;
                           (list&lt;br /&gt;
                            (make-general-align-markup Y DOWN note-mark)&lt;br /&gt;
                            &amp;quot; &amp;quot;&lt;br /&gt;
                            (if (string? eq-sym-def)&lt;br /&gt;
                                eq-sym-def&lt;br /&gt;
                                (ly:wide-char-&amp;gt;utf-8 #x3d))&lt;br /&gt;
                            &amp;quot; &amp;quot;&lt;br /&gt;
                            (if (eq? col #f)&lt;br /&gt;
                                count-markup&lt;br /&gt;
                                (make-with-color-markup col count-markup))))&lt;br /&gt;
                          #f))&lt;br /&gt;
         (text-markup (if (not (null? text))&lt;br /&gt;
                          (make-large-markup (make-bold-markup text)) ; text larger than Lilypond default&lt;br /&gt;
                          #f)))&lt;br /&gt;
    (if text-markup&lt;br /&gt;
        (if (and note-markup (not hide-note))&lt;br /&gt;
            (make-line-markup (list text-markup&lt;br /&gt;
                                (if hide-paren&lt;br /&gt;
                                    note-markup&lt;br /&gt;
                                    (make-concat-markup&lt;br /&gt;
                                     (list &amp;quot;(&amp;quot;&lt;br /&gt;
                                           note-markup&lt;br /&gt;
                                           &amp;quot;)&amp;quot;)))))&lt;br /&gt;
            (make-line-markup (list text-markup)))&lt;br /&gt;
        (if note-markup&lt;br /&gt;
            (make-line-markup (list note-markup))&lt;br /&gt;
            (make-null-markup)))))&lt;br /&gt;
&lt;br /&gt;
% Avoid errors of not defined properties&lt;br /&gt;
#(define (define-translator-property symbol type? description)&lt;br /&gt;
  (if (not (and (symbol? symbol)&lt;br /&gt;
                (procedure? type?)&lt;br /&gt;
                (string? description)))&lt;br /&gt;
      (ly:error &amp;quot;error in call of define-translator-property&amp;quot;))&lt;br /&gt;
  (if (not (equal? (object-property symbol &#039;translation-doc) #f))&lt;br /&gt;
      (ly:error (_ &amp;quot;symbol ~S redefined&amp;quot;) symbol))&lt;br /&gt;
&lt;br /&gt;
  (set-object-property! symbol &#039;translation-type? type?)&lt;br /&gt;
  (set-object-property! symbol &#039;translation-doc description)&lt;br /&gt;
  symbol)&lt;br /&gt;
&lt;br /&gt;
#(for-each&lt;br /&gt;
  (lambda (x)&lt;br /&gt;
    (apply define-translator-property x))&lt;br /&gt;
  `((tempoHideParenthesis&lt;br /&gt;
     ,boolean?&lt;br /&gt;
     &amp;quot;Hide the parenthesis around the metronome markup with text&amp;quot;)&lt;br /&gt;
    (tempoEquationText&lt;br /&gt;
     ,string?&lt;br /&gt;
     &amp;quot;initially &#039;&#039;=&#039;&#039; in the metronome markup&amp;quot;)&lt;br /&gt;
    (tempoBetweenText&lt;br /&gt;
     ,string?&lt;br /&gt;
     &amp;quot;initially &#039;&#039;-&#039;&#039; in the metronome markup&amp;quot;)&lt;br /&gt;
    (tempoNumberColor&lt;br /&gt;
     ,list?&lt;br /&gt;
     &amp;quot;alternate color, in which the tempo value should be displayed&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
% Sets this formatter as default formatter&lt;br /&gt;
\layout {&lt;br /&gt;
  \context {&lt;br /&gt;
    \Score&lt;br /&gt;
    metronomeMarkFormatter = #format-metronome-markup-custom&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%%% END of snippet. Below is an example of use&lt;br /&gt;
\paper {&lt;br /&gt;
  system-system-spacing.basic-distance = #18&lt;br /&gt;
  tagline = ##f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%\markup { \null \translate #&#039;( 1 . -3 ) \null } % 2.14.2 LSR problem workaroud&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff {&lt;br /&gt;
    \tempo 4 = 80&lt;br /&gt;
    c&#039;1^&amp;quot; &amp;quot;_&amp;quot;»originally after included this code sample«&amp;quot;&lt;br /&gt;
    \tempo &amp;quot;Allegro di Largo&amp;quot; 4 = 84&lt;br /&gt;
    c&#039; \break&lt;br /&gt;
&lt;br /&gt;
    \once \set Score.tempoHideParenthesis = ##t&lt;br /&gt;
    \set Score.tempoEquationText = &amp;quot;≈&amp;quot;&lt;br /&gt;
    \tempo &amp;quot;Allegro di Larghetto&amp;quot; 4 = 88&lt;br /&gt;
    c&#039;^&amp;quot; &amp;quot;_&amp;quot;\\once \\set Score.tempoHideParenthesis = ##t&amp;quot;&lt;br /&gt;
    \break&lt;br /&gt;
&lt;br /&gt;
    \set Score.tempoEquationText = &amp;quot;= ca.&amp;quot;&lt;br /&gt;
    \tempo &amp;quot;Allegro lento&amp;quot; 4 = 96&lt;br /&gt;
    c&#039;^&amp;quot; &amp;quot;_&amp;quot;\\set Score.tempoEquationText = \&amp;quot;= ca.\&amp;quot;&amp;quot;&lt;br /&gt;
    \break&lt;br /&gt;
&lt;br /&gt;
    \unset Score.tempoEquationText&lt;br /&gt;
    \once \set Score.tempoNumberColor = #red&lt;br /&gt;
    \tempo 4 = 108&lt;br /&gt;
    c&#039;^&amp;quot; &amp;quot;_&amp;quot;\\unset Score.tempoEquationText   \\set Score.tempoNumberColor = #red&amp;quot;&lt;br /&gt;
    \break&lt;br /&gt;
&lt;br /&gt;
    \set Score.tempoNumberColor = #blue&lt;br /&gt;
    \set Score.tempoEquationText = &amp;quot;=&amp;quot;&lt;br /&gt;
    \set Score.tempoBetweenText= &amp;quot;~&amp;quot;&lt;br /&gt;
    \tempo &amp;quot;Allegro monumentale&amp;quot; 4 = 80-88&lt;br /&gt;
    c&#039;^&amp;quot; &amp;quot;_\markup \column { &lt;br /&gt;
    	    &amp;quot;\\set Score.tempoNumberColor = #blue&amp;quot;&lt;br /&gt;
    	    &amp;quot;\\set Score.tempoEquationText = \&amp;quot;=\&amp;quot;&amp;quot;&lt;br /&gt;
    	    &amp;quot;\\set Score.tempoBetweenText= \&amp;quot;~\&amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    \break&lt;br /&gt;
&lt;br /&gt;
    \set Score.metronomeMarkFormatter = #format-metronome-markup&lt;br /&gt;
    \override TextScript.outside-staff-priority = #1000&lt;br /&gt;
    \tempo &amp;quot;Tempo I&amp;quot; 4 = 80&lt;br /&gt;
    c&#039;^&amp;quot; &amp;quot;_\markup \column {&lt;br /&gt;
      &amp;quot;\\set Score.metronomeMarkFormatter = #format-metronome-markup&amp;quot;&lt;br /&gt;
      &amp;quot;(which is LilyPond&#039;s default Metronome Mark Formatter)&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    \bar &amp;quot;|.&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  \header {&lt;br /&gt;
    piece = \markup \column {&lt;br /&gt;
      &amp;quot;»Score.metronomeMarkFormatter = #format-metronome-markup-custom«&amp;quot;&lt;br /&gt;
      &amp;quot;is assigned by a layout definition in this example&amp;quot;&lt;br /&gt;
      %\null&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scheme]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Talk:Slanted_parentheses_around_dynamics&amp;diff=6294</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=6294"/>
		<updated>2026-01-31T16:52:27Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: /* Is this Snippet Necessary? */ new section&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;
  \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;
&lt;br /&gt;
-- [[User:Ksnortum|Ksnortum]] ([[User talk:Ksnortum|talk]]) 16:52, 31 January 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Increasing_spacing_between_staves&amp;diff=6063</id>
		<title>Increasing spacing between staves</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Increasing_spacing_between_staves&amp;diff=6063"/>
		<updated>2026-01-02T20:56:36Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add a link to LilyPond documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vertical spacing is automatically set so that the layout of a score is neither too cramped or loose. Changing the distance between systems, however, is easy to do. You may want to move systems closer together so that more can fit on the page, for example.&lt;br /&gt;
&lt;br /&gt;
Four keys are available for fine-tuned control, but you may find that you can get the spacing you want with changes to just one or two. The output of this snippet is the result of a change to a single key, &amp;lt;code&amp;gt;padding&amp;lt;/code&amp;gt;. You may want to experiment with the commented-out line below it, which contains the default values for &amp;lt;code&amp;gt;system-system-spacing&amp;lt;/code&amp;gt; and shows the syntax to use for changes in groups. Numbers represent distances in staff-spaces.&lt;br /&gt;
&lt;br /&gt;
For more details you should consult [https://lilypond.org/doc/v2.24/Documentation/notation/page-layout Section 4.1 of the Notation Reference].&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=12&lt;br /&gt;
&lt;br /&gt;
%here starts the snippet:&lt;br /&gt;
&lt;br /&gt;
\paper {&lt;br /&gt;
  % spacing variables may be changed individually:&lt;br /&gt;
  system-system-spacing.padding = #8&lt;br /&gt;
  % or as a group:&lt;br /&gt;
  %system-system-spacing =&lt;br /&gt;
  %  #&#039;((basic-distance . 12)&lt;br /&gt;
  %     (minimum-distance . 8)&lt;br /&gt;
  %     (padding . 1)&lt;br /&gt;
  %     (stretchability . 60)) &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\paper { tagline = ##f }&lt;br /&gt;
&lt;br /&gt;
\score {&lt;br /&gt;
  \new Staff {&lt;br /&gt;
    \repeat unfold 96 { c&#039;&#039;8[ c&#039;&#039;] } &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\layout {&lt;br /&gt;
   indent = 0\mm&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Spacing]]&lt;br /&gt;
[[Category:Staff notation]]&lt;br /&gt;
[[Category:Tweaks and overrides]]&lt;br /&gt;
[[Category:Paper and layout]]&lt;br /&gt;
[[Category:Snippet]]&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Arrow_between_measures&amp;diff=3061</id>
		<title>Arrow between measures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Arrow_between_measures&amp;diff=3061"/>
		<updated>2025-11-17T16:51:56Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To put an arrow between separated measures, try this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
arrow = &lt;br /&gt;
  -\tweak Y-offset #0&lt;br /&gt;
  -\tweak outside-staff-priority ##f&lt;br /&gt;
  -\markup&lt;br /&gt;
  \concat {&lt;br /&gt;
    \draw-line #&#039;(5 . 0)&lt;br /&gt;
    \hspace #-0.2 % This is to bridge the small indentation in the arrow-head&lt;br /&gt;
    \arrow-head #X #RIGHT ##t&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
\new Staff {&lt;br /&gt;
  c&#039;&#039;1 \stopStaff &amp;lt;&amp;lt; \tweak transparent ##t R1-\arrow &amp;gt;&amp;gt; \startStaff c&#039;&#039;1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Credit to [[User:Jean Abou Samra]].&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
	<entry>
		<id>https://wiki.lilypond.community/index.php?title=Arrow_between_measures&amp;diff=3060</id>
		<title>Arrow between measures</title>
		<link rel="alternate" type="text/html" href="https://wiki.lilypond.community/index.php?title=Arrow_between_measures&amp;diff=3060"/>
		<updated>2025-11-17T16:50:45Z</updated>

		<summary type="html">&lt;p&gt;Ksnortum: Add credit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To put an arrow between separated measures, try this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lilypond version=&amp;quot;2.24&amp;quot;&amp;gt;&lt;br /&gt;
arrow = &lt;br /&gt;
  -\tweak Y-offset #0&lt;br /&gt;
  -\tweak outside-staff-priority ##f&lt;br /&gt;
  -\markup&lt;br /&gt;
  \concat {&lt;br /&gt;
    \draw-line #&#039;(5 . 0)&lt;br /&gt;
    \hspace #-0.2 % This is to bridge the small indentation in the arrow-head&lt;br /&gt;
    \arrow-head #X #RIGHT ##t&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
\new Staff {&lt;br /&gt;
  c&#039;&#039;1 \stopStaff &amp;lt;&amp;lt; \tweak transparent ##t R1-\arrow &amp;gt;&amp;gt; \startStaff c&#039;&#039;1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lilypond&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Credit to [[Jean Abou Samra]].&lt;/div&gt;</summary>
		<author><name>Ksnortum</name></author>
	</entry>
</feed>