X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Fengraver-init.ly;h=d28b8be51b947e1c1391fd37ee7b774be47b8c2c;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=bc526e9ca2aa7d98e97085620520b0fc1c0978f2;hpb=621fe2a06e3c2c2276ae588b6f16ecef463c7454;p=lilypond.git diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index bc526e9ca2..d28b8be51b 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -1,4 +1,22 @@ -\version "2.10.0" +%%%% This file is part of LilyPond, the GNU music typesetter. +%%%% +%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys +%%%% Jan Nieuwenhuizen +%%%% +%%%% LilyPond is free software: you can redistribute it and/or modify +%%%% it under the terms of the GNU General Public License as published by +%%%% the Free Software Foundation, either version 3 of the License, or +%%%% (at your option) any later version. +%%%% +%%%% LilyPond is distributed in the hope that it will be useful, +%%%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%%%% GNU General Public License for more details. +%%%% +%%%% You should have received a copy of the GNU General Public License +%%%% along with LilyPond. If not, see . + +\version "2.14.0" \context { \name "Global" @@ -10,31 +28,37 @@ \grobdescriptions #all-grob-descriptions } - \context { \type "Engraver_group" \name "FretBoards" + \description "A context for displaying fret diagrams." - \consists "Output_property_engraver" - - \consists "Axis_group_engraver" \consists "Fretboard_engraver" + \consists "Output_property_engraver" + \consists "Hara_kiri_engraver" \consists "Separating_line_group_engraver" \consists "Font_size_engraver" \consists "Instrument_name_engraver" + + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() + + predefinedDiagramTable = #default-fret-table + handleNegativeFrets = #'recalculate } \context { \type "Engraver_group" \name "Staff" - - \consists "Output_property_engraver" + + \consists "Output_property_engraver" \consists "Bar_engraver" %% Bar_engraver must be first so default bars aren't overwritten %% with empty ones. - + \consists "Font_size_engraver" - \consists "Separating_line_group_engraver" + \consists "Separating_line_group_engraver" \consists "Dot_column_engraver" \consists "Staff_collecting_engraver" @@ -43,36 +67,36 @@ \consists "Clef_engraver" \consists "Key_engraver" \consists "Time_signature_engraver" - \consists "Ledger_line_engraver" + \consists "Ledger_line_engraver" \consists "Staff_symbol_engraver" \consists "Collision_engraver" + \consists "Beam_collision_engraver" + \consists "Grob_pq_engraver" \consists "Rest_collision_engraver" \consists "Accidental_engraver" \consists "Piano_pedal_engraver" \consists "Piano_pedal_align_engraver" \consists "Instrument_name_engraver" - \consists "String_number_engraver" \consists "Axis_group_engraver" \consists "Figured_bass_engraver" \consists "Figured_bass_position_engraver" \consists "Script_row_engraver" + \consists "Cue_clef_engraver" localKeySignature = #'() createSpacing = ##t - ignoreFiguredBassRest = ##t - \override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4) - - %% explicitly set instrument, so we don't get + ignoreFiguredBassRest = ##f + + %% explicitly set instrument, so we don't get %% weird effects when doing instrument names for %% piano staves - instrumentName = #'() shortInstrumentName = #'() - + \defaultchild "Voice" \accepts "Voice" \accepts "CueVoice" - + \description "Handles clefs, bar lines, keys, accidentals. It can contain @code{Voice} contexts." @@ -83,13 +107,12 @@ \type "Engraver_group" \name "DrumStaff" \alias "Staff" - + \remove "Accidental_engraver" \remove "Ottava_spanner_engraver" - \remove "Key_engraver" + \remove "Key_engraver" \remove "Piano_pedal_engraver" - \remove "String_number_engraver" - + \description "Handles typesetting for percussion." \denies "Voice" @@ -98,15 +121,22 @@ clefGlyph = #"clefs.percussion" clefPosition = #0 - \override Script #'staff-padding = #0.75 + \override Script #'staff-padding = #0.75 } \context { \type "Engraver_group" - \name "InnerChoirStaff" + \name "ChoirStaff" + \consists "Vertical_align_engraver" + topLevelAlignment = ##f + + \consists "Instrument_name_engraver" \consists "System_start_delimiter_engraver" systemStartDelimiter = #'SystemStartBracket + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() vocalName = #'() shortVocalName = #'() @@ -117,42 +147,34 @@ \accepts "PianoStaff" \accepts "Lyrics" \accepts "ChordNames" + \accepts "FiguredBass" + \accepts "ChoirStaff" + \accepts "StaffGroup" \defaultchild "Staff" -} - -\context { - \InnerChoirStaff - \name ChoirStaff - - \defaultchild "Staff" - \accepts "InnerChoirStaff" - \accepts "InnerStaffGroup" \description "Identical to @code{StaffGroup} except that the contained staves are not connected vertically." - } \context{ \type "Engraver_group" - - \override VerticalAxisGroup #'minimum-Y-extent = ##f + localKeySignature = #'() createSpacing = ##t squashedPosition = #0 \name RhythmicStaff \alias "Staff" - - \override BarLine #'bar-size = #4 + + \override BarLine #'bar-extent = #'(-2 . 2) \override VoltaBracket #'staff-padding = #3 - \override StaffSymbol #'line-count = #1 + \override StaffSymbol #'line-count = #1 \override Stem #'neutral-direction = #UP \override Beam #'neutral-direction = #UP - + \consists "Output_property_engraver" \consists "Font_size_engraver" - \consists "Separating_line_group_engraver" + \consists "Separating_line_group_engraver" \consists "Dot_column_engraver" \consists "Bar_engraver" \consists "Staff_symbol_engraver" @@ -160,8 +182,12 @@ contained staves are not connected vertically." \consists "Time_signature_engraver" \consists "Instrument_name_engraver" \consists "Axis_group_engraver" - \consists "Ledger_line_engraver" - + \consists "Ledger_line_engraver" + + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() + \accepts "Voice" \accepts "CueVoice" \defaultchild "Voice" @@ -182,11 +208,10 @@ subscripts, slurs, ties, and rests. You have to instantiate this explicitly if you want to have multiple voices on the same staff." - localKeySignature = #'() \consists "Font_size_engraver" \consists "Pitched_trill_engraver" - \consists "Output_property_engraver" + \consists "Output_property_engraver" \consists "Arpeggio_engraver" \consists "Multi_measure_rest_engraver" \consists "Text_spanner_engraver" @@ -203,7 +228,8 @@ multiple voices on the same staff." \consists "Dots_engraver" \consists "Rest_engraver" \consists "Tweak_engraver" - + \consists "Footnote_engraver" + %% switch on to make stem directions interpolate for the %% center line. % \consists "Melody_engraver" @@ -215,14 +241,17 @@ multiple voices on the same staff." %% must come before Script_column_engraver. \consists "New_fingering_engraver" - + \consists "Chord_tremolo_engraver" + \consists "Double_percent_repeat_engraver" \consists "Percent_repeat_engraver" \consists "Slash_repeat_engraver" \consists "Part_combine_engraver" \consists "Text_engraver" - \consists "Dynamic_engraver" + \consists "New_dynamic_engraver" + \consists "Dynamic_align_engraver" +% \consists "Dynamic_engraver" \consists "Fingering_engraver" \consists "Bend_engraver" @@ -238,17 +267,17 @@ multiple voices on the same staff." \consists "Tuplet_engraver" \consists "Grace_engraver" \consists "Instrument_switch_engraver" - \consists "Skip_event_swallow_translator" } \context{ \Voice - + \name CueVoice \alias Voice fontSize = #-4 \override Stem #'length-fraction = #(magstep -4) \override Beam #'length-fraction = #(magstep -4) + \override Beam #'beam-thickness = #0.35 } \context { @@ -270,27 +299,37 @@ multiple voices on the same staff." \remove "Fingering_engraver" \remove "Cluster_spanner_engraver" - - \consists "Skip_event_swallow_translator" } \context{ \type "Engraver_group" \name GrandStaff localKeySignature = #'() - + \description "A group of staves, with a brace on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically." + \consists "Instrument_name_engraver" \consists "Span_bar_engraver" \consists "Span_arpeggio_engraver" \consists "System_start_delimiter_engraver" + \consists "Vertical_align_engraver" systemStartDelimiter = #'SystemStartBrace + topLevelAlignment = ##f + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() \defaultchild "Staff" \accepts "Staff" + \accepts "RhythmicStaff" + \accepts "DrumStaff" + \accepts "TabStaff" + \accepts "Lyrics" \accepts "FiguredBass" + \accepts "Dynamics" + \accepts "ChordNames" } \context{ @@ -298,24 +337,32 @@ contained staves are connected vertically." \name "PianoStaff" \alias "GrandStaff" - \description "Just like @code{GrandStaff} but with a forced -distance between the staves, so cross staff beaming and slurring -can be used." + \description "Just like @code{GrandStaff}, but the staves are only removed +together, never separately." + + \consists "Vertical_align_engraver" + \consists "Keep_alive_together_engraver" + topLevelAlignment = ##f - \consists "Instrument_name_engraver" - instrumentName = #'() shortInstrumentName = #'() } \context { \type "Engraver_group" - \name InnerStaffGroup + \name "StaffGroup" + + \consists "Vertical_align_engraver" + topLevelAlignment = ##f + \consists "Instrument_name_engraver" \consists "Span_bar_engraver" \consists "Span_arpeggio_engraver" - \consists "Output_property_engraver" + \consists "Output_property_engraver" systemStartDelimiter = #'SystemStartBracket + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() \consists "System_start_delimiter_engraver" @@ -325,51 +372,80 @@ can be used." \accepts "DrumStaff" \accepts "GrandStaff" \accepts "PianoStaff" - \accepts "TabStaff" + \accepts "TabStaff" \accepts "Lyrics" \accepts "ChordNames" -} + \accepts "FiguredBass" + \accepts "ChoirStaff" + \accepts "StaffGroup" -\context { - \InnerStaffGroup - \name StaffGroup - \description "Groups staves while adding a bracket on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically. @code{StaffGroup} only consists of a collection of staves, with a bracket in front and spanning bar lines." - - \accepts "InnerChoirStaff" - \accepts "ChoirStaff" - \accepts "InnerStaffGroup" - \accepts "FiguredBass" +} + +\context { + \type "Engraver_group" + \name Dynamics + \alias Voice + \consists "Output_property_engraver" + \consists "Bar_engraver" + \consists "Piano_pedal_engraver" + \consists "Script_engraver" + \consists "New_dynamic_engraver" + \consists "Dynamic_align_engraver" + \consists "Text_engraver" + \consists "Text_spanner_engraver" + \consists "Axis_group_engraver" + \consists "Tweak_engraver" + + pedalSustainStrings = #'("Ped." "*Ped." "*") + pedalUnaCordaStrings = #'("una corda" "" "tre corde") + \override VerticalAxisGroup #'staff-affinity = #CENTER + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = + #'((basic-distance . 5) + (padding . 0.5)) + \override TextScript #'font-shape = #'italic + \override DynamicLineSpanner #'Y-offset = #0 + + \description "Holds a single line of dynamics, which will be +centered between the staves surrounding this context." } \context{ \type "Engraver_group" - \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.75 . 2.0) \description "Corresponds to a voice with lyrics. Handles the printing of a single line of lyrics." - + \name "Lyrics" - instrumentName = #'() - shortInstrumentName = #'() - \consists "Lyric_engraver" \consists "Extender_engraver" \consists "Hyphen_engraver" \consists "Stanza_number_engraver" \consists "Instrument_name_engraver" - \consists "Skip_event_swallow_translator" \consists "Font_size_engraver" \consists "Hara_kiri_engraver" + searchForVoice = ##f + %% explicitly set instrument, so it is not inherited from the parent + instrumentName = #'() + shortInstrumentName = #'() \override VerticalAxisGroup #'remove-first = ##t \override VerticalAxisGroup #'remove-empty = ##t - \override VerticalAxisGroup #'keep-fixed-while-stretching = ##t - \override SeparationItem #'padding = #0.2 + \override VerticalAxisGroup #'staff-affinity = #UP + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = + #'((basic-distance . 5.5) + (padding . 0.5) + (stretchability . 1)) + \override VerticalAxisGroup #'nonstaff-nonstaff-spacing = + #'((basic-distance . 0) + (minimum-distance . 2.8) + (padding . 0.2) + (stretchability . 0)) + \override VerticalAxisGroup #'nonstaff-unrelatedstaff-spacing #'padding = #1.5 \override InstrumentName #'self-alignment-Y = ##f %% sync with define-grobs.scm ; @@ -377,20 +453,29 @@ printing of a single line of lyrics." %% make sure that barlines aren't collapsed, when %% Bar_engraver is there. - \override BarLine #'bar-size = #0.1 - + \override BarLine #'bar-extent = #'(-0.05 . 0.05) + } \context { \type "Engraver_group" \name NoteNames + \description "A context for printing the names of notes." \consists "Axis_group_engraver" - \override VerticalAxisGroup #'minimum-Y-extent = ##f + \override VerticalAxisGroup #'staff-affinity = #UP + \override VerticalAxisGroup #'nonstaff-nonstaff-spacing = + #'((basic-distance . 0) + (minimum-distance . 2.8) + (padding . 0.2) + (stretchability . 0)) + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing = + #'((basic-distance . 5.5) + (padding . 0.5) + (stretchability . 1)) + \override VerticalAxisGroup + #'nonstaff-unrelatedstaff-spacing #'padding = 1.5 - - \consists "Rest_swallow_translator" - \consists "Skip_event_swallow_translator" \consists "Tie_engraver" \consists "Note_name_engraver" \consists "Separating_line_group_engraver" @@ -400,41 +485,37 @@ printing of a single line of lyrics." \type "Engraver_group" \name ChordNames \description "Typesets chord names." - - \consists "Rest_swallow_translator" - \consists "Output_property_engraver" + + \consists "Output_property_engraver" \consists "Separating_line_group_engraver" \consists "Chord_name_engraver" - \consists "Skip_event_swallow_translator" \consists "Hara_kiri_engraver" % \consists "Note_spacing_engraver" - \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2) \override VerticalAxisGroup #'remove-first = ##t \override VerticalAxisGroup #'remove-empty = ##t + \override VerticalAxisGroup #'staff-affinity = #DOWN + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5 + \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5 } -RemoveEmptyStaffContext= \context { - \Staff +RemoveEmptyStaves = \with { \remove "Axis_group_engraver" + % If RemoveEmptyStaves is called twice, two + % Hara_kiri_engravers would be added, which leads to a + % warning. + % This code makes sure that no previous Hara_kiri_engraver + % is left before adding a new one. + \remove "Hara_kiri_engraver" \consists "Hara_kiri_engraver" - \override Beam #'auto-knee-gap = #'() \override VerticalAxisGroup #'remove-empty = ##t } -AncientRemoveEmptyStaffContext = \context { -%% why not add by default? - - \RemoveEmptyStaffContext - \accepts "VaticanaVoice" - \accepts "GregorianTranscriptionVoice" - \accepts "MensuralVoice" -} \context { \type "Score_engraver" \name "Score" - + \description "This is the top level notation context. No other context can contain a @code{Score} context. This context handles the administration of time signatures. It also makes sure @@ -447,7 +528,6 @@ automatically when an output definition (a @code{\score} or @code{\layout} block) is processed." \consists "Paper_column_engraver" - \consists "Vertically_spaced_contexts_engraver" \consists "Repeat_acknowledge_engraver" \consists "Staff_collecting_engraver" @@ -459,7 +539,7 @@ automatically when an output definition (a @code{\score} or \consists "System_start_delimiter_engraver" \consists "Mark_engraver" \consists "Volta_engraver" - \consists "Metronome_mark_engraver" + \consists "Metronome_mark_engraver" \consists "Break_align_engraver" \consists "Spacing_engraver" \consists "Grace_spacing_engraver" @@ -467,7 +547,7 @@ automatically when an output definition (a @code{\score} or \consists "Stanza_number_align_engraver" \consists "Bar_number_engraver" \consists "Parenthesis_engraver" - + \defaultchild "Staff" \accepts "FretBoards" @@ -490,14 +570,16 @@ automatically when an output definition (a @code{\score} or noteToFretFunction = #determine-frets + predefinedDiagramTable = ##f soloText = #"Solo" soloIIText = #"Solo II" aDueText = #"a2" printPartCombineTexts = ##t + partCombineTextsOnNote = ##t systemStartDelimiter =#'SystemStartBar drumStyleTable = #drums-style - + melismaBusyProperties = #default-melisma-properties tieWaitForNote = ##f clefGlyph = #"clefs.G" @@ -505,18 +587,35 @@ automatically when an output definition (a @code{\score} or middleCClefPosition = #-6 middleCPosition = #-6 firstClef = ##t - + + crescendoSpanner = #'hairpin + decrescendoSpanner = #'hairpin + defaultBarType = #"|" + doubleRepeatType = #":|:" barNumberVisibility = #first-bar-number-invisible automaticBars = ##t - + explicitClefVisibility = #all-visible + explicitCueClefVisibility = #end-of-line-invisible explicitKeySignatureVisibility = #all-visible implicitTimeSignatureVisibility = #end-of-line-invisible - - autoBeamSettings = #default-auto-beam-settings + + repeatCountVisibility = #all-repeat-counts-visible + + timeSignatureSettings = #default-time-signature-settings + timeSignatureFraction = #'(4 . 4) + +%% These defaults should be the same as the rules established in +%% scm/time-signature-settings.scm for 4/4 time + measureLength = #(ly:make-moment 4 4) + baseMoment = #(ly:make-moment 1 4) + beatStructure = #'(1 1 1 1) + beamExceptions = #'((end . (((1 . 8) . (4 4)) + ((1 . 12) . (3 3 3 3))))) autoBeaming = ##t autoBeamCheck = #default-auto-beam-check + scriptDefinitions = #default-script-alist pedalSustainStrings = #'("Ped." "*Ped." "*") @@ -525,39 +624,39 @@ automatically when an output definition (a @code{\score} or pedalUnaCordaStyle = #'text %% These are in ordinary italic font, including the *, -%% but they are unlikely to be used, +%% but they are unlikely to be used, %% as the default pedal-style for SostenutoPedal is 'mixed': -%% i.e. Sost. Ped_____________________ - pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") +%% i.e. Sost. Ped_____________________ + pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") pedalSostenutoStyle = #'mixed - harmonicAccidentals = ##t + harmonicAccidentals = ##t fingeringOrientations = #'(up down) stringNumberOrientations = #'(up down) strokeFingerOrientations = #'(right) - + lyricMelismaAlignment = #LEFT markFormatter = #format-mark-letters rehearsalMark = #1 subdivideBeams = ##f - allowBeamBreak = ##f extraNatural = ##t - autoAccidentals = #'(Staff (same-octave . 0)) - autoCautionaries = #'() + autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)) + autoCautionaries = #'() printKeyCancellation = ##t keyAlterationOrder = #`( (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT) (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT) (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP) (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT) - (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP) + (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP) ) barCheckSynchronize = ##f - + %% chord names: chordNameFunction = #ignatzek-chord-names majorSevenSymbol = #whiteTriangleMarkup + chordNameLowercaseMinor = ##f chordNameSeparator = #(make-simple-markup "/") chordNameExceptions = #ignatzekExceptions chordNoteNamer = #'() @@ -565,7 +664,7 @@ automatically when an output definition (a @code{\score} or chordPrefixSpacer = #0 chordNameExceptionsFull = #fullJazzExceptions chordNameExceptionsPartial = #partialJazzExceptions - + noChordSymbol = #(make-simple-markup "N.C.") bassStaffProperties = #'((assign clefGlyph "clefs.F") (assign clefPosition 2) @@ -575,10 +674,11 @@ automatically when an output definition (a @code{\score} or stringOneTopmost = ##t highStringOne = ##t -%% One may change the strings tuning as following : -%% The lenght of the list must be equal to the number of string +%% One may change the string tunings as follows : +%% The length of the list must be equal to the number of strings stringTunings = #guitar-tuning tablatureFormat = #fret-number-tablature-format + tabStaffLineLayoutFunction = #tablature-position-on-lines %% figuredBassFormatter = #format-bass-figure @@ -590,25 +690,38 @@ automatically when an output definition (a @code{\score} or (Voice Stem direction ,UP) (Voice Stem font-size -3) (Voice NoteHead font-size -3) + (Voice TabNoteHead font-size -4) (Voice Dots font-size -3) (Voice Stem length-fraction 0.8) (Voice Stem no-stem-extend #t) - (Voice Beam thickness 0.384) + (Voice Beam beam-thickness 0.384) (Voice Beam length-fraction 0.8) (Voice Accidental font-size -4) (Voice AccidentalCautionary font-size -4) (Voice Slur direction ,DOWN) (Voice Script font-size -3) + (Voice Fingering font-size -8) + (Voice StringNumber font-size -8) ) keepAliveInterfaces = #'( - rhythmic-grob-interface + bass-figure-interface + chord-name-interface + cluster-beacon-interface + fret-diagram-interface + lyric-syllable-interface + note-head-interface + tab-note-head-interface lyric-interface + percent-repeat-item-interface + percent-repeat-interface - ;; need this, as stanza numbers are items, and appear only once. + ;; need this, as stanza numbers are items, and appear only once. stanza-number-interface - percent-repeat-interface) - quotedEventTypes = #'( + ) + % \quoteDuring is supposed to quote everything, cueDuring only the essentials + quotedEventTypes = #'(StreamEvent) + quotedCueEventTypes = #'( note-event rest-event tie-event @@ -616,10 +729,8 @@ automatically when an output definition (a @code{\score} or tuplet-span-event) instrumentTransposition = #(ly:make-pitch 0 0 0) - verticallySpacedContexts = #'(Staff) + topLevelAlignment = ##t - \override Voice #'hairpinToBarline = ##t - timing = ##t } @@ -629,26 +740,26 @@ automatically when an output definition (a @code{\score} or \context { \type "Engraver_group" \name "FiguredBass" + \description "A context for printing a figured bass line." \consists "Figured_bass_engraver" - \consists "Note_swallow_translator" - \consists "Skip_event_swallow_translator" \consists "Separating_line_group_engraver" \consists "Hara_kiri_engraver" \override VerticalAxisGroup #'remove-empty = ##t \override VerticalAxisGroup #'remove-first = ##t - \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2) + \override VerticalAxisGroup #'staff-affinity = #UP + \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5 + \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5 } \context { \name "Devnull" \type "Engraver_group" -%% don't want to route anything out of here: +%% don't want to route anything out of here: \alias "Staff" \alias "Voice" - \consists "Swallow_engraver" \description "Silently discards all musical information given to this context." } @@ -658,8 +769,8 @@ context." \name "TabVoice" \alias "Voice" \consists "Tab_note_heads_engraver" - \consists "Tab_harmonic_engraver" - + \consists "Tab_tie_follow_engraver" + \remove "Note_heads_engraver" \remove "Fingering_engraver" \remove "New_fingering_engraver" @@ -669,19 +780,69 @@ context." %% TabStaff increase the staff-space, which in turn %% increases beam thickness and spacing; beams are %% too big. We have to adjust the beam settings: - \override Beam #'thickness = #0.32 + \override Beam #'beam-thickness = #0.32 \override Beam #'length-fraction = #0.62 + %% the same goes for tremolo beams + \override StemTremolo #'beam-thickness = #0.32 + %% NOTE: in lily/stem-tremolo.cc, we have length-fraction = 1, + %% and the tablature staff space is scaled (1.5 by default), + %% so we use the inversion of the scale factor: + \override StemTremolo #'length-fraction = #(lambda (grob) + (/ 1 (ly:staff-symbol-staff-space grob))) + \override StemTremolo #'beam-width = #stem-tremolo::calc-tab-width %% No accidental in tablature ! - \remove Accidental_engraver - - \override Glissando #'extra-dy = #0.75 + \remove "Accidental_engraver" + %% make the Stems as short as possible to minimize their influence + %% on the slur::calc-control-points routine + \override Stem #'length = #0 + \override Stem #'no-stem-extend = ##t + \override Stem #'flag-style = #'no-flag + \override Stem #'details = #'((lengths 0 0 0 0 0 0) + (beamed-lengths 0 0 0) + (beamed-minimum-free-lengths 0 0 0) + (beamed-extreme-minimum-free-lengths 0 0) + (stem-shorten 0 0)) + %% after all, the stubs of the stems may still be visible, so ... + \override Stem #'transparent = ##t + %% automatic beams should be suppressed for similar reasons ... + autoBeaming = ##f + %% remove beams, dots and rests ... + \override Beam #'stencil = ##f + \override StemTremolo #'stencil = ##f + \override Dots #'stencil = ##f + \override Rest #'stencil = ##f + \override MultiMeasureRest #'stencil = ##f + \override MultiMeasureRestNumber #'transparent = ##t + \override MultiMeasureRestText #'transparent = ##t + %% ... all kinds of ties/slurs + \override Tie #'stencil = ##f + \override RepeatTie #'stencil = ##f + \override LaissezVibrerTie #'stencil = ##f + \override Slur #'stencil = #slur::draw-tab-slur + \override PhrasingSlur #'stencil = ##f + %% 'tied to' fret numbers become invisible or parenthesized, respectively) + \override Tie #'after-line-breaking = #tie::handle-tab-note-head + \override RepeatTie #'after-line-breaking = #repeat-tie::handle-tab-note-head + %% ... and all kinds of markups, spanners etc. + \override TupletBracket #'stencil = ##f + \override TupletNumber #'stencil = ##f + \override DynamicText #'transparent = ##t + \override DynamicTextSpanner #'stencil = ##f + \override TextSpanner #'stencil = ##f + \override Hairpin #'transparent = ##t + \override Script #'stencil = ##f + \override TextScript #'stencil = ##f + \override Glissando #'stencil = #glissando::draw-tab-glissando + %% the direction for glissando lines will be automatically corrected + \override Glissando #'extra-dy = #glissando::calc-tab-extra-dy \override Glissando #'bound-details #'right = #`((attach-dir . ,LEFT) (padding . 0.3)) \override Glissando #'bound-details #'left = #`((attach-dir . ,RIGHT) (padding . 0.3)) - \override Glissando #'extra-dy = #0.75 - \override Glissando #'gap = #0.2 + %% dead notes + \override TabNoteHead #'glyph-name = #tab-note-head::calc-glyph-name + \override TabNoteHead #'stencil = #tab-note-head::whiteout-if-style-set } \context { @@ -690,37 +851,40 @@ context." \name "TabStaff" \denies "Voice" \consists "Tab_staff_symbol_engraver" - - \description "Context for generating tablature. [DOCME]" + + \description "Context for generating tablature. It accepts only @code{TabVoice} +contexts and handles the line spacing, the tablature clef etc. properly." \accepts "TabVoice" \defaultchild "TabVoice" - - %% 6 strings + + %% 6 strings, bigger spacing \override StaffSymbol #'staff-space = #1.5 %% Don't draw stems over the tablature figures ! \override Stem #'avoid-note-head = ##t - + %% No accidental in tablature ! \remove "Accidental_engraver" \remove "Key_engraver" - \remove "String_number_engraver" + + \remove "Ottava_spanner_engraver" + %% the clef handler + \override Clef #'stencil = #clef::print-modern-tab-if-set + %% no time signature + \override TimeSignature #'stencil = ##f + %% no arpeggios + \override Arpeggio #'stencil = ##f + %% we ignore collision warnings that may occur due to + %% stem overlapping, because we have no stems ;-) + \override NoteColumn #'ignore-collision = ##t %% Special "TAB" clef clefGlyph = #"clefs.tab" clefPosition = #0 + %% Change string if note results in negative fret number + handleNegativeFrets = #'recalculate } -%% TODO: Gregorian Chant contexts should be moved to gregorian-init.ly, -%% but this does not work (is this a bug or intended behaviour?): -%% -%% If I try to do so, I get "error: unknown escaped string: -%% `\VaticanaStaff'" in params-init.ly. If I also move -%% "\context { \Vaticana*Context }" from params-init.ly to the end -%% of gregorian-init.ly, then I get "error: parse error, unexpected -%% TRANSLATOR: \context { \VaticanaStaff }" in -%% gregorian-init.ly. --jr - \context { \Voice \name "VaticanaVoice" @@ -733,6 +897,8 @@ of Editio Vaticana." \remove "Stem_engraver" \remove "Ligature_bracket_engraver" \consists "Vaticana_ligature_engraver" + \remove "Text_spanner_engraver" + \consists "Episema_engraver" %% Set default head for notes outside of \[ \]. \override NoteHead #'style = #'vaticana.punctum @@ -743,15 +909,6 @@ of Editio Vaticana." %% There are no beams in Gregorian Chant notation. autoBeaming = ##f - - %% Prepare TextSpanner for \episem{Initium|Finis} use. - %% - %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is - %% required to force the articulation signs being placed vertically - %% tightly to the correpsonding note heads. - %% - \override TextSpanner #'style = #'line - \override TextSpanner #'padding = #-0.1 } \context { @@ -788,7 +945,7 @@ of Editio Vaticana." clefOctavation = #0 %% Select vaticana style font. - \override KeySignature #'style = #'vaticana + \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist \override Accidental #'glyph-name-alist = #alteration-vaticana-glyph-name-alist \override Custos #'style = #'vaticana \override Custos #'neutral-position = #3 @@ -800,7 +957,8 @@ of Editio Vaticana." \Voice \name "GregorianTranscriptionVoice" \alias "Voice" - + \consists "Episema_engraver" + %% Removing ligature bracket engraver without replacing it by some %% other ligature engraver would cause a "Junking event: `LigatureEvent'" %% warning for every "\[" and "\]". Therefore, we make the grob @@ -814,18 +972,6 @@ of Editio Vaticana." %% There are no beams in Gregorian Chant notation. autoBeaming = ##f - %% Prepare TextSpanner for \episem{Initium|Finis} use. - %% - %% N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will - %% always produce dashed lines, regardless of the style property. - %% - %% FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is - %% required to force the articulation signs being placed vertically - %% tightly to the correpsonding note heads. - %% - \override TextSpanner #'dash-fraction = #'() - \override TextSpanner #'style = #'line - \override TextSpanner #'padding = #-0.1 } \context { @@ -854,7 +1000,8 @@ accommodated for typesetting a piece in mensural style." \consists "Mensural_ligature_engraver" %% Set default head for notes outside of \[ \]. - \override NoteHead #'style = #'petrucci + \override NoteHead #'style = #'mensural + \override Rest #'style = #'mensural %% There are no beams in mensural notation. autoBeaming = ##f @@ -882,8 +1029,8 @@ accommodated for typesetting a piece in mensural style." %% FIXME: unit on StaffSymbol's width should be \linewidth. %% \override StaffSymbol #'width = #60.0 - %% Choose petrucci g clef on 2nd line as default. - clefGlyph = #"clefs.petrucci.g" + %% Choose mensural g clef on 2nd line as default. + clefGlyph = #"clefs.mensural.g" middleCClefPosition = #-6 middleCPosition = #-6 clefPosition = #-2 @@ -891,7 +1038,7 @@ accommodated for typesetting a piece in mensural style." %% Select mensural style font. \override TimeSignature #'style = #'mensural - \override KeySignature #'style = #'mensural + \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist \override Accidental #'glyph-name-alist = #alteration-mensural-glyph-name-alist \override Custos #'style = #'mensural \override Custos #'neutral-position = #3 @@ -900,15 +1047,39 @@ accommodated for typesetting a piece in mensural style." %% Accidentals are valid only once (same as %% #(set-accidental-style 'forget)) extraNatural = ##f - autoAccidentals = #'(Staff (same-octave . -1)) - autoCautionaries = #'() + autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1)) + autoCautionaries = #'() printKeyCancellation = ##f } -RemoveEmptyRhythmicStaffContext= \context { +%% Keep the old definitions in here for compatibility (they erase previous +%% settings to the corresponding context!). +%% For new scores, one should simply insert the \RemoveEmptyStaves settings +%% into the desired context. That's just as easy, requires only one line more +%% (the \*Staff), but preserves previous context mods. +%% TODO: DEPRECATED_2.13.17, remove at some point in the future +RemoveEmptyStaffContext = \context { + \Staff + \RemoveEmptyStaves +} + +AncientRemoveEmptyStaffContext = \context { + \VaticanaStaff + \RemoveEmptyStaves +} + +RemoveEmptyDrumStaffContext = \context { + \DrumStaff + \RemoveEmptyStaves +} + +RemoveEmptyRhythmicStaffContext = \context { \RhythmicStaff - \remove "Axis_group_engraver" - \override VerticalAxisGroup #'remove-empty = ##t - \consists "Hara_kiri_engraver" + \RemoveEmptyStaves +} + +RemoveEmptyTabStaffContext = \context { + \TabStaff + \RemoveEmptyStaves }