]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/engraver-init.ly
Add glyphs and basic support for Kievan Notation
[lilypond.git] / ly / engraver-init.ly
index 4a3a303832997a6337c1f0fbdbd6447add4677d4..6335ab65b1fcd0fb168e0098cfa8efa57ecabe0f 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2012 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.42"
+\version "2.15.20"
 
 \context {
   \name "Global"
   \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 {
 
   \consists "Output_property_engraver"
   \consists "Bar_engraver"
+  \consists "Pure_from_neighbor_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 "Dot_column_engraver"
   \consists "Staff_collecting_engraver"
 
  %% perhaps move to Voice context?
@@ -84,7 +89,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 = #'()
 
@@ -156,7 +164,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
 
@@ -175,6 +183,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"
@@ -195,7 +207,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"
@@ -214,8 +225,10 @@ multiple voices on the same staff."
   \consists "Breathing_sign_engraver"
   \consists "Note_heads_engraver"
   \consists "Dots_engraver"
+  \consists "Dot_column_engraver"
   \consists "Rest_engraver"
   \consists "Tweak_engraver"
+  \consists "Footnote_engraver"
 
   %% switch on to make stem directions interpolate for the
   %% center line.
@@ -230,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"
@@ -296,16 +310,27 @@ 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_bar_stub_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{
@@ -313,10 +338,9 @@ 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
@@ -332,10 +356,15 @@ instrument names at the start of each system."
   \consists "Vertical_align_engraver"
   topLevelAlignment = ##f
 
+  \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
+  \consists "Span_bar_stub_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"
 
@@ -371,6 +400,7 @@ 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")
@@ -380,6 +410,13 @@ a collection of staves, with a bracket in front and spanning bar lines."
        (padding . 0.5))
   \override TextScript #'font-shape = #'italic
   \override DynamicLineSpanner #'Y-offset = #0
+  \override DynamicText #'X-offset =
+  #(ly:make-simple-closure
+    `(,+
+      ,(ly:make-simple-closure
+         (list ly:self-alignment-interface::centered-on-note-columns))
+      ,(ly:make-simple-closure
+        (list ly:self-alignment-interface::x-aligned-on-self))))
 
   \description "Holds a single line of dynamics, which will be
 centered between the staves surrounding this context."
@@ -393,9 +430,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"
@@ -403,6 +437,11 @@ printing of a single line of lyrics."
   \consists "Instrument_name_engraver"
   \consists "Font_size_engraver"
   \consists "Hara_kiri_engraver"
+  \consists "Pure_from_neighbor_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
@@ -424,7 +463,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)
 
 }
 
@@ -434,8 +473,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"
@@ -459,20 +508,6 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'padding = #0.5
 }
 
-
-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 VerticalAxisGroup #'remove-empty = ##t
-}
-
-
 \context {
   \type "Score_engraver"
   \name "Score"
@@ -494,6 +529,7 @@ automatically when an output definition (a @code{\score} or
 
   %% move the alias along with the engraver.
 
+  % timing translator must come BEFORE bar number engraver
   \consists "Timing_translator"
   \consists "Default_bar_line_engraver"
   \consists "Output_property_engraver"
@@ -508,6 +544,8 @@ automatically when an output definition (a @code{\score} or
   \consists "Stanza_number_align_engraver"
   \consists "Bar_number_engraver"
   \consists "Parenthesis_engraver"
+  \consists "Concurrent_hairpin_engraver"
+  \consists "Beam_collision_engraver"
 
   \defaultchild "Staff"
 
@@ -518,8 +556,10 @@ automatically when an output definition (a @code{\score} or
   \accepts "VaticanaStaff"
   \accepts "GregorianTranscriptionStaff"
   \accepts "MensuralStaff"
+  \accepts "PetrucciStaff"
   \accepts "StaffGroup"
   \accepts "DrumStaff"
+  \accepts "KievanStaff"
   \accepts "Lyrics"
   \accepts "ChordNames"
   \accepts "GrandStaff"
@@ -529,7 +569,6 @@ automatically when an output definition (a @code{\score} or
   \accepts "NoteNames"
   \accepts "FiguredBass"
 
-
   noteToFretFunction = #determine-frets
   predefinedDiagramTable = ##f
   soloText = #"Solo"
@@ -554,7 +593,8 @@ automatically when an output definition (a @code{\score} or
 
   defaultBarType = #"|"
   doubleRepeatType = #":|:"
-  barNumberVisibility = #first-bar-number-invisible
+  barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
+  barNumberFormatter = #robust-bar-number-function
   automaticBars = ##t
 
   explicitClefVisibility = #all-visible
@@ -616,9 +656,12 @@ automatically when an output definition (a @code{\score} or
 
 %% chord names:
   chordNameFunction = #ignatzek-chord-names
+  minorChordModifier = #(make-simple-markup "m")
+  additionalPitchPrefix = #"" % was "add"
   majorSevenSymbol = #whiteTriangleMarkup
   chordNameLowercaseMinor = ##f
-  chordNameSeparator = #(make-simple-markup  "/")
+  chordNameSeparator = #(make-hspace-markup 0.5)
+  slashChordSeparator = #(make-simple-markup "/")
   chordNameExceptions = #ignatzekExceptions
   chordNoteNamer = #'()
   chordRootNamer = #note-name->markup
@@ -650,6 +693,7 @@ automatically when an output definition (a @code{\score} or
   graceSettings = #`(
     (Voice Stem direction ,UP)
     (Voice Stem font-size -3)
+    (Voice Flag font-size -3)
     (Voice NoteHead font-size -3)
     (Voice TabNoteHead font-size -4)
     (Voice Dots font-size -3)
@@ -735,6 +779,7 @@ context."
   \remove "Note_heads_engraver"
   \remove "Fingering_engraver"
   \remove "New_fingering_engraver"
+  \remove "Pitched_trill_engraver"
 
   \description "Context for drawing notes in a Tab staff."
 
@@ -756,9 +801,8 @@ context."
   \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 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)
@@ -766,6 +810,7 @@ context."
                                 (stem-shorten 0 0))
   %% after all, the stubs of the stems may still be visible, so ...
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   %% automatic beams should be suppressed for similar reasons ...
   autoBeaming = ##f
   %% remove beams, dots and rests ...
@@ -842,6 +887,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 {
@@ -961,6 +1008,7 @@ accommodated for typesetting a piece in mensural style."
   %% Set default head for notes outside of \[ \].
   \override NoteHead #'style = #'mensural
   \override Rest #'style = #'mensural
+  \override Flag #'style = #'mensural
 
   %% There are no beams in mensural notation.
   autoBeaming = ##f
@@ -1004,13 +1052,115 @@ accommodated for typesetting a piece in mensural style."
   \override Custos #'neutral-direction = #DOWN
 
   %% Accidentals are valid only once (same as
-  %% #(set-accidental-style 'forget))
+  %% \accidentalStyle "forget")
   extraNatural = ##f
   autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave -1))
   autoCautionaries = #'()
   printKeyCancellation = ##f
 }
 
+\context {
+  \Voice
+  \name "PetrucciVoice"
+  \alias "Voice"
+  \description "Same as @code{Voice} context, except that it is
+accommodated for typesetting a piece in Petrucci style."
+
+  \remove "Ligature_bracket_engraver"
+  \consists "Mensural_ligature_engraver"
+
+  %% Set glyph styles.
+  \override NoteHead #'style = #'petrucci
+  \override Rest #'style = #'mensural
+
+  % Thickens and shortens stems.
+  \override Stem #'thickness = #1.7
+  \override Stem #'length = #5
+
+  %% There are no beams in Petrucci notation.
+  autoBeaming = ##f
+}
+
+\context {
+  \Staff
+  \name "PetrucciStaff"
+  \alias "Staff"
+  \denies "Voice"
+  \defaultchild "PetrucciVoice"
+  \accepts "PetrucciVoice"
+  \description "Same as @code{Staff} context, except that it is
+accommodated for typesetting a piece in Petrucci style."
+
+  \consists "Custos_engraver"
+
+  \override StaffSymbol #'thickness = #1.3
+
+  %% Choose Petrucci g clef on 2nd line as default.
+  clefGlyph = #"clefs.petrucci.g"
+  middleCClefPosition = #-6
+  middleCPosition = #-6
+  clefPosition = #-2
+  clefOctavation = #0
+
+  \override Custos #'style = #'mensural
+  \override Custos #'neutral-position = #3
+  \override Custos #'neutral-direction = #DOWN
+
+  %% Accidentals are valid only once (if the following note is different)
+  extraNatural = ##f
+  autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
+                             ,neo-modern-accidental-rule)
+  autoCautionaries = #'()
+  printKeyCancellation = ##f
+}
+
+\context {
+ \Voice
+ \name "KievanVoice"
+ \alias "Voice"
+ \description "Same as @code{Voice} context, except that it is
+accommodated for typesetting a piece in Kievan style."
+
+% \override Stem #'stencil = ##f
+
+ %% Set glyph styles.
+ \override NoteHead #'style = #'kievan
+ \override Rest #'style = #'mensural
+ \override Accidental #'glyph-name-alist = #alteration-kievan-glyph-name-alist
+ \override Dots #'style = #'kievan
+ \override Slur #'stencil = ##f
+
+ %% There are beams in Kievan notation, but they are invoked manually
+ autoBeaming = ##f
+ \override Beam #'beam-thickness = #0.32
+ \override Beam #'length-fraction = #0.62
+}
+
+\context {
+ \Staff
+ \name "KievanStaff"
+ \alias "Staff"
+ \denies "Voice"
+ \defaultchild "KievanVoice"
+ \accepts "KievanVoice"
+ \description "Same as @code{Staff} context, except that it is
+accommodated for typesetting a piece in Kievan style."
+
+ %% Choose Kievan tsefaut clef
+ clefGlyph = #"clefs.kievan.do"
+ middleCClefPosition = #0
+ middleCPosition = #0
+ clefPosition = #0
+ clefOctavation = #0
+
+ %% Accidentals are valid only once (if the following note is different)
+ extraNatural = ##f
+ autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0)
+                            ,neo-modern-accidental-rule)
+ autoCautionaries = #'()
+ printKeyCancellation = ##f
+
+}
 
 %% Keep the old definitions in here for compatibility (they erase previous
 %% settings to the corresponding context!).
@@ -1042,4 +1192,3 @@ RemoveEmptyTabStaffContext = \context {
   \TabStaff
   \RemoveEmptyStaves
 }
-