]> git.donarmstrong.com Git - lilypond.git/blob - ly/property-init.ly
Adds incipit section to the NR
[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 %% fermata markup
200
201 fermataMarkup =
202 #(make-music 'MultiMeasureTextEvent
203              ;; Set the 'text based on the 'direction
204              'text (make-fermata-markup)
205              'tweaks '((outside-staff-priority . 40)
206                        (outside-staff-padding . 0)))
207
208 %% font sizes
209
210 teeny      = \set fontSize = #-3
211 tiny       = \set fontSize = #-2
212 small      = \set fontSize = #-1
213 normalsize = \set fontSize = #0
214 large      = \set fontSize = #1
215 huge       = \set fontSize = #2
216
217
218 %% glissando
219
220 glissando = #(make-music 'GlissandoEvent)
221
222
223 %% harmonics
224
225 harmonicsOn =
226 #(define-music-function (parser location) ()
227    (_i "Set the default note head style to a diamond-shaped style.")
228    (override-head-style '(NoteHead TabNoteHead) 'harmonic))
229 harmonicsOff = \defaultNoteHeads
230 harmonicNote =
231 #(define-music-function (parser location note) (ly:music?)
232    (_i "Print @var{note} with a diamond-shaped note head.")
233    (style-note-heads 'NoteHead 'harmonic note))
234
235
236 %% hideNotes
237
238 hideNotes = {
239   % hide notes, accidentals, etc.
240   \override Dots.transparent = ##t
241   \override NoteHead.transparent = ##t
242   \override NoteHead.no-ledgers = ##t
243   % assume that any Beam inherits transparency from its parent Stem
244   \override Stem.transparent = ##t
245   \override Accidental.transparent = ##t
246   \override Rest.transparent = ##t
247   \override TabNoteHead.transparent = ##t
248 }
249 unHideNotes = {
250   \revert Accidental.transparent
251   \revert Stem.transparent
252   \revert NoteHead.transparent
253   \revert NoteHead.no-ledgers
254   \revert Dots.transparent
255   \revert Rest.transparent
256   \revert TabNoteHead.transparent
257 }
258
259
260 %% improvisation
261
262 improvisationOn = {
263   \set squashedPosition = #0
264   \override NoteHead.style = #'slash
265   \override TabNoteHead.style = #'slash
266   \override Accidental.stencil = ##f
267   \override AccidentalCautionary.stencil = ##f
268 }
269 improvisationOff = {
270   \unset squashedPosition
271   \revert NoteHead.style
272   \revert TabNoteHead.style
273   \revert Accidental.stencil
274   \revert AccidentalCautionary.stencil
275 }
276
277 %% incipit
278
279 incipit =
280 #(define-music-function (parser location incipit-music) (ly:music?)
281   #{
282     \once \override Staff.InstrumentName.stencil =
283       #(lambda (grob)
284         (let* ((instrument-name (ly:grob-property grob 'long-text))
285                (align-x (ly:grob-property grob 'self-alignment-X 0))
286                (align-y (ly:grob-property grob 'self-alignment-Y 0)))
287         (set! (ly:grob-property grob 'long-text)
288           #{ \markup {
289             \score
290             {
291               \new MensuralStaff \with {
292                 \override InstrumentName.self-alignment-X = #align-x
293                 \override InstrumentName.self-alignment-Y = #align-y
294                 instrumentName = #instrument-name
295               }
296               {
297                 $incipit-music
298               }
299               \layout {
300                 $(ly:grob-layout grob)
301                 indent-incipit-default = 15\mm
302                 line-width = #(primitive-eval
303                   '(or (false-if-exception indent)
304                     indent-incipit-default))
305                 indent = #(primitive-eval
306                            '(or (false-if-exception (- line-width incipit-width))
307                             (* 0.5 line-width)))
308                 ragged-right = ##f
309                 ragged-last = ##f
310                 system-count = 1
311                 \context {
312                   \Score
313                   \remove "Default_bar_line_engraver"
314                 }
315               }
316             }
317             }
318           #})
319           (set! (ly:grob-property grob 'self-alignment-Y) #f)
320           (set! (ly:grob-property grob 'self-alignment-X) RIGHT)
321           (system-start-text::print grob)))
322   #}
323 )
324
325 %% kievan
326 kievanOn = {
327  \override NoteHead.style = #'kievan
328  \override Stem.X-offset = #stem::kievan-offset-callback
329  \override Stem.stencil = ##f
330  \override Flag.stencil = ##f
331  \override Rest.style = #'mensural
332  \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
333  \override Dots.style = #'kievan
334  \override Slur.stencil = ##f
335  \override Stem.length = #0.0
336  \override Beam.positions = #beam::get-kievan-positions
337  \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
338  \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
339 }
340 kievanOff = {
341  \revert NoteHead.style
342  \revert Stem.X-offset
343  \revert Stem.stencil
344  \revert Rest.style
345  \revert Accidental.glyph-name-alist
346  \revert Dots.style
347  \revert Slur.stencil
348  \revert Flag.stencil
349  \revert Stem.length
350  \revert Beam.positions
351  \revert Beam.quantized-positions
352  \revert NoteHead.duration-log
353 }
354
355 %% merging
356
357 mergeDifferentlyDottedOn =
358   \override Staff.NoteCollision.merge-differently-dotted = ##t
359 mergeDifferentlyDottedOff =
360   \revert Staff.NoteCollision.merge-differently-dotted
361 mergeDifferentlyHeadedOn =
362   \override Staff.NoteCollision.merge-differently-headed = ##t
363 mergeDifferentlyHeadedOff =
364   \revert Staff.NoteCollision.merge-differently-headed
365
366
367 %% numeric time signature
368
369 numericTimeSignature = \override Staff.TimeSignature.style = #'numbered
370 defaultTimeSignature = \revert Staff.TimeSignature.style
371
372
373 %% palm mutes
374
375 palmMuteOn =
376 #(define-music-function (parser location) ()
377    (_i "Set the default note head style to a triangle-shaped style.")
378    (override-head-style 'NoteHead 'do))
379 palmMuteOff = \defaultNoteHeads
380 palmMute =
381 #(define-music-function (parser location note) (ly:music?)
382    (_i "Print @var{note} with a triangle-shaped note head.")
383    (style-note-heads 'NoteHead 'do note))
384
385
386 %% phrasing slurs
387
388 % directions
389 phrasingSlurUp      = \override PhrasingSlur.direction = #UP
390 phrasingSlurDown    = \override PhrasingSlur.direction = #DOWN
391 phrasingSlurNeutral = \revert PhrasingSlur.direction
392
393 % dash-patterns (make-simple-dash-definition defined at top of file)
394 phrasingSlurDashPattern =
395 #(define-music-function (parser location dash-fraction dash-period)
396    (number? number?)
397    (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of
398 line to space repeated at @var{dash-period} interval for phrasing slurs.")
399   #{
400      \override PhrasingSlur.dash-definition =
401        $(make-simple-dash-definition dash-fraction dash-period)
402   #})
403 phrasingSlurDashed =
404   \override PhrasingSlur.dash-definition = #'((0 1 0.4 0.75))
405 phrasingSlurDotted =
406   \override PhrasingSlur.dash-definition = #'((0 1 0.1 0.75))
407 phrasingSlurHalfDashed =
408   \override PhrasingSlur.dash-definition = #'((0 0.5 0.4 0.75)
409                                                 (0.5 1 1 1))
410 phrasingSlurHalfSolid =
411   \override PhrasingSlur.dash-definition = #'((0 0.5 1 1)
412                                                 (0.5 1 0.4 0.75))
413 phrasingSlurSolid =
414   \revert PhrasingSlur.dash-definition
415
416
417 %% point and click
418
419 pointAndClickOn  =
420 #(define-void-function (parser location) ()
421    (_i "Enable generation of code in final-format (e.g. pdf) files to reference the
422 originating lilypond source statement;
423 this is helpful when developing a score but generates bigger final-format files.")
424    (ly:set-option 'point-and-click #t))
425
426 pointAndClickOff =
427 #(define-void-function (parser location) ()
428    (_i "Suppress generating extra code in final-format (e.g. pdf) files to point
429 back to the lilypond source statement.")
430    (ly:set-option 'point-and-click #f))
431
432 pointAndClickTypes =
433 #(define-void-function (parser location types) (symbol-list-or-symbol?)
434   (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.")
435   (ly:set-option 'point-and-click types))
436
437 %% predefined fretboards
438
439 predefinedFretboardsOff =
440   \set predefinedDiagramTable = ##f
441 predefinedFretboardsOn =
442   \set predefinedDiagramTable = #default-fret-table
443
444
445 %% shape note heads
446
447 aikenHeads      = \set shapeNoteStyles = ##(do re miMirror fa sol la ti)
448 aikenHeadsMinor = \set shapeNoteStyles = ##(la ti do re miMirror fa sol)
449 funkHeads =
450   \set shapeNoteStyles = ##(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk)
451 funkHeadsMinor =
452   \set shapeNoteStyles = ##(laFunk tiFunk doFunk reFunk miFunk faFunk solFunk)
453 sacredHarpHeads = \set shapeNoteStyles = ##(fa sol la fa sol la mi)
454 sacredHarpHeadsMinor = \set shapeNoteStyles = ##(la mi fa sol la fa sol)
455 southernHarmonyHeads =
456   \set shapeNoteStyles = ##(faThin sol laThin faThin sol laThin miThin)
457 southernHarmonyHeadsMinor =
458   \set shapeNoteStyles = ##(laThin miThin faThin sol laThin faThin sol)
459 walkerHeads =
460   \set shapeNoteStyles = ##(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker)
461 walkerHeadsMinor =
462   \set shapeNoteStyles = ##(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk)
463
464
465 %% shifts
466
467 shiftOn   = \override NoteColumn.horizontal-shift = #1
468 shiftOnn  = \override NoteColumn.horizontal-shift = #2
469 shiftOnnn = \override NoteColumn.horizontal-shift = #3
470 shiftOff  = \revert NoteColumn.horizontal-shift
471
472
473 %% slurs
474
475 % directions
476 slurUp         = \override Slur.direction = #UP
477 slurDown       = \override Slur.direction = #DOWN
478 slurNeutral    = \revert Slur.direction
479
480 % dash-patterns (make-simple-dash-definition defined at top of file)
481 slurDashPattern =
482 #(define-music-function (parser location dash-fraction dash-period)
483   (number? number?)
484   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
485 ratio of line to space repeated at @var{dash-period} interval for slurs.")
486   #{
487      \override Slur.dash-definition =
488        $(make-simple-dash-definition dash-fraction dash-period)
489   #})
490 slurDashed     = \override Slur.dash-definition = #'((0 1 0.4 0.75))
491 slurDotted     = \override Slur.dash-definition = #'((0 1 0.1 0.75))
492 slurHalfDashed = \override Slur.dash-definition = #'((0 0.5 0.4 0.75)
493                                                        (0.5 1 1 1))
494 slurHalfSolid  = \override Slur.dash-definition = #'((0 0.5 1 1)
495                                                        (0.5 1 0.4 0.75))
496 slurSolid      = \revert Slur.dash-definition
497
498
499 %% staff switches
500
501 showStaffSwitch = \set followVoice = ##t
502 hideStaffSwitch = \set followVoice = ##f
503
504
505 %% stems
506
507 stemUp      = \override Stem.direction = #UP
508 stemDown    = \override Stem.direction = #DOWN
509 stemNeutral = \revert Stem.direction
510
511
512 %% tablature
513
514 % switch to full notation
515 tabFullNotation = {
516   % time signature
517   \revert TabStaff.TimeSignature.stencil
518   % stems (the half note gets a double stem)
519   \revert TabStaff.Stem.length
520   \revert TabStaff.Stem.no-stem-extend
521   \revert TabStaff.Flag.style
522   \revert TabStaff.Stem.details
523   \revert TabStaff.Stem.stencil
524   \revert TabStaff.Flag.stencil
525   \override TabStaff.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes
526   \override TabStaff.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes
527   \set TabStaff.autoBeaming = ##t
528   \revert TabStaff.NoteColumn.ignore-collision
529   % beams, dots
530   \revert TabStaff.Beam.stencil
531   \revert TabStaff.StemTremolo.stencil
532   \revert TabStaff.Dots.stencil
533   \revert TabStaff.Tie.stencil
534   \revert TabStaff.Tie.after-line-breaking
535   \revert TabStaff.RepeatTie.stencil
536   \revert TabStaff.RepeatTie.after-line-breaking
537   \revert TabStaff.LaissezVibrerTie.stencil
538   \revert TabStaff.Slur.stencil
539   \revert TabStaff.PhrasingSlur.stencil
540   % tuplet stuff
541   \revert TabStaff.TupletBracket.stencil
542   \revert TabStaff.TupletNumber.stencil
543   % dynamic signs
544   \revert TabStaff.DynamicText.stencil
545   \revert TabStaff.DynamicTextSpanner.stencil
546   \revert TabStaff.DynamicTextSpanner.stencil
547   \revert TabStaff.Hairpin.stencil
548   % rests
549   \revert TabStaff.Rest.stencil
550   \revert TabStaff.MultiMeasureRest.stencil
551   \revert TabStaff.MultiMeasureRestNumber.stencil
552   \revert TabStaff.MultiMeasureRestText.stencil
553   % markups etc.
554   \revert TabStaff.Glissando.stencil
555   \revert TabStaff.Script.stencil
556   \revert TabStaff.TextScript.stencil
557   \revert TabStaff.TextSpanner.stencil
558   \revert TabStaff.Arpeggio.stencil
559   \revert TabStaff.NoteColumn.ignore-collision
560 }
561
562 %tie/repeat tie behaviour
563 hideSplitTiedTabNotes = {
564   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #all-invisible
565   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##f
566   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##f
567   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##f
568 }
569
570 showSplitTiedTabNotes = {
571   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #begin-of-line-visible
572   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##t
573   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##t
574   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##t
575 }
576
577 %% text length
578
579 textLengthOn = {
580   % 0.4 staff-space between adjacent texts
581   \override TextScript.extra-spacing-width = #'(-0.0 . 0.4)
582   \override TextScript.extra-spacing-height = #'(-inf.0 . +inf.0)
583 }
584
585 textLengthOff = {
586   \override TextScript.extra-spacing-width = #'(+inf.0 . -inf.0)
587   \override TextScript.extra-spacing-height = #'(0 . 0)
588 }
589
590 markLengthOn = {
591   \override Score.MetronomeMark.extra-spacing-width = #'(0 . 1.0)
592   \override Score.RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
593   % Raise as much as four staff-spaces before pushing notecolumns right
594   \override Score.MetronomeMark.extra-spacing-height = #'(4 . 4)
595   \override Score.RehearsalMark.extra-spacing-height = #'(4 . 4)
596 }
597
598 markLengthOff = {
599   \override Score.MetronomeMark.extra-spacing-width = #'(+inf.0 . -inf.0)
600   \override Score.RehearsalMark.extra-spacing-width = #'(+inf.0 . -inf.0)
601   \revert Score.MetronomeMark.extra-spacing-height
602   \revert Score.RehearsalMark.extra-spacing-height
603 }
604
605 %% text spanners
606
607 textSpannerUp      = \override TextSpanner.direction = #UP
608 textSpannerDown    = \override TextSpanner.direction = #DOWN
609 textSpannerNeutral = \revert TextSpanner.direction
610
611
612 %% ties
613
614 % directions
615 tieUp      = \override Tie.direction = #UP
616 tieDown    = \override Tie.direction = #DOWN
617 tieNeutral = \revert Tie.direction
618
619 % dash-patterns (make-simple-dash-definition defined at top of file)
620 tieDashPattern =
621 #(define-music-function (parser location dash-fraction dash-period)
622   (number? number?)
623   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
624 ratio of line to space repeated at @var{dash-period} interval for ties.")
625   #{
626      \override Tie.dash-definition =
627        $(make-simple-dash-definition dash-fraction dash-period)
628   #})
629 tieDashed     = \override Tie.dash-definition = #'((0 1 0.4 0.75))
630 tieDotted     = \override Tie.dash-definition = #'((0 1 0.1 0.75))
631 tieHalfDashed = \override Tie.dash-definition = #'((0 0.5 0.4 0.75)
632                                                      (0.5 1 1 1))
633 tieHalfSolid  = \override Tie.dash-definition = #'((0 0.5 1 1)
634                                                      (0.5 1 0.4 0.75))
635 tieSolid      = \revert Tie.dash-definition
636
637
638 %% tuplets
639
640 tupletUp      = \override TupletBracket.direction = #UP
641 tupletDown    = \override TupletBracket.direction = #DOWN
642 tupletNeutral = \revert TupletBracket.direction
643
644
645 %% voice properties
646
647 % dynamic ly:dir?  text script, articulation script ly:dir?
648 voiceOne   = #(context-spec-music (make-voice-props-set 0)  'Voice)
649 voiceTwo   = #(context-spec-music (make-voice-props-set 1)  'Voice)
650 voiceThree = #(context-spec-music (make-voice-props-set 2)  'Voice)
651 voiceFour  = #(context-spec-music (make-voice-props-set 3)  'Voice)
652 oneVoice   = #(context-spec-music (make-voice-props-revert) 'Voice)
653
654
655 %% voice styles
656
657 voiceOneStyle = {
658   \override NoteHead.style = #'diamond
659   \override NoteHead.color = #red
660   \override Stem.color = #red
661   \override Beam.color = #red
662 }
663 voiceTwoStyle = {
664   \override NoteHead.style = #'triangle
665   \override NoteHead.color = #blue
666   \override Stem.color = #blue
667   \override Beam.color = #blue
668 }
669 voiceThreeStyle = {
670   \override NoteHead.style = #'xcircle
671   \override NoteHead.color = #green
672   \override Stem.color = #green
673   \override Beam.color = #green
674 }
675 voiceFourStyle = {
676   \override NoteHead.style = #'cross
677   \override NoteHead.color = #magenta
678   \override Stem.color = #magenta
679   \override Beam.color = #magenta
680 }
681 voiceNeutralStyle = {
682   \revert NoteHead.style
683   \revert NoteHead.color
684   \revert Stem.color
685   \revert Beam.color
686 }
687
688
689 %% volta brackets
690
691 allowVoltaHook =
692 #(define-void-function (parser location bar) (string?)
693                        (allow-volta-hook bar))
694
695 %% x notes
696
697 xNotesOn =
698 #(define-music-function (parser location) ()
699    (_i "Set the default note head style to a cross-shaped style.")
700    (override-head-style '(TabNoteHead NoteHead) 'cross))
701 xNotesOff = \defaultNoteHeads
702 xNote =
703 #(define-music-function (parser location note) (ly:music?)
704    (_i "Print @var{note} with a cross-shaped note head.")
705    (style-note-heads '(TabNoteHead NoteHead) 'cross note))
706
707
708 %% dead notes (these need to come after "x notes")
709
710 % Define aliases of cross-head notes for specific purposes
711 deadNotesOn  = \xNotesOn
712 deadNotesOff = \xNotesOff
713 deadNote     = #xNote