X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Fproperty-init.ly;h=54b8fab79ffd6b21c3745ff0df705f035378082a;hb=6a1a605d8235d799c5f19f334c9341e19e2d587c;hp=eaefd9d11f56cd45dba695cdca1c68619dd9bdfa;hpb=2c5a77b8adac29e80e99d23ff89b4d4688f545e9;p=lilypond.git diff --git a/ly/property-init.ly b/ly/property-init.ly index eaefd9d11f..54b8fab79f 100644 --- a/ly/property-init.ly +++ b/ly/property-init.ly @@ -1,230 +1,190 @@ % property-init.ly -\version "2.12.0" - -stemUp = \override Stem #'direction = #UP -stemDown = \override Stem #'direction = #DOWN -stemNeutral = \revert Stem #'direction - -slurUp = \override Slur #'direction = #UP -slurDown = \override Slur #'direction = #DOWN -slurNeutral = \revert Slur #'direction +\version "2.15.10" +%% for dashed slurs, phrasing slurs, and ties #(define (make-simple-dash-definition dash-fraction dash-period) (list (list 0 1 dash-fraction dash-period))) -slurDashed = { - \override Slur #'dash-definition = #'((0 1 0.4 0.75)) +%% common definition for all note head styles reverting +%% (palm mute, harmonics, dead notes, ...) +defaultNoteHeads = +#(define-music-function (parser location) () + (_i "Revert to the default note head style.") + (revert-head-style '(NoteHead TabNoteHead))) + + +accidentalStyle = +#(define-music-function + (parser location context style) ((symbol?) string?) + (_i "Set accidental style to @var{style}, a string. If an optional +@var{context} symbol is given, e.g. @code{#'Staff} or @code{#'Voice}, +the settings are applied to that context. Otherwise, the context +defaults to @samp{Staff}, except for piano styles, which use +@samp{GrandStaff} as a context." ) + (if context + (set-accidental-style (string->symbol style) context) + (set-accidental-style (string->symbol style)))) + +%% arpeggios + +% For drawing vertical chord brackets with \arpeggio +% This is a shorthand for the value of the print-function property +% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether +% cross-staff brackets are desired. + +arpeggio = #(make-music 'ArpeggioEvent) +arpeggioArrowUp = { + \revert Arpeggio #'stencil + \revert Arpeggio #'X-extent + \override Arpeggio #'arpeggio-direction = #UP } -slurDashPattern = -#(define-music-function (parser location dash-fraction dash-period) - (number? number?) - #{ - \override Slur #'dash-definition = - $(make-simple-dash-definition dash-fraction dash-period) - #}) -slurDotted = { - \override Slur #'dash-definition = #'((0 1 0.1 0.75)) +arpeggioArrowDown = { + \revert Arpeggio #'stencil + \revert Arpeggio #'X-extent + \override Arpeggio #'arpeggio-direction = #DOWN } -slurHalfDashed = { - \override Slur #'dash-definition = #'((0 0.5 0.4 0.75) - (0.5 1 1 1)) +arpeggioNormal = { + \revert Arpeggio #'stencil + \revert Arpeggio #'X-extent + \revert Arpeggio #'arpeggio-direction + \revert Arpeggio #'dash-definition } -slurHalfSolid = { - \override Slur #'dash-definition = #'((0 0.5 1 1) - (0.5 1 0.4 0.75)) +arpeggioBracket = { + \revert Arpeggio #'X-extent + \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket } -slurSolid = { - \revert Slur #'dash-definition +arpeggioParenthesis = { + \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur + \override Arpeggio #'X-extent = #ly:grob::stencil-width + \revert Arpeggio #'dash-definition +} +arpeggioParenthesisDashed = { + \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur + \override Arpeggio #'X-extent = #ly:grob::stencil-width + \override Arpeggio #'dash-definition = #'((0 1 0.4 0.75)) } -phrasingSlurUp = \override PhrasingSlur #'direction = #UP -phrasingSlurDown = \override PhrasingSlur #'direction = #DOWN -phrasingSlurNeutral = \revert PhrasingSlur #'direction +%% auto beaming -phrasingSlurDashed = { - \override PhrasingSlur #'dash-definition = #'((0 1 0.4 0.75)) -} -phrasingSlurDashPattern = -#(define-music-function (parser location dash-fraction dash-period) - (number? number?) - #{ - \override PhrasingSlur #'dash-definition = - $(make-simple-dash-definition dash-fraction dash-period) - #}) -phrasingSlurDotted = { - \override PhrasingSlur #'dash-definition = #'((0 1 0.1 0.75)) -} -phrasingSlurHalfDashed = { - \override PhrasingSlur #'dash-definition = #'((0 0.5 0.4 0.75) - (0.5 1 1 1)) -} -phrasingSlurHalfSolid = { - \override PhrasingSlur #'dash-definition = #'((0 0.5 1 1) - (0.5 1 0.4 0.75)) +autoBeamOn = \set autoBeaming = ##t +autoBeamOff = \set autoBeaming = ##f + + +%% balloon length + +balloonLengthOn = { + \override BalloonTextItem #'extra-spacing-width = #'(0 . 0) + \override BalloonTextItem #'extra-spacing-height = #'(-inf.0 . +inf.0) } -phrasingSlurSolid = { - \revert PhrasingSlur #'dash-definition +balloonLengthOff = { + \override BalloonTextItem #'extra-spacing-width = #'(+inf.0 . -inf.0) + \override BalloonTextItem #'extra-spacing-height = #'(0 . 0) } -mergeDifferentlyDottedOn = { - \override Staff.NoteCollision #'merge-differently-dotted = ##t + +%% bass figures + +bassFigureExtendersOn = { + \set useBassFigureExtenders = ##t + \set Staff.useBassFigureExtenders = ##t } -mergeDifferentlyDottedOff = { - \revert Staff.NoteCollision #'merge-differently-dotted +bassFigureExtendersOff = { + \set useBassFigureExtenders = ##f + \set Staff.useBassFigureExtenders = ##f } +bassFigureStaffAlignmentDown = + \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN +bassFigureStaffAlignmentUp = + \override Staff.BassFigureAlignmentPositioning #'direction = #UP +bassFigureStaffAlignmentNeutral = + \revert Staff.BassFigureAlignmentPositioning #'direction -mergeDifferentlyHeadedOn = { - \override Staff.NoteCollision #'merge-differently-headed = ##t + +%% cadenzas + +cadenzaOn = { + \set Timing.timing = ##f + \set Timing.autoBeaming = ##f } -mergeDifferentlyHeadedOff = { - \revert Staff.NoteCollision #'merge-differently-headed + +cadenzaOff = { + \set Timing.timing = ##t + \set Timing.measurePosition = #ZERO-MOMENT + \set Timing.autoBeaming = ##t } -shiftOn = \override NoteColumn #'horizontal-shift = #1 -shiftOnn = \override NoteColumn #'horizontal-shift = #2 -shiftOnnn = \override NoteColumn #'horizontal-shift = #3 -shiftOff = \revert NoteColumn #'horizontal-shift -tieUp = \override Tie #'direction = #UP -tieDown = \override Tie #'direction = #DOWN -tieNeutral = \revert Tie #'direction +%% chord names -tieDashed = { - \override Tie #'dash-definition = #'((0 1 0.4 0.75)) +frenchChords = { + \set chordRootNamer = #(chord-name->italian-markup #t) + \set chordPrefixSpacer = #0.4 } -tieDashPattern = -#(define-music-function (parser location dash-fraction dash-period) - (number? number?) - #{ - \override Tie #'dash-definition = - $(make-simple-dash-definition dash-fraction dash-period) - #}) -tieDotted = { - \override Tie #'dash-definition = #'((0 1 0.1 0.75)) +germanChords = { + \set chordRootNamer = #(chord-name->german-markup #t) + \set chordNoteNamer = #note-name->german-markup } -tieHalfDashed = { - \override Tie #'dash-definition = #'((0 0.5 0.4 0.75) - (0.5 1 1 1)) +semiGermanChords = { + \set chordRootNamer = #(chord-name->german-markup #f) + \set chordNoteNamer = #note-name->german-markup } -tieHalfSolid = { - \override Tie #'dash-definition = #'((0 0.5 1 1) - (0.5 1 0.4 0.75)) +italianChords = { + \set chordRootNamer = #(chord-name->italian-markup #f) + \set chordPrefixSpacer = #0.4 } -tieSolid = { - \revert Tie #'dash-definition +powerChords = { + \set chordNameExceptions = #powerChordExceptions } -easyHeadsOn = { - \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil - \override NoteHead #'font-size = #-7 - \override NoteHead #'font-family = #'sans - \override NoteHead #'font-series = #'bold -} -easyHeadsOff = { - \revert NoteHead #'stencil - \revert NoteHead #'font-size - \revert NoteHead #'font-family - \revert NoteHead #'font-series -} +%% compressFullBarRests + +compressFullBarRests = \set Score.skipBars = ##t +expandFullBarRests = \set Score.skipBars = ##f -aikenHeads = \set shapeNoteStyles = #'#(do re mi fa #f la ti) -sacredHarpHeads = \set shapeNoteStyles = #'#(fa #f la fa #f la mi) +%% dots + +dotsUp = \override Dots #'direction = #UP +dotsDown = \override Dots #'direction = #DOWN +dotsNeutral = \revert Dots #'direction + + +%% dynamics dynamicUp = { \override DynamicText #'direction = #UP \override DynamicLineSpanner #'direction = #UP } - dynamicDown = { \override DynamicText #'direction = #DOWN \override DynamicLineSpanner #'direction = #DOWN } - dynamicNeutral = { \revert DynamicText #'direction \revert DynamicLineSpanner #'direction } -dotsUp = \override Dots #'direction = #UP -dotsDown = \override Dots #'direction = #DOWN -dotsNeutral = \revert Dots #'direction - -tupletUp = \override TupletBracket #'direction = #UP -tupletDown = \override TupletBracket #'direction = #DOWN -tupletNeutral = \revert TupletBracket #'direction - -cadenzaOn = \set Timing.timing = ##f -cadenzaOff = { - \set Timing.timing = ##t - \set Timing.measurePosition = #ZERO-MOMENT -} - -% dynamic ly:dir? text script, articulation script ly:dir? -oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice) -voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice) -voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice) -voiceThree = #(context-spec-music (make-voice-props-set 2) 'Voice) -voiceFour = #(context-spec-music (make-voice-props-set 3) 'Voice) - -voiceOneStyle = { - \override NoteHead #'style = #'diamond - \override NoteHead #'color = #red - \override Stem #'color = #red - \override Beam #'color = #red -} -voiceTwoStyle = { - \override NoteHead #'style = #'triangle - \override NoteHead #'color = #blue - \override Stem #'color = #blue - \override Beam #'color = #blue -} -voiceThreeStyle = { - \override NoteHead #'style = #'xcircle - \override NoteHead #'color = #green - \override Stem #'color = #green - \override Beam #'color = #green -} -voiceFourStyle = { - \override NoteHead #'style = #'cross - \override NoteHead #'color = #magenta - \override Stem #'color = #magenta - \override Beam #'color = #magenta -} -voiceNeutralStyle = { - \revert NoteHead #'style - \revert NoteHead #'color - \revert Stem #'color - \revert Beam #'color -} - -teeny = { - \set fontSize = #-3 -} - -tiny = { - \set fontSize = #-2 -} +%% easy heads -small = { - \set fontSize = #-1 +easyHeadsOn = { + \override NoteHead #'stencil = #note-head::brew-ez-stencil + \override NoteHead #'font-size = #-8 + \override NoteHead #'font-family = #'sans + \override NoteHead #'font-series = #'bold } - -normalsize = { - \set fontSize = #0 +easyHeadsOff = { + \revert NoteHead #'stencil + \revert NoteHead #'font-size + \revert NoteHead #'font-family + \revert NoteHead #'font-series } -large = { - \set fontSize = #1 -} -huge = { - \set fontSize = #2 -} +%% endincipit %% End the incipit and print a ``normal line start''. endincipit = \context Staff { @@ -234,99 +194,49 @@ endincipit = \context Staff { \bar "" } -autoBeamOff = \set autoBeaming = ##f -autoBeamOn = \set autoBeaming = ##t - -textLengthOn = { - \override TextScript #'extra-spacing-width = #'(0 . 0) - \override TextScript #'extra-spacing-height = #'(-inf.0 . +inf.0) -} - -textLengthOff = { - \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0) - \override TextScript #'extra-spacing-height = #'(0 . 0) -} - -balloonLengthOn = { - \override BalloonTextItem #'extra-spacing-width = #'(0 . 0) - \override BalloonTextItem #'extra-spacing-height = #'(-inf.0 . +inf.0) -} -balloonLengthOff = { - \override BalloonTextItem #'extra-spacing-width = #'(+inf.0 . -inf.0) - \override BalloonTextItem #'extra-spacing-height = #'(0 . 0) -} +%% fermata markup +fermataMarkup = +#(make-music 'MultiMeasureTextEvent + 'tweaks (list + ;; Set the 'text based on the 'direction + (cons 'text (lambda (grob) + (if (eq? (ly:grob-property grob 'direction) DOWN) + (markup #:musicglyph "scripts.dfermata") + (markup #:musicglyph "scripts.ufermata")))) + (cons 'outside-staff-priority 40) + (cons 'outside-staff-padding 0))) -showStaffSwitch = \set followVoice = ##t -hideStaffSwitch = \set followVoice = ##f +%% font sizes -expandFullBarRests = { - \set Score.skipBars = ##f -} +teeny = \set fontSize = #-3 +tiny = \set fontSize = #-2 +small = \set fontSize = #-1 +normalsize = \set fontSize = #0 +large = \set fontSize = #1 +huge = \set fontSize = #2 -compressFullBarRests = { - \set Score.skipBars = ##t -} -numericTimeSignature = { - \override Staff.TimeSignature #'style = #'() -} +%% glissando -defaultTimeSignature = { - \revert Staff.TimeSignature #'style -} - - -% For drawing vertical chord brackets with \arpeggio -% This is a shorthand for the value of the print-function property -% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether -% cross-staff brackets are desired. - -arpeggio = #(make-music 'ArpeggioEvent) +glissando = #(make-music 'GlissandoEvent) -arpeggioArrowUp = { - \revert Arpeggio #'stencil - \revert Arpeggio #'X-extent - \override Arpeggio #'arpeggio-direction = #UP -} -arpeggioArrowDown = { - \revert Arpeggio #'stencil - \revert Arpeggio #'X-extent - \override Arpeggio #'arpeggio-direction = #DOWN -} -arpeggioNormal = { - \revert Arpeggio #'stencil - \revert Arpeggio #'X-extent - \revert Arpeggio #'arpeggio-direction - \revert Arpeggio #'dash-definition -} -arpeggioBracket = { - \revert Arpeggio #'X-extent - \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket -} -arpeggioParenthesis = { - \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur - \override Arpeggio #'X-extent = #ly:grob::stencil-width - \revert Arpeggio #'dash-definition -} -arpeggioParenthesisDashed = { - \override Arpeggio #'stencil = #ly:arpeggio::brew-chord-slur - \override Arpeggio #'X-extent = #ly:grob::stencil-width - \override Arpeggio #'dash-definition = #'((0 1 0.4 0.75)) -} +%% harmonics +harmonicsOn = +#(define-music-function (parser location) () + (_i "Set the default note head style to a diamond-shaped style.") + (override-head-style '(NoteHead TabNoteHead) 'harmonic)) +harmonicsOff = \defaultNoteHeads +harmonicNote = +#(define-music-function (parser location note) (ly:music?) + (_i "Print @var{note} with a diamond-shaped note head.") + (style-note-heads 'NoteHead 'harmonic note)) -glissando = #(make-music 'GlissandoEvent) -fermataMarkup = -#(make-music 'MultiMeasureTextEvent - ; Set the 'text based on the 'direction - 'tweaks (list (cons 'text (lambda (grob) - (if (eq? (ly:grob-property grob 'direction) DOWN) - (markup #:musicglyph "scripts.dfermata") - (markup #:musicglyph "scripts.ufermata")))))) +%% hideNotes hideNotes = { % hide notes, accidentals, etc. @@ -334,135 +244,218 @@ hideNotes = { \override NoteHead #'transparent = ##t \override NoteHead #'no-ledgers = ##t \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \override Beam #'transparent = ##t \override Accidental #'transparent = ##t + \override Rest #'transparent = ##t } - - unHideNotes = { \revert Accidental #'transparent \revert Beam #'transparent \revert Stem #'transparent + \revert Flag #'transparent \revert NoteHead #'transparent \revert NoteHead #'no-ledgers \revert Dots #'transparent + \revert Rest #'transparent } -germanChords = { - \set chordRootNamer = #(chord-name->german-markup #t) - \set chordNoteNamer = #note-name->german-markup -} -semiGermanChords = { - \set chordRootNamer = #(chord-name->german-markup #f) - \set chordNoteNamer = #note-name->german-markup -} - -frenchChords = { - \set chordRootNamer = #(chord-name->italian-markup #t) - \set chordPrefixSpacer = #0.4 -} - -italianChords = { - \set chordRootNamer = #(chord-name->italian-markup #f) - \set chordPrefixSpacer = #0.4 -} - -harmonicsOn = \override NoteHead #'style = #'harmonic -harmonicsOff = \revert NoteHead #'style +%% improvisation improvisationOn = { \set squashedPosition = #0 \override NoteHead #'style = #'slash \override Accidental #'stencil = ##f + \override AccidentalCautionary #'stencil = ##f } - improvisationOff = { \unset squashedPosition \revert NoteHead #'style \revert Accidental #'stencil + \revert AccidentalCautionary #'stencil } -textSpannerUp = \override TextSpanner #'direction = #UP -textSpannerDown = \override TextSpanner #'direction = #DOWN -textSpannerNeutral = \revert TextSpanner #'direction +%% merging +mergeDifferentlyDottedOn = + \override Staff.NoteCollision #'merge-differently-dotted = ##t +mergeDifferentlyDottedOff = + \revert Staff.NoteCollision #'merge-differently-dotted +mergeDifferentlyHeadedOn = + \override Staff.NoteCollision #'merge-differently-headed = ##t +mergeDifferentlyHeadedOff = + \revert Staff.NoteCollision #'merge-differently-headed -bassFigureExtendersOn = { - \set useBassFigureExtenders = ##t - \set Staff.useBassFigureExtenders = ##t -} -bassFigureExtendersOff = { - \set useBassFigureExtenders = ##f - \set Staff.useBassFigureExtenders = ##f -} +%% numeric time signature -bassFigureStaffAlignmentDown = { - \override Staff.BassFigureAlignmentPositioning #'direction = #DOWN -} +numericTimeSignature = \override Staff.TimeSignature #'style = #'numbered +defaultTimeSignature = \revert Staff.TimeSignature #'style -bassFigureStaffAlignmentUp = { - \override Staff.BassFigureAlignmentPositioning #'direction = #UP -} -bassFigureStaffAlignmentNeutral = { - \revert Staff.BassFigureAlignmentPositioning #'direction -} +%% palm mutes -predefinedFretboardsOff = { - \set FretBoards.predefinedDiagramTable = ##f -} +palmMuteOn = +#(define-music-function (parser location) () + (_i "Set the default note head style to a triangle-shaped style.") + (override-head-style 'NoteHead 'do)) +palmMuteOff = \defaultNoteHeads +palmMute = +#(define-music-function (parser location note) (ly:music?) + (_i "Print @var{note} with a triangle-shaped note head.") + (style-note-heads 'NoteHead 'do note)) -predefinedFretboardsOn = { - \set FretBoards.predefinedDiagramTable = #fretboard-table -} -pointAndClickOff = #(define-music-function (parser location) () - (ly:set-option 'point-and-click #f) - (make-music 'SequentialMusic 'void #t)) +%% phrasing slurs -pointAndClickOn = #(define-music-function (parser location) () - (ly:set-option 'point-and-click #t) - (make-music 'SequentialMusic 'void #t)) +% directions +phrasingSlurUp = \override PhrasingSlur #'direction = #UP +phrasingSlurDown = \override PhrasingSlur #'direction = #DOWN +phrasingSlurNeutral = \revert PhrasingSlur #'direction -palmMuteOn = -#(define-music-function (parser location) () - (override-head-style 'NoteHead 'do)) +% dash-patterns (make-simple-dash-definition defined at top of file) +phrasingSlurDashPattern = +#(define-music-function (parser location dash-fraction dash-period) + (number? number?) + (_i "Set up a custom style of dash pattern for @var{dash-fraction} ratio of +line to space repeated at @var{dash-period} interval for phrasing slurs.") + #{ + \override PhrasingSlur #'dash-definition = + $(make-simple-dash-definition dash-fraction dash-period) + #}) +phrasingSlurDashed = + \override PhrasingSlur #'dash-definition = #'((0 1 0.4 0.75)) +phrasingSlurDotted = + \override PhrasingSlur #'dash-definition = #'((0 1 0.1 0.75)) +phrasingSlurHalfDashed = + \override PhrasingSlur #'dash-definition = #'((0 0.5 0.4 0.75) + (0.5 1 1 1)) +phrasingSlurHalfSolid = + \override PhrasingSlur #'dash-definition = #'((0 0.5 1 1) + (0.5 1 0.4 0.75)) +phrasingSlurSolid = + \revert PhrasingSlur #'dash-definition -palmMuteOff = -#(define-music-function (parser location) () - (revert-head-style 'NoteHead)) -palmMute = -#(define-music-function (parser location note) (ly:music?) - (style-note-heads 'NoteHead 'do note)) +%% point and click -xNotesOn = +pointAndClickOn = #(define-music-function (parser location) () - (override-head-style '(TabNoteHead NoteHead) 'cross)) + (_i "Enable generation of code in final-format (e.g. pdf) files to reference the +originating lilypond source statement; +this is helpful when developing a score but generates bigger final-format files.") + (ly:set-option 'point-and-click #t) + (make-music 'SequentialMusic 'void #t)) -xNotesOff = +pointAndClickOff = #(define-music-function (parser location) () - (revert-head-style '(TabNoteHead NoteHead))) + (_i "Suppress generating extra code in final-format (e.g. pdf) files to point +back to the lilypond source statement.") + (ly:set-option 'point-and-click #f) + (make-music 'SequentialMusic 'void #t)) + +pointAndClickTypes = +#(define-void-function (parser location types) (list-or-symbol?) + (_i "Set a type or list of types (such as @code{#'note-event}) for which point-and-click info is generated.") + (ly:set-option 'point-and-click types)) + +%% predefined fretboards + +predefinedFretboardsOff = + \set predefinedDiagramTable = ##f +predefinedFretboardsOn = + \set predefinedDiagramTable = #default-fret-table + + +%% shape note heads + +aikenHeads = \set shapeNoteStyles = #'#(do re miMirror fa sol la ti) +aikenHeadsMinor = \set shapeNoteStyles = #'#(la ti do re miMirror fa sol) +funkHeads = + \set shapeNoteStyles = #'#(doFunk reFunk miFunk faFunk solFunk laFunk tiFunk) +funkHeadsMinor = + \set shapeNoteStyles = #'#(laFunk tiFunk doFunk reFunk miFunk faFunk solFunk) +sacredHarpHeads = \set shapeNoteStyles = #'#(fa sol la fa sol la mi) +sacredHarpHeadsMinor = \set shapeNoteStyles = #'#(la mi fa sol la fa sol) +southernHarmonyHeads = + \set shapeNoteStyles = #'#(faThin sol laThin faThin sol laThin miThin) +southernHarmonyHeadsMinor = + \set shapeNoteStyles = #'#(laThin miThin faThin sol laThin faThin sol) +walkerHeads = + \set shapeNoteStyles = #'#(doWalker reWalker miWalker faWalker solFunk laWalker tiWalker) +walkerHeadsMinor = + \set shapeNoteStyles = #'#(laWalker tiWalker doWalker reWalker miWalker faWalker solFunk) + + +%% shifts + +shiftOn = \override NoteColumn #'horizontal-shift = #1 +shiftOnn = \override NoteColumn #'horizontal-shift = #2 +shiftOnnn = \override NoteColumn #'horizontal-shift = #3 +shiftOff = \revert NoteColumn #'horizontal-shift -xNote = -#(define-music-function (parser location note) (ly:music?) - (style-note-heads '(TabNoteHead NoteHead) 'cross note)) -% Define aliases of cross-head notes for specific purposes -deadNotesOn = \xNotesOn -deadNotesOff = \xNotesOff -deadNote = #`(xNote) +%% slurs + +% directions +slurUp = \override Slur #'direction = #UP +slurDown = \override Slur #'direction = #DOWN +slurNeutral = \revert Slur #'direction + +% dash-patterns (make-simple-dash-definition defined at top of file) +slurDashPattern = +#(define-music-function (parser location dash-fraction dash-period) + (number? number?) + (_i "Set up a custom style of dash pattern for @var{dash-fraction} +ratio of line to space repeated at @var{dash-period} interval for slurs.") + #{ + \override Slur #'dash-definition = + $(make-simple-dash-definition dash-fraction dash-period) + #}) +slurDashed = \override Slur #'dash-definition = #'((0 1 0.4 0.75)) +slurDotted = \override Slur #'dash-definition = #'((0 1 0.1 0.75)) +slurHalfDashed = \override Slur #'dash-definition = #'((0 0.5 0.4 0.75) + (0.5 1 1 1)) +slurHalfSolid = \override Slur #'dash-definition = #'((0 0.5 1 1) + (0.5 1 0.4 0.75)) +slurSolid = \revert Slur #'dash-definition + +%% staff switches + +showStaffSwitch = \set followVoice = ##t +hideStaffSwitch = \set followVoice = ##f + + +%% stems + +stemUp = \override Stem #'direction = #UP +stemDown = \override Stem #'direction = #DOWN +stemNeutral = \revert Stem #'direction + + +%% tablature + +% switch to full notation tabFullNotation = { % time signature \revert TabStaff.TimeSignature #'stencil % stems (the half note gets a double stem) + \revert TabVoice.Stem #'length + \revert TabVoice.Stem #'no-stem-extend + \revert TabVoice.Flag #'style + \revert TabVoice.Stem #'details + \revert TabVoice.Stem #'transparent + \revert TabVoice.Flag #'transparent \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes + \override TabVoice.Stem #'X-extent = #tabvoice::make-double-stem-width-for-half-notes + \set autoBeaming = ##t + \revert NoteColumn #'ignore-collision % beams, dots \revert TabVoice.Beam #'stencil + \revert TabVoice.StemTremolo #'stencil \revert TabVoice.Dots #'stencil \revert TabVoice.Tie #'stencil \revert TabVoice.Tie #'after-line-breaking @@ -470,20 +463,161 @@ tabFullNotation = { \revert TabVoice.RepeatTie #'after-line-breaking \revert TabVoice.LaissezVibrerTie #'stencil \revert TabVoice.Slur #'stencil - \revert PhrasingSlur #'stencil + \revert TabVoice.PhrasingSlur #'stencil % tuplet stuff \revert TabVoice.TupletBracket #'stencil \revert TabVoice.TupletNumber #'stencil % dynamic signs - \revert DynamicText #'transparent - \revert DynamicTextSpanner #'stencil + \revert TabVoice.DynamicText #'transparent + \revert TabVoice.DynamicTextSpanner #'stencil \revert TabVoice.DynamicTextSpanner #'stencil \revert TabVoice.Hairpin #'transparent % rests \revert TabVoice.Rest #'stencil \revert TabVoice.MultiMeasureRest #'stencil + \revert TabVoice.MultiMeasureRestNumber #'transparent + \revert TabVoice.MultiMeasureRestText #'transparent % markups etc. + \revert TabVoice.Glissando #'stencil \revert TabVoice.Script #'stencil \revert TabVoice.TextScript #'stencil + \revert TabVoice.TextSpanner #'stencil \revert TabStaff.Arpeggio #'stencil + \revert TabStaff.NoteColumn #'ignore-collision +} + +%tie/repeat tie behaviour +hideSplitTiedTabNotes = { + \override TabVoice.TabNoteHead #'(details tied-properties break-visibility) = #all-invisible + \override TabVoice.TabNoteHead #'(details tied-properties parenthesize) = ##f + \override TabVoice.TabNoteHead #'(details repeat-tied-properties note-head-visible) = ##f + \override TabVoice.TabNoteHead #'(details repeat-tied-properties parenthesize) = ##f +} + +showSplitTiedTabNotes = { + \override TabVoice.TabNoteHead #'(details tied-properties break-visibility) = #begin-of-line-visible + \override TabVoice.TabNoteHead #'(details tied-properties parenthesize) = ##t + \override TabVoice.TabNoteHead #'(details repeat-tied-properties note-head-visible) = ##t + \override TabVoice.TabNoteHead #'(details repeat-tied-properties parenthesize) = ##t +} + +%% text length + +textLengthOn = { + \override TextScript #'extra-spacing-width = #'(0 . 0) + \override TextScript #'extra-spacing-height = #'(-inf.0 . +inf.0) +} +textLengthOff = { + \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0) + \override TextScript #'extra-spacing-height = #'(0 . 0) } + + +%% text spanners + +textSpannerUp = \override TextSpanner #'direction = #UP +textSpannerDown = \override TextSpanner #'direction = #DOWN +textSpannerNeutral = \revert TextSpanner #'direction + + +%% ties + +% directions +tieUp = \override Tie #'direction = #UP +tieDown = \override Tie #'direction = #DOWN +tieNeutral = \revert Tie #'direction + +% dash-patterns (make-simple-dash-definition defined at top of file) +tieDashPattern = +#(define-music-function (parser location dash-fraction dash-period) + (number? number?) + (_i "Set up a custom style of dash pattern for @var{dash-fraction} +ratio of line to space repeated at @var{dash-period} interval for ties.") + #{ + \override Tie #'dash-definition = + $(make-simple-dash-definition dash-fraction dash-period) + #}) +tieDashed = \override Tie #'dash-definition = #'((0 1 0.4 0.75)) +tieDotted = \override Tie #'dash-definition = #'((0 1 0.1 0.75)) +tieHalfDashed = \override Tie #'dash-definition = #'((0 0.5 0.4 0.75) + (0.5 1 1 1)) +tieHalfSolid = \override Tie #'dash-definition = #'((0 0.5 1 1) + (0.5 1 0.4 0.75)) +tieSolid = \revert Tie #'dash-definition + + +%% tuplets + +tupletUp = \override TupletBracket #'direction = #UP +tupletDown = \override TupletBracket #'direction = #DOWN +tupletNeutral = \revert TupletBracket #'direction + + +%% voice properties + +% dynamic ly:dir? text script, articulation script ly:dir? +voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice) +voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice) +voiceThree = #(context-spec-music (make-voice-props-set 2) 'Voice) +voiceFour = #(context-spec-music (make-voice-props-set 3) 'Voice) +oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice) + + +%% voice styles + +voiceOneStyle = { + \override NoteHead #'style = #'diamond + \override NoteHead #'color = #red + \override Stem #'color = #red + \override Flag #'color = #red + \override Beam #'color = #red +} +voiceTwoStyle = { + \override NoteHead #'style = #'triangle + \override NoteHead #'color = #blue + \override Stem #'color = #blue + \override Flag #'color = #blue + \override Beam #'color = #blue +} +voiceThreeStyle = { + \override NoteHead #'style = #'xcircle + \override NoteHead #'color = #green + \override Stem #'color = #green + \override Flag #'color = #green + \override Beam #'color = #green +} +voiceFourStyle = { + \override NoteHead #'style = #'cross + \override NoteHead #'color = #magenta + \override Stem #'color = #magenta + \override Flag #'color = #magenta + \override Beam #'color = #magenta +} +voiceNeutralStyle = { + \revert NoteHead #'style + \revert NoteHead #'color + \revert Stem #'color + \revert Flag #'color + \revert Beam #'color +} + + +%% x notes + +xNotesOn = +#(define-music-function (parser location) () + (_i "Set the default note head style to a cross-shaped style.") + (override-head-style '(TabNoteHead NoteHead) 'cross)) +xNotesOff = \defaultNoteHeads +xNote = +#(define-music-function (parser location note) (ly:music?) + (_i "Print @var{note} with a cross-shaped note head.") + (style-note-heads '(TabNoteHead NoteHead) 'cross note)) + + +%% dead notes (these need to come after "x notes") + +% Define aliases of cross-head notes for specific purposes +deadNotesOn = \xNotesOn +deadNotesOff = \xNotesOff +deadNote = #xNote