2 % setup for Request->Element conversion. Guru-only
5 StaffContext=\translator {
6 \type "Engraver_group_engraver";
8 \consists "Output_property_engraver";
9 Generic_property_list = #generic-staff-properties
10 \consists "Property_engraver";
12 \consists "Multi_measure_rest_engraver";
14 \consists "Bar_engraver";
15 % Bar_engraver must be first so default bars aren't overwritten
19 \consists "Repeat_engraver";
20 \consists "Separating_line_group_engraver";
24 \consists "Clef_engraver";
25 \consists "Key_engraver";
26 \consists "Time_signature_engraver";
27 \consists "Staff_symbol_engraver";
28 \consists "Collision_engraver";
29 \consists "Rest_collision_engraver";
30 \consists "Local_key_engraver";
32 \consistsend "Axis_group_engraver";
35 The Instrument_name_engraver puts the name of the instrument
36 (\property Staff.instrument; Staff.instr for subsequent lines)
37 to the left of a staff.
39 This is commented out, so you don't get funny things on the
41 \consists "Instrument_name_engraver";
49 ChoirStaffContext = \translator {
50 \type "Engraver_group_engraver";
52 alignmentReference = \center;
53 \consists "System_start_delimiter_engraver";
54 systemStartDelimiterGlyph = #'bracket
57 \accepts "RhythmicStaff";
58 \accepts "GrandStaff";
59 \accepts "PianoStaff";
61 \accepts "ChordNames";
65 RhythmicStaffContext=\translator{
66 \type "Engraver_group_engraver";
68 \consists "Property_engraver";
69 \consists "Output_property_engraver";
71 Generic_property_list = #generic-staff-properties
73 \consists "Pitch_squash_engraver";
74 \consists "Separating_line_group_engraver";
76 basicBarProperties \push #'bar-size = #4
77 basicVoltaSpannerProperties \push #'minimum-space = #15 % urg, in \pt
78 basicVoltaSpannerProperties \push #'padding = #5 % urg, in \pt
79 basicStaffSymbolProperties \push #'line-count = #1
81 \consists "Repeat_engraver";
82 \consists "Bar_engraver";
83 \consists "Time_signature_engraver";
84 \consists "Staff_symbol_engraver";
85 \consistsend "Axis_group_engraver";
90 VoiceContext = \translator {
91 \type "Engraver_group_engraver";
94 Generic_property_list = #generic-voice-properties
96 \consists "Output_property_engraver";
98 \consists "Dynamic_engraver"; % must come before text_engraver.
99 \consists "Property_engraver";
101 \consists "Breathing_sign_engraver";
102 \consists "Rest_engraver";
103 \consists "Dot_column_engraver";
104 \consists "Stem_engraver";
105 \consists "Beam_engraver";
106 \consists "Auto_beam_engraver";
107 \include "auto-beam-settings.ly";
109 \consists "Chord_tremolo_engraver";
110 \consists "Melisma_engraver";
111 \consists "Text_engraver";
112 \consists "A2_engraver";
113 \consists "Voice_devnull_engraver";
116 startSustain = #"Ped."
118 stopStartSustain = #"*Ped."
119 startUnaChorda = #"una chorda"
120 stopUnaChorda = #"tre chorde"
121 % should make separate lists for stopsustain and startsustain
123 \consists "Piano_pedal_engraver";
124 \consists "Script_engraver";
125 \consists "Script_column_engraver";
126 \consists "Rhythmic_column_engraver";
127 \consists "Slur_engraver";
128 \consists "Tie_engraver";
129 \consists "Tuplet_engraver";
130 \consists "Grace_position_engraver";
131 \consists "Skip_req_swallow_translator";
132 \accepts Thread; % bug if you leave out this!
136 GraceContext=\translator {
137 \type "Grace_engraver_group";
139 \consists "Output_property_engraver";
141 Generic_property_list = #generic-grace-properties
143 \consists "Note_heads_engraver";
144 \consists "Local_key_engraver";
145 \consists "Stem_engraver";
146 \consists "Beam_engraver";
147 \consists "Slur_engraver";
149 \consists "Auto_beam_engraver";
150 \include "auto-beam-settings.ly";
151 \consists "Align_note_column_engraver";
153 \consists "Rhythmic_column_engraver";
155 \consists "Dynamic_engraver";% in Grace ???
156 \consists "Text_engraver"; % in Grace ???
158 \consists "Property_engraver";
160 basicStemProperties \push #'style = #"grace"
161 basicStemProperties \push #'flag-style = #"grace"
162 basicStemProperties \push #'stem-length = #6.0
163 basicStemProperties \push #'direction = #1
165 basicNoteHeadProperties \push #'font-size = #-1
166 basicStemProperties \push #'font-size = #-1
167 basicBeamProperties \push #'font-size = #-1
168 basicTextScriptProperties \push #'font-size = #-1
169 basicSlurProperties \push #'font-size = #-1
170 basicLocalKeyProperties \push #'font-size = #-1
171 basicBeamProperties \push #'beam-thickness = #0.3
172 basicBeamProperties \push #'beam-space-function = #(lambda (x) 0.5)
174 weAreGraceContext = ##t
175 graceAccidentalSpace= 1.5 ; % in staff space
178 ThreadContext = \translator{
179 \type Engraver_group_engraver;
180 \consists "Thread_devnull_engraver";
181 \consists "Note_heads_engraver";
182 \consists "Output_property_engraver";
183 Generic_property_list = #generic-thread-properties
184 \consists "Property_engraver";
188 GrandStaffContext=\translator{
189 \type "Engraver_group_engraver";
191 \consists "Span_bar_engraver";
192 \consists "System_start_delimiter_engraver";
193 systemStartDelimiterGlyph = #'brace
195 \consists "Property_engraver";
196 Generic_property_list = #generic-grand-staff-properties
200 PianoStaffContext = \translator{\GrandStaffContext
201 alignmentReference = \center;
203 \consists "Vertical_align_engraver";
205 basicVerticalAlignmentProperties \push #'threshold = #'(12 . 12)
207 % \consistsend "Axis_group_engraver";
211 StaffGroupContext= \translator {
212 \type "Engraver_group_engraver";
213 \consists "Span_bar_engraver";
214 \consists "Output_property_engraver";
215 \consists "System_start_delimiter_engraver";
216 systemStartDelimiterGlyph = #'bracket
224 \accepts "RhythmicStaff";
225 \accepts "GrandStaff";
226 \accepts "PianoStaff";
229 \accepts "ChordNames";
234 LyricsVoiceContext= \translator{
235 \type "Engraver_group_engraver";
236 \consistsend "Axis_group_engraver";
237 LyricVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
240 \consists "Separating_line_group_engraver";
241 \consists "Lyric_engraver";
242 \consists "Extender_engraver";
243 \consists "Hyphen_engraver";
244 \consists "Stanza_number_engraver";
245 phrasingPunctuation = #".,;:!?\""
248 NoteNamesContext = \translator {
249 \type "Engraver_group_engraver";
251 \consistsend "Axis_group_engraver";
252 \consists "Note_name_engraver";
253 \consists "Separating_line_group_engraver";
256 LyricsContext = \translator {
257 \type "Engraver_group_engraver";
259 \consists Vertical_align_engraver; %need this for getting folded repeats right.
260 Generic_property_list = #generic-lyrics-properties
261 \consists "Property_engraver";
262 \consistsend "Axis_group_engraver";
264 \accepts "LyricVoice";
267 ChordNameVoiceContext = \translator {
268 \type "Engraver_group_engraver";
269 \name ChordNameVoice ;
271 \consists "Output_property_engraver";
272 \consistsend "Axis_group_engraver";
273 \consists "Separating_line_group_engraver";
274 \consists "Chord_name_engraver";
276 ChordNameContext = \translator {
277 \type "Engraver_group_engraver";
280 Generic_property_list = #generic-chord-staff-properties
281 \consists "Property_engraver";
282 \consists "Output_property_engraver";
283 \accepts "ChordNameVoice";
284 \consistsend "Axis_group_engraver";
288 ScoreWithNumbers = \translator {
289 \type "Score_engraver";
291 % uncomment to bar numbers on a whole system.
292 \consists "Bar_number_engraver";
295 StupidScore = \translator {
296 \type "Score_engraver";
298 \consists "Note_heads_engraver";
303 BarNumberingStaffContext = \translator {
305 \consists "Mark_engraver";
308 HaraKiriStaffContext = \translator {
310 \remove "Axis_group_engraver";
311 \consistsend "Hara_kiri_engraver";
312 \consists "Instrument_name_engraver";
316 The HaraKiriStaffContexts doesn't override \name,
317 so it is still named `Staff'.
319 %\translator { \HaraKiriStaffContext }
322 OrchestralPartStaffContext = \translator {
324 \consists "Mark_engraver";
327 ScoreContext = \translator {
328 \type Score_engraver;
332 \consists "Timing_engraver";
333 \consists "Output_property_engraver";
334 \consists "System_start_delimiter_engraver";
335 \consists "Mark_engraver";
336 \consists "Break_align_engraver";
337 \consists "Spacing_engraver";
339 \consists "Vertical_align_engraver";
341 \consists "Lyric_phrasing_engraver";
342 \consists "Bar_number_engraver";
346 \accepts "StaffGroup";
347 \accepts "RhythmicStaff";
349 \accepts "ChordNames";
350 \accepts "GrandStaff";
351 \accepts "ChoirStaff";
352 \accepts "PianoStaff";
353 \accepts "NoteNames";
356 soloIIText = #"Solo II"
359 splitInterval = #'(0 . 1)
360 changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
362 defaultClef = #"treble"
364 StaffMinimumVerticalExtent = #(cons -4.0 4.0)
367 voltaVisibility = ##t
368 % name, glyph id, c0 position
369 supportedClefTypes = #'(
370 ("treble" . ("clefs-G" -2))
371 ("violin" . ("clefs-G" -2))
372 ("G" . ("clefs-G" -2))
373 ("G2" . ("clefs-G" -2))
374 ("french" . ("clefs-G" -4 ))
375 ("soprano" . ("clefs-C" -4 ))
376 ("mezzosoprano" . ("clefs-C" -2 ))
377 ("alto" . ("clefs-C" 0 ))
378 ("tenor" . ("clefs-C" 2 ))
379 ("baritone" . ("clefs-C" 4 ))
380 ("varbaritone" . ("clefs-F" 0))
381 ("bass" . ("clefs-F" 2 ))
382 ("F" . ( "clefs-F" 2))
383 ("subbass" . ("clefs-F" 4))
385 % where is c0 in this clef?
386 clefPitches = #'(("clefs-G" . -4)
391 automaticPhrasing = ##t;
392 alignmentReference = \down;
393 defaultClef = #"treble"
394 defaultBarType = #"|"
395 systemStartDelimiterGlyph = #'bar-line
398 % what order to print accs. We could compute this,
399 % but computing is more work than putting it here.
401 % Flats come first, then sharps.
402 keyAccidentalOrder = #'(
403 (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1)
404 (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
406 breakAlignOrder = #'(
418 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
419 % TODO: uniform naming.;
420 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424 % distances are given in stafflinethickness (thicknesses) and
425 % staffspace (distances)
427 basicBarProperties = #`(
428 (interfaces . (bar-interface staff-bar-interface))
429 (break-align-symbol . Staff_bar)
431 (barsize-procedure . ,Bar::get_staff_bar_size)
432 (molecule-callback . ,Bar::brew_molecule)
433 (visibility-lambda . ,all-visible)
435 (before-line-breaking-callback . ,Bar::before_line_breaking)
437 ;; Ross. page 151 lists other values, we opt for a leaner look
441 (hair-thickness . 1.6)
442 (thick-thickness . 6.0)
446 basicBarNumberProperties = #`(
447 (molecule-callback . ,Text_item::brew_molecule)
449 (visibility-lambda . ,begin-of-line-visible)
455 basicBeamProperties = #basic-beam-properties
456 basicBreakAlignProperties = #`(
458 (interfaces . (break-align-interface))
461 (name . "break alignment")
463 basicBreakAlignGroupProperties = #`(
464 (interfaces . (axis-group-interface))
466 (name . "break alignment group")
468 basicBreathingSignProperties = #`(
469 (interfaces . (breathing-sign-interface))
470 (break-align-symbol . Breathing_sign)
472 (molecule-callback . ,Breathing_sign::brew_molecule)
473 (visibility-lambda . ,begin-of-line-invisible)
474 (name . "breathing sign")
476 basicClefItemProperties = #`(
477 (interfaces . (clef-interface))
478 (molecule-callback . ,Score_element::brew_molecule)
479 (before-line-breaking-callback . ,Clef::before_line_breaking)
481 (break-align-symbol . Clef_item)
482 (visibility-lambda . ,begin-of-line-visible)
485 basicChordNameProperties = #`(
486 (molecule-callback . ,Chord_name::brew_molecule)
487 (interfaces . (chord-name-interface))
488 (after-line-breaking-callback . ,Chord_name::after_line_breaking)
489 (name . "chord name")
491 basicCollisionProperties = #`(
493 (interfaces . (collision-interface))
495 (name . "note collision")
497 basicCrescendoProperties = #`(
498 (molecule-callback . ,Crescendo::brew_molecule)
499 (interfaces . (crescendo-interface dynamic-interface))
501 (shorten-for-letter . 4.0)
503 (dash-thickness . 1.2)
507 basicDotColumnProperties = #`(
508 (interfaces . (dot-column-interface axis-group-interface ))
510 (name . "dot column")
512 basicDotsProperties = #`(
513 (interfaces . (dot-interface))
514 (molecule-callback . ,Dots::brew_molecule)
516 (name . "augmentation dot")
518 basicDynamicTextProperties = #`(
520 (interfaces . (dynamic-interface))
521 (molecule-callback . ,Text_item::brew_molecule)
522 (script-priority . 100)
523 (self-alignment-Y . 0)
524 (name . "dynamic text")
527 basicDynamicLineSpannerProperties = #`(
528 (interfaces . (dynamic-interface axis-group-interface side-position-interface))
532 (name . "dynamic alignment")
535 leftEdgeBasicProperties = #`(
536 (break-align-symbol . Left_edge_item)
540 basicGraceAlignItemProperties = #`(
541 (interfaces . (axis-group-interface align-interface))
543 (horizontal-space . 1.2)
545 (before-line-breaking-callback . ,Grace_align_item::before_line_breaking)
546 (name . "grace alignment")
548 basicHaraKiriVerticalGroupspannerProperties = #`(
549 (interfaces . (hara-kiri-interface))
553 basicHyphenSpannerProperties = #`(
556 (minimum-length . 0.5)
557 (molecule-callback . ,Hyphen_spanner::brew_molecule)
561 basicInstrumentNameProperties = #`(
563 (molecule-callback . ,Text_item::brew_molecule)
564 (break-align-symbol . Instrument_name)
565 (visibility-lambda . ,begin-of-line-visible)
566 (name . "instrument name")
568 basicKeyProperties = #`(
569 (molecule-callback . ,Key_item::brew_molecule)
570 (interfaces . (key-item-interface))
571 (break-align-symbol . Key_item)
572 (visibility-lambda . ,begin-of-line-visible)
574 (name . "key signature")
576 basicLocalKeyProperties = #`(
577 (molecule-callback . ,Local_key_item::brew_molecule)
579 (right-padding . 0.4)
580 (interfaces . (accidentals-interface))
581 (name . "accidentals")
583 basicLineOfScoreProperties = #`(
585 (interfaces . (axis-group-interface))
588 basicLyricExtenderProperties = #`(
589 (interfaces . (lyric-extender-interface))
590 (molecule-callback . ,Lyric_extender::brew_molecule)
591 (height . 0.8) ; stafflinethickness;
592 (right-trim-amount . 0.5)
593 (name . "extender line")
595 basicLyricTextProperties = #`(
596 (interfaces . (lyric-syllable-interface text-item-interface))
597 (molecule-callback . ,Text_item::brew_molecule)
598 (self-alignment-X . 0)
601 (name . "lyric syllable")
603 basicMarkProperties = #`(
604 (interfaces . (mark-interface side-position-interface))
605 (molecule-callback . ,Text_item::brew_molecule)
607 (visibility-lambda . ,end-of-line-invisible)
609 (name . "rehearsal mark")
611 basicMultiMeasureRestProperties = #`(
612 (interfaces . (multi-measure-rest-interface))
613 (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
614 (molecule-callback . ,Multi_measure_rest::brew_molecule)
617 (padding . 2.0) ; staffspace
618 (minimum-width . 12.5) ; staffspace
619 (name . "multi-measure rest")
621 basicNoteColumnProperties = #`(
622 (interfaces . (axis-group-interface note-column-interface))
624 (name . "note column")
626 basicNoteHeadProperties = #`(
627 (interfaces . (note-head-interface rhythmic-head-interface))
629 (molecule-callback . ,Note_head::brew_molecule)
632 basicNoteNameProperties = #`(
633 (molecule-callback . ,Text_item::brew_molecule)
636 basicOctavateEightProperties = #`(
637 (self-alignment-X . 0)
639 (visibility-lambda . ,begin-of-line-visible)
640 (molecule-callback . ,Text_item::brew_molecule)
643 basicPaperColumnProperties = #`(
644 (interfaces . (paper-column-interface axis-group-interface))
649 %% These text props are only used by line-number-engraver...
650 basicTextProperties = #`( )
652 basicRestProperties = #`(
653 (interfaces . (rest-interface rhythmic-head-interface))
654 (after-line-breaking-callback . ,Rest::after_line_breaking)
655 (molecule-callback . ,Rest::brew_molecule)
656 (minimum-beam-collision-distance . 1.5)
660 basicRestCollisionProperties = #`(
661 (interfaces . (rest-collision-interface))
662 (minimum-distance . 0.75)
663 (name . "rest collision")
665 basicScriptProperties = #`(
666 (molecule-callback . ,Script::brew_molecule)
667 (interfaces . (script-interface side-position-interface))
670 basicScriptColumnProperties = #`(
671 (before-line-breaking-callback . ,Script_column::before_line_breaking)
672 (name . "script column")
674 basicSlurProperties = #`(
675 (interfaces . (slur-interface))
676 (molecule-callback . ,Slur::brew_molecule)
678 (spacing-procedure . ,Slur::set_spacing_rods)
679 (minimum-length . 1.5)
680 (after-line-breaking-callback . ,Slur::after_line_breaking)
682 (de-uglify-parameters . ( 1.5 0.8 -2.0))
683 (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5) (beautiful . 0.5)))
687 basicSpacingSpannerProperties =#`(
688 (spacing-procedure . ,Spacing_spanner::set_springs)
690 ;; assume that notes at least this long are present.
691 (maximum-duration-for-spacing . ,(make-moment 1 8))
692 (name . "spacing spanner")
694 basicSpanBarProperties = #`(
695 (interfaces . (bar-interface span-bar-interface))
696 (break-align-symbol . Staff_bar)
697 (barsize-procedure . ,Span_bar::get_bar_size)
698 (molecule-callback . ,Bar::brew_molecule)
699 (visibility-lambda . ,begin-of-line-invisible)
702 (before-line-breaking-callback . ,Span_bar::before_line_breaking)
706 ;; Ross. page 151 lists other values, we opt for a leaner look
710 (hair-thickness . 1.6)
711 (thick-thickness . 6.0)
712 (name . "cross staff bar-line")
714 basicStanzaNumberProperties = #`(
716 (molecule-callback . ,Text_item::brew_molecule)
717 (break-align-symbol . Clef_item)
718 (visibility-lambda . ,begin-of-line-visible)
719 (name . "stanza number")
721 basicStaffSymbolProperties = #`(
722 (interfaces . (staff-symbol-interface ))
723 (molecule-callback . ,Staff_symbol::brew_molecule)
726 (name . "staff symbol")
728 basicSystemStartDelimiterProperties = #`(
729 (molecule-callback . ,System_start_delimiter::brew_molecule)
730 (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
731 (collapse-height . 1.0)
737 (bracket-thick . 0.25)
738 (bracket-width . 2.0)
739 (name . "system start bracket")
741 basicTextScriptProperties = #`(
742 (molecule-callback . ,Text_item::brew_molecule)
743 (no-spacing-rods . #t)
744 (interfaces . (text-script-interface text-item-interface side-position-interface))
746 (name . "text script")
748 basicTieProperties = #`(
749 (interfaces . (tie-interface))
750 (molecule-callback . ,Tie::brew_molecule)
751 (spacing-procedure . ,Tie::set_spacing_rods)
752 (staffline-clearance . 0.24)
753 (details . ((ratio . 0.333) (height-limit . 1.0)))
756 (minimum-length . 2.5)
759 basicTieColumnProperties = #`(
760 (after-line-breaking-callback . ,Tie_column::after_line_breaking)
761 (interfaces . (tie-column-interface))
762 (name . "tie column")
764 basicTimeSignatureProperties = #`(
765 (interfaces . (time-signature-interface))
766 (molecule-callback . ,Time_signature::brew_molecule)
767 (break-align-symbol . Time_signature)
768 (visibility-lambda . ,all-visible)
770 (name . "time signature")
772 basicTupletSpannerProperties = #`(
776 (after-line-breaking-callback . ,Tuplet_spanner::after_line_breaking)
777 (molecule-callback . ,Tuplet_spanner::brew_molecule)
778 (interfaces . (tuplet-spanner-interface))
780 basicSostenutoPedalProperties = #`(
781 (molecule-callback . ,Text_item::brew_molecule)
783 (no-spacing-rods . #t)
784 (self-alignment-X . 0)
785 (name . "sostenuto pedal")
788 basicStemTremoloProperties = #`(
789 (molecule-callback . ,Stem_tremolo::brew_molecule)
790 (beam-width . 2.0) ; staff-space
791 (beam-thickness . 0.42) ; staff-space
792 (beam-space-function . ,default-beam-space-function)
793 (name . "stem tremolo")
795 basicStemProperties = #`(
796 (interfaces . (stem-interface))
797 (before-line-breaking-callback . ,Stem::before_line_breaking)
798 (molecule-callback . ,Stem::brew_molecule)
801 ; if stem is on middle line, choose this direction.
802 (default-neutral-direction . 1)
805 basicSeparationItemProperties = #`(
806 (interfaces . (separation-item-interface))
807 (name . "separation item")
809 basicSeparatingGroupSpannerProperties = #`(
810 (interfaces . (separation-spanner-interface))
811 (spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
812 (name . "separation spanner")
814 basicSustainPedalProperties = #`(
815 (interfaces . (sustain-pedal-interface side-position-interface))
816 (no-spacing-rods . #t)
817 (molecule-callback . ,Sustain_pedal::brew_molecule)
818 (self-alignment-X . 0)
819 (name . "sustain pedal")
821 basicUnaChordaPdealProperties = #`(
822 (molecule-callback . ,Text_item::brew_molecule)
824 (no-spacing-rods . #t)
825 (self-alignment-X . 0)
826 (name . "una chorda pedal")
829 basicVoltaSpannerProperties = #`(
830 (molecule-callback . ,Volta_spanner::brew_molecule)
831 (interfaces . (volta-spanner-interface side-position-interface))
834 (thickness . 1.6) ; stafflinethickness
835 (height . 2.0) ; staffspace;
837 (name . "volta brace")
839 basicVerticalAlignmentProperties = #`(
841 (interfaces . (align-interface axis-group-interface))
842 (name . "vertical alignment")
844 basicVerticalAxisGroupProperties = #`(
846 (interfaces . (axis-group-interface))
847 (name . "Y-axis group")
851 OrchestralScoreContext= \translator {