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)))
9 %% common definition for all note head styles reverting
10 %% (palm mute, harmonics, dead notes, ...)
12 #(define-music-function (parser location) ()
13 (_i "Revert to the default note head style.")
14 (revert-head-style '(NoteHead TabNoteHead)))
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." )
25 ((1) (set-accidental-style (car style)))
26 ((2) (set-accidental-style (cadr style) (car style)))
28 (ly:parser-error parser (_ "not an accidental style")
30 (make-music 'Music))))
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.
39 arpeggio = #(make-music 'ArpeggioEvent)
41 \revert Arpeggio.stencil
42 \revert Arpeggio.X-extent
43 \override Arpeggio.arpeggio-direction = #UP
46 \revert Arpeggio.stencil
47 \revert Arpeggio.X-extent
48 \override Arpeggio.arpeggio-direction = #DOWN
51 \revert Arpeggio.stencil
52 \revert Arpeggio.X-extent
53 \revert Arpeggio.arpeggio-direction
54 \revert Arpeggio.dash-definition
57 \revert Arpeggio.X-extent
58 \override Arpeggio.stencil = #ly:arpeggio::brew-chord-bracket
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
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))
74 autoBeamOn = \set autoBeaming = ##t
75 autoBeamOff = \set autoBeaming = ##f
81 \override BalloonTextItem.extra-spacing-width = #'(0 . 0)
82 \override BalloonTextItem.extra-spacing-height = #'(-inf.0 . +inf.0)
85 \override BalloonTextItem.extra-spacing-width = #'(+inf.0 . -inf.0)
86 \override BalloonTextItem.extra-spacing-height = #'(0 . 0)
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)
104 (caddr glyph-list))))
109 bassFigureExtendersOn = {
110 \set useBassFigureExtenders = ##t
111 \set Staff.useBassFigureExtenders = ##t
113 bassFigureExtendersOff = {
114 \set useBassFigureExtenders = ##f
115 \set Staff.useBassFigureExtenders = ##f
117 bassFigureStaffAlignmentDown =
118 \override Staff.BassFigureAlignmentPositioning.direction = #DOWN
119 bassFigureStaffAlignmentUp =
120 \override Staff.BassFigureAlignmentPositioning.direction = #UP
121 bassFigureStaffAlignmentNeutral =
122 \revert Staff.BassFigureAlignmentPositioning.direction
128 \set Timing.timing = ##f
129 \set Timing.autoBeaming = ##f
133 \set Timing.timing = ##t
134 \set Timing.measurePosition = #ZERO-MOMENT
135 \set Timing.autoBeaming = ##t
142 \set chordRootNamer = #(chord-name->italian-markup #t)
143 \set chordPrefixSpacer = #0.4
146 \set chordRootNamer = #(chord-name->german-markup #t)
147 \set chordNoteNamer = #note-name->german-markup
150 \set chordRootNamer = #(chord-name->german-markup #f)
151 \set chordNoteNamer = #note-name->german-markup
154 \set chordRootNamer = #(chord-name->italian-markup #f)
155 \set chordPrefixSpacer = #0.4
158 \set chordNameExceptions = #powerChordExceptions
162 %% compressFullBarRests
164 compressFullBarRests = \set Score.skipBars = ##t
165 expandFullBarRests = \set Score.skipBars = ##f
170 dotsUp = \override Dots.direction = #UP
171 dotsDown = \override Dots.direction = #DOWN
172 dotsNeutral = \revert Dots.direction
178 \override DynamicText.direction = #UP
179 \override DynamicLineSpanner.direction = #UP
182 \override DynamicText.direction = #DOWN
183 \override DynamicLineSpanner.direction = #DOWN
186 \revert DynamicText.direction
187 \revert DynamicLineSpanner.direction
194 \override NoteHead.stencil = #note-head::brew-ez-stencil
195 \override NoteHead.font-size = #-8
196 \override NoteHead.font-family = #'sans
197 \override NoteHead.font-series = #'bold
200 \revert NoteHead.stencil
201 \revert NoteHead.font-size
202 \revert NoteHead.font-family
203 \revert NoteHead.font-series
209 %% End the incipit and print a ``normal line start''.
210 endincipit = \context Staff {
211 \partial 16 s16 % Hack to handle e.g. \bar ".|" \endincipit
212 \once \override Staff.Clef.full-size-change = ##t
213 \once \override Staff.Clef.non-default = ##t
221 #(make-music 'MultiMeasureTextEvent
223 ;; Set the 'text based on the 'direction
224 (cons 'text (lambda (grob)
225 (if (eq? (ly:grob-property grob 'direction) DOWN)
226 (markup #:musicglyph "scripts.dfermata")
227 (markup #:musicglyph "scripts.ufermata"))))
228 (cons 'outside-staff-priority 40)
229 (cons 'outside-staff-padding 0)))
233 teeny = \set fontSize = #-3
234 tiny = \set fontSize = #-2
235 small = \set fontSize = #-1
236 normalsize = \set fontSize = #0
237 large = \set fontSize = #1
238 huge = \set fontSize = #2
243 glissando = #(make-music 'GlissandoEvent)
249 #(define-music-function (parser location) ()
250 (_i "Set the default note head style to a diamond-shaped style.")
251 (override-head-style '(NoteHead TabNoteHead) 'harmonic))
252 harmonicsOff = \defaultNoteHeads
254 #(define-music-function (parser location note) (ly:music?)
255 (_i "Print @var{note} with a diamond-shaped note head.")
256 (style-note-heads 'NoteHead 'harmonic note))
262 % hide notes, accidentals, etc.
263 \override Dots.transparent = ##t
264 \override NoteHead.transparent = ##t
265 \override NoteHead.no-ledgers = ##t
266 % assume that any Beam inherits transparency from its parent Stem
267 \override Stem.transparent = ##t
268 \override Flag.transparent = ##t
269 \override Accidental.transparent = ##t
270 \override Rest.transparent = ##t
271 \override TabNoteHead.transparent = ##t
274 \revert Accidental.transparent
275 \revert Stem.transparent
276 \revert Flag.transparent
277 \revert NoteHead.transparent
278 \revert NoteHead.no-ledgers
279 \revert Dots.transparent
280 \revert Rest.transparent
281 \revert TabNoteHead.transparent
288 \set squashedPosition = #0
289 \override NoteHead.style = #'slash
290 \override Accidental.stencil = ##f
291 \override AccidentalCautionary.stencil = ##f
294 \unset squashedPosition
295 \revert NoteHead.style
296 \revert Accidental.stencil
297 \revert AccidentalCautionary.stencil
302 \override NoteHead.style = #'kievan
303 \override Stem.X-offset = #stem::kievan-offset-callback
304 \override Stem.stencil = ##f
305 \override Flag.stencil = ##f
306 \override Rest.style = #'mensural
307 \override Accidental.glyph-name-alist = #alteration-kievan-glyph-name-alist
308 \override Dots.style = #'kievan
309 \override Slur.stencil = ##f
310 \override Stem.length = #0.0
311 \override Beam.positions = #beam::get-kievan-positions
312 \override Beam.quantized-positions = #beam::get-kievan-quantized-positions
313 \override NoteHead.duration-log = #note-head::calc-kievan-duration-log
316 \revert NoteHead.style
317 \revert Stem.X-offset
320 \revert Accidental.glyph-name-alist
325 \revert Beam.positions
326 \revert Beam.quantized-positions
327 \revert NoteHead.duration-log
332 mergeDifferentlyDottedOn =
333 \override Staff.NoteCollision.merge-differently-dotted = ##t
334 mergeDifferentlyDottedOff =
335 \revert Staff.NoteCollision.merge-differently-dotted
336 mergeDifferentlyHeadedOn =
337 \override Staff.NoteCollision.merge-differently-headed = ##t
338 mergeDifferentlyHeadedOff =
339 \revert Staff.NoteCollision.merge-differently-headed
342 %% numeric time signature
344 numericTimeSignature = \override Staff.TimeSignature.style = #'numbered
345 defaultTimeSignature = \revert Staff.TimeSignature.style
351 #(define-music-function (parser location) ()
352 (_i "Set the default note head style to a triangle-shaped style.")
353 (override-head-style 'NoteHead 'do))
354 palmMuteOff = \defaultNoteHeads
356 #(define-music-function (parser location note) (ly:music?)
357 (_i "Print @var{note} with a triangle-shaped note head.")
358 (style-note-heads 'NoteHead 'do note))
364 phrasingSlurUp = \override PhrasingSlur.direction = #UP
365 phrasingSlurDown = \override PhrasingSlur.direction = #DOWN
366 phrasingSlurNeutral = \revert PhrasingSlur.direction
368 % dash-patterns (make-simple-dash-definition defined at top of file)
369 phrasingSlurDashPattern =
370 #(define-music-function (parser location dash-fraction dash-period)
372 (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of
373 line to space repeated at @var{dash-period} interval for phrasing slurs.")
375 \override PhrasingSlur.dash-definition =
376 $(make-simple-dash-definition dash-fraction dash-period)
379 \override PhrasingSlur.dash-definition = #'((0 1 0.4 0.75))
381 \override PhrasingSlur.dash-definition = #'((0 1 0.1 0.75))
382 phrasingSlurHalfDashed =
383 \override PhrasingSlur.dash-definition = #'((0 0.5 0.4 0.75)
385 phrasingSlurHalfSolid =
386 \override PhrasingSlur.dash-definition = #'((0 0.5 1 1)
389 \revert PhrasingSlur.dash-definition
395 #(define-void-function (parser location) ()
396 (_i "Enable generation of code in final-format (e.g. pdf) files to reference the
397 originating lilypond source statement;
398 this is helpful when developing a score but generates bigger final-format files.")
399 (ly:set-option 'point-and-click #t))
402 #(define-void-function (parser location) ()
403 (_i "Suppress generating extra code in final-format (e.g. pdf) files to point
404 back to the lilypond source statement.")
405 (ly:set-option 'point-and-click #f))
408 #(define-void-function (parser location types) (symbol-list-or-symbol?)
409 (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.")
410 (ly:set-option 'point-and-click types))
412 %% predefined fretboards
414 predefinedFretboardsOff =
415 \set predefinedDiagramTable = ##f
416 predefinedFretboardsOn =
417 \set predefinedDiagramTable = #default-fret-table
422 aikenHeads = \set shapeNoteStyles = ##(do re miMirror fa sol la ti)
423 aikenHeadsMinor = \set shapeNoteStyles = ##(la ti do re miMirror fa sol)
425 \set shapeNoteStyles = ##(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk)
427 \set shapeNoteStyles = ##(laFunk tiFunk doFunk reFunk miFunk faFunk solFunk)
428 sacredHarpHeads = \set shapeNoteStyles = ##(fa sol la fa sol la mi)
429 sacredHarpHeadsMinor = \set shapeNoteStyles = ##(la mi fa sol la fa sol)
430 southernHarmonyHeads =
431 \set shapeNoteStyles = ##(faThin sol laThin faThin sol laThin miThin)
432 southernHarmonyHeadsMinor =
433 \set shapeNoteStyles = ##(laThin miThin faThin sol laThin faThin sol)
435 \set shapeNoteStyles = ##(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker)
437 \set shapeNoteStyles = ##(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk)
442 shiftOn = \override NoteColumn.horizontal-shift = #1
443 shiftOnn = \override NoteColumn.horizontal-shift = #2
444 shiftOnnn = \override NoteColumn.horizontal-shift = #3
445 shiftOff = \revert NoteColumn.horizontal-shift
451 slurUp = \override Slur.direction = #UP
452 slurDown = \override Slur.direction = #DOWN
453 slurNeutral = \revert Slur.direction
455 % dash-patterns (make-simple-dash-definition defined at top of file)
457 #(define-music-function (parser location dash-fraction dash-period)
459 (_i "Set up a custom style of dash pattern for @var{dash-fraction}
460 ratio of line to space repeated at @var{dash-period} interval for slurs.")
462 \override Slur.dash-definition =
463 $(make-simple-dash-definition dash-fraction dash-period)
465 slurDashed = \override Slur.dash-definition = #'((0 1 0.4 0.75))
466 slurDotted = \override Slur.dash-definition = #'((0 1 0.1 0.75))
467 slurHalfDashed = \override Slur.dash-definition = #'((0 0.5 0.4 0.75)
469 slurHalfSolid = \override Slur.dash-definition = #'((0 0.5 1 1)
471 slurSolid = \revert Slur.dash-definition
476 showStaffSwitch = \set followVoice = ##t
477 hideStaffSwitch = \set followVoice = ##f
482 stemUp = \override Stem.direction = #UP
483 stemDown = \override Stem.direction = #DOWN
484 stemNeutral = \revert Stem.direction
489 % switch to full notation
492 \revert TabStaff.TimeSignature.stencil
493 % stems (the half note gets a double stem)
494 \revert TabVoice.Stem.length
495 \revert TabVoice.Stem.no-stem-extend
496 \revert TabVoice.Flag.style
497 \revert TabVoice.Stem.details
498 \revert TabVoice.Stem.stencil
499 \revert TabVoice.Flag.stencil
500 \override TabVoice.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes
501 \override TabVoice.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes
502 \set TabVoice.autoBeaming = ##t
503 \revert TabVoice.NoteColumn.ignore-collision
505 \revert TabVoice.Beam.stencil
506 \revert TabVoice.StemTremolo.stencil
507 \revert TabVoice.Dots.stencil
508 \revert TabVoice.Tie.stencil
509 \revert TabVoice.Tie.after-line-breaking
510 \revert TabVoice.RepeatTie.stencil
511 \revert TabVoice.RepeatTie.after-line-breaking
512 \revert TabVoice.LaissezVibrerTie.stencil
513 \revert TabVoice.Slur.stencil
514 \revert TabVoice.PhrasingSlur.stencil
516 \revert TabVoice.TupletBracket.stencil
517 \revert TabVoice.TupletNumber.stencil
519 \revert TabVoice.DynamicText.stencil
520 \revert TabVoice.DynamicTextSpanner.stencil
521 \revert TabVoice.DynamicTextSpanner.stencil
522 \revert TabVoice.Hairpin.stencil
524 \revert TabVoice.Rest.stencil
525 \revert TabVoice.MultiMeasureRest.stencil
526 \revert TabVoice.MultiMeasureRestNumber.stencil
527 \revert TabVoice.MultiMeasureRestText.stencil
529 \revert TabVoice.Glissando.stencil
530 \revert TabVoice.Script.stencil
531 \revert TabVoice.TextScript.stencil
532 \revert TabVoice.TextSpanner.stencil
533 \revert TabStaff.Arpeggio.stencil
534 \revert TabStaff.NoteColumn.ignore-collision
537 %tie/repeat tie behaviour
538 hideSplitTiedTabNotes = {
539 \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #all-invisible
540 \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##f
541 \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##f
542 \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##f
545 showSplitTiedTabNotes = {
546 \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #begin-of-line-visible
547 \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##t
548 \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##t
549 \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##t
555 % 0.4 staff-space between adjacent texts
556 \override TextScript.extra-spacing-width = #'(-0.0 . 0.4)
557 \override TextScript.extra-spacing-height = #'(-inf.0 . +inf.0)
561 \override TextScript.extra-spacing-width = #'(+inf.0 . -inf.0)
562 \override TextScript.extra-spacing-height = #'(0 . 0)
566 \override Score.MetronomeMark.extra-spacing-width = #'(0 . 1.0)
567 \override Score.RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
568 % Raise as much as four staff-spaces before pushing notecolumns right
569 \override Score.MetronomeMark.extra-spacing-height = #'(4 . 4)
570 \override Score.RehearsalMark.extra-spacing-height = #'(4 . 4)
574 \override Score.MetronomeMark.extra-spacing-width = #'(+inf.0 . -inf.0)
575 \override Score.RehearsalMark.extra-spacing-width = #'(+inf.0 . -inf.0)
576 \revert Score.MetronomeMark.extra-spacing-height
577 \revert Score.RehearsalMark.extra-spacing-height
582 textSpannerUp = \override TextSpanner.direction = #UP
583 textSpannerDown = \override TextSpanner.direction = #DOWN
584 textSpannerNeutral = \revert TextSpanner.direction
590 tieUp = \override Tie.direction = #UP
591 tieDown = \override Tie.direction = #DOWN
592 tieNeutral = \revert Tie.direction
594 % dash-patterns (make-simple-dash-definition defined at top of file)
596 #(define-music-function (parser location dash-fraction dash-period)
598 (_i "Set up a custom style of dash pattern for @var{dash-fraction}
599 ratio of line to space repeated at @var{dash-period} interval for ties.")
601 \override Tie.dash-definition =
602 $(make-simple-dash-definition dash-fraction dash-period)
604 tieDashed = \override Tie.dash-definition = #'((0 1 0.4 0.75))
605 tieDotted = \override Tie.dash-definition = #'((0 1 0.1 0.75))
606 tieHalfDashed = \override Tie.dash-definition = #'((0 0.5 0.4 0.75)
608 tieHalfSolid = \override Tie.dash-definition = #'((0 0.5 1 1)
610 tieSolid = \revert Tie.dash-definition
615 tupletUp = \override TupletBracket.direction = #UP
616 tupletDown = \override TupletBracket.direction = #DOWN
617 tupletNeutral = \revert TupletBracket.direction
622 % dynamic ly:dir? text script, articulation script ly:dir?
623 voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice)
624 voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice)
625 voiceThree = #(context-spec-music (make-voice-props-set 2) 'Voice)
626 voiceFour = #(context-spec-music (make-voice-props-set 3) 'Voice)
627 oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice)
633 \override NoteHead.style = #'diamond
634 \override NoteHead.color = #red
635 \override Stem.color = #red
636 \override Flag.color = #red
637 \override Beam.color = #red
640 \override NoteHead.style = #'triangle
641 \override NoteHead.color = #blue
642 \override Stem.color = #blue
643 \override Flag.color = #blue
644 \override Beam.color = #blue
647 \override NoteHead.style = #'xcircle
648 \override NoteHead.color = #green
649 \override Stem.color = #green
650 \override Flag.color = #green
651 \override Beam.color = #green
654 \override NoteHead.style = #'cross
655 \override NoteHead.color = #magenta
656 \override Stem.color = #magenta
657 \override Flag.color = #magenta
658 \override Beam.color = #magenta
660 voiceNeutralStyle = {
661 \revert NoteHead.style
662 \revert NoteHead.color
672 #(define-void-function (parser location bar) (string?)
673 (allow-volta-hook bar))
678 #(define-music-function (parser location) ()
679 (_i "Set the default note head style to a cross-shaped style.")
680 (override-head-style '(TabNoteHead NoteHead) 'cross))
681 xNotesOff = \defaultNoteHeads
683 #(define-music-function (parser location note) (ly:music?)
684 (_i "Print @var{note} with a cross-shaped note head.")
685 (style-note-heads '(TabNoteHead NoteHead) 'cross note))
688 %% dead notes (these need to come after "x notes")
690 % Define aliases of cross-head notes for specific purposes
691 deadNotesOn = \xNotesOn
692 deadNotesOff = \xNotesOff