X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Fengraver.ly;h=965b16b80ac42f28dcaf222fca451435f2984fa0;hb=51425f30711ebb46271396cf0b99627e8b1c4cf1;hp=cd6f98cf44c6bb16522977e03bb8adb76e4a6a0e;hpb=2b0aa2c5bbb4af4e7d0d3c057de066dc1d6d6b8d;p=lilypond.git diff --git a/ly/engraver.ly b/ly/engraver.ly index cd6f98cf44..965b16b80a 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -5,7 +5,7 @@ StaffContext=\translator { \type "Engraver_group_engraver"; \name Staff ; - + \consists "Output_property_engraver"; barAuto = ##t voltaVisibility = ##t Generic_property_list = #generic-staff-properties @@ -15,27 +15,37 @@ StaffContext=\translator { \consists "Bar_engraver"; % Bar_engraver must be first so default bars aren't overwritten % with empty ones. + + voltaPadding = #5 % urg, in \pt + voltaMinimumSpace = #25 % urg, in \pt + + StaffMinimumVerticalExtent = #(cons -4.0 4.0) + \consists "Repeat_engraver"; % name, glyph id, c0 position supportedClefTypes = #'( - ("treble" "treble" -2) - ("violin" "treble" -2) - ("G" "treble" -2) - ("G2" "treble" -2) - ("french" "treble" -4 ) - ("soprano" "alto" -4 ) - ("mezzosoprano" "alto" -2 ) - ("alto" "alto" 0 ) - ("tenor" "alto" 2 ) - ("baritone" "alto" 4 ) - ("varbaritone" "bass" 0) - ("bass" "bass" 2 ) - ("F" "bass" 2) - ("subbass" "bass" 4) + ("treble" . ("clefs-G" -2)) + ("violin" . ("clefs-G" -2)) + ("G" . ("clefs-G" -2)) + ("G2" . ("clefs-G" -2)) + ("french" . ("clefs-G" -4 )) + ("soprano" . ("clefs-C" -4 )) + ("mezzosoprano" . ("clefs-C" -2 )) + ("alto" . ("clefs-C" 0 )) + ("tenor" . ("clefs-C" 2 )) + ("baritone" . ("clefs-C" 4 )) + ("varbaritone" . ("clefs-F" 0)) + ("bass" . ("clefs-F" 2 )) + ("F" . ( "clefs-F" 2)) + ("subbass" . ("clefs-F" 4)) ) - + % where is c0 in this clef? + clefPitches = #'(("clefs-G" . -4) + ("clefs-C" . 0) + ("clefs-F" . 4)) + \consists "Clef_engraver"; \consists "Key_engraver"; \consists "Time_signature_engraver"; @@ -49,16 +59,15 @@ StaffContext=\translator { %{ - 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"; %} -%{ - \consists "Staff_margin_engraver"; -%} - defaultClef = #"treble" - marginBreakPriority = #-5 + defaultClef = #"treble" \consists "Separating_line_group_engraver"; @@ -70,8 +79,10 @@ StaffContext=\translator { \translator { \type "Engraver_group_engraver"; \name ChoirStaff; - alignmentReference = \center; - \consists "Staff_group_bar_engraver"; + alignmentReference = \center; + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'bracket + \accepts "Staff"; @@ -89,14 +100,17 @@ RhythmicStaffContext=\translator{ \type "Engraver_group_engraver"; numberOfStaffLines = #1 \consists "Property_engraver"; - + \consists "Output_property_engraver"; + Generic_property_list = #generic-staff-properties - barSize = \staffheight; + 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"; @@ -105,15 +119,18 @@ RhythmicStaffContext=\translator{ \accepts "Voice"; }; \translator{\RhythmicStaffContext} -VoiceContext = \translator { +VoiceContext = \translator { \type "Engraver_group_engraver"; - dynamicPadding = #5.0 - Generic_property_list = #generic-voice-properties + \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. - \name Voice ; \consists "Property_engraver"; \consists "Breathing_sign_engraver"; @@ -123,11 +140,20 @@ VoiceContext = \translator { \consists "Beam_engraver"; \consists "Auto_beam_engraver"; \include "auto-beam-settings.ly"; - \consists "Chord_tremolo_engraver"; + \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"; @@ -143,6 +169,7 @@ VoiceContext = \translator { GraceContext=\translator { \type "Grace_engraver_group"; \name "Grace"; + \consists "Output_property_engraver"; Generic_property_list = #generic-grace-properties @@ -158,16 +185,18 @@ GraceContext=\translator { \consists "Rhythmic_column_engraver"; \consists "Dynamic_engraver"; + \consists "Text_engraver"; \consists "Property_engraver"; - stemStyle = #"grace" + stemStyle = #"grace" + flagStyle = #"grace" weAreGraceContext = ##t fontSize = #-1 stemLength = #6.0 verticalDirection = \up ; - graceAccidentalSpace= 1.5 * \interline; + graceAccidentalSpace= 1.5 * \staffspace; }; \translator{\GraceContext} @@ -176,6 +205,7 @@ GraceContext=\translator { 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; @@ -186,8 +216,11 @@ GrandStaffContext=\translator{ \type "Engraver_group_engraver"; \name GrandStaff; \consists "Span_bar_engraver"; - \consists "Piano_bar_engraver"; - + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'brace + + \consists "Property_engraver"; + Generic_property_list = #generic-grand-staff-properties \accepts "Staff"; }; \translator{\GrandStaffContext} @@ -207,8 +240,14 @@ PianoStaffContext = \translator{\GrandStaffContext StaffGroupContext= \translator { \type "Engraver_group_engraver"; \consists "Span_bar_engraver"; - - \consists "Staff_group_bar_engraver"; + \consists "Output_property_engraver"; + \consists "System_start_delimiter_engraver"; + systemStartDelimiterGlyph = #'bracket + + + + + \name StaffGroup; \accepts "Staff"; \accepts "RhythmicStaff"; @@ -237,27 +276,33 @@ LyricsVoiceContext= \translator{ LyricsContext = \translator { \type "Engraver_group_engraver"; \name Lyrics; - \consists Vertical_align_engraver;%need this for getting folded repeats right. - + \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 { \LyricsContext } -\translator{ +ChordNameVoiceContext = \translator { \type "Engraver_group_engraver"; + \name ChordNameVoice ; + \consists "Output_property_engraver"; \consistsend "Axis_group_engraver"; - \name ChordNameVoice ; \consists "Separating_line_group_engraver"; \consists "Chord_name_engraver"; -} - +}; +\translator {\ChordNameVoiceContext} ChordNameContext = \translator { \type "Engraver_group_engraver"; \name ChordNames; + + Generic_property_list = #generic-chord-staff-properties + \consists "Property_engraver"; + \consists "Output_property_engraver"; \accepts "ChordNameVoice"; \consistsend "Axis_group_engraver"; }; @@ -281,40 +326,330 @@ StupidScore = \translator { BarNumberingStaffContext = \translator { \StaffContext - barColumnPriority = #0 - marginBreakPriority = #-4 \consists "Mark_engraver"; - \consists "Bar_number_engraver"; }; HaraKiriStaffContext = \translator { \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"; }; ScoreContext = \translator { \type Score_engraver; \name Score; + marginScriptPadding = #10 % urg, in \pt + \consists "Timing_engraver"; + \consists "Output_property_engraver"; - \consists "Span_score_bar_engraver"; - \consists "Score_priority_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 "Vertical_align_engraver"; + \consists "Bar_number_engraver"; alignmentReference = \down; defaultClef = #"treble" defaultBarType = #"|" + systemStartDelimiterGlyph = #'bar-line + + % + % what order to print accs. We could compute this, + % but computing is more work than putting it here. + % + % Flats come first, then sharps. + keyAccidentalOrder = #'( + (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1) + (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1) + ) + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % default settings, mainly for breakable items + % in alphabetical order + % TODO: uniform naming.; + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % + % distances are given in stafflinethickness (thicknesses) and staffspace (distances) + % + + + basicBarProperties = #`( + (break-align-symbol . Staff_bar) + (molecule-callback . ,Bar::brew_molecule) + (visibility-lambda . ,begin-of-line-invisible) + (breakable . #t) + (before-line-breaking-callback . ,Bar::before_line_breaking) + ;; + ;; Ross. page 151 lists other values, we opt for a leaner look + ;; + (kern . 3.0) + (thin-kern . 3.0) + (hair-thickness . 1.6) + (thick-thickness . 6.0) + ) + + basicBarNumberProperties = #`( + (molecule-callback . ,Text_item::brew_molecule) + (breakable . #t) + (visibility-lambda . ,begin-of-line-visible) + ) + + basicBeamProperties = #`( + (molecule-callback . ,Beam::brew_molecule) + (beam-thickness . 0.42) ; interline + (before-line-breaking-callback . ,Beam::before_line_breaking) + (after-line-breaking-callback . ,Beam::after_line_breaking) + ) + + basicBreakAlignProperties = #`( + (breakable . #t) + (before-line-breaking-callback . ,Break_align_item::before_line_breaking) +) + + + basicBreathingSignProperties = #`( + (break-align-symbol . Breathing_sign) + (after-line-breaking-callback . ,Breathing_sign::after_line_breaking) + (breakable . #t ) + (molecule-callback . ,Breathing_sign::brew_molecule) + (visibility-lambda . ,begin-of-line-invisible) + + ) + basicClefItemProperties = #`( + (molecule-callback . ,Score_element::brew_molecule) + (before-line-breaking-callback . ,Clef_item::before_line_breaking) + (breakable . #t) + (break-align-symbol . Clef_item) + (visibility-lambda . ,begin-of-line-visible) + ) + basicSlurProperties = #`( + (molecule-callback . ,Slur::brew_molecule) + (after-line-breaking-callback . ,Slur::after_line_breaking) + ) + basicChordNameProperties = #`( + (molecule-callback . ,Chord_name::brew_molecule) + ) + basicCollisionProperties = #`( + (axes 0 1) + (before-line-breaking-callback . ,Collision::before_line_breaking) + ) + basicCrescendoProperties = #`( + (molecule-callback . ,Crescendo::brew_molecule) + ) + basicDotsProperties = #`( + (molecule-callback . ,Dots::brew_molecule) + (after-line-breaking-callback . ,Dots::after_line_breaking) + (dot-count . 1) + ) + basicDynamicLineSpannerProperties = #`( + + ) + basicDynamicTextProperties = # `( + (style . "dynamic") + (molecule-callback . ,Text_item::brew_molecule) + (script-priority . 100) + (self-alignment-Y . 0) + ) + leftEdgeBasicProperties = #`( + (break-align-symbol . Left_edge_item) + (breakable . #t) + ) + basicGraceAlignItemProperties = #`( + (axes . (0)) + (before-line-breaking-callback . ,Grace_align_item::before_line_breaking) + ) + basicHaraKiriVerticalGroupspannerProperties = #`( + (after-line-breaking-callback . ,Hara_kiri_group_spanner::after_line_breaking) + ) + basicHyphenSpannerProperties = #`( + (thickness . 1.0) + (height . 0.4) + (minimum-length . 0.5) + (molecule-callback . ,Hyphen_spanner::brew_molecule) + ) + basicKeyProperties = #`( + (molecule-callback . ,Key_item::brew_molecule) + (break-align-symbol . Key_item) + (visibility-lambda . ,begin-of-line-visible) + (breakable . #t) + ) + basicLocalKeyProperties = #`( + (molecule-callback . ,Local_key_item::brew_molecule) + (left-padding . 0.2) + (right-padding . 0.4) + ) + basicLyricExtenderProperties = #`( + (molecule-callback . ,Lyric_extender::brew_molecule) + ) + basicLyricTextProperties = #`( + (molecule-callback . ,Text_item::brew_molecule) + (non-rhythmic . #t) + ) + basicMarkProperties = #`( + (molecule-callback . ,Text_item::brew_molecule) + (breakable . #t) + (visibility-lambda . ,end-of-line-invisible) + ) + basicMultiMeasureRestProperties = #`( + (molecule-callback . ,Multi_measure_rest::brew_molecule) + (staff-position . 0) + (after-line-breaking-callback . ,Multi_measure_rest::after_line_breaking) + ) + basicNoteColumnProperties = #`( + (axes 0 1) + ) + basicNoteHeadProperties = #`( + (molecule-callback . ,Note_head::brew_molecule) + ) + basicOctavateEightProperties = #`( + (self-alignment-X . 0) + (text . "8") + (visibility-lambda . ,begin-of-line-visible) + (molecule-callback . ,Text_item::brew_molecule) + (style . "italic") + ) + basicPedalProperties = #`( + (molecule-callback . ,Text_item::brew_molecule) + (style . "italic") + (no-spacing-rods . #t) + (self-alignment-X . 0) + + ) + basicTextProperties = #`( ) + basicRestProperties = #`( + (molecule-callback . ,Rest::brew_molecule) + ) + + basicRestCollisionProperties = #`( + (after-line-breaking-callback . ,Rest_collision::after_line_breaking) + ) + basicScriptProperties = #`( + (molecule-callback . ,Script::brew_molecule) + ) + + basicSlurProperties = #`( + (molecule-callback . ,Slur::brew_molecule) + (after-line-breaking-callback . ,Slur::after_line_breaking) + ) + basicSpanBarProperties = #`( + (break-align-symbol . Staff_bar) + (molecule-callback . ,Bar::brew_molecule) + (visibility-lambda . ,begin-of-line-invisible) + (breakable . #t) + (before-line-breaking-callback . ,Span_bar::before_line_breaking) + (after-line-breaking-callback . ,Span_bar::after_line_breaking) + + ;; ugh duplication! + + ;; + ;; Ross. page 151 lists other values, we opt for a leaner look + ;; + (kern . 3.0) + (thin-kern . 3.0) + (hair-thickness . 1.6) + (thick-thickness . 6.0) + + ) + basicSustainPedalProperties = #`( + (no-spacing-rods . #t) + (molecule-callback . ,Sustain_pedal::brew_molecule) + (self-alignment-X . 0) + ) + basicSystemStartDelimiterProperties = #`( + (molecule-callback . ,System_start_delimiter::brew_molecule) + (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) + (collapse-height . 1.0) + (thickness . 1.6) + (arch-height . 1.5) + (arch-angle . 50.0) + (arch-thick . 0.25) + (arch-width . 1.5) + (bracket-thick . 0.25) + (bracket-width . 2.0) + ) + basicStemProperties = #`( + (before-line-breaking-callback . ,Stem::before_line_breaking) + (molecule-callback . ,Stem::brew_molecule) + ) + staffSymbolBasicProperties = #`( + (molecule-callback . ,Staff_symbol::brew_molecule) + (staff-space . 1.0 ) + (line-count . 5 ) + ) + basicTextScriptProperties = #`( + (molecule-callback . ,Text_item::brew_molecule) + (no-spacing-rods . #t) + ) + basicTimeSignatureProperties = #`( + (molecule-callback . ,Time_signature::brew_molecule) + (break-align-symbol . Time_signature) + (visibility-lambda . ,all-visible) + (breakable . #t) + ) + basicTieProperties = #`( + (molecule-callback . ,Tie::brew_molecule) + (after-line-breaking-callback . ,Tie::after_line_breaking) + ) + basicTieColumnProperties = #`( + (after-line-breaking-callback . ,Tie_column::after_line_breaking) + ) + basicTupletSpannerProperties = #`( + (number-gap . 2.0) + (thick . 1.0) + (after-line-breaking-callback . ,Tuplet_spanner::after_line_breaking) + (molecule-callback . ,Tuplet_spanner::brew_molecule) + ) + basicStemTremoloProperties = #`( + (molecule-callback . ,Stem_tremolo::brew_molecule) + (beam-width . 4.0) ; interline! + (beam-thickness . 0.42) ; interline! + ) + + basicSingleMaltGroupingItemProperties = #`( + + ) + basicInstrumentNameProperties = #`( + (breakable . #t) + (molecule-callback . ,Text_item::brew_molecule) + (break-align-symbol . Instrument_name) + (visibility-lambda . ,begin-of-line-visible) + ) + basicVerticalAxisGroupProperties = #`( + (axes 1) + ) + basicVoltaSpannerProperties = #`( + (molecule-callback . ,Volta_spanner::brew_molecule) + (after-line-breaking-callback . ,Volta_spanner::after_line_breaking) + ) + \accepts "Staff"; \accepts "StaffGroup"; \accepts "RhythmicStaff"; @@ -323,9 +658,10 @@ ScoreContext = \translator { \accepts "GrandStaff"; \accepts "ChoirStaff"; \accepts "PianoStaff"; + \accepts "NoteNames"; + - clefBreakPriority = #-2 - breathingSignBreakPriority = #-4 + markVisibilityFunction = #end-of-line-invisible }; \translator { \ScoreContext } @@ -336,8 +672,12 @@ OrchestralScoreContext= \translator { barScriptPadding = #2.0 % dimension \pt markScriptPadding = #4.0 - \consists "Bar_number_engraver"; \consists "Mark_engraver"; - - \accepts "HaraKiriStaff"; }; + +\translator { + \type "Engraver_group_engraver"; + \name NoteNames; + \consistsend "Axis_group_engraver"; + \consists "Note_name_engraver"; +}