]> git.donarmstrong.com Git - lilypond.git/blob - scm/translator-description.scm
patch::: 1.3.126.jcn3
[lilypond.git] / scm / translator-description.scm
1
2 (define (engraver-description name description created-elts properties)
3   (list name description created-elts properties)
4   )
5
6
7 (define engraver-description-alist
8   (list
9    (cons
10     'Stem_engraver
11     (engraver-description
12      "Stem_engraver"
13      "Create stems and single-stem tremolos.  It also works together with
14 the beam engraver for overriding beaming."
15      '(Stem StemTremolo)
16      '(tremoloFlags
17       stemLeftBeamCount
18       stemRightBeamCount    
19       )))
20    
21    (cons
22     'Hyphen_engraver
23     (engraver-description
24      "Hyphen_engraver"
25      "Create lyric hyphens"
26      '(LyricHyphen)
27      '(
28       )))
29
30    (cons
31     'Extender_engraver
32     (engraver-description
33      "Extender_engraver"
34      "Create lyric extenders"
35      '(LyricExtender)
36      '(
37       )))
38
39    
40    (cons
41     'Separating_line_group_engraver
42     (engraver-description
43      "Separating_line_group_engraver"
44      "Generates objects for computing spacing parameters."
45      '(SeparationItem SeparatingGroupSpanner)
46      '(
47       )))
48
49    (cons
50     'Axis_group_engraver
51     (engraver-description
52      "Axis_group_engraver"
53      "Group all objects created in this context in a VerticalAxisGroup spanner."
54      '(VerticalAxisGroup)
55      '(CONTEXTNAMEVerticalExtent CONTEXTNAMEMinimumVerticalExtent CONTEXTNAMExtraVerticalExtent)
56      ))
57
58    (cons
59     'Hara_kiri_engraver
60     (engraver-description
61      "Hara_kiri_engraver"
62      "Like Axis_group_engraver, but make a hara kiri spanner, and add
63 interesting items (ie. note heads, lyric syllables and normal rests)"
64      '(HaraKiriVerticalGroup)
65      '()
66      ))
67
68    
69    (cons
70     'Local_key_engraver
71     (engraver-description
72      "Local_key_engraver"
73      "Make accidentals.  Catches note heads, ties and notices key-change
74    events.  Due to interaction with ties (which don't come together
75    with note heads), this needs to be in a context higher than Tie_engraver.
76    (FIXME)."
77      '(Accidentals)
78      '(
79       localKeySignature
80       forgetAccidentals
81       noResetKey
82       
83       )))
84
85    
86    (cons
87     'Volta_engraver
88     (engraver-description
89      "Volta_engraver"
90      "Make volta brackets"
91      '(VoltaBracket)
92      '(repeatCommands voltaSpannerDuration)
93      ))
94
95    (cons
96     'Clef_engraver
97     (engraver-description
98      "Clef_engraver"
99      "Determine and set reference point for pitches"
100      '(Clef OctavateEight)
101      '(
102       clefPosition
103       clefGlyph
104       centralCPosition
105       clefOctavation
106       explicitClefVisibility
107       clefPitches
108
109       )))
110    
111    (cons
112     'A2_engraver
113     (engraver-description
114      "A2_engraver"
115      "Part combine engraver for orchestral scores."
116      '(TextScript)
117      '(
118       combineParts
119       soloADue
120       soloText
121       soloIIText
122       aDueText
123       split-interval
124       unison
125       solo
126       unisilence
127       unirhythm
128       )))
129
130    (cons
131     'Align_note_column_engraver
132     (engraver-description
133      "Align_note_column_engraver"
134      "Generate object to put grace notes from left to right."
135      '(GraceAlignment)
136      '(
137       
138       graceAlignPosition
139       graceAccidentalSpace
140       )))
141    
142    (cons
143     'Arpeggio_engraver
144     (engraver-description
145      "Arpeggio_engraver"
146      "Generate an Arpeggio from a Arpeggio_req"
147      '(Arpeggio)
148      '(
149       )))
150
151    (cons
152    'Auto_beam_engraver
153     (engraver-description
154      "Auto_beam_engraver"
155      "Generate beams based on measure characteristics and observed
156 Stems.  Uses beatLength, measureLength and measurePosition to decide
157 when to start and stop a beam.  Overriding beaming is done through
158 @ref{Stem_engraver} properties stemLeftBeamCount and
159 stemRightBeamCount.
160 "
161      '(
162        Beam)
163      '(
164       noAutoBeaming
165       autoBeamSettings)))
166
167    (cons
168     'Bar_engraver
169     (engraver-description
170      "Bar_engraver"
171      "Create barlines. This engraver is controlled through the
172 @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point"
173      '(BarLine)
174      '(
175       whichBar
176       staffsFound
177       )))
178
179
180    (cons
181     'Bar_number_engraver
182     (engraver-description
183      "Bar_number_engraver"
184      "A bar number is created whenever measurePosition is zero. It is
185 put on top of all staffs, and appears only at  left side of the staff."
186      '(BarNumber)
187      '(
188       currentBarNumber
189       )))
190
191
192    (cons
193     'Beam_engraver
194     (engraver-description
195      "Beam_engraver"
196      "Handles Beam_requests by engraving Beams.    If omitted, then notes will be
197     printed with flags instead of beams."
198      '(Beam)
199      '(
200       beamMelismaBusy
201       )))
202
203    (cons
204     'Break_align_engraver
205     (engraver-description
206      "Break_align_engraver"
207      "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
208      '(BreakAlignment BreakAlignGroup LeftEdge)
209      '(
210       breakAlignOrder
211       
212       )))
213
214
215    (cons
216     'Breathing_sign_engraver
217     (engraver-description
218      "Breathing_sign_engraver"
219      ""
220      '(BreathingSign)
221      '(
222       )))
223
224
225    (cons
226     'Chord_name_engraver
227     (engraver-description
228      "Chord_name_engraver"
229      "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
230 and generate the appropriate chordname."
231      '(ChordName)
232      '(
233       chordChanges
234       )))
235
236
237    (cons
238     'Chord_tremolo_engraver
239     (engraver-description
240      "Chord_tremolo_engraver"
241      "Generates beams for the \repeat X tremolo ... construct"
242      '(Beam)
243      '(
244       )))
245
246
247
248    (cons
249     'Collision_engraver
250     (engraver-description
251      "Collision_engraver"
252      ""
253      '(NoteCollision
254        )
255      '(
256       )))
257
258    (cons
259     'Custos_engraver
260     (engraver-description
261      "Custos_engraver"
262      ""
263      '(Custos)
264      '(
265       )))
266
267
268    (cons
269     'Dot_column_engraver
270     (engraver-description
271      "Dot_column_engraver"
272      " Engraves dots on dotted notes shifted to the right of the note.
273 If omitted, then dots appear on top of the notes.
274 "
275      '(DotColumn
276        )
277      '(
278       )))
279
280
281    (cons
282     'Dynamic_engraver
283     (engraver-description
284      "Dynamic_engraver"
285      ""
286      '(DynamicLineSpanner
287        DynamicText Hairpin
288        TextSpanner)
289      '(
290       )))
291
292
293
294
295    (cons
296     'Grace_position_engraver
297     (engraver-description
298      "Grace_position_engraver"
299      "Attach a grace note alignment to a note-column "
300      '()
301      '(
302       )))
303
304    (cons
305     'Grace_engraver_group
306     (engraver-description
307      "Grace_engraver_group"
308      "An engraver that creates a `shielded' context-tree with separate notion of time"
309      '()
310      '(
311       )))
312
313
314    (cons
315     'Instrument_name_engraver
316     (engraver-description
317      "Instrument_name_engraver"
318      " Prints the name of the instrument (specified by
319     @code{Staff.instrument} and @code{Staff.instr}) at the left of the
320     staff."
321      '(InstrumentName)
322      '(
323       instrument
324       instr
325       )))
326
327    (cons
328     'Engraver_group_engraver
329     (engraver-description
330      "Engraver_group_engraver"
331      "A group of engravers taken together"
332      '()
333      '(
334       )))
335
336    (cons
337     'Key_engraver
338     (engraver-description
339      "Key_engraver"
340      ""
341      '(KeySignature
342        )
343      '(
344       
345       keySignature
346       keyOctaviation
347       explicitKeySignatureVisibility
348       createKeyOnClefChange
349       keyAccidentalOrder
350       keySignature
351       )))
352
353    (cons 'Lyric_engraver
354          (engraver-description
355           "Lyric_engraver"
356           ""
357           '()
358           '(
359            ;; FIXME
360            )))
361
362    (cons 'Lyric_phrasing_engraver
363          (engraver-description
364           "Lyric_phrasing_engraver"
365           ""
366           '()
367           '(
368            automaticPhrasing
369            weAreGraceContext
370            melismaEngraverBusy
371            associatedVoice
372            phrasingPunctuation
373            )))
374
375    (cons
376     'Mark_engraver
377     (engraver-description
378      "Mark_engraver"
379      ""
380      '(RehearsalMark)
381      '(
382
383       rehearsalMark
384       staffsFound
385       )))
386
387
388    (cons
389     'Melisma_engraver
390     (engraver-description
391      "Melisma_engraver"
392      ""
393      '()
394      '(
395
396       melismaBusy
397       slurMelismaBusy
398       tieMelismaBusy
399       beamMelismaBusy
400       )))
401
402
403    (cons
404     'Multi_measure_rest_engraver
405     (engraver-description
406      "Multi_measure_rest_engraver"
407      "Engraves multi-measure rests that are produced with @code{R}.  Reads
408 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
409    "
410      '(MultiMeasureRest)
411      '(
412       )))
413
414    (cons
415     'Note_heads_engraver
416     (engraver-description
417      "Note_heads_engraver"
418      "Generate one or more noteheads from Music of type Note_req."
419      '(NoteHead Dots)
420      '(
421       )))
422
423    (cons
424     'Note_head_line_engraver
425     (engraver-description
426      "Note_head_line_engraver"
427      "Engrave a line between two note heads, for example a glissando.
428 If followThread is set, staff switches also generate a line."
429      '(Glissando)
430      '(followThread)))
431
432    (cons
433     'Note_name_engraver
434     (engraver-description
435      "Note_name_engraver"
436      ""
437      '(NoteName)
438      '(
439       )))
440
441
442    (cons
443     'Output_property_engraver
444     (engraver-description
445      "Output_property_engraver"
446      "Interpret Music of Output_property type, and apply a function
447 to any Graphic objects that satisfies the predicate."
448      '()
449      '(
450       )))
451
452
453    (cons
454     'Piano_pedal_engraver
455     (engraver-description
456      "Piano_pedal_engraver"
457      "Engrave piano pedal symbols."
458      '(SostenutoPedal SustainPedal UnaChordaPedal)
459      '(pedalSostenutoStrings pedalSustainStrings pedalUnaChordaStrings
460       )))
461
462    (cons 
463     'Pitch_squash_engraver
464     (engraver-description
465      "Pitch_squash_engraver"
466      "Treat all pitches as middle C.  Note that the notes move, but
467 the locations of accidentals stay the same. 
468 Set the position field of all note heads to zero. This useful for
469 making a single line staff that demonstrates the rhythm of a melody."
470      '()
471      '(
472       squashedPosition
473       )))
474    
475    (cons
476     'Property_engraver
477     (engraver-description
478      "Property_engraver"
479 "This is a engraver that converts \property settings into
480 back-end grob-property settings. Example: Voice.stemLength will set
481 #'length in all Stem objects.
482
483 Due to CPU and memory requirements, the use of this engraver is deprecated."
484      '()
485      '(Generic_property_list)
486       ))
487
488
489    (cons
490     'Repeat_acknowledge_engraver
491     (engraver-description
492      "Repeat_acknowledge_engraver"
493      
494      "Acknowledge repeated music, and convert the contents of
495 repeatCommands ainto an appropriate setting for whichBar"
496      '()
497      '(
498       repeatCommands
499       whichBar
500  
501       )))
502
503
504    (cons
505     'Rest_collision_engraver
506     (engraver-description
507      "Rest_collision_engraver"
508      "Handles collisions of rests."
509      '(RestCollision)
510      '(
511       )))
512
513
514    (cons
515     'Rest_engraver
516     (engraver-description
517      "Rest_engraver"
518      ""
519       '(Rest Dots)
520    '(
521       )))
522
523
524    (cons
525     'Rhythmic_column_engraver
526     (engraver-description
527      "Rhythmic_column_engraver"
528      "Generates NoteColumn, an objects that groups stems, noteheads and rests."
529      '(NoteColumn)
530      '(
531       )))
532
533
534    (cons
535     'Script_column_engraver
536     (engraver-description
537      "Script_column_engraver"
538      ""
539      '(ScriptColumn)
540      '(
541       )))
542
543
544    (cons
545     'Script_engraver
546     (engraver-description
547      "Script_engraver"
548      "    Handles note ornaments generated by @code{\script}.  
549 "
550      '(Script)
551      '(
552       scriptDefinitions 
553       scriptHorizontal
554       )))
555
556    (cons
557     'Score_engraver
558     (engraver-description
559      "Score_engraver"
560      "Top level engraver. Takes care of generating columns and the complete  system (ie. LineOfScore)
561
562 This engraver decides whether a column is breakable. The default is
563 that a column is always breakable. However, when every Bar_engraver
564 that does not have a barline at a certain point will call
565 Score_engraver::forbid_breaks to stop linebreaks.  In practice, this
566 means that you can make a breakpoint by creating a barline (assuming
567 that there are no beams or notes that prevent a breakpoint.)
568
569 "
570      '(LineOfScore PaperColumn NonMusicalPaperColumn)
571      '(
572       currentMusicalColumn
573       currentCommandColumn
574       )))
575    
576    (cons 'Skip_req_swallow_translator
577          (engraver-description
578           "Skip_req_swallow_translator"
579           ""
580           '()
581           '(
582            ;; FIXME
583            )))
584
585    (cons
586     'Slur_engraver
587     (engraver-description
588      "Slur_engraver"
589      "Build slurs from Slur_reqs"
590      '(Slur)
591
592      '(
593       slurBeginAttachment
594       slurEndAttachment
595       slurMelismaBusy
596       )))
597
598
599    (cons
600     'Spacing_engraver
601     (engraver-description
602      "Spacing_engraver"
603      "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes  "
604      '(SpacingSpanner)
605      '(
606       )))
607
608
609    (cons
610     'Span_arpeggio_engraver
611     (engraver-description
612      "Span_arpeggio_engraver"
613      ""
614      '(Arpeggio)
615      '(
616       connectArpeggios
617       )))
618
619
620    (cons
621     'Span_bar_engraver
622     (engraver-description
623      "Span_bar_engraver"
624      "This engraver makes cross-staff barlines: It catches all normal
625 bar lines, and draws a single span-bar across them."
626
627      '(SpanBar)
628      '(
629       )))
630
631
632    (cons
633     'Staff_symbol_engraver
634     (engraver-description
635      "Staff_symbol_engraver"
636      "create the constellation of five (default) staff lines."
637      '(StaffSymbol)
638      '(
639       )))
640
641
642    (cons
643     'Stanza_number_engraver
644     (engraver-description
645      "Stanza_number_engraver"
646      ""
647      '(StanzaNumber
648        )
649      '(
650       stz
651       stanza
652       )))
653
654
655
656    (cons
657     'System_start_delimiter_engraver
658     (engraver-description
659      "System_start_delimiter_engraver"
660      "creates a SystemStartDelimiter spanner"
661      '(SystemStartDelimiter)
662      '(
663       )))
664
665
666    (cons
667     'Text_engraver
668     (engraver-description
669      "Text_engraver"
670      "Create text-scripts"
671      '(TextScript)
672      '(
673       scriptHorizontal
674       textNonEmpty
675       )))
676
677
678    (cons
679     'Text_spanner_engraver
680     (engraver-description
681      "Text_spanner_engraver"
682      "Create text spanner from a  Span_req "
683      '(TextSpanner)
684      '(
685       )))
686
687
688    (cons
689     'Thread_devnull_engraver
690     (engraver-description
691      "Thread_devnull_engraver"
692      "Kill elements whenever we are Voice called `two' and
693 either unison, unisilence or soloADue is set"
694      '()
695      '()))
696
697
698    (cons
699     'Tie_engraver
700     (engraver-description
701      "Tie_engraver"
702      "Generate ties between noteheads of equal pitch."
703      '(Tie TieColumn)
704      '(sparseTies
705       tieMelismaBusy
706       )))
707
708
709    (cons
710     'Time_signature_engraver
711     (engraver-description
712      "Time_signature_engraver"
713      "Create a TimeSignature whenever @code{timeSignatureFraction} changes"
714      '(TimeSignature)
715      '(
716       )))
717
718
719    (cons
720     'Timing_engraver
721     (engraver-description
722      "Timing_engraver"
723      " Responsible for synchronizing timing information from staffs. 
724     Normally in @code{Score}.  In order to create polyrhythmic music,
725     this engraver should be removed from @code{Score} and placed in
726     @code{Staff}."
727      '()
728      '(
729       timeSignatureFraction
730       barCheckNoSynchronize
731       barNonAuto
732       whichBar      
733       barAlways
734       defaultBarType
735       skipBars
736       timing
737       oneBeat
738       measureLength
739       measurePosition 
740       currentBarNumber
741       )))
742
743
744    (cons
745     'Tuplet_engraver
746     (engraver-description
747      "Tuplet_engraver"
748      "Catch Time_scaled_music and generate appropriate bracket  "
749      '(
750        TupletBracket)
751      '(
752       tupletSpannerDuration
753       tupletInvisible
754       )))
755
756
757    (cons
758     'Vertical_align_engraver
759     (engraver-description
760      "Vertical_align_engraver"
761      "Catch Vertical axis groups and stack them."
762      '(VerticalAlignment)
763      '(
764       )))
765
766
767    (cons
768     'Voice_devnull_engraver
769     (engraver-description
770      "Voice_devnull_engraver"
771      "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
772      '()
773      '(
774       )))
775    ))
776
777
778 (set! engraver-description-alist
779       (sort engraver-description-alist alist<?))
780
781 (define context-description-alist
782   '(
783 (Grace . "
784     The context for handling grace notes.  It is instantiated
785     automatically when you use @code{\grace}.  Basically, it is an
786     `embedded' miniature of the Score context.  Since this context
787     needs special interaction with the rest of LilyPond, you should
788     not explicitly instantiate it.
789 ")
790 (LyricsVoice . "
791     Corresponds to a voice with lyrics.  Handles the printing of a
792     single line of lyrics.
793 ")
794 (Thread . "
795     Handles note heads, and is contained in the Voice context.  You
796     have to instantiate this explicitly if you want to adjust the
797     style of individual note heads.
798 ")
799 (Voice . "
800     Corresponds to a voice on a staff.  This context handles the
801     conversion of dynamic signs, stems, beams, super- and subscripts,
802     slurs, ties, and rests.
803
804     You have to instantiate this explicitly if you want to have
805     multiple voices on the same staff.")
806
807 (ChordNamesVoice . "
808     A voice with chord names.  Handles printing of a line of chord
809     names.")
810
811 (ChordNames . "
812     Typesets chord names.  Can contain @code{ChordNamesVoice}
813     contexts.")
814
815 (Lyrics . "
816     Typesets lyrics.  It can contain @code{LyricsVoice} contexts.
817 ")
818 (Staff . "
819     Handles clefs, bar lines, keys, accidentals.  It can contain
820     @code{Voice} contexts.
821 ")
822 (RhythmicStaff . "
823     A context like @code{Staff} but for printing rhythms.  Pitches are
824     ignored; the notes are printed on one line.  It can contain
825     @code{Voice} contexts.
826 ")
827 (GrandStaff . "
828     Contains @code{Staff} or @code{RhythmicStaff} contexts.  It adds a
829     brace on the left side, grouping the staffs together.  The bar
830     lines of the contained staffs are connected vertically.  It can
831     contain @code{Staff} contexts.")
832
833 (PianoStaff . "
834     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
835     equal to @code{maxVerticalAlign} so that interstaff beaming and
836     slurring can be used.")
837
838 (StaffGroup . "
839     Contains @code{Staff} or @code{RhythmicStaff} contexts.  Adds a
840     bracket on the left side, grouping the staffs together.  The bar
841     lines of the contained staffs are connected vertically.  It can
842     contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
843     @code{Lyrics} contexts.
844 ")
845 (ChoirStaff . "
846     Identical to @code{StaffGroup} except that the contained staffs
847     are not connected vertically.
848 ")
849 (Score . "
850     This is the top level notation context.  No other context can
851     contain a @code{Score} context.  This context handles the
852     administration of time signatures.  It also makes sure that items
853     such as clefs, time signatures, and key-signatures are aligned
854     across staffs.  It can contain @code{Lyrics}, @code{Staff},
855     @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
856     @code{ChoirStaff} contexts.
857
858     You cannot explicitly instantiate a Score context (since it is
859     not contained in any other context).  It is instantiated
860     automatically when an output definition (a @code{\score} or
861     @code{\paper} block) is processed.
862 ")
863 )
864 )
865
866 (set! context-description-alist
867       (sort context-description-alist alist<?))
868