]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.96.jcn7
[lilypond.git] / ly / engraver.ly
1
2 \version "1.3.93"
3         %
4 % setup for Request->Element conversion. Guru-only
5 %
6
7 StaffContext=\translator {
8         \type "Engraver_group_engraver";
9         \name Staff ;
10         \consists "Output_property_engraver";   
11         Generic_property_list = #generic-staff-properties
12         \consists "Property_engraver";
13         
14         \consists "Multi_measure_rest_engraver";
15
16         \consists "Bar_engraver";
17  % Bar_engraver must be first so default bars aren't overwritten
18 % with empty ones.
19
20
21 %       \consists "Repeat_engraver";
22         \consists "Volta_engraver";
23         \consists "Separating_line_group_engraver";     
24
25
26
27         \consists "Clef_engraver";
28         \consists "Key_engraver";
29         \consists "Time_signature_engraver";
30         \consists "Staff_symbol_engraver";
31         \consists "Collision_engraver";
32         \consists "Rest_collision_engraver";
33         \consists "Local_key_engraver";
34         \consists "Piano_pedal_engraver";
35
36         \consistsend "Axis_group_engraver";
37
38 %{
39         The Instrument_name_engraver puts the name of the instrument
40         (\property Staff.instrument; Staff.instr for subsequent lines)
41         to the left of a staff.
42
43         This is commented out, so you don't get funny things on the
44         PianoStaff      
45         \consists "Instrument_name_engraver";
46 %}
47
48
49           
50         \accepts "Voice";
51 }
52
53 ChoirStaffContext = \translator {
54         \type "Engraver_group_engraver";
55         \name ChoirStaff;
56         alignmentReference = \center;
57         \consists "System_start_delimiter_engraver";
58         systemStartDelimiterGlyph = #'bracket
59
60         \accepts "Staff";
61         \accepts "RhythmicStaff";
62         \accepts "GrandStaff";
63         \accepts "PianoStaff";
64         \accepts "Lyrics";
65         \accepts "ChordNames";
66 }
67
68
69 RhythmicStaffContext=\translator{
70         \type "Engraver_group_engraver";
71         
72         \consists "Property_engraver";
73         \consists "Output_property_engraver";   
74
75         Generic_property_list = #generic-staff-properties
76
77         \consists "Pitch_squash_engraver";
78         \consists "Separating_line_group_engraver";     
79         \name RhythmicStaff;
80         Bar \push #'bar-size = #4
81         VoltaBracket \push #'minimum-space =  #15  % urg, in \pt
82         VoltaBracket \push #'padding =  #5  % urg, in \pt
83         StaffSymbol \push #'line-count = #1     
84
85 %       \consists "Repeat_engraver";
86         \consists "Volta_engraver";
87         \consists "Bar_engraver";
88         \consists "Time_signature_engraver";
89         \consists "Staff_symbol_engraver";
90         \consistsend "Axis_group_engraver";
91         \accepts "Voice";
92 }
93
94
95 VoiceContext = \translator {
96         \type "Engraver_group_engraver";
97         \name Voice;
98
99         Generic_property_list = #generic-voice-properties
100         
101         \consists "Output_property_engraver";   
102         \consists "Arpeggio_engraver";
103
104         \consists "Dynamic_engraver";   % must come before text_engraver.
105         \consists "Text_spanner_engraver";
106         \consists "Property_engraver";
107         
108         \consists "Breathing_sign_engraver";
109         \consists "Rest_engraver";
110         \consists "Dot_column_engraver";
111         \consists "Stem_engraver";
112         \consists "Beam_engraver";
113         \consists "Auto_beam_engraver";
114
115         \consists "Chord_tremolo_engraver";
116         \consists "Melisma_engraver";
117         \consists "Text_engraver";
118         \consists "A2_engraver";
119         \consists "Voice_devnull_engraver";
120
121         \consists "Script_engraver";
122         \consists "Script_column_engraver";
123         \consists "Rhythmic_column_engraver";
124         \consists "Slur_engraver";
125         \consists "Tie_engraver";
126         \consists "Tuplet_engraver";
127         \consists "Grace_position_engraver";
128         \consists "Skip_req_swallow_translator";
129         \accepts Thread; % bug if you leave out this!
130         \accepts Grace;
131 }
132
133 GraceContext=\translator {
134         \type "Grace_engraver_group";
135         \name "Grace";
136         \consists "Output_property_engraver";   
137
138         Generic_property_list = #generic-grace-properties
139         
140         \consists "Note_heads_engraver";
141         \consists "Local_key_engraver";
142         \consists "Stem_engraver";
143         \consists "Beam_engraver";
144         \consists "Slur_engraver";
145         
146         \consists "Auto_beam_engraver";
147         \consists "Align_note_column_engraver";
148
149         \consists "Rhythmic_column_engraver";
150
151         \consists "Dynamic_engraver";% in Grace ???
152         \consists "Text_engraver"; % in Grace ???
153
154         \consists "Property_engraver";
155
156         Stem \push  #'style = #"grace"
157         Stem \push  #'flag-style = #"grace"
158         Stem \push  #'stem-length = #6.0
159         Stem \push  #'direction = #1
160
161         NoteHead \push #'font-size = #-1
162         Stem \push #'font-size = #-1
163         Stem \push #'stem-shorten = #'(0)
164         Beam \push #'font-size = #-1
165         TextScript \push #'font-size = #-1
166         Slur \push #'font-size = #-1
167         Accidentals \push #'font-size = #-1
168         Beam \push #'beam-thickness = #0.3
169         Beam \push #'beam-space-function = #(lambda (x) 0.5)
170
171         Stem \push #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
172         Stem \push #'beamed-lengths =
173                 #'(0.0 2.5 2.0 1.5)
174         Stem \push #'minimum-beamed-lengths
175                  = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
176
177         weAreGraceContext = ##t   
178         graceAccidentalSpace= 1.5 ; % in staff space
179 }
180
181 ThreadContext = \translator{
182         \type Engraver_group_engraver;
183         \consists "Thread_devnull_engraver";
184         \consists "Note_heads_engraver";
185         \consists "Output_property_engraver";   
186         Generic_property_list = #generic-thread-properties
187         \consists "Property_engraver";
188         \name Thread;
189 }
190
191 GrandStaffContext=\translator{
192         \type "Engraver_group_engraver";
193         \name GrandStaff;
194         \consists "Span_bar_engraver";
195         \consists "Span_arpeggio_engraver";
196         \consists "System_start_delimiter_engraver";
197         systemStartDelimiterGlyph = #'brace
198         
199         \consists "Property_engraver";  
200         Generic_property_list = #generic-grand-staff-properties
201         \accepts "Staff";
202 }
203
204 PianoStaffContext = \translator{
205         \GrandStaffContext
206         \name "PianoStaff";
207
208         \consists "Vertical_align_engraver";
209
210         alignmentReference = \center;
211         VerticalAlignment \push #'threshold = #'(12 . 12) 
212
213 %       \consistsend "Axis_group_engraver";
214 }
215
216 StaffGroupContext= \translator {
217         \type "Engraver_group_engraver";
218         \name StaffGroup;
219
220         \consists "Span_bar_engraver";
221         \consists "Span_arpeggio_engraver";
222         \consists "Output_property_engraver";   
223         systemStartDelimiterGlyph = #'bracket
224         \consists "System_start_delimiter_engraver";
225         \accepts "Staff";
226         \accepts "RhythmicStaff";
227         \accepts "GrandStaff";
228         \accepts "PianoStaff";
229         
230         \accepts "Lyrics";
231         \accepts "ChordNames";
232 }
233
234
235 % UGH! JUNKME
236 LyricsVoiceContext= \translator{
237         \type "Engraver_group_engraver";
238         \consistsend "Axis_group_engraver";
239         LyricVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
240
241         \name LyricVoice ;
242         \consists "Separating_line_group_engraver";
243         \consists "Lyric_engraver";
244         \consists "Extender_engraver";
245         \consists "Hyphen_engraver";
246         \consists "Stanza_number_engraver";
247         phrasingPunctuation = #".,;:!?\""
248         
249 }
250 NoteNamesContext = \translator {
251         \type "Engraver_group_engraver";
252         \name NoteNames;
253         \consistsend "Axis_group_engraver";
254         \consists "Note_name_engraver";
255         \consists "Separating_line_group_engraver";
256 }
257
258 LyricsContext = \translator {
259         \type "Engraver_group_engraver";
260         \name Lyrics;
261         \consists Vertical_align_engraver; %need this for getting folded repeats right.
262         Generic_property_list = #generic-lyrics-properties
263         \consists "Property_engraver";
264         \consistsend "Axis_group_engraver";
265         
266         \accepts "LyricVoice";
267 }
268
269 ChordNameVoiceContext = \translator {
270         \type "Engraver_group_engraver";
271         \name ChordNameVoice ;
272
273         \consists "Output_property_engraver";   
274         \consistsend "Axis_group_engraver";
275         \consists "Separating_line_group_engraver";
276         \consists "Chord_name_engraver";
277 }
278 ChordNameContext = \translator {
279         \type "Engraver_group_engraver";
280         \name ChordNames;
281
282         Generic_property_list = #generic-chord-staff-properties
283         \consists "Property_engraver";  
284         \consists "Output_property_engraver";   
285         \accepts "ChordNameVoice";
286         \consistsend "Axis_group_engraver";
287         }
288
289
290 ScoreWithNumbers = \translator {
291         \type "Score_engraver";
292
293         % uncomment to bar numbers on a whole system.
294         \consists "Bar_number_engraver";
295 }
296
297 StupidScore = \translator {
298         \type "Score_engraver";
299         \name Score;
300         \consists "Note_heads_engraver";
301 }
302
303
304
305 BarNumberingStaffContext = \translator {
306         \StaffContext
307         \consists "Mark_engraver";
308 }
309
310 HaraKiriStaffContext = \translator {
311         \StaffContext
312         \remove "Axis_group_engraver";
313         \consistsend "Hara_kiri_engraver";        
314         \consists "Instrument_name_engraver";
315         \accepts "Voice";
316 }
317 %{
318   The HaraKiriStaffContexts doesn't override \name,
319   so it is still named `Staff'.
320
321   %\translator { \HaraKiriStaffContext }
322 %}
323
324 OrchestralPartStaffContext = \translator {
325         \StaffContext
326         \consists "Mark_engraver";
327 }
328
329 ScoreContext = \translator {
330         \type Score_engraver;
331         \name Score;
332         
333
334         \consists "Repeat_acknowledge_engraver";
335         \consists "Timing_engraver";
336         \consists "Output_property_engraver";   
337         \consists "System_start_delimiter_engraver";
338         \consists "Mark_engraver";      
339         \consists "Break_align_engraver";
340         \consists "Spacing_engraver";
341         \consists "Vertical_align_engraver";
342
343         \consists "Lyric_phrasing_engraver";
344         \consists "Bar_number_engraver";
345         \consists "Span_arpeggio_engraver";
346
347         
348         \accepts "Staff";
349         \accepts "StaffGroup";
350         \accepts "RhythmicStaff";       
351         \accepts "Lyrics";
352         \accepts "ChordNames";
353         \accepts "GrandStaff";
354         \accepts "ChoirStaff";
355         \accepts "PianoStaff";
356         \accepts "NoteNames";
357
358         soloText = #"Solo"
359         soloIIText = #"Solo II"
360         aDueText = #"\\`a2"
361         soloADue = ##t
362         splitInterval = #'(0 . 1)
363         changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
364
365         defaultClef = #"treble"
366
367         StaffMinimumVerticalExtent = #(cons -4.0 4.0)
368
369         barAuto = ##t
370         voltaVisibility = ##t
371         %  name, glyph id, c0 position
372         supportedClefTypes = #'(
373           ("treble" . ("clefs-G" -2))
374           ("violin" . ("clefs-G" -2))
375           ("G" . ("clefs-G" -2))
376           ("G2" . ("clefs-G" -2))
377           ("french" . ("clefs-G" -4 ))
378           ("soprano" . ("clefs-C" -4 ))
379           ("mezzosoprano" . ("clefs-C" -2 ))
380           ("alto" . ("clefs-C" 0 ))
381           ("tenor" . ("clefs-C" 2 ))
382           ("baritone" . ("clefs-C" 4 ))
383           ("varbaritone"  . ("clefs-F" 0))
384           ("bass" . ("clefs-F" 2 ))
385           ("F" . ( "clefs-F" 2))
386           ("subbass" . ("clefs-F" 4))
387         )
388         % where is c0 in this clef?
389         clefPitches = #'(("clefs-G" . -4)
390           ("clefs-C" . 0)
391           ("clefs-F" . 4))
392                 
393
394         automaticPhrasing = ##t;
395         alignmentReference = \down;
396         defaultClef = #"treble"
397         defaultBarType = #"|"
398         systemStartDelimiterGlyph = #'bar-line
399         explicitClefVisibility = #all-visible
400         explicitKeySignatureVisibility = #all-visible
401         
402         scriptDefinitions = #default-script-alist
403
404         startSustain = #"Ped."
405         stopSustain = #"*"
406         stopStartSustain = #"*Ped."
407         startUnaChorda = #"una chorda"
408         stopUnaChorda = #"tre chorde"
409         % should make separate lists for stopsustain and startsustain 
410
411
412        %
413        % what order to print accs.  We could compute this, 
414        % but computing is more work than putting it here.
415        %
416        % Flats come first, then sharps.
417        keyAccidentalOrder = #'(
418          (6 . -1) (2  . -1) (5 . -1 ) (1  . -1) (4  . -1) (0  . -1) (3  . -1)
419          (3  . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
420        )
421         breakAlignOrder = #'(
422           Instrument_name
423           Left_edge_item
424           Span_bar
425           Breathing_sign
426           Clef_item
427           Key_item
428           Staff_bar
429           Time_signature
430           Stanza_number
431         )
432        
433         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
434         % TODO: uniform naming.;  
435         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436
437
438         %
439         % distances are given in stafflinethickness (thicknesses) and
440         % staffspace (distances)
441         %
442         Arpeggio = #`(
443                 (interfaces . (arpeggio-interface side-position-interface))
444                 (X-extent-callback . ,Arpeggio::width_callback)
445                 (molecule-callback . ,Arpeggio::brew_molecule)
446                 (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
447                 (X-offset-callbacks . (,Side_position::aligned_side))
448                 (right-padding . 0.4)  ; Hmm, not generic?
449                 (direction . -1)
450                 (staff-position . 0.0)
451                 (name . "Arpeggio") 
452         )
453         BarLine = #`(
454                 (interfaces . (bar-interface staff-bar-interface))
455                 (break-align-symbol . Staff_bar)
456                 (glyph . "|")
457                 (break-glyph-function . ,default-break-barline)
458                 (barsize-procedure . ,Bar::get_staff_bar_size)
459                 (molecule-callback . ,Bar::brew_molecule)          
460                 (visibility-lambda . ,all-visible)
461                 (breakable . #t)
462                 (before-line-breaking-callback . ,Bar::before_line_breaking)
463                 ;;
464                 ;; Ross. page 151 lists other values, we opt for a leaner look
465                 ;; 
466                 (kern . 3.0)
467                 (thin-kern . 3.0)
468                 (hair-thickness . 1.6)
469                 (thick-thickness . 6.0)
470                 (name . "BarLine")
471         )
472
473         BarNumber = #`(
474                 (molecule-callback . ,Text_item::brew_molecule)
475                 (breakable . #t)
476                 (visibility-lambda . ,begin-of-line-visible)
477                 (padding . 1.0)
478                 (direction . 1)
479                 (properties-to-font-name . ,properties-to-font-name)
480                 (style-to-font-name . ,style-to-font-name)
481                 (markup-to-properties . ,markup-to-properties)
482                 (font-family . roman)
483                 (name . "BarNumber")
484         )
485
486         Beam = #basic-beam-properties
487
488         BreakAlignment = #`(
489                 (breakable . #t)
490                 (interfaces . (break-align-interface))
491                 (stacking-dir . 1)
492                 (axes 0)
493                 (X-offset-callbacks . (,Break_align_interface::self_align_callback))
494                 (space-alist . ,default-break-align-space-alist) 
495                 (name . "BreakAlignment")               
496         )
497
498         BreakAlignGroup = #`(
499                 (interfaces . (axis-group-interface))
500                 (axes  . (0))
501                 (X-offset-callbacks . (,Break_align_interface::alignment_callback))
502                 
503                 (name . "BreakAlignGroup")
504         )
505
506         BreathingSign = #`(
507                 (interfaces . (breathing-sign-interface))
508                 (break-align-symbol . Breathing_sign)
509                 (breakable . #t )
510                 (molecule-callback . ,Breathing_sign::brew_molecule)
511                 (Y-offset-callbacks . (,Breathing_sign::offset_callback))
512                 (visibility-lambda . ,begin-of-line-invisible)
513                 (name . "BreathingSign")
514         )
515
516         Clef = #`(
517            (interfaces .  (clef-interface))
518            (molecule-callback . ,Score_element::brew_molecule)
519            (before-line-breaking-callback . ,Clef::before_line_breaking)
520            (breakable . #t)
521            (break-align-symbol . Clef_item)
522            (visibility-lambda . ,begin-of-line-visible)
523            (Y-offset-callbacks  . (,Staff_symbol_referencer::callback)) 
524            (name . "Clef")
525         )
526
527         ChordName = #`(
528                 (molecule-callback . ,Chord_name::brew_molecule)
529                 (interfaces . (chord-name-interface))
530                 (after-line-breaking-callback . ,Chord_name::after_line_breaking)
531                 (chord-name-function . ,default-chord-name-function)
532                 (name . "ChordName")  
533         )
534
535         NoteCollision = #`(
536                 (axes 0 1)
537                 (interfaces . (collision-interface))
538                 (note-width . 1.65)
539                 (name . "NoteCollision")
540         )
541
542         Crescendo = #`(
543                 (molecule-callback . ,Crescendo::brew_molecule)
544                 (interfaces . (crescendo-interface dynamic-interface))
545                 (thickness . 1.0)
546                 (shorten-for-letter  .  4.0)
547                 (height . 0.6666)
548                 (dash-thickness . 1.2)
549                 (dash-length . 4.0)
550                 (name . "Crescendo")
551                 (self-alignment-Y . 0)
552                 (Y-offset-callbacks . (,Side_position::aligned_on_self))
553         )
554
555         DotColumn = #`(
556                 (interfaces . (dot-column-interface axis-group-interface ))
557                 (axes 0 )
558                 (name . "DotColumn")
559         )
560
561         Dots = #`(
562                 (interfaces . (dot-interface))
563                 (molecule-callback . ,Dots::brew_molecule)
564                 (dot-count . 1)
565                 (staff-position . 0.0)
566                 (Y-offset-callbacks  . (,Dots::quantised_position_callback ,Staff_symbol_referencer::callback))
567
568                 (name . "Dots")         
569         )
570         
571         DynamicText = #`(
572                 (interfaces . (dynamic-interface))
573                 (Y-offset-callbacks . (,Side_position::aligned_on_self))
574                 (molecule-callback . ,Text_item::brew_molecule)
575                 (font-style . dynamic)
576                 (properties-to-font-name . ,properties-to-font-name)
577                 (style-to-font-name . ,style-to-font-name)
578                 (markup-to-properties . ,markup-to-properties)
579                 (script-priority . 100)
580                 (self-alignment-Y . 0)
581                 (name . "DynamicText")
582         )
583         
584         DynamicLineSpanner = #`(
585                 (interfaces . (dynamic-interface axis-group-interface side-position-interface))
586                 (axes . ( 1))
587                 (padding . 3)
588                 (minimum-space . 6)
589                 (name . "dynamic alignment")
590         )
591         
592         LeftEdge = #`(
593                 (break-align-symbol . Left_edge_item)
594                 (breakable . #t)
595                 (name . "LeftEdge")
596         )
597         
598         Fingering = #`(
599                 (interfaces . (finger-interface text-script-interface text-item-interface side-position-interface))
600                 (molecule-callback . ,Text_item::brew_molecule)
601                 (padding .      3.0)
602                 (self-alignment-X . 0)
603                 (name . "Fingering") 
604         )
605
606         GraceAlignment = #`(
607                 (interfaces . (axis-group-interface align-interface))
608                 (axes . (0))
609                 (horizontal-space . 1.2)
610                 (padding . 1.0)
611                 (before-line-breaking-callback . ,Grace_align_item::before_line_breaking)
612                 (name . "GraceAlignment")
613         )
614         
615         HaraKiriVerticalGroup = #`(
616                 (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
617                 (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
618                 (interfaces . (hara-kiri-group-interface))
619                 (axes 1)
620                 (name . "HaraKiriVerticalGroup")
621         )
622
623         LyricHyphen = #`(
624                 (interfaces  . (lyric-hyphen-interface))        
625                 (thickness . 1.0)
626                 (height . 0.4)
627                 (minimum-length .  0.5) 
628                 (molecule-callback . ,Hyphen_spanner::brew_molecule)
629                 (Y-extent-callback . ,Score_element::point_dimension_callback)
630                 (name . "LyricHyphen")
631         )
632         
633         InstrumentName = #`(
634                 (interfaces . (instrument-name-interface))
635                 (breakable . #t)
636                 (Y-offset-callbacks . (,Side_position::centered_on_parent))
637                 (molecule-callback . ,Text_item::brew_molecule)         
638                 (break-align-symbol . Instrument_name)
639                 (visibility-lambda . ,begin-of-line-visible)
640                 (properties-to-font-name . ,properties-to-font-name)
641                 (style-to-font-name . ,style-to-font-name)
642                 (markup-to-properties . ,markup-to-properties)
643                 (font-family . roman)
644                 (name . "InstrumentName")
645         )
646         
647         KeySignature = #`(
648           (interfaces . (key-item-interface))
649           (molecule-callback . ,Key_item::brew_molecule)
650           (break-align-symbol . Key_item)
651           (visibility-lambda . ,begin-of-line-visible)
652           (breakable . #t)
653           (name . "KeySignature")
654         )
655         
656         Accidentals = #`(
657                 (molecule-callback . ,Local_key_item::brew_molecule)
658                 (X-offset-callbacks . (,Side_position::aligned_side))
659                 (direction . -1)
660                 (left-padding . 0.2)
661                 (right-padding . 0.4)
662                 (interfaces . (accidentals-interface))
663                 (name .  "Accidentals")
664         )
665         
666         LineOfScore = #`(
667                 (axes . (0 1))
668                 (interfaces . (axis-group-interface))
669                 (name .  "LineOfScore")
670         )
671         
672         LyricExtender = #`(
673                 (interfaces . (lyric-extender-interface))
674                 (molecule-callback . ,Lyric_extender::brew_molecule)
675                 (height . 0.8) ; stafflinethickness;
676                 (right-trim-amount . 0.5)
677                 (Y-extent-callback . ,Score_element::point_dimension_callback)
678                 (name . "LyricExtender")
679         )
680         
681         LyricText = #`(
682                 (interfaces .  (lyric-syllable-interface text-item-interface))
683                 (molecule-callback . ,Text_item::brew_molecule)
684                 (X-offset-callbacks . (,Side_position::aligned_on_self))
685                 (self-alignment-X . 0)
686                 (non-rhythmic . #t)
687                 (word-space . 0.6)
688                 (properties-to-font-name . ,properties-to-font-name)
689                 (style-to-font-name . ,style-to-font-name)
690                 (markup-to-properties . ,markup-to-properties)
691                 (font-family . roman)
692                 (name . "LyricText") 
693         )
694         
695         RehearsalMark = #`(
696                 (interfaces . (mark-interface side-position-interface))
697                 (molecule-callback . ,Text_item::brew_molecule) 
698                 (breakable . #t)
699                 (visibility-lambda . ,end-of-line-invisible)
700                 (padding . 4.0)
701                 (properties-to-font-name . ,properties-to-font-name)
702                 (style-to-font-name . ,style-to-font-name)
703                 (markup-to-properties . ,markup-to-properties)
704                 (font-style . mark)
705                 (name . "RehearsalMark")
706         )
707         
708         MultiMeasureRest = #`(
709                 (interfaces . (multi-measure-rest-interface))
710                 (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
711                 (molecule-callback . ,Multi_measure_rest::brew_molecule)
712                 (staff-position . 0)
713                 (expand-limit . 10)
714                 (padding . 2.0) ; staffspace
715                 (minimum-width . 12.5) ; staffspace
716                 (name . "MultiMeasureRest")
717         )
718         
719         NoteColumn = #`(
720                 (interfaces . (axis-group-interface note-column-interface))
721                 (axes 0 1)
722                 (name . "NoteColumn")
723         )
724         
725         NoteHead = #`(
726                 (interfaces . (note-head-interface rhythmic-head-interface))
727                 (style . default)
728                 (molecule-callback . ,Note_head::brew_molecule)
729                 (Y-offset-callbacks  . (,Staff_symbol_referencer::callback)) 
730                 (name . "NoteHead")
731         )
732
733         NoteName = #`(
734                 (molecule-callback . ,Text_item::brew_molecule)
735                 (name . "NoteName")
736         )
737
738         OctavateEight  = #`(
739                 (self-alignment-X . 0)
740                 (text . "8")
741                 (visibility-lambda . ,begin-of-line-visible)
742                 (X-offset-callbacks . (,Side_position::centered_on_parent ,Side_position::aligned_on_self))
743                 (Y-offset-callbacks . (,Side_position::aligned_side))
744                 (molecule-callback . ,Text_item::brew_molecule)
745                 (font-shape . "italic")
746                 (properties-to-font-name . ,properties-to-font-name)
747                 (style-to-font-name . ,style-to-font-name)
748                 (markup-to-properties . ,markup-to-properties)
749                 (name . "OctavateEight")
750         )
751         
752         PaperColumn = #`(
753                 (interfaces . (paper-column-interface axis-group-interface))
754                 (axes 0)
755                 (before-musical-spacing-factor . 0.4)
756                 (name . "PaperColumn")
757         )
758         NonMusicalPaperColumn = #`(
759                 (interfaces . (paper-column-interface axis-group-interface))
760                 (axes 0)
761                 (before-musical-spacing-factor . 1.0)
762                 (name . "PaperColumn")
763         )
764
765         Rest = #`(
766                 (interfaces . (rest-interface rhythmic-head-interface))
767                 (after-line-breaking-callback . ,Rest::after_line_breaking)
768                 (molecule-callback . ,Rest::brew_molecule)
769                 (minimum-beam-collision-distance . 1.5)
770                 (name . "Rest")
771         )
772         
773         RestCollision = #`(
774                 (interfaces . (rest-collision-interface))
775                 (minimum-distance . 0.75)
776                 (name . "RestCollision")                
777         )
778
779         Script = #`(
780                 (molecule-callback . ,Script::brew_molecule)
781                 (interfaces . (script-interface side-position-interface))
782                 (X-offset-callbacks . (,Side_position::centered_on_parent))
783                 (name . "Script")
784         )
785         
786         ScriptColumn = #`(
787                 (before-line-breaking-callback . ,Script_column::before_line_breaking)
788                 (name . "ScriptColumn")
789         )
790         
791         Slur = #`(
792                 (interfaces . (slur-interface))
793                 (molecule-callback . ,Slur::brew_molecule)
794                 (thickness . 1.2)               
795                 (spacing-procedure . ,Slur::set_spacing_rods)           
796                 (minimum-length . 1.5)
797                 (after-line-breaking-callback . ,Slur::after_line_breaking)
798                 (extremity-rules . ,default-slur-extremity-rules)
799                 (extremity-offset-alist . ,default-slur-extremity-offset-alist)
800                 (de-uglify-parameters . ( 1.5  0.8  -2.0))
801                 (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5)))
802                 (beautiful . 0.5)
803                 (y-free . 0.75)
804                 (slope-limit . 0.8)
805                 (attachment-offset . ((0 . 0) . (0 . 0)))
806                 (name . "Slur")
807                 )
808
809         SpacingSpanner =#`(
810                 (spacing-procedure . ,Spacing_spanner::set_springs)
811
812                 ;; assume that notes at least this long are present.
813                 (maximum-duration-for-spacing . ,(make-moment 1 8))
814                 (name . "SpacingSpanner")
815         )
816         SpanBar = #`(
817                 (interfaces . (bar-interface span-bar-interface))
818                 (break-align-symbol . Staff_bar)
819                 (barsize-procedure . ,Span_bar::get_bar_size) 
820                 (molecule-callback . ,Bar::brew_molecule)
821                 (visibility-lambda . ,begin-of-line-invisible)
822                 (X-extent-callback . ,Span_bar::width_callback)
823                 (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback))
824                 
825                 (breakable . #t)
826                 (glyph . "|")
827                 (before-line-breaking-callback . ,Span_bar::before_line_breaking)
828                 ;; ugh duplication! 
829                 
830                 ;;
831                 ;; Ross. page 151 lists other values, we opt for a leaner look
832                 ;; 
833                 (kern . 3.0)
834                 (thin-kern . 3.0)
835                 (hair-thickness . 1.6)
836                 (thick-thickness . 6.0)
837                 (name . "SpanBar")
838         )
839
840         StanzaNumber = #`(
841                 (breakable . #t)
842                 (molecule-callback . ,Text_item::brew_molecule)         
843                 (break-align-symbol . Clef_item)
844                 (visibility-lambda . ,begin-of-line-visible)
845                 (name . "StanzaNumber")
846         )
847
848         StaffSymbol = #`(
849                 (interfaces . (staff-symbol-interface ))
850                 (molecule-callback . ,Staff_symbol::brew_molecule)
851                 (staff-space . 1.0)
852                 (line-count . 5 )
853                 (name . "StaffSymbol")
854         )
855
856         SystemStartDelimiter = #`(
857                 (molecule-callback . ,System_start_delimiter::brew_molecule)
858                 (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
859                 (collapse-height . 1.0)
860                 (thickness . 1.6)
861                 (arch-height . 1.5)
862                 (arch-angle . 50.0)
863                 (arch-thick . 0.25)
864                 (arch-width . 1.5)
865                 (bracket-thick . 0.25)
866                 (bracket-width . 2.0)
867                 (name . "SystemStartDelimiter")
868         )
869
870         TextScript = #`(
871                 (molecule-callback . ,Text_item::brew_molecule)
872                 (no-spacing-rods . #t)
873                 (interfaces . (text-script-interface text-item-interface side-position-interface))
874                 (padding . 0.5)
875                 (properties-to-font-name . ,properties-to-font-name)
876                 (style-to-font-name . ,style-to-font-name)
877                 (markup-to-properties . ,markup-to-properties)
878                 (name . "TextScript") 
879         )
880         TextSpanner = #`(
881                 (interfaces . (text-spanner-interface))
882                 (molecule-callback . ,Text_spanner::brew_molecule)
883                 (type . "line")
884                 (direction . 1)
885                 (font-shape . "italic")
886                 (properties-to-font-name . ,properties-to-font-name)
887                 (style-to-font-name . ,style-to-font-name)
888                 (markup-to-properties . ,markup-to-properties)
889                 (name . "TextSpanner")          
890         )
891         Tie = #`(
892                 (interfaces . (tie-interface))
893                 (molecule-callback . ,Tie::brew_molecule)
894                 (spacing-procedure . ,Tie::set_spacing_rods)
895                 (staffline-clearance . 0.24)
896                 (details . ((ratio . 0.333) (height-limit . 1.0)))
897                 (thickness . 1.2)
898                 (x-gap . 0.2)
899                 (minimum-length  . 2.5)
900                 (name . "Tie")
901         )
902
903         TieColumn = #`(
904                 (after-line-breaking-callback . ,Tie_column::after_line_breaking)
905                 (interfaces . (tie-column-interface))
906                 (name . "TieColumn")            
907         )
908
909         TimeSignature = #`(
910                 (interfaces . (time-signature-interface))
911                 (molecule-callback . ,Time_signature::brew_molecule)
912                 (break-align-symbol . Time_signature)
913                 (visibility-lambda . ,all-visible)
914                 (breakable . #t)
915                 (properties-to-font-name . ,properties-to-font-name)
916                 (style-to-font-name . ,style-to-font-name)
917                 (markup-to-properties . ,markup-to-properties)
918                 (font-style . timesig)
919                 (name . "TimeSignature")
920         )
921
922         TupletBracket = #`(
923                 (interfaces . (tuplet-spanner-interface))
924                 (number-gap . 2.0)   
925                 (delta-y . 0)
926                 (thick . 1.0)
927                 (after-line-breaking-callback . ,Tuplet_spanner::after_line_breaking)
928                 (molecule-callback . ,Tuplet_spanner::brew_molecule)
929                 (properties-to-font-name . ,properties-to-font-name)
930                 (style-to-font-name . ,style-to-font-name)
931                 (markup-to-properties . ,markup-to-properties)
932                 (font-shape . "italic")
933                 (name . "TupletBracket")
934         )       
935
936         SostenutoPedal = #`(
937                 (molecule-callback . ,Text_item::brew_molecule)
938                 (X-offset-callbacks . (,Side_position::aligned_on_self))
939                 (Y-offset-callbacks .
940                  (,Side_position::aligned_side
941                   ,Side_position::centered_on_parent))
942
943                 (font-shape . "italic")
944                 (properties-to-font-name . ,properties-to-font-name)
945                 (style-to-font-name . ,style-to-font-name)
946                 (markup-to-properties . ,markup-to-properties)
947                 (no-spacing-rods . #t)
948                 (self-alignment-X . 0)
949                 (name  . "SostenutoPedal")
950                                 
951         )
952
953         Stem = #`(
954                 (interfaces . (stem-interface))
955                 (before-line-breaking-callback . ,Stem::before_line_breaking)
956                 (molecule-callback . ,Stem::brew_molecule)
957                 (thickness . 0.8)
958                 (beamed-lengths . (0.0 2.5 2.0 1.5))
959                 (beamed-minimum-lengths . (0.0 1.5 1.25 1.0))
960                 
961 ;;  Stems in unnatural (forced) direction should be shortened,
962 ;;  according to [Roush & Gourlay].  Their suggestion to knock off
963 ;;  a whole staffspace seems a bit drastical: we'll do half.
964
965                 (lengths . (3.5 3.5 3.5 4.5 5.0))
966                 (stem-shorten . (0.5))
967                 ; if stem is on middle line, choose this direction.
968                 (default-neutral-direction . 1)
969                 (X-offset-callbacks . (,Stem::off_callback))            
970                 (name . "Stem")
971         )
972
973         StemTremolo = #`(
974                 (molecule-callback . ,Stem_tremolo::brew_molecule)
975                 (beam-width . 2.0) ; staff-space
976                 (beam-thickness . 0.42) ; staff-space
977                 (beam-space-function . ,default-beam-space-function)
978                 (name . "StemTremolo")
979         )
980
981         SeparationItem = #`(
982                 (interfaces . (separation-item-interface))
983                 (name . "SeparationItem")
984         )
985
986         SeparatingGroupSpanner = #`(
987                 (interfaces . (separation-spanner-interface))
988                 (spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
989                 (name . "SeparatingGroupSpanner")
990         )
991
992         SustainPedal = #`(
993                 (interfaces . (sustain-pedal-interface  side-position-interface))
994                 (no-spacing-rods . #t)
995                 (molecule-callback . ,Sustain_pedal::brew_molecule)
996                 (self-alignment-X . 0)
997                 (X-offset-callbacks . (,Side_position::aligned_on_self))
998                 (Y-offset-callbacks .
999                  (,Side_position::aligned_side
1000                   ,Side_position::centered_on_parent))
1001
1002                 (name . "SustainPedal")         
1003         )       
1004         UnaChordaPdeal = #`(
1005                 (molecule-callback . ,Text_item::brew_molecule)
1006                 (font-shape . "italic")
1007                 (properties-to-font-name . ,properties-to-font-name)
1008                 (style-to-font-name . ,style-to-font-name)
1009                 (markup-to-properties . ,markup-to-properties)
1010                 (no-spacing-rods . #t)
1011                 (self-alignment-X . 0)
1012                 (X-offset-callbacks . (,Side_position::aligned_on_self))
1013                 (Y-offset-callbacks .
1014                  (,Side_position::aligned_side
1015                   ,Side_position::centered_on_parent))
1016
1017                 (name . "UnaChordaPedal")
1018         )
1019
1020         VoltaBracket = #`(
1021                 (molecule-callback . ,Volta_spanner::brew_molecule)
1022                 (interfaces . (volta-spanner-interface side-position-interface))
1023                 (direction . 1)
1024                 (padding . 5)
1025                 (thickness . 1.6)  ;  stafflinethickness
1026                 (height . 2.0) ; staffspace;
1027                 (minimum-space . 25)
1028                 (properties-to-font-name . ,properties-to-font-name)
1029                 (style-to-font-name . ,style-to-font-name)
1030                 (markup-to-properties . ,markup-to-properties)
1031                 (font-style . volta)
1032                 (name . "VoltaBracket")
1033         )       
1034
1035         VerticalAlignment = #`(
1036                 (axes 1)
1037                 (interfaces . (align-interface axis-group-interface))
1038                 (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
1039                 (X-extent-callback . #f)
1040                 (stacking-dir . -1)
1041                 (name . "VerticalAlignment")
1042         )
1043
1044         VerticalAxisGroup = #`(
1045                 (axes 1)
1046                 (interfaces . (axis-group-interface))
1047                 (name . "VerticalAxisGroup")
1048         )
1049
1050
1051         \include "auto-beam-settings.ly";
1052
1053 }
1054
1055 OrchestralScoreContext= \translator {
1056         \ScoreContext
1057 }
1058