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