]> git.donarmstrong.com Git - lilypond.git/blobdiff - init/engraver.ly
release: 1.1.15
[lilypond.git] / init / engraver.ly
index 5fe3255194c30adc604c4a8fbed95516df99458c..044beade24918b03fcbcbb7804cca4f8befbcd03 100644 (file)
 % setup for Request->Element conversion. Guru-only
 %
 
-staff_engraver = \requesttranslator {
-                 Engraver "Engraver_group_engraver"
-                 \alias "Staff";
-                 \consists "Line_group_engraver";
-                 \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";
-                 \contains \requesttranslator {
-                         Engraver  "Voice_group_engravers"
-                         \alias "Voice_group";
-                         \consists "Dynamic_engraver";
-                         \consists "Stem_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 "Repeat_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";
+
+%{
+       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.
+%}
+       defaultClef = treble;
+
+       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";
+       \accepts "ChordNames";
+}
+
+
+RhythmicStaffContext=\translator{
+       \type "Line_group_engraver_group";
+       nolines  = "1";
+       \consists "Pitch_squash_engraver";
+       \consists "Separating_line_group_engraver";     
+       \name RhythmicStaff;
+
+       \consists "Repeat_engraver";
+       \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 "Command_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 "Command_tie_engraver";
+       \consists "Tuplet_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 "Line_group_engraver";
        \consists "Piano_bar_engraver";
-       \contains\requesttranslator { \staff_engraver }
-}
+       minVerticalAlign = 1.5*\staffheight;
+
+       \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";
+       \accepts "ChordNames";
 }
-lyric_engraver = \requesttranslator {
-       Engraver "Engraver_group_engraver"
-       \alias "Lyric";
-
-       \contains\requesttranslator{
-               Engraver "Engraver_group_engraver"
-               \consists "Lyric_engraver";
-               \consists "Line_group_engraver";
-               \consists "Swallow_engraver";
-       }
+
+\translator{
+       \type "Line_group_engraver_group";
+
+       \name LyricVoice ;
+       \consists "Separating_line_group_engraver";
+       \consists "Lyric_engraver";
+       \consists "Extender_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";
+\translator{
+       \type "Line_group_engraver_group";
+
+       \name ChordNameVoice ;
+       \consists "Separating_line_group_engraver";
+       \consists "Chord_name_engraver";
+}
 
-       \consists "Bar_align_engraver";
-       \consists "Clef_align_engraver";
-       \consists "Key_align_engraver";
-       \consists "Meter_align_engraver";
-       \consists "Score_horizontal_align_engraver";
+\translator {
+       \type "Line_group_engraver_group";
+       \name ChordNames;
        \consists "Vertical_align_engraver";
+       \accepts "ChordNameVoice";
+}
+
+ScoreContext = \translator {
+       \type Score_engraver;
+       \name Score;
+
+       \consists "Timing_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 "ChordNames";
+       \accepts "GrandStaff";
+       \accepts "ChoirStaff";
+};
+\translator { \ScoreContext }
+
+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 "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";
+         
+       \accepts "Voice";
+};
+
+% huh, Score should do HaraKiri, not Part yes?
+OrchestralPartStaffContext = \translator {
+%      \HaraKiriStaffContext
+       \StaffContext
+       barColumnPriority = "0";
+       marginBreakPriority = "-4";
+       \consists "Mark_engraver";
+       \consists "Bar_column_engraver";
+       \consists "Bar_number_engraver";
+};
+
+% where to put HaraKiri here?
+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 "ChordNames";
+       \accepts "GrandStaff";
+};