]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/engraver-init.ly
Merge branch 'master' of git://git.savannah.gnu.org/lilypond.git
[lilypond.git] / ly / engraver-init.ly
index 6d4b656dd7e0cb68a21d1a1f84e41cb84f77ce2c..badb701e08579e8aa7bb4f70ec8b027eaaae0380 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
 %%%% You should have received a copy of the GNU General Public License
 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-\version "2.13.10"
+\version "2.14.0"
 
 \context {
   \name "Global"
   \consists "Font_size_engraver"
   \consists "Instrument_name_engraver"
 
-  predefinedDiagramTable = #fretboard-table
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
+
+  predefinedDiagramTable = #default-fret-table
+  handleNegativeFrets = #'recalculate
 }
 
 \context {
@@ -65,6 +70,7 @@
   \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"
@@ -75,6 +81,7 @@
   \consists "Figured_bass_engraver"
   \consists "Figured_bass_position_engraver"
   \consists "Script_row_engraver"
+  \consists "Cue_clef_engraver"
 
   localKeySignature = #'()
   createSpacing = ##t
@@ -83,7 +90,6 @@
   %% explicitly set instrument, so we don't get
   %% weird effects when doing instrument names for
   %% piano staves
-
   instrumentName = #'()
   shortInstrumentName = #'()
 
   \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 = #'()
 
@@ -155,7 +165,7 @@ contained staves are not connected vertically."
   \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
 
@@ -174,6 +184,10 @@ contained staves are not connected vertically."
   \consists "Axis_group_engraver"
   \consists "Ledger_line_engraver"
 
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
+
   \accepts "Voice"
   \accepts "CueVoice"
   \defaultchild "Voice"
@@ -194,7 +208,6 @@ 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"
@@ -215,6 +228,7 @@ 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.
@@ -229,6 +243,7 @@ multiple voices on the same staff."
   \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"
@@ -295,15 +310,26 @@ multiple voices on the same staff."
 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{
@@ -311,15 +337,13 @@ contained staves are connected vertically."
   \name "PianoStaff"
   \alias "GrandStaff"
 
-  \description "Just like @code{GrandStaff} but with support for
-instrument names at the start of each system."
+  \description "Just like @code{GrandStaff}, but the staves are only removed
+together, never separately."
 
-  \consists "Instrument_name_engraver"
   \consists "Vertical_align_engraver"
+  \consists "Keep_alive_together_engraver"
   topLevelAlignment = ##f
 
-  \override StaffGrouper #'between-staff-spacing #'stretchability = #5
-
   instrumentName = #'()
   shortInstrumentName = #'()
 }
@@ -331,10 +355,14 @@ instrument names at the start of each system."
   \consists "Vertical_align_engraver"
   topLevelAlignment = ##f
 
+  \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
   \consists "Span_arpeggio_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"
 
@@ -370,11 +398,14 @@ a collection of staves, with a bracket in front and spanning bar lines."
   \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 #'inter-staff-spacing = #'((space . 5) (padding . 0.5))
+  \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing =
+    #'((basic-distance . 5)
+       (padding . 0.5))
   \override TextScript #'font-shape = #'italic
   \override DynamicLineSpanner #'Y-offset = #0
 
@@ -390,9 +421,6 @@ centered between the staves surrounding this context."
 printing of a single line of lyrics."
 
   \name "Lyrics"
-  instrumentName = #'()
-  shortInstrumentName = #'()
-
   \consists "Lyric_engraver"
   \consists "Extender_engraver"
   \consists "Hyphen_engraver"
@@ -400,14 +428,24 @@ printing of a single line of lyrics."
   \consists "Instrument_name_engraver"
   \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 #'staff-affinity = #UP
-  \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
-  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
-  \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0
-  \override SeparationItem #'padding = #0.2
+  \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 ;
@@ -415,7 +453,7 @@ 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)
 
 }
 
@@ -425,8 +463,18 @@ printing of a single line of lyrics."
   \description "A context for printing the names of notes."
   \consists "Axis_group_engraver"
 
-  % FIXME: not sure what the default should be here.
-  \override VerticalAxisGroup #'staff-affinity = #DOWN
+  \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 "Tie_engraver"
   \consists "Note_name_engraver"
@@ -446,26 +494,8 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'remove-first = ##t
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'staff-affinity = #DOWN
-  \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
-  \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
-}
-
-
-RemoveEmptyStaffContext = \context {
-  \Staff
-  \remove "Axis_group_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"
+  \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
+  \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
 }
 
 \context {
@@ -484,7 +514,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"
 
@@ -532,6 +561,7 @@ automatically when an output definition (a @code{\score} or
   soloIIText = #"Solo II"
   aDueText = #"a2"
   printPartCombineTexts = ##t
+  partCombineTextsOnNote = ##t
   systemStartDelimiter =#'SystemStartBar
 
   drumStyleTable = #drums-style
@@ -553,14 +583,25 @@ automatically when an output definition (a @code{\score} or
   automaticBars = ##t
 
   explicitClefVisibility = #all-visible
+  explicitCueClefVisibility = #end-of-line-invisible
   explicitKeySignatureVisibility = #all-visible
   implicitTimeSignatureVisibility = #end-of-line-invisible
 
   repeatCountVisibility = #all-repeat-counts-visible
 
-  beamSettings = #default-beam-settings
+  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." "*")
@@ -593,7 +634,7 @@ automatically when an output definition (a @code{\score} or
     (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
@@ -601,6 +642,7 @@ automatically when an output definition (a @code{\score} or
 %% chord names:
   chordNameFunction = #ignatzek-chord-names
   majorSevenSymbol = #whiteTriangleMarkup
+  chordNameLowercaseMinor = ##f
   chordNameSeparator = #(make-simple-markup  "/")
   chordNameExceptions = #ignatzekExceptions
   chordNoteNamer = #'()
@@ -649,7 +691,13 @@ automatically when an output definition (a @code{\score} or
   )
 
   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
@@ -667,7 +715,6 @@ automatically when an output definition (a @code{\score} or
     tuplet-span-event)
   instrumentTransposition = #(ly:make-pitch 0 0 0)
 
-  verticallySpacedContexts = #'(Staff)
   topLevelAlignment = ##t
 
   timing = ##t
@@ -688,8 +735,8 @@ automatically when an output definition (a @code{\score} or
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'remove-first = ##t
   \override VerticalAxisGroup #'staff-affinity = #UP
-  \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
-  \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
+  \override VerticalAxisGroup #'nonstaff-relatedstaff-spacing #'padding = #0.5
+  \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
 }
 
 \context {
@@ -708,7 +755,7 @@ 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"
@@ -721,6 +768,14 @@ context."
   %% too big. We have to adjust the beam settings:
   \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"
@@ -740,10 +795,12 @@ context."
   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
@@ -762,6 +819,7 @@ context."
   \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)
@@ -801,8 +859,6 @@ contexts and handles the line spacing, the tablature clef etc. properly."
   \override Clef #'stencil = #clef::print-modern-tab-if-set
   %% no time signature
   \override TimeSignature #'stencil = ##f
-  %% better parentheses in a TabStaff
-  \override ParenthesesItem #'stencils = #parentheses-item::calc-tabstaff-parenthesis-stencils
   %% no arpeggios
   \override Arpeggio #'stencil = ##f
   %% we ignore collision warnings that may occur due to
@@ -811,6 +867,8 @@ contexts and handles the line spacing, the tablature clef etc. properly."
   %% Special "TAB" clef
   clefGlyph = #"clefs.tab"
   clefPosition = #0
+  %% Change string if note results in negative fret number
+  handleNegativeFrets = #'recalculate
 }
 
 \context {
@@ -980,24 +1038,33 @@ accommodated for typesetting a piece in mensural style."
   printKeyCancellation = ##f
 }
 
+%% 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
-  \remove "Axis_group_engraver"
-  \override VerticalAxisGroup #'remove-empty = ##t
-  \consists "Hara_kiri_engraver"
+  \RemoveEmptyStaves
 }
 
 RemoveEmptyRhythmicStaffContext = \context {
   \RhythmicStaff
-  \remove "Axis_group_engraver"
-  \override VerticalAxisGroup #'remove-empty = ##t
-  \consists "Hara_kiri_engraver"
+  \RemoveEmptyStaves
 }
 
 RemoveEmptyTabStaffContext = \context {
   \TabStaff
-  \remove "Axis_group_engraver"
-  \override VerticalAxisGroup #'remove-empty = ##t
-  \consists "Hara_kiri_engraver"
+  \RemoveEmptyStaves
 }
-