]> git.donarmstrong.com Git - lilypond.git/blob - ly/property-init.ly
37a68917e724a1b121ea44c8c205cff4ebc3609e
[lilypond.git] / ly / property-init.ly
1 % property-init.ly
2
3 \version "2.15.10"
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 %% common definition for all note head styles reverting
10 %% (palm mute, harmonics, dead notes, ...)
11 defaultNoteHeads =
12 #(define-music-function (parser location) ()
13    (_i "Revert to the default note head style.")
14    (revert-head-style '(NoteHead TabNoteHead)))
15
16
17 accidentalStyle =
18 #(define-music-function
19    (parser location context style) ((symbol?) string?)
20    (_i "Set accidental style to @var{style}, a string.  If an optional
21 @var{context} symbol is given, e.g. @code{#'Staff} or @code{#'Voice},
22 the settings are applied to that context.  Otherwise, the context
23 defaults to @samp{Staff}, except for piano styles, which use
24 @samp{GrandStaff} as a context." )
25    (if context
26        (set-accidental-style (string->symbol style) context)
27        (set-accidental-style (string->symbol style))))
28
29 %% arpeggios
30
31 % For drawing vertical chord brackets with \arpeggio
32 % This is a shorthand for the value of the print-function property
33 % of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether
34 % cross-staff brackets are desired.
35
36 arpeggio = #(make-music 'ArpeggioEvent)
37 arpeggioArrowUp = {
38   \revert Arpeggio  #'stencil
39   \revert Arpeggio #'X-extent
40   \override Arpeggio  #'arpeggio-direction = #UP
41 }
42 arpeggioArrowDown = {
43   \revert Arpeggio #'stencil
44   \revert Arpeggio #'X-extent
45   \override Arpeggio  #'arpeggio-direction = #DOWN
46 }
47 arpeggioNormal = {
48   \revert Arpeggio #'stencil
49   \revert Arpeggio #'X-extent
50   \revert Arpeggio #'arpeggio-direction
51   \revert Arpeggio #'dash-definition
52 }
53 arpeggioBracket = {
54   \revert Arpeggio #'X-extent
55   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket
56 }
57 arpeggioParenthesis = {
58   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
59   \override Arpeggio #'X-extent = #ly:grob::stencil-width
60   \revert Arpeggio #'dash-definition
61 }
62 arpeggioParenthesisDashed = {
63   \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur
64   \override Arpeggio #'X-extent = #ly:grob::stencil-width
65   \override Arpeggio #'dash-definition = #'((0 1 0.4 0.75))
66 }
67
68
69 %% auto beaming
70
71 autoBeamOn  = \set autoBeaming = ##t
72 autoBeamOff = \set autoBeaming = ##f
73
74
75 %% balloon length
76
77 balloonLengthOn = {
78   \override BalloonTextItem #'extra-spacing-width = #'(0 . 0)
79   \override BalloonTextItem #'extra-spacing-height = #'(-inf.0 . +inf.0)
80 }
81 balloonLengthOff = {
82   \override BalloonTextItem #'extra-spacing-width = #'(+inf.0 . -inf.0)
83   \override BalloonTextItem #'extra-spacing-height = #'(0 . 0)
84 }
85
86
87 %% bass figures
88
89 bassFigureExtendersOn = {
90   \set useBassFigureExtenders = ##t
91   \set Staff.useBassFigureExtenders = ##t
92 }
93 bassFigureExtendersOff = {
94   \set useBassFigureExtenders = ##f
95   \set Staff.useBassFigureExtenders = ##f
96 }
97 bassFigureStaffAlignmentDown =
98   \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN
99 bassFigureStaffAlignmentUp =
100   \override Staff.BassFigureAlignmentPositioning #'direction = #UP
101 bassFigureStaffAlignmentNeutral =
102   \revert Staff.BassFigureAlignmentPositioning #'direction
103
104
105 %% cadenzas
106
107 cadenzaOn  = {
108   \set Timing.timing = ##f
109   \set Timing.autoBeaming = ##f
110 }
111
112 cadenzaOff = {
113   \set Timing.timing = ##t
114   \set Timing.measurePosition = #ZERO-MOMENT
115   \set Timing.autoBeaming = ##t
116 }
117
118
119 %% chord names
120
121 frenchChords = {
122   \set chordRootNamer = #(chord-name->italian-markup #t)
123   \set chordPrefixSpacer = #0.4
124 }
125 germanChords = {
126   \set chordRootNamer = #(chord-name->german-markup #t)
127   \set chordNoteNamer = #note-name->german-markup
128 }
129 semiGermanChords = {
130   \set chordRootNamer = #(chord-name->german-markup #f)
131   \set chordNoteNamer = #note-name->german-markup
132 }
133 italianChords = {
134   \set chordRootNamer = #(chord-name->italian-markup #f)
135   \set chordPrefixSpacer = #0.4
136 }
137 powerChords = {
138   \set chordNameExceptions = #powerChordExceptions
139 }
140
141
142 %% compressFullBarRests
143
144 compressFullBarRests = \set Score.skipBars = ##t
145 expandFullBarRests   = \set Score.skipBars = ##f
146
147
148 %% dots
149
150 dotsUp      = \override Dots #'direction = #UP
151 dotsDown    = \override Dots #'direction = #DOWN
152 dotsNeutral = \revert Dots #'direction
153
154
155 %% dynamics
156
157 dynamicUp = {
158   \override DynamicText #'direction = #UP
159   \override DynamicLineSpanner #'direction = #UP
160 }
161 dynamicDown = {
162   \override DynamicText #'direction = #DOWN
163   \override DynamicLineSpanner #'direction = #DOWN
164 }
165 dynamicNeutral = {
166   \revert DynamicText #'direction
167   \revert DynamicLineSpanner #'direction
168 }
169
170
171 %% easy heads
172
173 easyHeadsOn = {
174   \override NoteHead #'stencil = #note-head::brew-ez-stencil
175   \override NoteHead #'font-size = #-8
176   \override NoteHead #'font-family = #'sans
177   \override NoteHead #'font-series = #'bold
178 }
179 easyHeadsOff = {
180   \revert NoteHead #'stencil
181   \revert NoteHead #'font-size
182   \revert NoteHead #'font-family
183   \revert NoteHead #'font-series
184 }
185
186
187 %% endincipit
188
189 %% End the incipit and print a ``normal line start''.
190 endincipit = \context Staff {
191   \partial 16 s16  % Hack to handle e.g. \bar ".|" \endincipit
192   \once \override Staff.Clef #'full-size-change = ##t
193   \once \override Staff.Clef #'non-default = ##t
194   \bar ""
195 }
196
197
198 %% fermata markup
199
200 fermataMarkup =
201 #(make-music 'MultiMeasureTextEvent
202              'tweaks (list
203                       ;; Set the 'text based on the 'direction
204                       (cons 'text (lambda (grob)
205                                     (if (eq? (ly:grob-property grob 'direction) DOWN)
206                                         (markup #:musicglyph "scripts.dfermata")
207                                         (markup #:musicglyph "scripts.ufermata"))))
208                       (cons 'outside-staff-priority 40)
209                       (cons 'outside-staff-padding 0)))
210
211 %% font sizes
212
213 teeny      = \set fontSize = #-3
214 tiny       = \set fontSize = #-2
215 small      = \set fontSize = #-1
216 normalsize = \set fontSize = #0
217 large      = \set fontSize = #1
218 huge       = \set fontSize = #2
219
220
221 %% glissando
222
223 glissando = #(make-music 'GlissandoEvent)
224
225
226 %% harmonics
227
228 harmonicsOn =
229 #(define-music-function (parser location) ()
230    (_i "Set the default note head style to a diamond-shaped style.")
231    (override-head-style '(NoteHead TabNoteHead) 'harmonic))
232 harmonicsOff = \defaultNoteHeads
233 harmonicNote =
234 #(define-music-function (parser location note) (ly:music?)
235    (_i "Print @var{note} with a diamond-shaped note head.")
236    (style-note-heads 'NoteHead 'harmonic note))
237
238
239 %% hideNotes
240
241 hideNotes = {
242   % hide notes, accidentals, etc.
243   \override Dots #'transparent = ##t
244   \override NoteHead #'transparent = ##t
245   \override NoteHead #'no-ledgers = ##t
246   \override Stem #'transparent = ##t
247   \override Flag #'transparent = ##t
248   \override Beam #'transparent = ##t
249   \override Accidental #'transparent = ##t
250 }
251 unHideNotes = {
252   \revert Accidental #'transparent
253   \revert Beam #'transparent
254   \revert Stem #'transparent
255   \revert Flag #'transparent
256   \revert NoteHead #'transparent
257   \revert NoteHead #'no-ledgers
258   \revert Dots #'transparent
259 }
260
261
262 %% improvisation
263
264 improvisationOn = {
265   \set squashedPosition = #0
266   \override NoteHead #'style = #'slash
267   \override Accidental #'stencil = ##f
268   \override AccidentalCautionary #'stencil = ##f
269 }
270 improvisationOff = {
271   \unset squashedPosition
272   \revert NoteHead #'style
273   \revert Accidental #'stencil
274   \revert AccidentalCautionary #'stencil
275 }
276
277
278 %% merging
279
280 mergeDifferentlyDottedOn =
281   \override Staff.NoteCollision #'merge-differently-dotted = ##t
282 mergeDifferentlyDottedOff =
283   \revert Staff.NoteCollision #'merge-differently-dotted
284 mergeDifferentlyHeadedOn =
285   \override Staff.NoteCollision #'merge-differently-headed = ##t
286 mergeDifferentlyHeadedOff =
287   \revert Staff.NoteCollision #'merge-differently-headed
288
289
290 %% numeric time signature
291
292 numericTimeSignature = \override Staff.TimeSignature #'style = #'numbered
293 defaultTimeSignature = \revert Staff.TimeSignature #'style
294
295
296 %% palm mutes
297
298 palmMuteOn =
299 #(define-music-function (parser location) ()
300    (_i "Set the default note head style to a triangle-shaped style.")
301    (override-head-style 'NoteHead 'do))
302 palmMuteOff = \defaultNoteHeads
303 palmMute =
304 #(define-music-function (parser location note) (ly:music?)
305    (_i "Print @var{note} with a triangle-shaped note head.")
306    (style-note-heads 'NoteHead 'do note))
307
308
309 %% phrasing slurs
310
311 % directions
312 phrasingSlurUp      = \override PhrasingSlur #'direction = #UP
313 phrasingSlurDown    = \override PhrasingSlur #'direction = #DOWN
314 phrasingSlurNeutral = \revert PhrasingSlur #'direction
315
316 % dash-patterns (make-simple-dash-definition defined at top of file)
317 phrasingSlurDashPattern =
318 #(define-music-function (parser location dash-fraction dash-period)
319    (number? number?)
320    (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of
321 line to space repeated at @var{dash-period} interval for phrasing slurs.")
322   #{
323      \override PhrasingSlur #'dash-definition =
324        $(make-simple-dash-definition dash-fraction dash-period)
325   #})
326 phrasingSlurDashed =
327   \override PhrasingSlur #'dash-definition = #'((0 1 0.4 0.75))
328 phrasingSlurDotted =
329   \override PhrasingSlur #'dash-definition = #'((0 1 0.1 0.75))
330 phrasingSlurHalfDashed =
331   \override PhrasingSlur #'dash-definition = #'((0 0.5 0.4 0.75)
332                                                 (0.5 1 1 1))
333 phrasingSlurHalfSolid =
334   \override PhrasingSlur #'dash-definition = #'((0 0.5 1 1)
335                                                 (0.5 1 0.4 0.75))
336 phrasingSlurSolid =
337   \revert PhrasingSlur #'dash-definition
338
339
340 %% point and click
341
342 pointAndClickOn  =
343 #(define-music-function (parser location) ()
344    (_i "Enable generation of code in final-format (e.g. pdf) files to reference the
345 originating lilypond source statement;
346 this is helpful when developing a score but generates bigger final-format files.")
347    (ly:set-option 'point-and-click #t)
348    (make-music 'SequentialMusic 'void #t))
349
350 pointAndClickOff =
351 #(define-music-function (parser location) ()
352    (_i "Suppress generating extra code in final-format (e.g. pdf) files to point
353 back to the lilypond source statement.")
354    (ly:set-option 'point-and-click #f)
355    (make-music 'SequentialMusic 'void #t))
356
357 pointAndClickTypes =
358 #(define-void-function (parser location types) (list-or-symbol?)
359   (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.")
360   (ly:set-option 'point-and-click types))
361
362 %% predefined fretboards
363
364 predefinedFretboardsOff =
365   \set predefinedDiagramTable = ##f
366 predefinedFretboardsOn =
367   \set predefinedDiagramTable = #default-fret-table
368
369
370 %% shape note heads
371
372 aikenHeads      = \set shapeNoteStyles = #'#(do re miMirror fa sol la ti)
373 aikenHeadsMinor = \set shapeNoteStyles = #'#(la ti do re miMirror fa sol)
374 funkHeads =
375   \set shapeNoteStyles = #'#(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk)
376 funkHeadsMinor =
377   \set shapeNoteStyles = #'#(laFunk tiFunk doFunk reFunk miFunk faFunk solFunk)
378 sacredHarpHeads = \set shapeNoteStyles = #'#(fa sol la fa sol la mi)
379 sacredHarpHeadsMinor = \set shapeNoteStyles = #'#(la mi fa sol la fa sol)
380 southernHarmonyHeads =
381   \set shapeNoteStyles = #'#(faThin sol laThin faThin sol laThin miThin)
382 southernHarmonyHeadsMinor =
383   \set shapeNoteStyles = #'#(laThin miThin faThin sol laThin faThin sol)
384 walkerHeads =
385   \set shapeNoteStyles = #'#(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker)
386 walkerHeadsMinor =
387   \set shapeNoteStyles = #'#(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk)
388
389
390 %% shifts
391
392 shiftOn   = \override NoteColumn #'horizontal-shift = #1
393 shiftOnn  = \override NoteColumn #'horizontal-shift = #2
394 shiftOnnn = \override NoteColumn #'horizontal-shift = #3
395 shiftOff  = \revert NoteColumn #'horizontal-shift
396
397
398 %% slurs
399
400 % directions
401 slurUp         = \override Slur #'direction = #UP
402 slurDown       = \override Slur #'direction = #DOWN
403 slurNeutral    = \revert Slur #'direction
404
405 % dash-patterns (make-simple-dash-definition defined at top of file)
406 slurDashPattern =
407 #(define-music-function (parser location dash-fraction dash-period)
408   (number? number?)
409   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
410 ratio of line to space repeated at @var{dash-period} interval for slurs.")
411   #{
412      \override Slur #'dash-definition =
413        $(make-simple-dash-definition dash-fraction dash-period)
414   #})
415 slurDashed     = \override Slur #'dash-definition = #'((0 1 0.4 0.75))
416 slurDotted     = \override Slur #'dash-definition = #'((0 1 0.1 0.75))
417 slurHalfDashed = \override Slur #'dash-definition = #'((0 0.5 0.4 0.75)
418                                                        (0.5 1 1 1))
419 slurHalfSolid  = \override Slur #'dash-definition = #'((0 0.5 1 1)
420                                                        (0.5 1 0.4 0.75))
421 slurSolid      = \revert Slur #'dash-definition
422
423
424 %% staff switches
425
426 showStaffSwitch = \set followVoice = ##t
427 hideStaffSwitch = \set followVoice = ##f
428
429
430 %% stems
431
432 stemUp      = \override Stem #'direction = #UP
433 stemDown    = \override Stem #'direction = #DOWN
434 stemNeutral = \revert Stem #'direction
435
436
437 %% tablature
438
439 % switch to full notation
440 tabFullNotation = {
441   % time signature
442   \revert TabStaff.TimeSignature #'stencil
443   % stems (the half note gets a double stem)
444   \revert TabVoice.Stem #'length
445   \revert TabVoice.Stem #'no-stem-extend
446   \revert TabVoice.Flag #'style
447   \revert TabVoice.Stem #'details
448   \revert TabVoice.Stem #'transparent
449   \revert TabVoice.Flag #'transparent
450   \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes
451   \override TabVoice.Stem #'X-extent = #tabvoice::make-double-stem-width-for-half-notes
452   \set autoBeaming = ##t
453   \revert NoteColumn #'ignore-collision
454   % beams, dots
455   \revert TabVoice.Beam #'stencil
456   \revert TabVoice.StemTremolo #'stencil
457   \revert TabVoice.Dots #'stencil
458   \revert TabVoice.Tie #'stencil
459   \revert TabVoice.Tie #'after-line-breaking
460   \revert TabVoice.RepeatTie #'stencil
461   \revert TabVoice.RepeatTie #'after-line-breaking
462   \revert TabVoice.LaissezVibrerTie #'stencil
463   \revert TabVoice.Slur #'stencil
464   \revert TabVoice.PhrasingSlur #'stencil
465   % tuplet stuff
466   \revert TabVoice.TupletBracket #'stencil
467   \revert TabVoice.TupletNumber #'stencil
468   % dynamic signs
469   \revert TabVoice.DynamicText #'transparent
470   \revert TabVoice.DynamicTextSpanner #'stencil
471   \revert TabVoice.DynamicTextSpanner #'stencil
472   \revert TabVoice.Hairpin #'transparent
473   % rests
474   \revert TabVoice.Rest #'stencil
475   \revert TabVoice.MultiMeasureRest #'stencil
476   \revert TabVoice.MultiMeasureRestNumber #'transparent
477   \revert TabVoice.MultiMeasureRestText #'transparent
478   % markups etc.
479   \revert TabVoice.Glissando #'stencil
480   \revert TabVoice.Script #'stencil
481   \revert TabVoice.TextScript #'stencil
482   \revert TabVoice.TextSpanner #'stencil
483   \revert TabStaff.Arpeggio #'stencil
484   \revert TabStaff.NoteColumn #'ignore-collision
485 }
486
487 %tie/repeat tie behaviour
488 hideSplitTiedTabNotes = {
489   \override TabVoice.TabNoteHead #'(details tied-properties break-visibility) = #all-invisible
490   \override TabVoice.TabNoteHead #'(details tied-properties parenthesize) = ##f
491   \override TabVoice.TabNoteHead #'(details repeat-tied-properties note-head-visible) = ##f
492   \override TabVoice.TabNoteHead #'(details repeat-tied-properties parenthesize) = ##f
493 }
494
495 showSplitTiedTabNotes = {
496   \override TabVoice.TabNoteHead #'(details tied-properties break-visibility) = #begin-of-line-visible
497   \override TabVoice.TabNoteHead #'(details tied-properties parenthesize) = ##t
498   \override TabVoice.TabNoteHead #'(details repeat-tied-properties note-head-visible) = ##t
499   \override TabVoice.TabNoteHead #'(details repeat-tied-properties parenthesize) = ##t
500 }
501
502 %% text length
503
504 textLengthOn = {
505   \override TextScript #'extra-spacing-width = #'(0 . 0)
506   \override TextScript #'extra-spacing-height = #'(-inf.0 . +inf.0)
507 }
508 textLengthOff = {
509   \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0)
510   \override TextScript #'extra-spacing-height = #'(0 . 0)
511 }
512
513
514 %% text spanners
515
516 textSpannerUp      = \override TextSpanner #'direction = #UP
517 textSpannerDown    = \override TextSpanner #'direction = #DOWN
518 textSpannerNeutral = \revert TextSpanner #'direction
519
520
521 %% ties
522
523 % directions
524 tieUp      = \override Tie #'direction = #UP
525 tieDown    = \override Tie #'direction = #DOWN
526 tieNeutral = \revert Tie #'direction
527
528 % dash-patterns (make-simple-dash-definition defined at top of file)
529 tieDashPattern =
530 #(define-music-function (parser location dash-fraction dash-period)
531   (number? number?)
532   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
533 ratio of line to space repeated at @var{dash-period} interval for ties.")
534   #{
535      \override Tie #'dash-definition =
536        $(make-simple-dash-definition dash-fraction dash-period)
537   #})
538 tieDashed     = \override Tie #'dash-definition = #'((0 1 0.4 0.75))
539 tieDotted     = \override Tie #'dash-definition = #'((0 1 0.1 0.75))
540 tieHalfDashed = \override Tie #'dash-definition = #'((0 0.5 0.4 0.75)
541                                                      (0.5 1 1 1))
542 tieHalfSolid  = \override Tie #'dash-definition = #'((0 0.5 1 1)
543                                                      (0.5 1 0.4 0.75))
544 tieSolid      = \revert Tie #'dash-definition
545
546
547 %% tuplets
548
549 tupletUp      = \override TupletBracket #'direction = #UP
550 tupletDown    = \override TupletBracket #'direction = #DOWN
551 tupletNeutral = \revert TupletBracket #'direction
552
553
554 %% voice properties
555
556 % dynamic ly:dir?  text script, articulation script ly:dir?
557 voiceOne   = #(context-spec-music (make-voice-props-set 0)  'Voice)
558 voiceTwo   = #(context-spec-music (make-voice-props-set 1)  'Voice)
559 voiceThree = #(context-spec-music (make-voice-props-set 2)  'Voice)
560 voiceFour  = #(context-spec-music (make-voice-props-set 3)  'Voice)
561 oneVoice   = #(context-spec-music (make-voice-props-revert) 'Voice)
562
563
564 %% voice styles
565
566 voiceOneStyle = {
567   \override NoteHead #'style = #'diamond
568   \override NoteHead #'color = #red
569   \override Stem #'color = #red
570   \override Flag #'color = #red
571   \override Beam #'color = #red
572 }
573 voiceTwoStyle = {
574   \override NoteHead #'style = #'triangle
575   \override NoteHead #'color = #blue
576   \override Stem #'color = #blue
577   \override Flag #'color = #blue
578   \override Beam #'color = #blue
579 }
580 voiceThreeStyle = {
581   \override NoteHead #'style = #'xcircle
582   \override NoteHead #'color = #green
583   \override Stem #'color = #green
584   \override Flag #'color = #green
585   \override Beam #'color = #green
586 }
587 voiceFourStyle = {
588   \override NoteHead #'style = #'cross
589   \override NoteHead #'color = #magenta
590   \override Stem #'color = #magenta
591   \override Flag #'color = #magenta
592   \override Beam #'color = #magenta
593 }
594 voiceNeutralStyle = {
595   \revert NoteHead #'style
596   \revert NoteHead #'color
597   \revert Stem #'color
598   \revert Flag #'color
599   \revert Beam #'color
600 }
601
602
603 %% x notes
604
605 xNotesOn =
606 #(define-music-function (parser location) ()
607    (_i "Set the default note head style to a cross-shaped style.")
608    (override-head-style '(TabNoteHead NoteHead) 'cross))
609 xNotesOff = \defaultNoteHeads
610 xNote =
611 #(define-music-function (parser location note) (ly:music?)
612    (_i "Print @var{note} with a cross-shaped note head.")
613    (style-note-heads '(TabNoteHead NoteHead) 'cross note))
614
615
616 %% dead notes (these need to come after "x notes")
617
618 % Define aliases of cross-head notes for specific purposes
619 deadNotesOn  = \xNotesOn
620 deadNotesOff = \xNotesOff
621 deadNote     = #xNote