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
127 cadenzaOn = \set Timing.timing = ##f
129 cadenzaOff = \set Timing.timing = ##t
134 \set chordRootNamer = #(chord-name->italian-markup #t)
135 \set chordPrefixSpacer = #0.4
138 \set chordRootNamer = #(chord-name->german-markup #t)
139 \set chordNoteNamer = #note-name->german-markup
142 \set chordRootNamer = #(chord-name->german-markup #f)
143 \set chordNoteNamer = #note-name->german-markup
146 \set chordRootNamer = #(chord-name->italian-markup #f)
147 \set chordPrefixSpacer = #0.4
150 \set chordNameExceptions = #powerChordExceptions
154 %% compressFullBarRests
156 compressFullBarRests = \set Score.skipBars = ##t
157 expandFullBarRests = \set Score.skipBars = ##f
162 dotsUp = \override Dots.direction = #UP
163 dotsDown = \override Dots.direction = #DOWN
164 dotsNeutral = \revert Dots.direction
170 \override DynamicText.direction = #UP
171 \override DynamicLineSpanner.direction = #UP
174 \override DynamicText.direction = #DOWN
175 \override DynamicLineSpanner.direction = #DOWN
178 \revert DynamicText.direction
179 \revert DynamicLineSpanner.direction
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
192 \revert NoteHead.stencil
193 \revert NoteHead.font-size
194 \revert NoteHead.font-family
195 \revert NoteHead.font-series
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)))
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
220 glissando = #(make-music 'GlissandoEvent)
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
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))
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
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
263 \set squashedPosition = #0
264 \override NoteHead.style = #'slash
265 \override TabNoteHead.style = #'slash
266 \override Accidental.stencil = ##f
267 \override AccidentalCautionary.stencil = ##f
270 \unset squashedPosition
271 \revert NoteHead.style
272 \revert TabNoteHead.style
273 \revert Accidental.stencil
274 \revert AccidentalCautionary.stencil
280 #(define-music-function (parser location incipit-music) (ly:music?)
282 \once \override Staff.InstrumentName.stencil =
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)
291 \new MensuralStaff \with {
292 \override InstrumentName.self-alignment-X = #align-x
293 \override InstrumentName.self-alignment-Y = #align-y
294 instrumentName = #instrument-name
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))
313 \remove "Default_bar_line_engraver"
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)))
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
341 \revert NoteHead.style
342 \revert Stem.X-offset
345 \revert Accidental.glyph-name-alist
350 \revert Beam.positions
351 \revert Beam.quantized-positions
352 \revert NoteHead.duration-log
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
367 %% numeric time signature
369 numericTimeSignature = \override Staff.TimeSignature.style = #'numbered
370 defaultTimeSignature = \revert Staff.TimeSignature.style
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
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))
389 phrasingSlurUp = \override PhrasingSlur.direction = #UP
390 phrasingSlurDown = \override PhrasingSlur.direction = #DOWN
391 phrasingSlurNeutral = \revert PhrasingSlur.direction
393 % dash-patterns (make-simple-dash-definition defined at top of file)
394 phrasingSlurDashPattern =
395 #(define-music-function (parser location dash-fraction dash-period)
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.")
400 \override PhrasingSlur.dash-definition =
401 $(make-simple-dash-definition dash-fraction dash-period)
404 \override PhrasingSlur.dash-definition = #'((0 1 0.4 0.75))
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)
410 phrasingSlurHalfSolid =
411 \override PhrasingSlur.dash-definition = #'((0 0.5 1 1)
414 \revert PhrasingSlur.dash-definition
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))
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))
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))
437 %% predefined fretboards
439 predefinedFretboardsOff =
440 \set predefinedDiagramTable = ##f
441 predefinedFretboardsOn =
442 \set predefinedDiagramTable = #default-fret-table
447 aikenHeads = \set shapeNoteStyles = ##(do re miMirror fa sol la ti)
448 aikenHeadsMinor = \set shapeNoteStyles = ##(la ti do re miMirror fa sol)
450 \set shapeNoteStyles = ##(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk)
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)
460 \set shapeNoteStyles = ##(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker)
462 \set shapeNoteStyles = ##(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk)
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
476 slurUp = \override Slur.direction = #UP
477 slurDown = \override Slur.direction = #DOWN
478 slurNeutral = \revert Slur.direction
480 % dash-patterns (make-simple-dash-definition defined at top of file)
482 #(define-music-function (parser location dash-fraction dash-period)
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.")
487 \override Slur.dash-definition =
488 $(make-simple-dash-definition dash-fraction dash-period)
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)
494 slurHalfSolid = \override Slur.dash-definition = #'((0 0.5 1 1)
496 slurSolid = \revert Slur.dash-definition
501 showStaffSwitch = \set followVoice = ##t
502 hideStaffSwitch = \set followVoice = ##f
507 stemUp = \override Stem.direction = #UP
508 stemDown = \override Stem.direction = #DOWN
509 stemNeutral = \revert Stem.direction
514 % switch to full notation
517 \revert TabStaff.TimeSignature.stencil
518 % stems (the half note gets a double stem)
519 \revert TabStaff.Stem.length
520 \revert TabStaff.Stem.no-stem-extend
521 \revert TabStaff.Flag.style
522 \revert TabStaff.Stem.details
523 \revert TabStaff.Stem.stencil
524 \revert TabStaff.Flag.stencil
525 \override TabStaff.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes
526 \override TabStaff.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes
527 \set TabStaff.autoBeaming = ##t
528 \revert TabStaff.NoteColumn.ignore-collision
530 \revert TabStaff.Beam.stencil
531 \revert TabStaff.StemTremolo.stencil
532 \revert TabStaff.Dots.stencil
533 \revert TabStaff.Tie.stencil
534 \revert TabStaff.Tie.after-line-breaking
535 \revert TabStaff.RepeatTie.stencil
536 \revert TabStaff.RepeatTie.after-line-breaking
537 \revert TabStaff.LaissezVibrerTie.stencil
538 \revert TabStaff.Slur.stencil
539 \revert TabStaff.PhrasingSlur.stencil
541 \revert TabStaff.TupletBracket.stencil
542 \revert TabStaff.TupletNumber.stencil
544 \revert TabStaff.DynamicText.stencil
545 \revert TabStaff.DynamicTextSpanner.stencil
546 \revert TabStaff.DynamicTextSpanner.stencil
547 \revert TabStaff.Hairpin.stencil
549 \revert TabStaff.Rest.stencil
550 \revert TabStaff.MultiMeasureRest.stencil
551 \revert TabStaff.MultiMeasureRestNumber.stencil
552 \revert TabStaff.MultiMeasureRestText.stencil
554 \revert TabStaff.Glissando.stencil
555 \revert TabStaff.Script.stencil
556 \revert TabStaff.TextScript.stencil
557 \revert TabStaff.TextSpanner.stencil
558 \revert TabStaff.Arpeggio.stencil
559 \revert TabStaff.NoteColumn.ignore-collision
562 %tie/repeat tie behaviour
563 hideSplitTiedTabNotes = {
564 \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #all-invisible
565 \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##f
566 \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##f
567 \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##f
570 showSplitTiedTabNotes = {
571 \override TabVoice.TabNoteHead.details.tied-properties.break-visibility = #begin-of-line-visible
572 \override TabVoice.TabNoteHead.details.tied-properties.parenthesize = ##t
573 \override TabVoice.TabNoteHead.details.repeat-tied-properties.note-head-visible = ##t
574 \override TabVoice.TabNoteHead.details.repeat-tied-properties.parenthesize = ##t
580 % 0.4 staff-space between adjacent texts
581 \override TextScript.extra-spacing-width = #'(-0.0 . 0.4)
582 \override TextScript.extra-spacing-height = #'(-inf.0 . +inf.0)
586 \override TextScript.extra-spacing-width = #'(+inf.0 . -inf.0)
587 \override TextScript.extra-spacing-height = #'(0 . 0)
591 \override Score.MetronomeMark.extra-spacing-width = #'(0 . 1.0)
592 \override Score.RehearsalMark.extra-spacing-width = #'(-0.5 . 0.5)
593 % Raise as much as four staff-spaces before pushing notecolumns right
594 \override Score.MetronomeMark.extra-spacing-height = #'(4 . 4)
595 \override Score.RehearsalMark.extra-spacing-height = #'(4 . 4)
599 \override Score.MetronomeMark.extra-spacing-width = #'(+inf.0 . -inf.0)
600 \override Score.RehearsalMark.extra-spacing-width = #'(+inf.0 . -inf.0)
601 \revert Score.MetronomeMark.extra-spacing-height
602 \revert Score.RehearsalMark.extra-spacing-height
607 textSpannerUp = \override TextSpanner.direction = #UP
608 textSpannerDown = \override TextSpanner.direction = #DOWN
609 textSpannerNeutral = \revert TextSpanner.direction
615 tieUp = \override Tie.direction = #UP
616 tieDown = \override Tie.direction = #DOWN
617 tieNeutral = \revert Tie.direction
619 % dash-patterns (make-simple-dash-definition defined at top of file)
621 #(define-music-function (parser location dash-fraction dash-period)
623 (_i "Set up a custom style of dash pattern for @var{dash-fraction}
624 ratio of line to space repeated at @var{dash-period} interval for ties.")
626 \override Tie.dash-definition =
627 $(make-simple-dash-definition dash-fraction dash-period)
629 tieDashed = \override Tie.dash-definition = #'((0 1 0.4 0.75))
630 tieDotted = \override Tie.dash-definition = #'((0 1 0.1 0.75))
631 tieHalfDashed = \override Tie.dash-definition = #'((0 0.5 0.4 0.75)
633 tieHalfSolid = \override Tie.dash-definition = #'((0 0.5 1 1)
635 tieSolid = \revert Tie.dash-definition
640 tupletUp = \override TupletBracket.direction = #UP
641 tupletDown = \override TupletBracket.direction = #DOWN
642 tupletNeutral = \revert TupletBracket.direction
647 % dynamic ly:dir? text script, articulation script ly:dir?
648 voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice)
649 voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice)
650 voiceThree = #(context-spec-music (make-voice-props-set 2) 'Voice)
651 voiceFour = #(context-spec-music (make-voice-props-set 3) 'Voice)
652 oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice)
658 \override NoteHead.style = #'diamond
659 \override NoteHead.color = #red
660 \override Stem.color = #red
661 \override Beam.color = #red
664 \override NoteHead.style = #'triangle
665 \override NoteHead.color = #blue
666 \override Stem.color = #blue
667 \override Beam.color = #blue
670 \override NoteHead.style = #'xcircle
671 \override NoteHead.color = #green
672 \override Stem.color = #green
673 \override Beam.color = #green
676 \override NoteHead.style = #'cross
677 \override NoteHead.color = #magenta
678 \override Stem.color = #magenta
679 \override Beam.color = #magenta
681 voiceNeutralStyle = {
682 \revert NoteHead.style
683 \revert NoteHead.color
692 #(define-void-function (parser location bar) (string?)
693 (allow-volta-hook bar))
698 #(define-music-function (parser location) ()
699 (_i "Set the default note head style to a cross-shaped style.")
700 (override-head-style '(TabNoteHead NoteHead) 'cross))
701 xNotesOff = \defaultNoteHeads
703 #(define-music-function (parser location note) (ly:music?)
704 (_i "Print @var{note} with a cross-shaped note head.")
705 (style-note-heads '(TabNoteHead NoteHead) 'cross note))
708 %% dead notes (these need to come after "x notes")
710 % Define aliases of cross-head notes for specific purposes
711 deadNotesOn = \xNotesOn
712 deadNotesOff = \xNotesOff