X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=init%2Fengraver.ly;h=aa3a5382bec85b4b98866e9f45bb5d598cc0105e;hb=6ae532ffb4350961d3901a42b67d1db620f925a5;hp=3c291a9113c6f570348490eb6bef1121d254f12c;hpb=439b9eae8f830918d62c7374d4f72a1079334316;p=lilypond.git diff --git a/init/engraver.ly b/init/engraver.ly index 3c291a9113..aa3a5382be 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -2,100 +2,252 @@ % setup for Request->Element conversion. Guru-only % -staff_engraver = \requesttranslator { - Engraver "Engraver_group_engraver" - \alias "Staff"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Meter_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - - \consists "Line_group_engraver"; - \contains \requesttranslator { - Engraver "Voice_group_engravers" - \alias "Voice_group"; - \consists "Dynamic_engraver"; - \consists "Stem_engraver"; - \consists "Beam_engraver"; - \consists "Abbreviation_beam_engraver"; - \consists "Script_engraver"; - \consists "Note_column_engraver"; - \consists "Slur_engraver"; - \contains \requesttranslator { - Engraver "Engraver_group_engraver" - \alias "Voice"; - \consists "Note_head_engraver" ; - \consists "Tie_engraver"; - } - } - } - -piano_staff_engraver = \requesttranslator { - Engraver "Engraver_group_engraver" - \alias "Piano"; - \alias "Hoenoemjedat"; +StaffContext=\translator { + \type "Line_group_engraver_group"; + \name Staff ; + +%{ + 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"; + + \consists "Bar_engraver"; + \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 "Tuplet_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_column_engraver"; + \consists "Bar_number_engraver"; +%} +%{ + The Staff_margin_engraver puts the name of the instrument + (\property Staff.instrument; Staff.instr for subsequent lines) + to the left of a staff. +%} + + marginBreakPriority = "-5"; + +%{ + \consists "Staff_margin_engraver"; +%} + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; +}; + +\translator{\StaffContext } +\translator { + \type "Line_group_engraver_group"; + \name ChoirStaff; + \consists "Vertical_align_engraver"; + \consists "Staff_group_bar_engraver"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "GrandStaff"; + \accepts "Lyrics"; +} + + +RhythmicStaffContext=\translator{ + \type "Line_group_engraver_group"; + nolines = "1"; + \consists "Pitch_squash_engraver"; + \consists "Separating_line_group_engraver"; + \name RhythmicStaff; + \consists "Bar_engraver"; + \consists "Time_signature_engraver"; + \consists "Staff_symbol_engraver"; + \accepts "Voice"; +}; +\translator{\RhythmicStaffContext} +VoiceContext = \translator { + \type "Engraver_group_engraver"; + \consists "Dynamic_engraver"; + \name Voice ; + + \consists "Rest_engraver"; + \consists "Dot_column_engraver"; + \consists "Stem_engraver"; + \consists "Plet_engraver"; + \consists "Beam_engraver"; + \consists "Abbreviation_beam_engraver"; + \consists "Multi_measure_rest_engraver"; + \consists "Script_engraver"; + \consists "Rhythmic_column_engraver"; + \consists "Font_size_engraver"; + \consists "Slur_engraver"; + \consists "Ties_engraver"; + \consists "Note_heads_engraver" ; + \consists "Skip_req_swallow_translator"; +}; + +\translator {\VoiceContext} + +GrandStaffContext=\translator{ + \type "Line_group_engraver_group"; + \name GrandStaff; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; \consists "Piano_bar_engraver"; + minVerticalAlign = 1.5*\staffheight; - % This should come last - \consists "Line_group_engraver"; - \contains\requesttranslator { \staff_engraver } -} + \accepts "Staff"; +}; +\translator{\GrandStaffContext} -staff_group_engraver = \requesttranslator { - Engraver "Engraver_group_engraver" - \alias "Staff_group"; +\translator { + \type "Line_group_engraver_group"; +% \type "Hara_kiri_line_group_engraver"; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; - \consists "Line_group_engraver"; - \contains\requesttranslator { \staff_engraver } + \consists "Staff_group_bar_engraver"; + \name StaffGroup; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "GrandStaff"; + \accepts "Lyrics"; } -lyric_engraver = \requesttranslator { - Engraver "Engraver_group_engraver" - \alias "Lyric"; +\translator{ + \type "Line_group_engraver_group"; - \contains\requesttranslator{ - Engraver "Engraver_group_engraver" - \consists "Lyric_engraver"; - \consists "Line_group_engraver"; - \consists "Swallow_engraver"; - } + \name LyricVoice ; + \consists "Separating_line_group_engraver"; + \consists "Lyric_engraver"; + \consists "Beam_req_swallow_translator"; + \consists "Plet_swallow_engraver"; +} + +\translator { + \type "Line_group_engraver_group"; + \name Lyrics; \consists "Vertical_align_engraver"; - \consists "Line_group_engraver"; + \accepts "LyricVoice"; } -orchestral_score_translator = \requesttranslator { - Engraver Score_engraver - \alias "Score"; +ScoreContext = \translator { + \type Score_engraver; + \name Score; + defaultClef = treble; \consists "Timing_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_grav"; - \consists "Bar_align_engraver"; - \consists "Clef_align_engraver"; - \consists "Key_align_engraver"; - \consists "Meter_align_engraver"; - \consists "Score_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; + \consists "Bar_column_engraver"; \consists "Span_score_bar_engraver"; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; - \contains \requesttranslator { \staff_group_engraver } - \contains \requesttranslator { \lyric_engraver } - \contains \requesttranslator { \piano_staff_engraver } -} + \accepts "StaffGroup"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "Lyrics"; + \accepts "GrandStaff"; + \accepts "ChoirStaff"; +}; +\translator { \ScoreContext } -stupid_engraver = \requesttranslator { - Engraver Score_engraver - \consists "Staff_sym_engraver"; -} +ScoreWithNumbers = \translator { + \type "Score_engraver"; + + % uncomment to bar numbers on a whole system. + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + +}; +StupidScore = \translator { + \type "Score_engraver"; + \name Score; + \consists "Note_heads_engraver"; +}; + +BarNumberingStaffContext = \translator { + \StaffContext + barColumnPriority = "0"; + marginBreakPriority = "-4"; + \consists "Mark_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + +}; + + +HaraKiriStaffContext = \translator { + \type "Hara_kiri_line_group_engraver"; + \name Staff; + barColumnPriority = "0"; + marginBreakPriority = "-4"; + + \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"; + + \accepts "Voice"; +}; + +OrchestralPartStaffContext = \translator { + \HaraKiriStaffContext + barColumnPriority = "0"; + marginBreakPriority = "-4"; + \consists "Mark_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; +}; + +OrchestralScoreContext= \translator { + \type Score_engraver; + \name Score; + barScriptPadding = "2.0"; % dimension \pt + markScriptPadding = "4.0"; + barColumnPriority = "-4"; + markBreakPriority = "-4"; + defaultClef = treble; + + \consists "Timing_engraver"; + \consists "Bar_column_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"; + + \accepts "ChoirStaff"; + \accepts "StaffGroup"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "Lyrics"; + \accepts "GrandStaff"; +};