1 \input texinfo @c -*-texinfo-*-
2 @setfilename features.info
3 @settitle GNU LilyPond Features
7 * add more un/badly-documented features
9 * add to/merge with refman
17 * Glissando:: Glissando
18 * Manual beam settings:: Manual beam settings
19 * Slur attachments:: Slur attachments
20 * Text spanner:: Text spanner
21 * Output property:: Output property
22 * Markup text:: Markup text
23 * Engraver hacking:: Engraver hacking
27 @lilypond[fragment,relative,verbatim,center]
34 @lilypond[fragment,relative,verbatim,center]
35 \context Voice <c'\arpeggio e g c>
38 @lilypond[fragment,relative,verbatim,center]
40 \property PianoStaff.connectArpeggios = ##t
41 \context Staff \context Voice <c''\arpeggio e g c>
42 \context Staff=other \context Voice <c,\arpeggio e g>
51 @lilypond[fragment,relative,verbatim,center]
55 @subsection Follow Thread
56 @lilypond[fragment,relative,verbatim,center]
58 \property PianoStaff.followThread = ##t
59 \context Staff \context Voice {
64 \context Staff=two {\clef bass; \skip 1*2;}
69 @node Manual beam settings
70 @section Manual beam settings
75 @lilypond[fragment,relative,verbatim,center]
82 Control number of beams...
84 @lilypond[fragment,relative,verbatim,center]
87 [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
91 @lilypond[fragment,relative,verbatim,center]
94 \property Voice.autoBeamSettings
95 \set #'(end * * * *) = #(make-moment 1 4)
99 \property Voice.stemRightBeamCount = #1 b
100 \property Voice.stemLeftBeamCount = #1 b
104 Don't extend to middle line esp. for grace
106 @lilypond[fragment,relative,verbatim,center]
108 \property Voice.Stem \set #'no-stem-extend = ##t
113 @c beam start beam end
116 @node Slur attachments
117 @section Slur attachments
119 BUG Override attachments...
120 @lilypond[fragment,relative,verbatim,center]
121 \property Voice.Slur \set #'direction = #1
122 \property Voice.Stem \set #'length = #5.5
125 \property Voice.Slur \set #'attachment = #'(stem . stem)
131 @lilypond[fragment,relative,verbatim,center]
132 \property Voice.Slur \set #'direction = #1
133 \property Voice.Slur \set #'attachment = #'(head . head)
134 g''16()g()g()g()d'()d()d()d
139 @c high slurs, eg from gnossienes
143 @section Text spanner
145 Have crescendo set a text spanner iso hairpin
146 @lilypond[fragment,relative,verbatim,center]
148 \property Voice.crescendoText = "cresc."
149 \property Voice.crescendoSpanner = #'dashed-line
156 @lilypond[fragment,relative,verbatim,center]
158 \property Voice.TextSpanner \set #'type = #'dotted-line
159 \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
160 \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
161 \property Staff.centralCPosition = #-13
162 a\spanrequest \start "text" b c a \spanrequest \stop "text"
166 @node Output property
167 @section Output property
169 @lilypond[fragment,relative,verbatim,center]
170 \outputproperty #(make-type-checker 'note-head-interface)
171 #'extra-offset = #'(2 . 3)
175 Don't move the finger 2, only text "m.d." ...
176 @lilypond[verbatim,center]
177 #(define (make-text-checker text)
178 (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
181 \notes\relative c''' {
182 \property Voice.Stem \set #'direction = #1
183 \outputproperty #(make-text-checker "m.d.")
184 #'extra-offset = #'(-3.5 . -4.5)
187 \paper { linewidth = -1.; }
195 @c markup text hacking
199 @lilypond[verbatim,center]
200 #(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
201 #(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
202 #(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
205 \notes\relative c'' {
206 a1^#`(rows ,dotted-eight-note " = 64")
212 TextScript \override #'font-shape = #'upright
218 @node Engraver hacking
219 @section Engraver hacking
221 No time signature, no barlines...
222 @lilypond[verbatim,center]
224 \notes \relative c'' {
232 \remove "Time_signature_engraver";
239 No staff, no clef, squash pitches
240 @lilypond[verbatim,center]
242 \notes { c4 c4 c8 c8 }
246 \remove Staff_symbol_engraver;
247 \consists Pitch_squash_engraver;
248 \remove Clef_engraver;
255 @c subsection no clefs