]> git.donarmstrong.com Git - lilypond.git/blob - ly/property-init.ly
Merge branch 'master' into translation
[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 %% line and page breaking controls
356
357 autoLineBreaksOff = {
358   \overrideProperty Score.NonMusicalPaperColumn.line-break-permission ##f
359   \override Score.NonMusicalPaperColumn.line-break-permission = ##f
360 }
361 autoLineBreaksOn = {
362   \overrideProperty Score.NonMusicalPaperColumn.line-break-permission #'allow
363   \override Score.NonMusicalPaperColumn.line-break-permission = #'allow
364 }
365 autoPageBreaksOff =
366   \override Score.NonMusicalPaperColumn.page-break-permission = ##f
367 autoPageBreaksOn =
368   \override Score.NonMusicalPaperColumn.page-break-permission = #'allow
369 autoBreaksOff = { \autoLineBreaksOff \autoPageBreaksOff }
370 autoBreaksOn = { \autoLineBreaksOn \autoPageBreaksOn }
371
372
373 %% merging
374
375 mergeDifferentlyDottedOn =
376   \override Staff.NoteCollision.merge-differently-dotted = ##t
377 mergeDifferentlyDottedOff =
378   \revert Staff.NoteCollision.merge-differently-dotted
379 mergeDifferentlyHeadedOn =
380   \override Staff.NoteCollision.merge-differently-headed = ##t
381 mergeDifferentlyHeadedOff =
382   \revert Staff.NoteCollision.merge-differently-headed
383
384
385 %% numeric time signature
386
387 numericTimeSignature = \override Staff.TimeSignature.style = #'numbered
388 defaultTimeSignature = \revert Staff.TimeSignature.style
389
390
391 %% palm mutes
392
393 palmMuteOn =
394 #(define-music-function (parser location) ()
395    (_i "Set the default note head style to a triangle-shaped style.")
396    (override-head-style 'NoteHead 'do))
397 palmMuteOff = \defaultNoteHeads
398 palmMute =
399 #(define-music-function (parser location note) (ly:music?)
400    (_i "Print @var{note} with a triangle-shaped note head.")
401    (style-note-heads 'NoteHead 'do note))
402
403
404 %% phrasing slurs
405
406 % directions
407 phrasingSlurUp      = \override PhrasingSlur.direction = #UP
408 phrasingSlurDown    = \override PhrasingSlur.direction = #DOWN
409 phrasingSlurNeutral = \revert PhrasingSlur.direction
410
411 % dash-patterns (make-simple-dash-definition defined at top of file)
412 phrasingSlurDashPattern =
413 #(define-music-function (parser location dash-fraction dash-period)
414    (number? number?)
415    (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of
416 line to space repeated at @var{dash-period} interval for phrasing slurs.")
417   #{
418      \override PhrasingSlur.dash-definition =
419        $(make-simple-dash-definition dash-fraction dash-period)
420   #})
421 phrasingSlurDashed =
422   \override PhrasingSlur.dash-definition = #'((0 1 0.4 0.75))
423 phrasingSlurDotted =
424   \override PhrasingSlur.dash-definition = #'((0 1 0.1 0.75))
425 phrasingSlurHalfDashed =
426   \override PhrasingSlur.dash-definition = #'((0 0.5 0.4 0.75)
427                                                 (0.5 1 1 1))
428 phrasingSlurHalfSolid =
429   \override PhrasingSlur.dash-definition = #'((0 0.5 1 1)
430                                                 (0.5 1 0.4 0.75))
431 phrasingSlurSolid =
432   \revert PhrasingSlur.dash-definition
433
434
435 %% point and click
436
437 pointAndClickOn  =
438 #(define-void-function (parser location) ()
439    (_i "Enable generation of code in final-format (e.g. pdf) files to reference the
440 originating lilypond source statement;
441 this is helpful when developing a score but generates bigger final-format files.")
442    (ly:set-option 'point-and-click #t))
443
444 pointAndClickOff =
445 #(define-void-function (parser location) ()
446    (_i "Suppress generating extra code in final-format (e.g. pdf) files to point
447 back to the lilypond source statement.")
448    (ly:set-option 'point-and-click #f))
449
450 pointAndClickTypes =
451 #(define-void-function (parser location types) (symbol-list-or-symbol?)
452   (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.")
453   (ly:set-option 'point-and-click types))
454
455 %% predefined fretboards
456
457 predefinedFretboardsOff =
458   \set predefinedDiagramTable = ##f
459 predefinedFretboardsOn =
460   \set predefinedDiagramTable = #default-fret-table
461
462
463 %% shape note heads
464
465 aikenHeads      = \set shapeNoteStyles = ##(do re miMirror fa sol la ti)
466 aikenHeadsMinor = \set shapeNoteStyles = ##(la ti do re miMirror fa sol)
467 funkHeads =
468   \set shapeNoteStyles = ##(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk)
469 funkHeadsMinor =
470   \set shapeNoteStyles = ##(laFunk tiFunk doFunk reFunk miFunk faFunk solFunk)
471 sacredHarpHeads = \set shapeNoteStyles = ##(fa sol la fa sol la mi)
472 sacredHarpHeadsMinor = \set shapeNoteStyles = ##(la mi fa sol la fa sol)
473 southernHarmonyHeads =
474   \set shapeNoteStyles = ##(faThin sol laThin faThin sol laThin miThin)
475 southernHarmonyHeadsMinor =
476   \set shapeNoteStyles = ##(laThin miThin faThin sol laThin faThin sol)
477 walkerHeads =
478   \set shapeNoteStyles = ##(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker)
479 walkerHeadsMinor =
480   \set shapeNoteStyles = ##(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk)
481
482
483 %% shifts
484
485 shiftOff  = \override NoteColumn.horizontal-shift = #0
486 shiftOn   = \override NoteColumn.horizontal-shift = #1
487 shiftOnn  = \override NoteColumn.horizontal-shift = #2
488 shiftOnnn = \override NoteColumn.horizontal-shift = #3
489
490
491 %% slurs
492
493 % directions
494 slurUp         = \override Slur.direction = #UP
495 slurDown       = \override Slur.direction = #DOWN
496 slurNeutral    = \revert Slur.direction
497
498 % dash-patterns (make-simple-dash-definition defined at top of file)
499 slurDashPattern =
500 #(define-music-function (parser location dash-fraction dash-period)
501   (number? number?)
502   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
503 ratio of line to space repeated at @var{dash-period} interval for slurs.")
504   #{
505      \override Slur.dash-definition =
506        $(make-simple-dash-definition dash-fraction dash-period)
507   #})
508 slurDashed     = \override Slur.dash-definition = #'((0 1 0.4 0.75))
509 slurDotted     = \override Slur.dash-definition = #'((0 1 0.1 0.75))
510 slurHalfDashed = \override Slur.dash-definition = #'((0 0.5 0.4 0.75)
511                                                        (0.5 1 1 1))
512 slurHalfSolid  = \override Slur.dash-definition = #'((0 0.5 1 1)
513                                                        (0.5 1 0.4 0.75))
514 slurSolid      = \revert Slur.dash-definition
515
516
517 %% staff switches
518
519 showStaffSwitch = \set followVoice = ##t
520 hideStaffSwitch = \set followVoice = ##f
521
522
523 %% stems
524
525 stemUp      = \override Stem.direction = #UP
526 stemDown    = \override Stem.direction = #DOWN
527 stemNeutral = \revert Stem.direction
528
529
530 %% string numbers
531
532 romanStringNumbers  = {
533   \override StringNumber.number-type = #'roman-upper
534   \override StringNumber.stencil = #ly:text-interface::print
535   \override StringNumber.font-encoding = #'latin1
536   \override StringNumber.font-shape = #'italic
537 }
538 arabicStringNumbers = {
539   \revert StringNumber.number-type
540   \revert StringNumber.stencil
541   \revert StringNumber.font-encoding
542   \revert StringNumber.font-shape
543 }
544
545
546 %% tablature
547
548 % switch to full notation
549 tabFullNotation = {
550   % time signature
551   \revert TabStaff.TimeSignature.stencil
552   % stems (the half note gets a double stem)
553   \revert TabStaff.Stem.length
554   \revert TabStaff.Stem.no-stem-extend
555   \revert TabStaff.Flag.style
556   \revert TabStaff.Stem.details
557   \revert TabStaff.Stem.stencil
558   \revert TabStaff.Flag.stencil
559   \override TabStaff.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes
560   \override TabStaff.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes
561   \set TabStaff.autoBeaming = ##t
562   \revert TabStaff.NoteColumn.ignore-collision
563   % beams, dots
564   \revert TabStaff.Beam.stencil
565   \revert TabStaff.StemTremolo.stencil
566   \revert TabStaff.Dots.stencil
567   \revert TabStaff.Tie.stencil
568   \revert TabStaff.Tie.after-line-breaking
569   \revert TabStaff.RepeatTie.stencil
570   \revert TabStaff.RepeatTie.after-line-breaking
571   \revert TabStaff.LaissezVibrerTie.stencil
572   \revert TabStaff.Slur.stencil
573   \revert TabStaff.PhrasingSlur.stencil
574   % tuplet stuff
575   \revert TabStaff.TupletBracket.stencil
576   \revert TabStaff.TupletNumber.stencil
577   % dynamic signs
578   \revert TabStaff.DynamicText.stencil
579   \revert TabStaff.DynamicTextSpanner.stencil
580   \revert TabStaff.DynamicTextSpanner.stencil
581   \revert TabStaff.Hairpin.stencil
582   % rests
583   \revert TabStaff.Rest.stencil
584   \revert TabStaff.MultiMeasureRest.stencil
585   \revert TabStaff.MultiMeasureRestNumber.stencil
586   \revert TabStaff.MultiMeasureRestText.stencil
587   % markups etc.
588   \revert TabStaff.Glissando.stencil
589   \revert TabStaff.Script.stencil
590   \revert TabStaff.TextScript.stencil
591   \revert TabStaff.TextSpanner.stencil
592   \revert TabStaff.Arpeggio.stencil
593   \revert TabStaff.NoteColumn.ignore-collision
594 }
595
596 %tie/repeat tie behaviour
597 hideSplitTiedTabNotes = {
598   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #all-invisible
599   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##f
600   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##f
601   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##f
602 }
603
604 showSplitTiedTabNotes = {
605   \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #begin-of-line-visible
606   \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##t
607   \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##t
608   \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##t
609 }
610
611 %% text length
612
613 textLengthOn = {
614   % 0.4 staff-space between adjacent texts
615   \override TextScript.extra-spacing-width = #'(-0.0 . 0.4)
616   \override TextScript.extra-spacing-height = #'(-inf.0 . +inf.0)
617 }
618
619 textLengthOff = {
620   \override TextScript.extra-spacing-width = #'(+inf.0 . -inf.0)
621   \override TextScript.extra-spacing-height = #'(0 . 0)
622 }
623
624 markLengthOn = {
625   \override Score.MetronomeMark.extra-spacing-width = #'(0 . 1.0)
626   \override Score.RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
627   % Raise as much as four staff-spaces before pushing notecolumns right
628   \override Score.MetronomeMark.extra-spacing-height = #'(4 . 4)
629   \override Score.RehearsalMark.extra-spacing-height = #'(4 . 4)
630 }
631
632 markLengthOff = {
633   \override Score.MetronomeMark.extra-spacing-width = #'(+inf.0 . -inf.0)
634   \override Score.RehearsalMark.extra-spacing-width = #'(+inf.0 . -inf.0)
635   \revert Score.MetronomeMark.extra-spacing-height
636   \revert Score.RehearsalMark.extra-spacing-height
637 }
638
639 %% text spanners
640
641 textSpannerUp      = \override TextSpanner.direction = #UP
642 textSpannerDown    = \override TextSpanner.direction = #DOWN
643 textSpannerNeutral = \revert TextSpanner.direction
644
645
646 %% ties
647
648 % directions
649 tieUp      = \override Tie.direction = #UP
650 tieDown    = \override Tie.direction = #DOWN
651 tieNeutral = \revert Tie.direction
652
653 % dash-patterns (make-simple-dash-definition defined at top of file)
654 tieDashPattern =
655 #(define-music-function (parser location dash-fraction dash-period)
656   (number? number?)
657   (_i "Set up a custom style of dash pattern for @var{dash-fraction}
658 ratio of line to space repeated at @var{dash-period} interval for ties.")
659   #{
660      \override Tie.dash-definition =
661        $(make-simple-dash-definition dash-fraction dash-period)
662   #})
663 tieDashed     = \override Tie.dash-definition = #'((0 1 0.4 0.75))
664 tieDotted     = \override Tie.dash-definition = #'((0 1 0.1 0.75))
665 tieHalfDashed = \override Tie.dash-definition = #'((0 0.5 0.4 0.75)
666                                                      (0.5 1 1 1))
667 tieHalfSolid  = \override Tie.dash-definition = #'((0 0.5 1 1)
668                                                      (0.5 1 0.4 0.75))
669 tieSolid      = \revert Tie.dash-definition
670
671
672 %% tuplets
673
674 tupletUp      = \override TupletBracket.direction = #UP
675 tupletDown    = \override TupletBracket.direction = #DOWN
676 tupletNeutral = \revert TupletBracket.direction
677
678
679 %% voice properties
680
681 % dynamic ly:dir?  text script, articulation script ly:dir?
682 voiceOne   = #(context-spec-music (make-voice-props-set 0)  'Voice)
683 voiceTwo   = #(context-spec-music (make-voice-props-set 1)  'Voice)
684 voiceThree = #(context-spec-music (make-voice-props-set 2)  'Voice)
685 voiceFour  = #(context-spec-music (make-voice-props-set 3)  'Voice)
686 oneVoice   = #(context-spec-music (make-voice-props-revert) 'Voice)
687
688
689 %% voice styles
690
691 voiceOneStyle = {
692   \override NoteHead.style = #'diamond
693   \override NoteHead.color = #red
694   \override Stem.color = #red
695   \override Beam.color = #red
696 }
697 voiceTwoStyle = {
698   \override NoteHead.style = #'triangle
699   \override NoteHead.color = #blue
700   \override Stem.color = #blue
701   \override Beam.color = #blue
702 }
703 voiceThreeStyle = {
704   \override NoteHead.style = #'xcircle
705   \override NoteHead.color = #green
706   \override Stem.color = #green
707   \override Beam.color = #green
708 }
709 voiceFourStyle = {
710   \override NoteHead.style = #'cross
711   \override NoteHead.color = #magenta
712   \override Stem.color = #magenta
713   \override Beam.color = #magenta
714 }
715 voiceNeutralStyle = {
716   \revert NoteHead.style
717   \revert NoteHead.color
718   \revert Stem.color
719   \revert Beam.color
720 }
721
722
723 %% volta brackets
724
725 allowVoltaHook =
726 #(define-void-function (parser location bar) (string?)
727                        (allow-volta-hook bar))
728
729 %% x notes
730
731 xNotesOn =
732 #(define-music-function (parser location) ()
733    (_i "Set the default note head style to a cross-shaped style.")
734    (override-head-style '(TabNoteHead NoteHead) 'cross))
735 xNotesOff = \defaultNoteHeads
736 xNote =
737 #(define-music-function (parser location note) (ly:music?)
738    (_i "Print @var{note} with a cross-shaped note head.")
739    (style-note-heads '(TabNoteHead NoteHead) 'cross note))
740
741
742 %% dead notes (these need to come after "x notes")
743
744 % Define aliases of cross-head notes for specific purposes
745 deadNotesOn  = \xNotesOn
746 deadNotesOff = \xNotesOff
747 deadNote     = #xNote