]> git.donarmstrong.com Git - lilypond.git/blob - ly/property-init.ly
Merge remote branch 'origin/master' into release/unstable
[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 %% string numbers
513
514 romanStringNumbers  = {
515   \override StringNumber.number-type = #'roman-upper
516   \override StringNumber.stencil = #ly:text-interface::print
517   \override StringNumber.font-encoding = #'latin1
518   \override StringNumber.font-shape = #'italic
519 }
520 arabicStringNumbers = {
521   \revert StringNumber.number-type
522   \revert StringNumber.stencil
523   \revert StringNumber.font-encoding
524   \revert StringNumber.font-shape
525 }
526
527
528 %% tablature
529
530 % switch to full notation
531 tabFullNotation = {
532   % time signature
533   \revert TabStaff.TimeSignature.stencil
534   % stems (the half note gets a double stem)
535   \revert TabStaff.Stem.length
536   \revert TabStaff.Stem.no-stem-extend
537   \revert TabStaff.Flag.style
538   \revert TabStaff.Stem.details
539   \revert TabStaff.Stem.stencil
540   \revert TabStaff.Flag.stencil
541   \override TabStaff.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes
542   \override TabStaff.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes
543   \set TabStaff.autoBeaming = ##t
544   \revert TabStaff.NoteColumn.ignore-collision
545   % beams, dots
546   \revert TabStaff.Beam.stencil
547   \revert TabStaff.StemTremolo.stencil
548   \revert TabStaff.Dots.stencil
549   \revert TabStaff.Tie.stencil
550   \revert TabStaff.Tie.after-line-breaking
551   \revert TabStaff.RepeatTie.stencil
552   \revert TabStaff.RepeatTie.after-line-breaking
553   \revert TabStaff.LaissezVibrerTie.stencil
554   \revert TabStaff.Slur.stencil
555   \revert TabStaff.PhrasingSlur.stencil
556   % tuplet stuff
557   \revert TabStaff.TupletBracket.stencil
558   \revert TabStaff.TupletNumber.stencil
559   % dynamic signs
560   \revert TabStaff.DynamicText.stencil
561   \revert TabStaff.DynamicTextSpanner.stencil
562   \revert TabStaff.DynamicTextSpanner.stencil
563   \revert TabStaff.Hairpin.stencil
564   % rests
565   \revert TabStaff.Rest.stencil
566   \revert TabStaff.MultiMeasureRest.stencil
567   \revert TabStaff.MultiMeasureRestNumber.stencil
568   \revert TabStaff.MultiMeasureRestText.stencil
569   % markups etc.
570   \revert TabStaff.Glissando.stencil
571   \revert TabStaff.Script.stencil
572   \revert TabStaff.TextScript.stencil
573   \revert TabStaff.TextSpanner.stencil
574   \revert TabStaff.Arpeggio.stencil
575   \revert TabStaff.NoteColumn.ignore-collision
576 }
577
578 %tie/repeat tie behaviour
579 hideSplitTiedTabNotes = {
580   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #all-invisible
581   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##f
582   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##f
583   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##f
584 }
585
586 showSplitTiedTabNotes = {
587   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #begin-of-line-visible
588   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##t
589   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##t
590   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##t
591 }
592
593 %% text length
594
595 textLengthOn = {
596   % 0.4 staff-space between adjacent texts
597   \override TextScript.extra-spacing-width = #'(-0.0 . 0.4)
598   \override TextScript.extra-spacing-height = #'(-inf.0 . +inf.0)
599 }
600
601 textLengthOff = {
602   \override TextScript.extra-spacing-width = #'(+inf.0 . -inf.0)
603   \override TextScript.extra-spacing-height = #'(0 . 0)
604 }
605
606 markLengthOn = {
607   \override Score.MetronomeMark.extra-spacing-width = #'(0 . 1.0)
608   \override Score.RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
609   % Raise as much as four staff-spaces before pushing notecolumns right
610   \override Score.MetronomeMark.extra-spacing-height = #'(4 . 4)
611   \override Score.RehearsalMark.extra-spacing-height = #'(4 . 4)
612 }
613
614 markLengthOff = {
615   \override Score.MetronomeMark.extra-spacing-width = #'(+inf.0 . -inf.0)
616   \override Score.RehearsalMark.extra-spacing-width = #'(+inf.0 . -inf.0)
617   \revert Score.MetronomeMark.extra-spacing-height
618   \revert Score.RehearsalMark.extra-spacing-height
619 }
620
621 %% text spanners
622
623 textSpannerUp      = \override TextSpanner.direction = #UP
624 textSpannerDown    = \override TextSpanner.direction = #DOWN
625 textSpannerNeutral = \revert TextSpanner.direction
626
627
628 %% ties
629
630 % directions
631 tieUp      = \override Tie.direction = #UP
632 tieDown    = \override Tie.direction = #DOWN
633 tieNeutral = \revert Tie.direction
634
635 % dash-patterns (make-simple-dash-definition defined at top of file)
636 tieDashPattern =
637 #(define-music-function (parser location dash-fraction dash-period)
638   (number? number?)
639   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
640 ratio of line to space repeated at @var{dash-period} interval for ties.")
641   #{
642      \override Tie.dash-definition =
643        $(make-simple-dash-definition dash-fraction dash-period)
644   #})
645 tieDashed     = \override Tie.dash-definition = #'((0 1 0.4 0.75))
646 tieDotted     = \override Tie.dash-definition = #'((0 1 0.1 0.75))
647 tieHalfDashed = \override Tie.dash-definition = #'((0 0.5 0.4 0.75)
648                                                      (0.5 1 1 1))
649 tieHalfSolid  = \override Tie.dash-definition = #'((0 0.5 1 1)
650                                                      (0.5 1 0.4 0.75))
651 tieSolid      = \revert Tie.dash-definition
652
653
654 %% tuplets
655
656 tupletUp      = \override TupletBracket.direction = #UP
657 tupletDown    = \override TupletBracket.direction = #DOWN
658 tupletNeutral = \revert TupletBracket.direction
659
660
661 %% voice properties
662
663 % dynamic ly:dir?  text script, articulation script ly:dir?
664 voiceOne   = #(context-spec-music (make-voice-props-set 0)  'Voice)
665 voiceTwo   = #(context-spec-music (make-voice-props-set 1)  'Voice)
666 voiceThree = #(context-spec-music (make-voice-props-set 2)  'Voice)
667 voiceFour  = #(context-spec-music (make-voice-props-set 3)  'Voice)
668 oneVoice   = #(context-spec-music (make-voice-props-revert) 'Voice)
669
670
671 %% voice styles
672
673 voiceOneStyle = {
674   \override NoteHead.style = #'diamond
675   \override NoteHead.color = #red
676   \override Stem.color = #red
677   \override Beam.color = #red
678 }
679 voiceTwoStyle = {
680   \override NoteHead.style = #'triangle
681   \override NoteHead.color = #blue
682   \override Stem.color = #blue
683   \override Beam.color = #blue
684 }
685 voiceThreeStyle = {
686   \override NoteHead.style = #'xcircle
687   \override NoteHead.color = #green
688   \override Stem.color = #green
689   \override Beam.color = #green
690 }
691 voiceFourStyle = {
692   \override NoteHead.style = #'cross
693   \override NoteHead.color = #magenta
694   \override Stem.color = #magenta
695   \override Beam.color = #magenta
696 }
697 voiceNeutralStyle = {
698   \revert NoteHead.style
699   \revert NoteHead.color
700   \revert Stem.color
701   \revert Beam.color
702 }
703
704
705 %% volta brackets
706
707 allowVoltaHook =
708 #(define-void-function (parser location bar) (string?)
709                        (allow-volta-hook bar))
710
711 %% x notes
712
713 xNotesOn =
714 #(define-music-function (parser location) ()
715    (_i "Set the default note head style to a cross-shaped style.")
716    (override-head-style '(TabNoteHead NoteHead) 'cross))
717 xNotesOff = \defaultNoteHeads
718 xNote =
719 #(define-music-function (parser location note) (ly:music?)
720    (_i "Print @var{note} with a cross-shaped note head.")
721    (style-note-heads '(TabNoteHead NoteHead) 'cross note))
722
723
724 %% dead notes (these need to come after "x notes")
725
726 % Define aliases of cross-head notes for specific purposes
727 deadNotesOn  = \xNotesOn
728 deadNotesOff = \xNotesOff
729 deadNote     = #xNote