-%
+
+\version "1.3.96"
+ %
% setup for Request->Element conversion. Guru-only
%
StaffContext=\translator {
- \type "Line_group_engraver_group";
+ \type "Engraver_group_engraver";
\name Staff ;
- barAuto = "1";
- voltaVisibility = "1";
-
-%{
- 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 "Output_property_engraver";
+ Generic_property_list = #generic-staff-properties
+ \consists "Property_engraver";
+
\consists "Multi_measure_rest_engraver";
- \consists "Repeat_engraver";
+
\consists "Bar_engraver";
+ % Bar_engraver must be first so default bars aren't overwritten
+% with empty ones.
+
+
+% \consists "Repeat_engraver";
+ \consists "Volta_engraver";
+ \consists "Separating_line_group_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 "Local_key_engraver";
+ \consists "Piano_pedal_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.
+ \consistsend "Axis_group_engraver";
-%}
-%{
- \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.
+
+ This is commented out, so you don't get funny things on the
+ PianoStaff
+ \consists "Instrument_name_engraver";
%}
- defaultClef = treble;
- marginBreakPriority = "-5";
-%{
- \consists "Staff_margin_engraver";
-%}
- \consists "Separating_line_group_engraver";
\accepts "Voice";
- dynamicStyle = "dynamic";
-};
+}
-\translator{\StaffContext }
-\translator {
- \type "Line_group_engraver_group";
+ChoirStaffContext = \translator {
+ \type "Engraver_group_engraver";
\name ChoirStaff;
- \consists "Vertical_align_engraver";
- \consists "Staff_group_bar_engraver";
+ alignmentReference = \center;
+ \consists "System_start_delimiter_engraver";
+ SystemStartDelimiter \push #'glyph = #'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";
+
+ \consists "Property_engraver";
+ \consists "Output_property_engraver";
+
+ Generic_property_list = #generic-staff-properties
+
\consists "Pitch_squash_engraver";
\consists "Separating_line_group_engraver";
\name RhythmicStaff;
+ Bar \push #'bar-size = #4
+ VoltaBracket \push #'minimum-space = #15 % urg, in \pt
+ VoltaBracket \push #'padding = #5 % urg, in \pt
+ StaffSymbol \push #'line-count = #1
- \consists "Repeat_engraver";
+% \consists "Repeat_engraver";
+ \consists "Volta_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;
+
+ Generic_property_list = #generic-voice-properties
+ \consists "Output_property_engraver";
+ \consists "Arpeggio_engraver";
+
+ \consists "Dynamic_engraver"; % must come before text_engraver.
+ \consists "Text_spanner_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";
- % ugh. Order matters here.
+ \consists "Chord_tremolo_engraver";
+ \consists "Melisma_engraver";
\consists "Text_engraver";
+ \consists "A2_engraver";
+ \consists "Voice_devnull_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";
+ \consists "Align_note_column_engraver";
+
+ \consists "Rhythmic_column_engraver";
+
+ \consists "Dynamic_engraver";% in Grace ???
+ \consists "Text_engraver"; % in Grace ???
+
+ \consists "Property_engraver";
+
+ Stem \push #'style = #"grace"
+ Stem \push #'flag-style = #"grace"
+ Stem \push #'stem-length = #6.0
+ Stem \push #'direction = #1
+
+ NoteHead \push #'font-relative-size = #-1
+ Stem \push #'font-relative-size = #-1
+ Stem \push #'stem-shorten = #'(0)
+ Beam \push #'font-relative-size = #-1
+ TextScript \push #'font-relative-size = #-1
+ Slur \push #'font-relative-size = #-1
+ Accidentals \push #'font-relative-size = #-1
+ Beam \push #'thickness = #0.3
+ Beam \push #'space-function = #(lambda (x) 0.5)
+
+ Stem \push #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
+ Stem \push #'beamed-lengths =
+ #'(0.0 2.5 2.0 1.5)
+ Stem \push #'beamed-minimum-lengths
+ = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
+
+ weAreGraceContext = ##t
+ graceAccidentalSpace= 1.5 ; % in staff space
+}
-\translator {\VoiceContext}
+ThreadContext = \translator{
+ \type Engraver_group_engraver;
+ \consists "Thread_devnull_engraver";
+ \consists "Note_heads_engraver";
+ \consists "Output_property_engraver";
+ Generic_property_list = #generic-thread-properties
+ \consists "Property_engraver";
+ \name Thread;
+}
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;
-
- \accepts "Staff";
-};
-\translator{\GrandStaffContext}
-\translator{\GrandStaffContext
- minVerticalAlign = 3.0*\staffheight;
- maxVerticalAlign = 3.0*\staffheight;
- \name "PianoStaff";
+ \consists "Span_arpeggio_engraver";
+ \consists "System_start_delimiter_engraver";
+ SystemStartDelimiter \push #'glyph = #'brace
+ \consists "Property_engraver";
+ Generic_property_list = #generic-grand-staff-properties
+ \accepts "Staff";
}
-\translator {
- \type "Hara_kiri_line_group_engraver";
-% \type "Line_group_engraver_group";
- \consists "Span_bar_engraver";
+PianoStaffContext = \translator{
+ \GrandStaffContext
+ \name "PianoStaff";
+
\consists "Vertical_align_engraver";
- \consists "Staff_group_bar_engraver";
+
+ alignmentReference = \center;
+ VerticalAlignment \push #'threshold = #'(12 . 12)
+
+% \consistsend "Axis_group_engraver";
+}
+
+StaffGroupContext= \translator {
+ \type "Engraver_group_engraver";
\name StaffGroup;
+
+ \consists "Span_bar_engraver";
+ \consists "Span_arpeggio_engraver";
+ \consists "Output_property_engraver";
+ SystemStartDelimiter \push #'glyph = #'bracket
+
+ \consists "System_start_delimiter_engraver";
\accepts "Staff";
\accepts "RhythmicStaff";
\accepts "GrandStaff";
\accepts "ChordNames";
}
-\translator{
- \type "Line_group_engraver_group";
+
+% UGH! JUNKME
+LyricsVoiceContext= \translator{
+ \type "Engraver_group_engraver";
+ \consistsend "Axis_group_engraver";
+ LyricVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
\name LyricVoice ;
\consists "Separating_line_group_engraver";
\consists "Lyric_engraver";
\consists "Extender_engraver";
- \consists "Beam_req_swallow_translator";
+ \consists "Hyphen_engraver";
+ \consists "Stanza_number_engraver";
+ phrasingPunctuation = #".,;:!?\""
+
+}
+NoteNamesContext = \translator {
+ \type "Engraver_group_engraver";
+ \name NoteNames;
+ \consistsend "Axis_group_engraver";
+ \consists "Note_name_engraver";
+ \consists "Separating_line_group_engraver";
}
-\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";
+ChordNamesVoiceContext = \translator {
+ \type "Engraver_group_engraver";
+ \name ChordNamesVoice ;
- \name ChordNameVoice ;
+ \consists "Output_property_engraver";
+ \consistsend "Axis_group_engraver";
\consists "Separating_line_group_engraver";
\consists "Chord_name_engraver";
}
-
-\translator {
- \type "Line_group_engraver_group";
+ChordNamesContext = \translator {
+ \type "Engraver_group_engraver";
\name ChordNames;
- \consists "Vertical_align_engraver";
- \accepts "ChordNameVoice";
-}
-ScoreContext = \translator {
- \type Score_engraver;
- \name Score;
+ Generic_property_list = #generic-chord-staff-properties
- \consists "Timing_engraver";
+ \consists "Property_engraver";
+ \consists "Output_property_engraver";
+ \accepts "ChordNamesVoice";
- \consists "Span_score_bar_engraver";
- \consists "Score_priority_engraver";
- \consists "Priority_horizontal_align_engraver";
- \consists "Vertical_align_engraver";
+ VerticalAxisGroup \push #'invisible-staff = ##t
+ \consistsend "Axis_group_engraver";
+ }
- \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 {
\type "Score_engraver";
\name Score;
\consists "Note_heads_engraver";
-};
+}
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;
+
+ \consists "Repeat_acknowledge_engraver";
\consists "Timing_engraver";
+ \consists "Output_property_engraver";
+ \consists "System_start_delimiter_engraver";
+ \consists "Mark_engraver";
+ \consists "Break_align_engraver";
+ \consists "Spacing_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Lyric_phrasing_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 "Span_arpeggio_engraver";
- \accepts "ChoirStaff";
+
+ \accepts "Staff";
\accepts "StaffGroup";
- \accepts "HaraKiriStaff";
\accepts "RhythmicStaff";
\accepts "Lyrics";
\accepts "ChordNames";
\accepts "GrandStaff";
+ \accepts "ChoirStaff";
\accepts "PianoStaff";
+ \accepts "NoteNames";
+
+ soloText = #"Solo"
+ soloIIText = #"Solo II"
+ aDueText = #"\\`a2"
+ soloADue = ##t
+ splitInterval = #'(0 . 1)
+ changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
+
+ defaultClef = #"treble"
+
+ StaffMinimumVerticalExtent = #(cons -4.0 4.0)
+
+ barAuto = ##t
+ voltaVisibility = ##t
+ % name, glyph id, clef position
+ supportedClefTypes = #'(
+ ("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))
+ ("vaticana_do1" . ("clefs-vaticana_do" -1))
+ ("vaticana_do2" . ("clefs-vaticana_do" 1))
+ ("vaticana_do3" . ("clefs-vaticana_do" 3))
+ ("vaticana_fa1" . ("clefs-vaticana_fa" -1))
+ ("vaticana_fa2" . ("clefs-vaticana_fa" 1))
+ ("medicaea_do1" . ("clefs-medicaea_do" -1))
+ ("medicaea_do2" . ("clefs-medicaea_do" 1))
+ ("medicaea_do3" . ("clefs-medicaea_do" 3))
+ ("medicaea_fa1" . ("clefs-medicaea_fa" -1))
+ ("medicaea_fa2" . ("clefs-medicaea_fa" 1))
+ ("hufnagel_do1" . ("clefs-hufnagel_do" -1))
+ ("hufnagel_do2" . ("clefs-hufnagel_do" 1))
+ ("hufnagel_do3" . ("clefs-hufnagel_do" 3))
+ ("hufnagel_fa1" . ("clefs-hufnagel_fa" -1))
+ ("hufnagel_fa2" . ("clefs-hufnagel_fa" 1))
+ ("hufnagel" . ("clefs-hufnagel_do_fa" 4))
+ ("mensural1_c1" . ("clefs-mensural1_c" -4))
+ ("mensural1_c2" . ("clefs-mensural1_c" -2))
+ ("mensural1_c3" . ("clefs-mensural1_c" 0))
+ ("mensural1_c4" . ("clefs-mensural1_c" 2))
+ ("mensural2_c1" . ("clefs-mensural2_c" -4))
+ ("mensural2_c2" . ("clefs-mensural2_c" -2))
+ ("mensural2_c3" . ("clefs-mensural2_c" 0))
+ ("mensural2_c4" . ("clefs-mensural2_c" 2))
+ ("mensural2_c5" . ("clefs-mensural2_c" 4))
+ ("mensural3_c1" . ("clefs-mensural3_c" -2))
+ ("mensural3_c2" . ("clefs-mensural3_c" 0))
+ ("mensural3_c3" . ("clefs-mensural3_c" 2))
+ ("mensural3_c4" . ("clefs-mensural3_c" 4))
+ ("mensural_f" . ("clefs-mensural_f" 2))
+ )
+ % where is c0 in this clef?
+ clefPitches = #'(("clefs-G" . -4)
+ ("clefs-C" . 0)
+ ("clefs-F" . 4)
+ ("clefs-vaticana_do" . 0)
+ ("clefs-vaticana_fa" . 4)
+ ("clefs-medicaea_do" . 0)
+ ("clefs-medicaea_fa" . 4)
+ ("clefs-hufnagel_do" . 0)
+ ("clefs-hufnagel_fa" . 4)
+ ("clefs-hufnagel_do_fa" . 0)
+ ("clefs-mensural1_c" . 0)
+ ("clefs-mensural2_c" . 0)
+ ("clefs-mensural3_c" . 0)
+ ("clefs-mensural_f" . 0))
+
+ automaticPhrasing = ##t;
+ alignmentReference = \down;
+ defaultClef = #"treble"
+ defaultBarType = #"|"
+
+ explicitClefVisibility = #all-visible
+ explicitKeySignatureVisibility = #all-visible
-};
+ scriptDefinitions = #default-script-alist
+
+ startSustain = #"Ped."
+ stopSustain = #"*"
+ stopStartSustain = #"*Ped."
+ startUnaChorda = #"una chorda"
+ stopUnaChorda = #"tre chorde"
+ % should make separate lists for stopsustain and startsustain
+
+
+ %
+ % 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)
+ )
+ breakAlignOrder = #'(
+ Instrument_name
+ Left_edge_item
+ Span_bar
+ Breathing_sign
+ Clef_item
+ Key_item
+ Staff_bar
+ Time_signature
+ Custos
+ Stanza_number
+ )
+
+
+ \elementdescriptions #all-element-descriptions
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % TODO: uniform naming.;
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+}
+
+OrchestralScoreContext= \translator {
+ \ScoreContext
+}
+