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