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 * Engraver hacking:: Engraver hacking
22 * Markup text:: Markup text
23 * Output property:: Output property
24 * Embedded TeX:: Embedded TeX
25 * Embedded PostScript:: Embedded PostScript
29 @lilypond[fragment,relative,verbatim,center]
36 @lilypond[fragment,relative,verbatim,center]
37 \context Voice <c'\arpeggio e g c>
40 @lilypond[fragment,relative,verbatim,center]
42 \property PianoStaff.connectArpeggios = ##t
43 \context Staff \context Voice <c''\arpeggio e g c>
44 \context Staff=other \context Voice <c,\arpeggio e g>
53 @lilypond[fragment,relative,verbatim,center]
57 @subsection Follow Thread
58 @lilypond[fragment,relative,verbatim,center]
60 \property PianoStaff.followThread = ##t
61 \context Staff \context Voice {
66 \context Staff=two {\clef bass; \skip 1*2;}
72 @node Manual beam settings
73 @section Manual beam settings
78 @lilypond[fragment,relative,verbatim,center]
85 Control number of beams...
87 @lilypond[fragment,relative,verbatim,center]
90 [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
94 @lilypond[fragment,relative,verbatim,center]
97 \property Voice.autoBeamSettings
98 \set #'(end * * * *) = #(make-moment 1 4)
102 \property Voice.stemRightBeamCount = #1 b
103 \property Voice.stemLeftBeamCount = #1 b
107 Don't extend to middle line esp. for grace
109 @lilypond[fragment,relative,verbatim,center]
111 \property Voice.Stem \set #'no-stem-extend = ##t
116 @c beam start beam end
119 @node Slur attachments
120 @section Slur attachments
122 BUG Override attachments...
123 @lilypond[fragment,relative,verbatim,center]
124 \property Voice.Slur \set #'direction = #1
125 \property Voice.Stem \set #'length = #5.5
128 \property Voice.Slur \set #'attachment = #'(stem . stem)
134 @lilypond[fragment,relative,verbatim,center]
135 \property Voice.Slur \set #'direction = #1
136 \property Voice.Slur \set #'attachment = #'(head . head)
137 g''16()g()g()g()d'()d()d()d
141 @c steep slur correct
142 @c high slurs, eg from gnossienes
146 @section Text spanner
148 Have crescendo set a text spanner iso hairpin
149 @lilypond[fragment,relative,verbatim,center]
151 \property Voice.crescendoText = "cresc."
152 \property Voice.crescendoSpanner = #'dashed-line
159 @lilypond[fragment,relative,verbatim,center]
161 \property Voice.TextSpanner \set #'type = #'dotted-line
162 \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
163 \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
164 \property Staff.centralCPosition = #-13
165 a\spanrequest \start "text" b c a \spanrequest \stop "text"
169 @node Engraver hacking
170 @section Engraver hacking
172 No time signature, no barlines...
173 @lilypond[verbatim,center]
175 \notes \relative c'' {
183 \remove "Time_signature_engraver";
190 No staff, no clef, squash pitches
191 @lilypond[verbatim,center]
193 \notes { c4 c4 c8 c8 }
197 \remove Staff_symbol_engraver;
198 \consists Pitch_squash_engraver;
199 \remove Clef_engraver;
210 @c markup text hacking
214 @lilypond[verbatim,center]
215 #(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
216 #(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
217 #(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
220 \notes\relative c'' {
221 a1^#`(rows ,dotted-eight-note " = 64")
227 TextScript \override #'font-shape = #'upright
234 @node Output property
235 @section Output property
237 @lilypond[fragment,relative,verbatim,center]
238 \outputproperty #(make-type-checker 'note-head-interface)
239 #'extra-offset = #'(2 . 3)
243 Don't move the finger 2, only text "m.d." ...
244 @lilypond[verbatim,center]
245 #(define (make-text-checker text)
246 (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
249 \notes\relative c''' {
250 \property Voice.Stem \set #'direction = #1
251 \outputproperty #(make-text-checker "m.d.")
252 #'extra-offset = #'(-3.5 . -4.5)
255 \paper { linewidth = -1.; }
260 @c subsection no clefs
267 @section Embedded TeX
268 @lilypond[fragment,relative,verbatim,center]
269 a''^"3 $\\times$ \\`a deux"
272 @node Embedded PostScript
273 @section Embedded PostScript
275 Arbitrary lines and curves not supported...
276 @lilypond[verbatim,center]
278 \notes \relative c'' {
279 a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
280 -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
281 b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
286 linewidth = 70.0*\staffspace;