]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver.ly
patch::: 1.3.96.jcn4
[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                 (name . "BarNumber")
478                 (padding . 1.0)
479                 (direction . 1)
480         )
481
482         Beam = #basic-beam-properties
483
484         BreakAlignment = #`(
485                 (breakable . #t)
486                 (interfaces . (break-align-interface))
487                 (stacking-dir . 1)
488                 (axes 0)
489                 (X-offset-callbacks . (,Break_align_interface::self_align_callback))
490                 (space-alist . ,default-break-align-space-alist) 
491                 (name . "BreakAlignment")               
492         )
493
494         BreakAlignGroup = #`(
495                 (interfaces . (axis-group-interface))
496                 (axes  . (0))
497                 (X-offset-callbacks . (,Break_align_interface::alignment_callback))
498                 
499                 (name . "BreakAlignGroup")
500         )
501
502         BreathingSign = #`(
503                 (interfaces . (breathing-sign-interface))
504                 (break-align-symbol . Breathing_sign)
505                 (breakable . #t )
506                 (molecule-callback . ,Breathing_sign::brew_molecule)
507                 (Y-offset-callbacks . (,Breathing_sign::offset_callback))
508                 (visibility-lambda . ,begin-of-line-invisible)
509                 (name . "BreathingSign")
510         )
511
512         Clef = #`(
513            (interfaces .  (clef-interface))
514            (molecule-callback . ,Score_element::brew_molecule)
515            (before-line-breaking-callback . ,Clef::before_line_breaking)
516            (breakable . #t)
517            (break-align-symbol . Clef_item)
518            (visibility-lambda . ,begin-of-line-visible)
519            (Y-offset-callbacks  . (,Staff_symbol_referencer::callback)) 
520            (name . "Clef")
521         )
522
523         ChordName = #`(
524                 (molecule-callback . ,Chord_name::brew_molecule)
525                 (interfaces . (chord-name-interface))
526                 (after-line-breaking-callback . ,Chord_name::after_line_breaking)
527                 (chord-name-function . ,default-chord-name-function)
528                 (name . "ChordName")  
529         )
530
531         NoteCollision = #`(
532                 (axes 0 1)
533                 (interfaces . (collision-interface))
534                 (note-width . 1.65)
535                 (name . "NoteCollision")
536         )
537
538         Crescendo = #`(
539                 (molecule-callback . ,Crescendo::brew_molecule)
540                 (interfaces . (crescendo-interface dynamic-interface))
541                 (thickness . 1.0)
542                 (shorten-for-letter  .  4.0)
543                 (height . 0.6666)
544                 (dash-thickness . 1.2)
545                 (dash-length . 4.0)
546                 (name . "Crescendo")
547                 (self-alignment-Y . 0)
548                 (Y-offset-callbacks . (,Side_position::aligned_on_self))
549         )
550
551         DotColumn = #`(
552                 (interfaces . (dot-column-interface axis-group-interface ))
553                 (axes 0 )
554                 (name . "DotColumn")
555         )
556
557         Dots = #`(
558                 (interfaces . (dot-interface))
559                 (molecule-callback . ,Dots::brew_molecule)
560                 (dot-count . 1)
561                 (staff-position . 0.0)
562                 (Y-offset-callbacks  . (,Dots::quantised_position_callback ,Staff_symbol_referencer::callback))
563
564                 (name . "Dots")         
565         )
566         
567         DynamicText = #`(
568                 (style . "dynamic")
569                 (interfaces . (dynamic-interface))
570                 (Y-offset-callbacks . (,Side_position::aligned_on_self))
571
572                 (molecule-callback . ,Text_item::brew_molecule)
573                 (script-priority . 100)
574                 (self-alignment-Y . 0)
575                 (name . "DynamicText")
576         )
577         
578         DynamicLineSpanner = #`(
579                 (interfaces . (dynamic-interface axis-group-interface side-position-interface))
580                 (axes . ( 1))
581                 (padding . 3)
582                 (minimum-space . 6)
583                 (name . "dynamic alignment")
584         )
585         
586         LeftEdge = #`(
587                 (break-align-symbol . Left_edge_item)
588                 (breakable . #t)
589                 (name . "LeftEdge")
590         )
591         
592         Fingering = #`(
593                 (interfaces . (finger-interface text-script-interface text-item-interface side-position-interface))
594                 (molecule-callback . ,Text_item::brew_molecule)
595                 (padding .      3.0)
596                 (self-alignment-X . 0)
597                 (name . "Fingering") 
598         )
599
600         GraceAlignment = #`(
601                 (interfaces . (axis-group-interface align-interface))
602                 (axes . (0))
603                 (horizontal-space . 1.2)
604                 (padding . 1.0)
605                 (before-line-breaking-callback . ,Grace_align_item::before_line_breaking)
606                 (name . "GraceAlignment")
607         )
608         
609         HaraKiriVerticalGroup = #`(
610                 (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
611                 (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
612                 (interfaces . (hara-kiri-group-interface))
613                 (axes 1)
614                 (name . "HaraKiriVerticalGroup")
615         )
616
617         LyricHyphen = #`(
618                 (interfaces  . (lyric-hyphen-interface))        
619                 (thickness . 1.0)
620                 (height . 0.4)
621                 (minimum-length .  0.5) 
622                 (molecule-callback . ,Hyphen_spanner::brew_molecule)
623                 (Y-extent-callback . ,Score_element::point_dimension_callback)
624                 (name . "LyricHyphen")
625         )
626         
627         InstrumentName = #`(
628                 (interfaces . (instrument-name-interface))
629                 (breakable . #t)
630                 (Y-offset-callbacks . (,Side_position::centered_on_parent))
631                 (molecule-callback . ,Text_item::brew_molecule)         
632                 (break-align-symbol . Instrument_name)
633                 (visibility-lambda . ,begin-of-line-visible)
634                 (name . "InstrumentName")
635         )
636         
637         KeySignature = #`(
638           (interfaces . (key-item-interface))
639           (molecule-callback . ,Key_item::brew_molecule)
640           (break-align-symbol . Key_item)
641           (visibility-lambda . ,begin-of-line-visible)
642           (breakable . #t)
643           (name . "KeySignature")
644         )
645         
646         Accidentals = #`(
647                 (molecule-callback . ,Local_key_item::brew_molecule)
648                 (X-offset-callbacks . (,Side_position::aligned_side))
649                 (direction . -1)
650                 (left-padding . 0.2)
651                 (right-padding . 0.4)
652                 (interfaces . (accidentals-interface))
653                 (name .  "Accidentals")
654         )
655         
656         LineOfScore = #`(
657                 (axes . (0 1))
658                 (interfaces . (axis-group-interface))
659                 (name .  "LineOfScore")
660         )
661         
662         LyricExtender = #`(
663                 (interfaces . (lyric-extender-interface))
664                 (molecule-callback . ,Lyric_extender::brew_molecule)
665                 (height . 0.8) ; stafflinethickness;
666                 (right-trim-amount . 0.5)
667                 (Y-extent-callback . ,Score_element::point_dimension_callback)
668                 (name . "LyricExtender")
669         )
670         
671         LyricText = #`(
672                 (interfaces .  (lyric-syllable-interface text-item-interface))
673                 (molecule-callback . ,Text_item::brew_molecule)
674                 (X-offset-callbacks . (,Side_position::aligned_on_self))
675                 (self-alignment-X . 0)
676                 (non-rhythmic . #t)
677                 (word-space . 0.6)
678                 (name . "LyricText") 
679         )
680         
681         RehearsalMark = #`(
682           (interfaces . (mark-interface side-position-interface))
683           (molecule-callback . ,Text_item::brew_molecule)       
684           (breakable . #t)
685           (visibility-lambda . ,end-of-line-invisible)
686           (padding . 4.0)
687           (name . "RehearsalMark")
688         )
689         
690         MultiMeasureRest = #`(
691                 (interfaces . (multi-measure-rest-interface))
692                 (spacing-procedure . ,Multi_measure_rest::set_spacing_rods)
693                 (molecule-callback . ,Multi_measure_rest::brew_molecule)
694                 (staff-position . 0)
695                 (expand-limit . 10)
696                 (padding . 2.0) ; staffspace
697                 (minimum-width . 12.5) ; staffspace
698                 (name . "MultiMeasureRest")
699         )
700         
701         NoteColumn = #`(
702                 (interfaces . (axis-group-interface note-column-interface))
703                 (axes 0 1)
704                 (name . "NoteColumn")
705         )
706         
707         NoteHead = #`(
708                 (interfaces . (note-head-interface rhythmic-head-interface))
709                 (style . default)
710                 (molecule-callback . ,Note_head::brew_molecule)
711                 (Y-offset-callbacks  . (,Staff_symbol_referencer::callback)) 
712                 (name . "NoteHead")
713         )
714
715         NoteName = #`(
716                 (molecule-callback . ,Text_item::brew_molecule)
717                 (name . "NoteName")
718         )
719
720         OctavateEight  = #`(
721                 (self-alignment-X . 0)
722                 (text . "8")
723                 (visibility-lambda . ,begin-of-line-visible)
724                 (X-offset-callbacks . (,Side_position::centered_on_parent ,Side_position::aligned_on_self))
725                 (Y-offset-callbacks . (,Side_position::aligned_side))
726                 (molecule-callback . ,Text_item::brew_molecule)
727                 (style . "italic")
728                 (name . "OctavateEight")
729         )
730         
731         PaperColumn = #`(
732                 (interfaces . (paper-column-interface axis-group-interface))
733                 (axes 0)
734                 (before-musical-spacing-factor . 0.4)
735                 (name . "PaperColumn")
736         )
737         NonMusicalPaperColumn = #`(
738                 (interfaces . (paper-column-interface axis-group-interface))
739                 (axes 0)
740                 (before-musical-spacing-factor . 1.0)
741                 (name . "PaperColumn")
742         )
743
744         Rest = #`(
745                 (interfaces . (rest-interface rhythmic-head-interface))
746                 (after-line-breaking-callback . ,Rest::after_line_breaking)
747                 (molecule-callback . ,Rest::brew_molecule)
748                 (minimum-beam-collision-distance . 1.5)
749                 (name . "Rest")
750         )
751         
752         RestCollision = #`(
753                 (interfaces . (rest-collision-interface))
754                 (minimum-distance . 0.75)
755                 (name . "RestCollision")                
756         )
757
758         Script = #`(
759                 (molecule-callback . ,Script::brew_molecule)
760                 (interfaces . (script-interface side-position-interface))
761                 (X-offset-callbacks . (,Side_position::centered_on_parent))
762                 (name . "Script")
763         )
764         
765         ScriptColumn = #`(
766                 (before-line-breaking-callback . ,Script_column::before_line_breaking)
767                 (name . "ScriptColumn")
768         )
769         
770         Slur = #`(
771                 (interfaces . (slur-interface))
772                 (molecule-callback . ,Slur::brew_molecule)
773                 (thickness . 1.2)               
774                 (spacing-procedure . ,Slur::set_spacing_rods)           
775                 (minimum-length . 1.5)
776                 (after-line-breaking-callback . ,Slur::after_line_breaking)
777                 (extremity-rules . ,default-slur-extremity-rules)
778                 (extremity-offset-alist . ,default-slur-extremity-offset-alist)
779                 (de-uglify-parameters . ( 1.5  0.8  -2.0))
780                 (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5)))
781                 (beautiful . 0.5)
782                 (y-free . 0.75)
783                 (slope-limit . 0.8)
784                 (attachment-offset . ((0 . 0) . (0 . 0)))
785                 (name . "Slur")
786                 )
787
788         SpacingSpanner =#`(
789                 (spacing-procedure . ,Spacing_spanner::set_springs)
790
791                 ;; assume that notes at least this long are present.
792                 (maximum-duration-for-spacing . ,(make-moment 1 8))
793                 (name . "SpacingSpanner")
794         )
795         SpanBar = #`(
796                 (interfaces . (bar-interface span-bar-interface))
797                 (break-align-symbol . Staff_bar)
798                 (barsize-procedure . ,Span_bar::get_bar_size) 
799                 (molecule-callback . ,Bar::brew_molecule)
800                 (visibility-lambda . ,begin-of-line-invisible)
801                 (X-extent-callback . ,Span_bar::width_callback)
802                 (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback))
803                 
804                 (breakable . #t)
805                 (glyph . "|")
806                 (before-line-breaking-callback . ,Span_bar::before_line_breaking)
807                 ;; ugh duplication! 
808                 
809                 ;;
810                 ;; Ross. page 151 lists other values, we opt for a leaner look
811                 ;; 
812                 (kern . 3.0)
813                 (thin-kern . 3.0)
814                 (hair-thickness . 1.6)
815                 (thick-thickness . 6.0)
816                 (name . "SpanBar")
817         )
818
819         StanzaNumber = #`(
820                 (breakable . #t)
821                 (molecule-callback . ,Text_item::brew_molecule)         
822                 (break-align-symbol . Clef_item)
823                 (visibility-lambda . ,begin-of-line-visible)
824                 (name . "StanzaNumber")
825         )
826
827         StaffSymbol = #`(
828                 (interfaces . (staff-symbol-interface ))
829                 (molecule-callback . ,Staff_symbol::brew_molecule)
830                 (staff-space . 1.0)
831                 (line-count . 5 )
832                 (name . "StaffSymbol")
833         )
834
835         SystemStartDelimiter = #`(
836                 (molecule-callback . ,System_start_delimiter::brew_molecule)
837                 (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
838                 (collapse-height . 1.0)
839                 (thickness . 1.6)
840                 (arch-height . 1.5)
841                 (arch-angle . 50.0)
842                 (arch-thick . 0.25)
843                 (arch-width . 1.5)
844                 (bracket-thick . 0.25)
845                 (bracket-width . 2.0)
846                 (name . "SystemStartDelimiter")
847         )
848
849         TextScript = #`(
850                 (molecule-callback . ,Text_item::brew_molecule)
851                 (no-spacing-rods . #t)
852                 (interfaces . (text-script-interface text-item-interface side-position-interface))
853                 (padding . 0.5)
854                 (get-font-name . ,get-font-name)
855                 (markup-to-properties . ,markup-to-properties)
856                 (name . "TextScript") 
857         )
858         TextSpanner = #`(
859                 (interfaces . (text-spanner-interface))
860                 (molecule-callback . ,Text_spanner::brew_molecule)
861                 (type . "line")
862                 (direction . 1)
863                 (text-style . "italic")
864                 (name . "TextSpanner")          
865         )
866         Tie = #`(
867                 (interfaces . (tie-interface))
868                 (molecule-callback . ,Tie::brew_molecule)
869                 (spacing-procedure . ,Tie::set_spacing_rods)
870                 (staffline-clearance . 0.24)
871                 (details . ((ratio . 0.333) (height-limit . 1.0)))
872                 (thickness . 1.2)
873                 (x-gap . 0.2)
874                 (minimum-length  . 2.5)
875                 (name . "Tie")
876         )
877
878         TieColumn = #`(
879                 (after-line-breaking-callback . ,Tie_column::after_line_breaking)
880                 (interfaces . (tie-column-interface))
881                 (name . "TieColumn")            
882         )
883
884         TimeSignature = #`(
885                 (interfaces . (time-signature-interface))
886                 (molecule-callback . ,Time_signature::brew_molecule)
887                 (break-align-symbol . Time_signature)
888                 (visibility-lambda . ,all-visible)
889                 (breakable . #t)
890                 (name . "TimeSignature")
891         )
892
893         TupletBracket = #`(
894                 (number-gap . 2.0)   
895                 (delta-y . 0)
896                 (thick . 1.0)
897                 (after-line-breaking-callback . ,Tuplet_spanner::after_line_breaking)
898                 (molecule-callback . ,Tuplet_spanner::brew_molecule)
899                 (interfaces . (tuplet-spanner-interface))
900                 (name "TupletBracket")
901         )       
902
903         SostenutoPedal = #`(
904                 (molecule-callback . ,Text_item::brew_molecule)
905                 (X-offset-callbacks . (,Side_position::aligned_on_self))
906                 (Y-offset-callbacks .
907                  (,Side_position::aligned_side
908                   ,Side_position::centered_on_parent))
909
910                 (style . "italic")
911                 (no-spacing-rods . #t)
912                 (self-alignment-X . 0)
913                 (name  . "SostenutoPedal")
914                                 
915         )
916
917         Stem = #`(
918                 (interfaces . (stem-interface))
919                 (before-line-breaking-callback . ,Stem::before_line_breaking)
920                 (molecule-callback . ,Stem::brew_molecule)
921                 (thickness . 0.8)
922                 (beamed-lengths . (0.0 2.5 2.0 1.5))
923                 (beamed-minimum-lengths . (0.0 1.5 1.25 1.0))
924                 
925 ;;  Stems in unnatural (forced) direction should be shortened,
926 ;;  according to [Roush & Gourlay].  Their suggestion to knock off
927 ;;  a whole staffspace seems a bit drastical: we'll do half.
928
929                 (lengths . (3.5 3.5 3.5 4.5 5.0))
930                 (stem-shorten . (0.5))
931                 ; if stem is on middle line, choose this direction.
932                 (default-neutral-direction . 1)
933                 (X-offset-callbacks . (,Stem::off_callback))            
934                 (name . "Stem")
935         )
936
937         StemTremolo = #`(
938                 (molecule-callback . ,Stem_tremolo::brew_molecule)
939                 (beam-width . 2.0) ; staff-space
940                 (beam-thickness . 0.42) ; staff-space
941                 (beam-space-function . ,default-beam-space-function)
942                 (name . "StemTremolo")
943         )
944
945         SeparationItem = #`(
946                 (interfaces . (separation-item-interface))
947                 (name . "SeparationItem")
948         )
949
950         SeparatingGroupSpanner = #`(
951                 (interfaces . (separation-spanner-interface))
952                 (spacing-procedure . ,Separating_group_spanner::set_spacing_rods)
953                 (name . "SeparatingGroupSpanner")
954         )
955
956         SustainPedal = #`(
957                 (interfaces . (sustain-pedal-interface  side-position-interface))
958                 (no-spacing-rods . #t)
959                 (molecule-callback . ,Sustain_pedal::brew_molecule)
960                 (self-alignment-X . 0)
961                 (X-offset-callbacks . (,Side_position::aligned_on_self))
962                 (Y-offset-callbacks .
963                  (,Side_position::aligned_side
964                   ,Side_position::centered_on_parent))
965
966                 (name . "SustainPedal")         
967         )       
968         UnaChordaPdeal = #`(
969                 (molecule-callback . ,Text_item::brew_molecule)
970                 (style . "italic")
971                 (no-spacing-rods . #t)
972                 (self-alignment-X . 0)
973                 (X-offset-callbacks . (,Side_position::aligned_on_self))
974                 (Y-offset-callbacks .
975                  (,Side_position::aligned_side
976                   ,Side_position::centered_on_parent))
977
978                 (name . "UnaChordaPedal")
979         )
980
981         VoltaBracket = #`(
982                 (molecule-callback . ,Volta_spanner::brew_molecule)
983                 (interfaces . (volta-spanner-interface side-position-interface))
984                 (direction . 1)
985                 (padding . 5)
986                 (thickness . 1.6)  ;  stafflinethickness
987                 (height . 2.0) ; staffspace;
988                 (minimum-space . 25)
989                 (name . "VoltaBracket")
990         )       
991
992         VerticalAlignment = #`(
993                 (axes 1)
994                 (interfaces . (align-interface axis-group-interface))
995                 (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
996                 (X-extent-callback . #f)
997                 (stacking-dir . -1)
998                 (name . "VerticalAlignment")
999         )
1000
1001         VerticalAxisGroup = #`(
1002                 (axes 1)
1003                 (interfaces . (axis-group-interface))
1004                 (name . "VerticalAxisGroup")
1005         )
1006
1007
1008         \include "auto-beam-settings.ly";
1009
1010 }
1011
1012 OrchestralScoreContext= \translator {
1013         \ScoreContext
1014 }
1015