X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Fengraver.ly;h=d3fa0948e5c1721a0ac97eeec9763fcb4e582fad;hb=b0ace66ea381db8f5fbfee2d81a1dbcaab7b262f;hp=6db19042b6a378b57bfa4a78bf3a3519710c56e9;hpb=0f0860112a07a4eab33ac36d8c1b9b01d431ddfa;p=lilypond.git diff --git a/ly/engraver.ly b/ly/engraver.ly index 6db19042b6..d3fa0948e5 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -3,144 +3,249 @@ % StaffContext=\translator { - \type "Line_group_engraver_group"; + \type "Engraver_group_engraver"; \name Staff ; - barAuto = "1"; - voltaVisibility = "1"; + \consists "Output_property_engraver"; + barAuto = ##t + voltaVisibility = ##t + Generic_property_list = #generic-staff-properties + \consists "Property_engraver"; + + \consists "Multi_measure_rest_engraver"; + \consists "Bar_engraver"; + % Bar_engraver must be first so default bars aren't overwritten +% with empty ones. -%{ - The Hara_kiri_line_group_engraver is a Line_group_engraver - that will not typeset an empty line of staff, i.e., a line - of staff with only rests in it. This is needed for orchestral - scores. Comment-out Line_group_engraver_group, and uncomment - Hara_kiri_line_group_engraver. -%} -% \type "Hara_kiri_line_group_engraver"; + voltaPadding = #5 % urg, in \pt + voltaMinimumSpace = #25 % urg, in \pt + + StaffMinimumVerticalExtent = #(cons -4.0 4.0) - \consists "Multi_measure_rest_engraver"; \consists "Repeat_engraver"; - \consists "Bar_engraver"; + + + % name, glyph id, c0 position + supportedClefTypes = #'( + ("treble" . ("G" -2)) + ("violin" . ("G" -2)) + ("G" . ("G" -2)) + ("G2" . ("G" -2)) + ("french" . ("G" -4 )) + ("soprano" . ("C" -4 )) + ("mezzosoprano" . ("C" -2 )) + ("alto" . ("C" 0 )) + ("tenor" . ("C" 2 )) + ("baritone" . ("C" 4 )) + ("varbaritone" . ("F" 0)) + ("bass" . ("F" 2 )) + ("F" . ( "F" 2)) + ("subbass" . ("F" 4)) + ) + clefPitches = #'(("G" . -4) + ("C" . 0) + ("F" . 4)) + \consists "Clef_engraver"; \consists "Key_engraver"; - \consists "Local_key_engraver"; \consists "Time_signature_engraver"; \consists "Staff_symbol_engraver"; \consists "Collision_engraver"; \consists "Rest_collision_engraver"; + \consists "Local_key_engraver"; + + \consistsend "Axis_group_engraver"; + -%{ - Uncomment to get bar numbers on single staff systems: - - The Bar_number_engraver puts a number over a staff created - at the same level of hierarchy. This why you have to add it - here separately if you want to have numbers on single staff - systems: The Bar_number_engraver in Score_engraver will only - put numbers on bars that are Score ("system") wide. Such - bars are only created when the toplevel system has multiple - children-staffs. -%} -%{ - \consists "Bar_number_engraver"; -%} %{ - The Staff_margin_engraver puts the name of the instrument + The Instrument_name_engraver puts the name of the instrument (\property Staff.instrument; Staff.instr for subsequent lines) to the left of a staff. + Usually, you only want this in the full score, not in the parts. + + \consists "Instrument_name_engraver"; %} - defaultClef = treble; - marginBreakPriority = "-5"; + defaultClef = #"treble" -%{ - \consists "Staff_margin_engraver"; -%} \consists "Separating_line_group_engraver"; \accepts "Voice"; - dynamicStyle = "dynamic"; + dynamicStyle = #"dynamic" }; \translator{\StaffContext } \translator { - \type "Line_group_engraver_group"; + \type "Engraver_group_engraver"; \name ChoirStaff; - \consists "Vertical_align_engraver"; - \consists "Staff_group_bar_engraver"; + alignmentReference = \center; + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'bracket + + + \accepts "Staff"; \accepts "RhythmicStaff"; \accepts "GrandStaff"; \accepts "PianoStaff"; - + + \accepts "Lyrics"; \accepts "ChordNames"; } RhythmicStaffContext=\translator{ - \type "Line_group_engraver_group"; - numberOfStaffLines = "1"; + \type "Engraver_group_engraver"; + numberOfStaffLines = #1 + \consists "Property_engraver"; + \consists "Output_property_engraver"; + + Generic_property_list = #generic-staff-properties + + barSize = 4.0 * \interline ; \consists "Pitch_squash_engraver"; \consists "Separating_line_group_engraver"; \name RhythmicStaff; + voltaPadding = #5 % urg, in \pt + voltaMinimumSpace = #15 % urg, in \pt \consists "Repeat_engraver"; \consists "Bar_engraver"; \consists "Time_signature_engraver"; \consists "Staff_symbol_engraver"; + \consistsend "Axis_group_engraver"; \accepts "Voice"; }; \translator{\RhythmicStaffContext} + VoiceContext = \translator { \type "Engraver_group_engraver"; - \consists "Dynamic_engraver"; - \name Voice ; + \name Voice; + + dynamicPadding = #3 % urg, in \pt + dynamicMinimumSpace = #6 % urg, in \pt + + Generic_property_list = #generic-voice-properties + \consists "Output_property_engraver"; + + \consists "Dynamic_engraver"; % must come before text_engraver. + \consists "Property_engraver"; + \consists "Breathing_sign_engraver"; \consists "Rest_engraver"; \consists "Dot_column_engraver"; \consists "Stem_engraver"; \consists "Beam_engraver"; - \consists "Abbreviation_beam_engraver"; -% \consists "Multi_measure_rest_engraver"; + \consists "Auto_beam_engraver"; + \include "auto-beam-settings.ly"; - % ugh. Order matters here. + \consists "Chord_tremolo_engraver"; + \consists "Melisma_engraver"; + textScriptPadding = #3.0 \consists "Text_engraver"; + + + startSustain = #"Ped." + stopSustain = #"*" + stopStartSustain = #"*Ped." + startUnaChorda = #"una chorda" + stopUnaChorda = #"tre chorde" + \consists "Piano_pedal_engraver"; \consists "Script_engraver"; + \consists "Script_column_engraver"; \consists "Rhythmic_column_engraver"; - \consists "Font_size_engraver"; \consists "Slur_engraver"; \consists "Tie_engraver"; - \consists "Tuplet_engraver"; - \consists "Note_heads_engraver" ; + \consists "Tuplet_engraver"; + \consists "Grace_position_engraver"; \consists "Skip_req_swallow_translator"; + \accepts Thread; % bug if you leave out this! + \accepts Grace; }; +GraceContext=\translator { + \type "Grace_engraver_group"; + \name "Grace"; + \consists "Output_property_engraver"; + + Generic_property_list = #generic-grace-properties + + \consists "Note_heads_engraver"; + \consists "Local_key_engraver"; + \consists "Stem_engraver"; + \consists "Beam_engraver"; + \consists "Slur_engraver"; + + \consists "Auto_beam_engraver"; + \include "auto-beam-settings.ly"; + \consists "Align_note_column_engraver"; + + \consists "Rhythmic_column_engraver"; + \consists "Dynamic_engraver"; + \consists "Text_engraver"; + + \consists "Property_engraver"; + + stemStyle = #"grace" + flagStyle = #"grace" + weAreGraceContext = ##t + fontSize = #-1 + + stemLength = #6.0 + verticalDirection = \up ; + graceAccidentalSpace= 1.5 * \staffspace; +}; + +\translator{\GraceContext} \translator {\VoiceContext} +ThreadContext = \translator{ + \type Engraver_group_engraver; + \consists "Note_heads_engraver" ; + \consists "Output_property_engraver"; + Generic_property_list = #generic-thread-properties + \consists "Property_engraver"; + \name Thread; +}; + +\translator{\ThreadContext} GrandStaffContext=\translator{ - \type "Line_group_engraver_group"; + \type "Engraver_group_engraver"; \name GrandStaff; \consists "Span_bar_engraver"; - \consists "Vertical_align_engraver"; - \consists "Piano_bar_engraver"; - minVerticalAlign = 1.5*\staffheight; - + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'brace + + \consists "Property_engraver"; + Generic_property_list = #generic-grand-staff-properties \accepts "Staff"; }; \translator{\GrandStaffContext} -\translator{\GrandStaffContext + +PianoStaffContext = \translator{\GrandStaffContext + alignmentReference = \center; + + \consists "Vertical_align_engraver"; minVerticalAlign = 3.0*\staffheight; maxVerticalAlign = 3.0*\staffheight; + +% \consistsend "Axis_group_engraver"; \name "PianoStaff"; -} - -\translator { - \type "Hara_kiri_line_group_engraver"; -% \type "Line_group_engraver_group"; +}; +\translator{\PianoStaffContext} +StaffGroupContext= \translator { + \type "Engraver_group_engraver"; \consists "Span_bar_engraver"; - \consists "Vertical_align_engraver"; - \consists "Staff_group_bar_engraver"; + \consists "Output_property_engraver"; + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'bracket + + + + + \name StaffGroup; \accepts "Staff"; \accepts "RhythmicStaff"; @@ -149,69 +254,64 @@ GrandStaffContext=\translator{ \accepts "Lyrics"; \accepts "ChordNames"; -} +}; -\translator{ - \type "Line_group_engraver_group"; +\translator { \StaffGroupContext } + +% UGH! JUNKME +LyricsVoiceContext= \translator{ + \type "Engraver_group_engraver"; + \consistsend "Axis_group_engraver"; \name LyricVoice ; \consists "Separating_line_group_engraver"; \consists "Lyric_engraver"; \consists "Extender_engraver"; - \consists "Beam_req_swallow_translator"; -} + \consists "Hyphen_engraver"; +}; +\translator{ \LyricsVoiceContext } -\translator { - \type "Line_group_engraver_group"; +LyricsContext = \translator { + \type "Engraver_group_engraver"; \name Lyrics; - \consists "Vertical_align_engraver"; + \consists Vertical_align_engraver; %need this for getting folded repeats right. + Generic_property_list = #generic-lyrics-properties + \consists "Property_engraver"; + \consistsend "Axis_group_engraver"; + \accepts "LyricVoice"; -} - -\translator{ - \type "Line_group_engraver_group"; +}; +\translator { \LyricsContext } +ChordNameVoiceContext = \translator { + \type "Engraver_group_engraver"; \name ChordNameVoice ; + + \consists "Output_property_engraver"; + \consistsend "Axis_group_engraver"; \consists "Separating_line_group_engraver"; \consists "Chord_name_engraver"; -} +}; +\translator {\ChordNameVoiceContext} -\translator { - \type "Line_group_engraver_group"; +ChordNameContext = \translator { + \type "Engraver_group_engraver"; \name ChordNames; - \consists "Vertical_align_engraver"; - \accepts "ChordNameVoice"; -} - -ScoreContext = \translator { - \type Score_engraver; - \name Score; - - \consists "Timing_engraver"; - \consists "Span_score_bar_engraver"; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; + Generic_property_list = #generic-chord-staff-properties + \consists "Property_engraver"; + \consists "Output_property_engraver"; + \accepts "ChordNameVoice"; + \consistsend "Axis_group_engraver"; + }; +\translator { \ChordNameContext } - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "Lyrics"; - \accepts "ChordNames"; - \accepts "GrandStaff"; - \accepts "ChoirStaff"; - \accepts "PianoStaff"; -}; -\translator { \ScoreContext } - ScoreWithNumbers = \translator { \type "Score_engraver"; % uncomment to bar numbers on a whole system. \consists "Bar_number_engraver"; - }; StupidScore = \translator { @@ -224,67 +324,185 @@ StupidScore = \translator { BarNumberingStaffContext = \translator { \StaffContext - barColumnPriority = "0"; - marginBreakPriority = "-4"; \consists "Mark_engraver"; - \consists "Bar_number_engraver"; - }; HaraKiriStaffContext = \translator { - \type "Hara_kiri_line_group_engraver"; - \name Staff; - barColumnPriority = "0"; - marginBreakPriority = "-4"; - - \consists "Repeat_engraver"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Time_signature_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_symbol_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Staff_margin_engraver"; - \consists "Separating_line_group_engraver"; - + \StaffContext + \remove "Axis_group_engraver"; + \consistsend "Hara_kiri_engraver"; + \consists "Instrument_name_engraver"; \accepts "Voice"; }; +%{ + The HaraKiriStaffContexts doesn't override \name, + so it is still named `Staff'. + + %\translator { \HaraKiriStaffContext } +%} OrchestralPartStaffContext = \translator { \StaffContext - barColumnPriority = "0"; - marginBreakPriority = "-4"; \consists "Mark_engraver"; - \consists "Bar_number_engraver"; }; -OrchestralScoreContext= \translator { +ScoreContext = \translator { \type Score_engraver; \name Score; - barScriptPadding = "2.0"; % dimension \pt - markScriptPadding = "4.0"; - barColumnPriority = "-4"; - markBreakPriority = "-4"; - defaultClef = treble; + + marginScriptPadding = #10 % urg, in \pt \consists "Timing_engraver"; + \consists "Output_property_engraver"; + + %bracketCollapseHeight = #10 % \pt + \consists "System_start_delimiter_engraver"; + +% \consists "Score_priority_engraver"; + \consists "Break_align_engraver"; + breakAlignOrder = #'( + Instrument_name + Left_edge_item + Span_bar + Breathing_sign + Clef_item + Key_item + Staff_bar + Time_signature + ) + \consists "Spacing_engraver"; - \consists "Bar_number_engraver"; - \consists "Mark_engraver"; - \consists "Span_score_bar_engraver"; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; \consists "Vertical_align_engraver"; + \consists "Bar_number_engraver"; + alignmentReference = \down; + defaultClef = #"treble" + defaultBarType = #"|" + systemStartDelimiterGlyph = #'bar-line + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % default settings, mainly for breakable items + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + basicBarNumberProperties = #`( + (breakable . #t) + (visibility-lambda . ,begin-of-line-visible) + ) + basicMarkProperties = #'( + (breakable . #t) + (visibility-lambda . end-of-line-invisible) + ) + leftEdgeBasicProperties = #'( + (break-align-symbol . Left_edge_item) + (breakable . #t) + ) + + staffSymbolBasicProperties = #'( + (staff-space . 1.0 ) + (line-count . 5 ) + ) + basicTimeSignatureProperties = #`( + (break-align-symbol . Time_signature) + (visibility-lambda . ,all-visible) + (breakable . #t) + ) + basicBarlineProperties = #`( + (break-align-symbol . Staff_bar) + (visibility-lambda . ,begin-of-line-invisible) + (breakable . #t) + ) + basicSystemStartDelimiterProperties = #'( + (collapse-height . 1.0) + ) + basicKeyProperties = #`( + (break-align-symbol . Key_item) + (visibility-lambda . ,begin-of-line-visible) + (breakable . #t) + ) + basicClefItemProperties = #`( + (breakable . #t) + (break-align-symbol . Clef_item) + (visibility-lambda . ,begin-of-line-visible) + ) + + basicBeamProperties = #`( + (beam-thickness . 0.42) ; interline! + ) + basicStemTremoloProperties = #'( + (beam-width . 4.0) ; interline! + (beam-thickness . 0.42) ; interline! + ) + + basicBreathingSignProperties = #'( + (break-align-symbol . Breathing_sign) + (breakable . #t ) + (visibility-lambda . ,begin-of-line-invisible) + ) + basicOctavateEightProperties = #'( + (self-alignment-X . 0) + (text . "8") + (style . "italic") + ) + basicDynamicLineSpannerProperties = #`( + (transparent . #t) + ) + basicDynamicTextProperties = # `( + (style . "dynamic") + (script-priority . 100) + (self-alignment-Y . 0) + ) + basicLyricTextProperties = #`( + (non-rhythmic . #t) + ) + basicRestCollisionProperties = #`( + (transparent . #t) + ) + basicCollisionProperties = #`( + (transparent . #t) + (axes 0 1) + ) + basicSingleMaltGroupingItemProperties = #'( + (transparent . #t) + ) + basicBreakAlignProperties = #'( + (breakable . #t) + ) + basicInstrumentNameProperties = #`( + (breakable . #t) + (break-align-symbol . Instrument_name) + (visibility-lambda . ,begin-of-line-visible) + ) + basicLocalKeyProperties = #`( + (left-padding . 0.2) + (right-padding . 0.4) + ) - \accepts "ChoirStaff"; + \accepts "Staff"; \accepts "StaffGroup"; - \accepts "HaraKiriStaff"; \accepts "RhythmicStaff"; \accepts "Lyrics"; \accepts "ChordNames"; \accepts "GrandStaff"; + \accepts "ChoirStaff"; \accepts "PianoStaff"; - + \accepts "NoteNames"; + + + markVisibilityFunction = #end-of-line-invisible +}; + +\translator { \ScoreContext } + +OrchestralScoreContext= \translator { + \ScoreContext + + barScriptPadding = #2.0 % dimension \pt + markScriptPadding = #4.0 + + \consists "Mark_engraver"; }; + +\translator { + \type "Engraver_group_engraver"; + \name NoteNames; + \consistsend "Axis_group_engraver"; + \consists "Note_name_engraver"; +}