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