]> git.donarmstrong.com Git - lilypond.git/blob - ly/property-init.ly
Doc-de: move engraving essay
[lilypond.git] / ly / property-init.ly
1 % property-init.ly
2
3 \version "2.12.0"
4
5 %% for dashed slurs, phrasing slurs, and ties
6 #(define (make-simple-dash-definition dash-fraction dash-period)
7     (list (list 0 1 dash-fraction dash-period)))
8
9
10 %% arpeggios
11
12 % For drawing vertical chord brackets with \arpeggio
13 % This is a shorthand for the value of the print-function property
14 % of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether
15 % cross-staff brackets are desired.
16
17 arpeggio = #(make-music 'ArpeggioEvent)
18 arpeggioArrowUp = {
19   \revert Arpeggio  #'stencil
20   \revert Arpeggio #'X-extent
21   \override Arpeggio  #'arpeggio-direction = #UP
22 }
23 arpeggioArrowDown = {
24   \revert Arpeggio #'stencil
25   \revert Arpeggio #'X-extent
26   \override Arpeggio  #'arpeggio-direction = #DOWN
27 }
28 arpeggioNormal = {
29   \revert Arpeggio #'stencil
30   \revert Arpeggio #'X-extent
31   \revert Arpeggio #'arpeggio-direction
32   \revert Arpeggio #'dash-definition
33 }
34 arpeggioBracket = {
35   \revert Arpeggio #'X-extent
36   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket
37 }
38 arpeggioParenthesis = {
39   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
40   \override Arpeggio #'X-extent = #ly:grob::stencil-width
41   \revert Arpeggio #'dash-definition
42 }
43 arpeggioParenthesisDashed = {
44   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
45   \override Arpeggio #'X-extent = #ly:grob::stencil-width
46   \override Arpeggio #'dash-definition = #'((0 1 0.4 0.75))
47 }
48
49
50 %% auto beaming
51
52 autoBeamOn  = \set autoBeaming = ##t
53 autoBeamOff = \set autoBeaming = ##f
54
55
56 %% balloon length
57
58 balloonLengthOn = {
59   \override BalloonTextItem #'extra-spacing-width = #'(0 . 0)
60   \override BalloonTextItem #'extra-spacing-height = #'(-inf.0 . +inf.0)
61 }
62 balloonLengthOff = {
63   \override BalloonTextItem #'extra-spacing-width = #'(+inf.0 . -inf.0)
64   \override BalloonTextItem #'extra-spacing-height = #'(0 . 0)
65 }
66
67
68 %% bass figures
69
70 bassFigureExtendersOn = {
71   \set useBassFigureExtenders = ##t
72   \set Staff.useBassFigureExtenders = ##t
73 }
74 bassFigureExtendersOff = {
75   \set useBassFigureExtenders = ##f
76   \set Staff.useBassFigureExtenders = ##f
77 }
78 bassFigureStaffAlignmentDown =
79   \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN
80 bassFigureStaffAlignmentUp =
81   \override Staff.BassFigureAlignmentPositioning #'direction = #UP
82 bassFigureStaffAlignmentNeutral =
83   \revert Staff.BassFigureAlignmentPositioning #'direction
84
85
86 %% cadenzas
87
88 cadenzaOn  = \set Timing.timing = ##f
89 cadenzaOff = {
90   \set Timing.timing = ##t
91   \set Timing.measurePosition = #ZERO-MOMENT
92 }
93
94
95 %% chord names
96
97 frenchChords = {
98   \set chordRootNamer = #(chord-name->italian-markup #t)
99   \set chordPrefixSpacer = #0.4
100 }
101 germanChords = {
102   \set chordRootNamer = #(chord-name->german-markup #t)
103   \set chordNoteNamer = #note-name->german-markup
104 }
105 semiGermanChords = {
106   \set chordRootNamer = #(chord-name->german-markup #f)
107   \set chordNoteNamer = #note-name->german-markup
108 }
109 italianChords = {
110   \set chordRootNamer = #(chord-name->italian-markup #f)
111   \set chordPrefixSpacer = #0.4
112 }
113
114
115 %% compressFullBarRests
116
117 compressFullBarRests = \set Score.skipBars = ##t
118 expandFullBarRests   = \set Score.skipBars = ##f
119
120
121 %% dots
122
123 dotsUp      = \override Dots #'direction = #UP
124 dotsDown    = \override Dots #'direction = #DOWN
125 dotsNeutral = \revert Dots #'direction
126
127
128 %% dynamics
129
130 dynamicUp = {
131   \override DynamicText #'direction = #UP
132   \override DynamicLineSpanner #'direction = #UP
133 }
134 dynamicDown = {
135   \override DynamicText #'direction = #DOWN
136   \override DynamicLineSpanner #'direction = #DOWN
137 }
138 dynamicNeutral = {
139   \revert DynamicText #'direction
140   \revert DynamicLineSpanner #'direction
141 }
142
143
144 %% easy heads
145
146 easyHeadsOn = {
147   \override NoteHead #'stencil = #note-head::brew-ez-stencil
148   \override NoteHead #'font-size = #-8
149   \override NoteHead #'font-family = #'sans
150   \override NoteHead #'font-series = #'bold
151 }
152 easyHeadsOff = {
153   \revert NoteHead #'stencil
154   \revert NoteHead #'font-size
155   \revert NoteHead #'font-family
156   \revert NoteHead #'font-series
157 }
158
159
160 %% endincipit
161
162 %% End the incipit and print a ``normal line start''.
163 endincipit = \context Staff {
164   \partial 16 s16  % Hack to handle e.g. \bar ".|" \endincipit
165   \once \override Staff.Clef #'full-size-change = ##t
166   \once \override Staff.Clef #'non-default = ##t
167   \bar ""
168 }
169
170
171 %% fermata markup
172
173 fermataMarkup =
174 #(make-music 'MultiMeasureTextEvent
175    ; Set the 'text based on the 'direction
176    'tweaks (list (cons 'text (lambda (grob)
177        (if (eq? (ly:grob-property grob 'direction) DOWN)
178            (markup #:musicglyph "scripts.dfermata")
179            (markup #:musicglyph "scripts.ufermata"))))))
180
181
182 %% font sizes
183
184 teeny      = \set fontSize = #-3
185 tiny       = \set fontSize = #-2
186 small      = \set fontSize = #-1
187 normalsize = \set fontSize = #0
188 large      = \set fontSize = #1
189 huge       = \set fontSize = #2
190
191
192 %% glissando
193
194 glissando = #(make-music 'GlissandoEvent)
195
196
197 %% harmonics
198
199 harmonicsOn  = \override NoteHead #'style = #'harmonic
200 harmonicsOff = \revert NoteHead #'style
201
202
203 %% hideNotes
204
205 hideNotes = {
206   % hide notes, accidentals, etc.
207   \override Dots #'transparent = ##t
208   \override NoteHead #'transparent = ##t
209   \override NoteHead #'no-ledgers = ##t
210   \override Stem #'transparent = ##t
211   \override Beam #'transparent = ##t
212   \override Accidental #'transparent = ##t
213 }
214 unHideNotes = {
215   \revert Accidental #'transparent
216   \revert Beam #'transparent
217   \revert Stem #'transparent
218   \revert NoteHead #'transparent
219   \revert NoteHead #'no-ledgers
220   \revert Dots #'transparent
221 }
222
223
224 %% improvisation
225
226 improvisationOn = {
227   \set squashedPosition = #0
228   \override NoteHead #'style = #'slash
229   \override Accidental #'stencil = ##f
230 }
231 improvisationOff = {
232   \unset squashedPosition
233   \revert NoteHead #'style
234   \revert Accidental #'stencil
235 }
236
237
238 %% merging
239
240 mergeDifferentlyDottedOn =
241   \override Staff.NoteCollision #'merge-differently-dotted = ##t
242 mergeDifferentlyDottedOff =
243   \revert Staff.NoteCollision #'merge-differently-dotted
244 mergeDifferentlyHeadedOn =
245   \override Staff.NoteCollision #'merge-differently-headed = ##t
246 mergeDifferentlyHeadedOff =
247   \revert Staff.NoteCollision #'merge-differently-headed
248
249
250 %% numeric time signature
251
252 numericTimeSignature = \override Staff.TimeSignature #'style = #'()
253 defaultTimeSignature = \revert Staff.TimeSignature #'style
254
255
256 %% palm mutes
257
258 palmMuteOn =
259 #(define-music-function (parser location) ()
260    (override-head-style 'NoteHead 'do))
261 palmMuteOff =
262 #(define-music-function (parser location) ()
263    (revert-head-style 'NoteHead))
264 palmMute =
265 #(define-music-function (parser location note) (ly:music?)
266     (style-note-heads 'NoteHead 'do note))
267
268
269 %% phrasing slurs
270
271 % directions
272 phrasingSlurUp      = \override PhrasingSlur #'direction = #UP
273 phrasingSlurDown    = \override PhrasingSlur #'direction = #DOWN
274 phrasingSlurNeutral = \revert PhrasingSlur #'direction
275
276 % dash-patterns (make-simple-dash-definition defined at top of file)
277 phrasingSlurDashPattern =
278 #(define-music-function (parser location dash-fraction dash-period)
279   (number? number?)
280   #{
281      \override PhrasingSlur #'dash-definition =
282        $(make-simple-dash-definition dash-fraction dash-period)
283   #})
284 phrasingSlurDashed =
285   \override PhrasingSlur #'dash-definition = #'((0 1 0.4 0.75))
286 phrasingSlurDotted =
287   \override PhrasingSlur #'dash-definition = #'((0 1 0.1 0.75))
288 phrasingSlurHalfDashed =
289   \override PhrasingSlur #'dash-definition = #'((0 0.5 0.4 0.75)
290                                                 (0.5 1 1 1))
291 phrasingSlurHalfSolid =
292   \override PhrasingSlur #'dash-definition = #'((0 0.5 1 1)
293                                                 (0.5 1 0.4 0.75))
294 phrasingSlurSolid =
295   \revert PhrasingSlur #'dash-definition
296
297
298 %% point and click
299
300 pointAndClickOn  =
301 #(define-music-function (parser location) ()
302    (ly:set-option 'point-and-click #t)
303    (make-music 'SequentialMusic 'void #t))
304 pointAndClickOff =
305 #(define-music-function (parser location) ()
306    (ly:set-option 'point-and-click #f)
307    (make-music 'SequentialMusic 'void #t))
308
309
310 %% predefined fretboards
311
312 predefinedFretboardsOff =
313   \set FretBoards.predefinedDiagramTable = ##f
314 predefinedFretboardsOn =
315   \set FretBoards.predefinedDiagramTable = #fretboard-table
316
317
318 %% shape note heads
319
320 aikenHeads      = \set shapeNoteStyles = #'#(do re mi fa #f la ti)
321 sacredHarpHeads = \set shapeNoteStyles = #'#(fa #f la fa #f la mi)
322
323
324 %% shifts
325
326 shiftOn   = \override NoteColumn #'horizontal-shift = #1
327 shiftOnn  = \override NoteColumn #'horizontal-shift = #2
328 shiftOnnn = \override NoteColumn #'horizontal-shift = #3
329 shiftOff  = \revert NoteColumn #'horizontal-shift
330
331
332 %% slurs
333
334 % directions
335 slurUp         = \override Slur #'direction = #UP
336 slurDown       = \override Slur #'direction = #DOWN
337 slurNeutral    = \revert Slur #'direction
338
339 % dash-patterns (make-simple-dash-definition defined at top of file)
340 slurDashPattern =
341 #(define-music-function (parser location dash-fraction dash-period)
342   (number? number?)
343   #{
344      \override Slur #'dash-definition =
345        $(make-simple-dash-definition dash-fraction dash-period)
346   #})
347 slurDashed     = \override Slur #'dash-definition = #'((0 1 0.4 0.75))
348 slurDotted     = \override Slur #'dash-definition = #'((0 1 0.1 0.75))
349 slurHalfDashed = \override Slur #'dash-definition = #'((0 0.5 0.4 0.75)
350                                                        (0.5 1 1 1))
351 slurHalfSolid  = \override Slur #'dash-definition = #'((0 0.5 1 1)
352                                                        (0.5 1 0.4 0.75))
353 slurSolid      = \revert Slur #'dash-definition
354
355
356 %% staff switches
357
358 showStaffSwitch = \set followVoice = ##t
359 hideStaffSwitch = \set followVoice = ##f
360
361
362 %% stems
363
364 stemUp      = \override Stem #'direction = #UP
365 stemDown    = \override Stem #'direction = #DOWN
366 stemNeutral = \revert Stem #'direction
367
368
369 %% tabFullNotation
370
371 tabFullNotation = {
372   % time signature
373   \revert TabStaff.TimeSignature #'stencil
374   % stems (the half note gets a double stem)
375   \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes
376   % beams, dots
377   \revert TabVoice.Beam #'stencil
378   \revert TabVoice.Dots #'stencil
379   \revert TabVoice.Tie #'stencil
380   \revert TabVoice.Tie #'after-line-breaking
381   \revert TabVoice.RepeatTie #'stencil
382   \revert TabVoice.RepeatTie #'after-line-breaking
383   \revert TabVoice.LaissezVibrerTie #'stencil
384   \revert TabVoice.Slur #'stencil
385   \revert PhrasingSlur #'stencil
386   % tuplet stuff
387   \revert TabVoice.TupletBracket #'stencil
388   \revert TabVoice.TupletNumber #'stencil
389   % dynamic signs
390   \revert DynamicText #'transparent
391   \revert DynamicTextSpanner #'stencil
392   \revert TabVoice.DynamicTextSpanner #'stencil
393   \revert TabVoice.Hairpin #'transparent
394   % rests
395   \revert TabVoice.Rest #'stencil
396   \revert TabVoice.MultiMeasureRest #'stencil
397   % markups etc.
398   \revert TabVoice.Script #'stencil
399   \revert TabVoice.TextScript #'stencil
400   \revert TabStaff.Arpeggio #'stencil
401 }
402
403
404 %% text length
405
406 textLengthOn = {
407   \override TextScript #'extra-spacing-width = #'(0 . 0)
408   \override TextScript #'extra-spacing-height = #'(-inf.0 . +inf.0)
409 }
410 textLengthOff = {
411   \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0)
412   \override TextScript #'extra-spacing-height = #'(0 . 0)
413 }
414
415
416 %% text spanners
417
418 textSpannerUp      = \override TextSpanner #'direction = #UP
419 textSpannerDown    = \override TextSpanner #'direction = #DOWN
420 textSpannerNeutral = \revert TextSpanner #'direction
421
422
423 %% ties
424
425 % directions
426 tieUp      = \override Tie #'direction = #UP
427 tieDown    = \override Tie #'direction = #DOWN
428 tieNeutral = \revert Tie #'direction
429
430 % dash-patterns (make-simple-dash-definition defined at top of file)
431 tieDashPattern =
432 #(define-music-function (parser location dash-fraction dash-period)
433   (number? number?)
434   #{
435      \override Tie #'dash-definition =
436        $(make-simple-dash-definition dash-fraction dash-period)
437   #})
438 tieDashed     = \override Tie #'dash-definition = #'((0 1 0.4 0.75))
439 tieDotted     = \override Tie #'dash-definition = #'((0 1 0.1 0.75))
440 tieHalfDashed = \override Tie #'dash-definition = #'((0 0.5 0.4 0.75)
441                                                      (0.5 1 1 1))
442 tieHalfSolid  = \override Tie #'dash-definition = #'((0 0.5 1 1)
443                                                      (0.5 1 0.4 0.75))
444 tieSolid      = \revert Tie #'dash-definition
445
446
447 %% tuplets
448
449 tupletUp      = \override TupletBracket #'direction = #UP
450 tupletDown    = \override TupletBracket #'direction = #DOWN
451 tupletNeutral = \revert TupletBracket #'direction
452
453
454 %% voice properties
455
456 % dynamic ly:dir?  text script, articulation script ly:dir?
457 voiceOne   = #(context-spec-music (make-voice-props-set 0)  'Voice)
458 voiceTwo   = #(context-spec-music (make-voice-props-set 1)  'Voice)
459 voiceThree = #(context-spec-music (make-voice-props-set 2)  'Voice)
460 voiceFour  = #(context-spec-music (make-voice-props-set 3)  'Voice)
461 oneVoice   = #(context-spec-music (make-voice-props-revert) 'Voice)
462
463
464 %% voice styles
465
466 voiceOneStyle = {
467   \override NoteHead #'style = #'diamond
468   \override NoteHead #'color = #red
469   \override Stem #'color = #red
470   \override Beam #'color = #red
471 }
472 voiceTwoStyle = {
473   \override NoteHead #'style = #'triangle
474   \override NoteHead #'color = #blue
475   \override Stem #'color = #blue
476   \override Beam #'color = #blue
477 }
478 voiceThreeStyle = {
479   \override NoteHead #'style = #'xcircle
480   \override NoteHead #'color = #green
481   \override Stem #'color = #green
482   \override Beam #'color = #green
483 }
484 voiceFourStyle = {
485   \override NoteHead #'style = #'cross
486   \override NoteHead #'color = #magenta
487   \override Stem #'color = #magenta
488   \override Beam #'color = #magenta
489 }
490 voiceNeutralStyle = {
491   \revert NoteHead #'style
492   \revert NoteHead #'color
493   \revert Stem #'color
494   \revert Beam #'color
495 }
496
497
498 %% x notes
499
500 xNotesOn =
501 #(define-music-function (parser location) ()
502    (override-head-style '(TabNoteHead NoteHead) 'cross))
503 xNotesOff =
504 #(define-music-function (parser location) ()
505    (revert-head-style '(TabNoteHead NoteHead)))
506 xNote =
507 #(define-music-function (parser location note) (ly:music?)
508    (style-note-heads '(TabNoteHead NoteHead) 'cross note))
509
510
511 %% dead notes (these need to come after "x notes")
512
513 % Define aliases of cross-head notes for specific purposes
514 deadNotesOn  = \xNotesOn
515 deadNotesOff = \xNotesOff
516 deadNote     = #xNote