]> git.donarmstrong.com Git - lilypond.git/blob - scm/translator-description.scm
release: 1.3.103
[lilypond.git] / scm / translator-description.scm
1 (define (number-or-string? x) (or (number? x) (string? x)))
2 (define (engraver-description name description created-elts properties)
3   (list name description created-elts properties)
4   )
5
6 (define (translator-property-description symbol type? description)
7   (list symbol type? description)
8   )
9
10 (define engraver-description-alist
11   (list
12    (cons
13     'Stem_engraver
14     (engraver-description
15      "Stem_engraver"
16      "Create stems and single-stem tremolos"
17      '(Stem StemTremolo)
18      (list
19       (translator-property-description 'tremoloFlags integer? "")
20       (translator-property-description 'stemLeftBeamCount integer? "
21 Specify the number of beams to draw on the left side of the next note.
22 Overrides automatic beaming.  The value is only used once, and then it
23 is erased.
24 ")
25       (translator-property-description 'stemRightBeamCount integer? "idem, for the right side")    
26       )))
27    
28    (cons
29     'Hyphen_engraver
30     (engraver-description
31      "Hyphen_engraver"
32      "Create lyric hyphens"
33      '(LyricHyphen)
34      (list
35       )))
36
37    (cons
38     'Extender_engraver
39     (engraver-description
40      "Extender_engraver"
41      "Create lyric extenders"
42      '(LyricExtender)
43      (list
44       )))
45
46    
47    (cons
48     'Separating_line_group_engraver
49     (engraver-description
50      "Separating_line_group_engraver"
51      "Generates objects for computing spacing parameters."
52      '(SeparationItem SeparatingGroupSpanner)
53      (list
54       )))
55
56    (cons
57     'Axis_group_engraver
58     (engraver-description
59      "Axis_group_engraver"
60      "Group all objects created in this context in a VerticalAxisGroup spanner."
61      '(VerticalAxisGroup)
62      (list
63       (translator-property-description
64        'CONTEXTNAMEVerticalExtent number-pair? "hard coded vertical extent.
65 The format is a pair of dimensions, for example, this sets the sizes
66 of a staff to 10 (5+5) staffspaces high.  <p>
67
68 <code>
69 \property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
70 </code>
71
72  [fixme, naming]")
73       (translator-property-description
74        'CONTEXTNAMEMinimumVerticalExtent number-pair?
75        "minimum vertical extent, same format as CONTEXTNAMEVerticalExtent [fixme, naming]")
76       (translator-property-description
77        'CONTEXTNAExtraVerticalExtent number-pair?
78        "extra vertical extent, same format
79 CONTEXTNAMEMinimumVerticalExtent [fixme, naming]") )))
80
81    (cons
82     'Hara_kiri_engraver
83     (engraver-description
84      "Hara_kiri_engraver"
85      "Like Axis_group_engraver, but make a hara kiri spanner, and add
86 interesting items (ie. note heads, lyric syllables and normal rests)"
87      '(HaraKiriVerticalGroup)
88      '()
89      ))
90
91    
92    (cons
93     'Local_key_engraver
94     (engraver-description
95      "Local_key_engraver"
96      "Make accidentals.  Catches note heads, ties and notices key-change
97    events.  Due to interaction with ties (which don't come together
98    with note heads), this needs to be in a context higher than Tie_engraver.
99    (FIXME)."
100      '(Accidentals)
101      (list
102       (translator-property-description 'localKeySignature list? "the key signature at this point  in the measure")
103       (translator-property-description 'forgetAccidentals boolean? "do
104 not set localKeySignature when a note alterated differently from
105 localKeySignature is found.
106 <p>
107 Causes accidentals to be printed at every note instead of
108 remembered for the duration of a measure.
109 ")
110       (translator-property-description 'noResetKey boolean? "Do not
111 reset local key to the value of keySignature at the start of a measure,
112 as determined by measurePosition.<p>
113     Do not reset the key at the start of a measure.  Accidentals will
114     be printed only once and are in effect until overridden, possibly
115     many measures later.
116 ")
117       
118       )))
119
120    
121    (cons
122     'Volta_engraver
123     (engraver-description
124      "Volta_engraver"
125      "Make volta brackets"
126      '(VoltaBracket)
127      (list
128       (translator-property-description 'repeatCommands list?
129                                        "This property is read to find any command of the form (volta . X), where X is a string or #f")
130       (translator-property-description 'voltaSpannerDuration moment?
131                                        "maximum duration of the volta bracket.<p>
132
133     Set to a duration to control the size of the brackets printed by
134 @code{\alternative}.  It specifies the number of whole notes duration
135 to use for the brackets.  This can be used to shrink the length of
136 brackets in the situation where one alternative is very large.  It may
137 have odd effects if the specified duration is longer than the music
138 given in an @code{\alternative}.
139 ")
140       )
141      ))
142
143    (cons
144     'Clef_engraver
145     (engraver-description
146      "Clef_engraver"
147      "Determine and set reference point for pitches"
148      '(Clef OctavateEight)
149      (list
150       (translator-property-description 'supportedClefTypes
151                                        list? "Clef settings supported. The value is an association list contain entries (NAME . (GLYPH . POSITION)), where  NAME is the clef name (alto, baritone, etc.), GLYPH the glyph name, POSITION an integer where the center symbol should go.")
152       (translator-property-description 'clefPosition number? " where the center of the symbol should go")
153       (translator-property-description 'clefGlyph string? "name of the symbol within the music font")
154       (translator-property-description 'centralCPosition number? "place of the central C. ")
155       (translator-property-description 'defaultClef string? "generate this clef at the very start of this staff. If not set, don't generate a clef")
156       (translator-property-description 'explicitClefVisibility procedure? "visibility-lambda function for clefs entered as \clef.")
157       (translator-property-description 'clefPitches list? "alist mapping GLYPHNAME to the position of the central C for that symbol")
158
159       )))
160    
161    (cons
162     'A2_engraver
163     (engraver-description
164      "A2_engraver"
165      "Part combine engraver for orchestral scores."
166      '(TextScript)
167      (list
168       (translator-property-description 'combineParts boolean? "try to combine parts?")
169       (translator-property-description 'unison  boolean? "set if unisono is detected  ")
170       (translator-property-description 'solo  boolean? "")
171       (translator-property-description 'soloADue  boolean? "")
172       (translator-property-description 'soloText  string? "")
173       (translator-property-description 'soloIIText  string? "")
174       (translator-property-description 'aDueText string? "")
175       (translator-property-description 'combineParts  boolean? "")
176       (translator-property-description 'unisilence  boolean? "")
177       (translator-property-description 'unison  boolean? "")
178       (translator-property-description 'unirhythm  boolean? "")
179       (translator-property-description 'solo  boolean? "")
180       (translator-property-description 'split-interval number-pair? "")
181       (translator-property-description 'soloADue boolean? "")
182       )))
183
184    (cons
185     'Align_note_column_engraver
186     (engraver-description
187      "Align_note_column_engraver"
188      "Generate object to put grace notes from left to right."
189      '(GraceAlignment)
190      (list
191       
192       (translator-property-description 'graceAlignPosition dir? "put the grace note before or after the main note?")
193       (translator-property-description 'graceAccidentalSpace number? "amount space to alot for an accidental")
194       )))
195    
196    (cons
197     'Arpeggio_engraver
198     (engraver-description
199      "Arpeggio_engraver"
200      "Generate an Arpeggio from a Arpeggio_req"
201      '(Arpeggio)
202      (list
203       )))
204
205    (cons
206     'Auto_beam_engraver
207     (engraver-description
208      "Auto_beam_engraver"
209      "Generate beams based on measure characteristics and observed Stems.
210 Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam.
211 "
212      '(
213        Beam)
214      (list
215       (translator-property-description 'noAutoBeaming boolean? "  If set to true then beams are not generated automatically.
216 ")
217       (translator-property-description 'beamAutoEnd moment? "
218      Specifies when automatically generated beams can end.  See
219     section XREF-autobeam [FIXME].")
220      (translator-property-description 'beamAutoBegin moment? "
221      Specifies when automatically generated beams can start.  See
222     section XREF-autobeam [FIXME].")
223
224       )))
225
226    (cons
227     'Bar_engraver
228     (engraver-description
229      "Bar_engraver"
230      "Create barlines."
231      '(BarLine)
232      (list
233       (translator-property-description 'whichBar string? "This property is read to determine what type of barline to create.
234 Example:
235 <xmp>
236 \\property Staff.whichBar = \"|:\"
237 </xmp>
238 will create a start-repeat bar in this staff only 
239 ")
240       (translator-property-description 'staffsFound list? "list of all staff-symbols found.")
241       )))
242
243
244    (cons
245     'Bar_number_engraver
246     (engraver-description
247      "Bar_number_engraver"
248      "A bar number is created whenever measurePosition is zero. It is
249 put on top of all staffs, and appears only at  left side of the staff."
250      '(BarNumber)
251      (list
252       (translator-property-description 'currentBarNumber integer? "this is read to determine
253  the number to put on the bar ")
254       )))
255
256
257    (cons
258     'Beam_engraver
259     (engraver-description
260      "Beam_engraver"
261      "Handles Beam_requests by engraving Beams.    If omitted, then notes will be
262     printed with flags instead of beams."
263      '(Beam)
264      (list
265       (translator-property-description 'beamMelismaBusy boolean? "Signal if a beam is set when automaticMelismata is set")
266       )))
267
268    (cons
269     'Break_align_engraver
270     (engraver-description
271      "Break_align_engraver"
272      "Align graphic elements with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
273      '(BreakAlignment BreakAlignGroup LeftEdge)
274      (list
275       (translator-property-description 'breakAlignOrder list?
276                                        "Defines the order in which
277 prefatory matter (clefs, key signatures) appears, eg. this puts the
278 key signatures after the bar lines:
279
280 <xmp>
281         \\property Score.breakAlignOrder = #'(
282           Span_bar
283           Breathing_sign
284           Clef_item
285           Staff_bar
286           Key_item
287           Time_signature
288         )
289 </xmp>
290 ")
291       )))
292
293
294    (cons
295     'Breathing_sign_engraver
296     (engraver-description
297      "Breathing_sign_engraver"
298      ""
299      '(BreathingSign)
300      (list
301       )))
302
303
304    (cons
305     'Chord_name_engraver
306     (engraver-description
307      "Chord_name_engraver"
308      "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
309 and generate the appropriate chordname."
310      '(ChordNames)
311      (list
312       (translator-property-description 'chordInversion boolean? " Determines whether LilyPond should look for chord inversions when
313     translating from notes to chord names.  Set to 1 to find
314     inversions.  The default is 0 which does not look for
315     inversions.")
316       (translator-property-description 'drarnChords boolean? "")
317       )))
318
319
320    (cons
321     'Chord_tremolo_engraver
322     (engraver-description
323      "Chord_tremolo_engraver"
324      "Generates beams for the \repeat X tremolo ... construct"
325      '(Beam)
326      (list
327       )))
328
329
330
331    (cons
332     'Collision_engraver
333     (engraver-description
334      "Collision_engraver"
335      ""
336      '(NoteCollision
337        )
338      (list
339       )))
340
341    (cons
342     'Custos_engraver
343     (engraver-description
344      "Custos_engraver"
345      ""
346      '(Custos)
347      (list
348       )))
349
350
351    (cons
352     'Dot_column_engraver
353     (engraver-description
354      "Dot_column_engraver"
355      " Engraves dots on dotted notes shifted to the right of the note.
356 If omitted, then dots appear on top of the notes.
357 "
358      '(DotColumn
359        )
360      (list
361       )))
362
363
364    (cons
365     'Dynamic_engraver
366     (engraver-description
367      "Dynamic_engraver"
368      ""
369      '(DynamicLineSpanner
370        DynamicText Crescendo
371        TextSpanner)
372      (list
373       )))
374
375
376
377
378    (cons
379     'Grace_position_engraver
380     (engraver-description
381      "Grace_position_engraver"
382      "Attach a grace note alignment to a note-column "
383      '()
384      (list
385       )))
386
387    (cons
388     'Grace_engraver_group
389     (engraver-description
390      "Grace_engraver_group"
391      "An engraver that creates a `shielded' context-tree with separate notion of time"
392      '()
393      (list
394       )))
395
396
397    (cons
398     'Instrument_name_engraver
399     (engraver-description
400      "Instrument_name_engraver"
401      " Prints the name of the instrument (specified by
402     @code{Staff.instrument} and @code{Staff.instr}) at the left of the
403     staff."
404      '(InstrumentName)
405      (list
406       (translator-property-description 'instrument string? " If @code{Instrument_name_engraver}
407 @cindex Instrument_name_engraver
408  is
409     added to the Staff translator, then the @code{instrument} property
410     is used to label the first line of the staff and the @code{instr}
411     property is used to label subsequent lines.  If the
412     @code{midiInstrument} property is not set, then @code{instrument}
413     is used to determine the instrument for MIDI output.")
414       (translator-property-description 'instr string? "see <code>instrument</code>")
415       )))
416
417    (cons
418     'Engraver_group_engraver
419     (engraver-description
420      "Engraver_group_engraver"
421      "A group of engravers taken together"
422      '()
423      (list
424       )))
425
426    (cons
427     'Key_engraver
428     (engraver-description
429      "Key_engraver"
430      ""
431      '(KeySignature
432        )
433      (list
434       
435       (translator-property-description 'keySignature list? "")
436       (translator-property-description 'keyOctaviation boolean? "")
437       (translator-property-description 'explicitKeySignatureVisibility procedure? "")
438       (translator-property-description 'createKeyOnClefChange boolean? "")
439       (translator-property-description 'keyAccidentalOrder list? "")
440       (translator-property-description 'keySignature list? "")
441       )))
442
443    (cons 'Lyric_phrasing_engraver
444          (engraver-description
445           "Lyric_phrasing_engraver"
446           ""
447           '()
448           (list
449            (translator-property-description 'automaticPhrasing boolean? "")
450            (translator-property-description 'weAreGraceContext boolean? "")
451            (translator-property-description 'melismaEngraverBusy boolean? "")
452            (translator-property-description 'associatedVoice string? "")
453            (translator-property-description 'phrasingPunctuation string? "")
454            )))
455
456    (cons
457     'Mark_engraver
458     (engraver-description
459      "Mark_engraver"
460      ""
461      '(RehearsalMark)
462      (list
463
464       (translator-property-description 'rehearsalMark number-or-string? "")
465       (translator-property-description 'staffsFound list? "")
466       )))
467
468
469    (cons
470     'Melisma_engraver
471     (engraver-description
472      "Melisma_engraver"
473      ""
474      '()
475      (list
476
477       (translator-property-description 'melismaBusy boolean? "")
478       (translator-property-description 'slurMelismaBusy boolean? "")
479       (translator-property-description 'tieMelismaBusy boolean? "")
480       (translator-property-description 'beamMelismaBusy boolean? "")
481       )))
482
483
484    (cons
485     'Multi_measure_rest_engraver
486     (engraver-description
487      "Multi_measure_rest_engraver"
488      "Engraves multi-measure rests that are produced with @code{R}.  Reads
489 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
490    "
491      '(MultiMeasureRest)
492      (list
493       )))
494
495
496    (cons
497     'Note_heads_engraver
498     (engraver-description
499      "Note_heads_engraver"
500      "Generate one or more noteheads from Music of type Note_req."
501      '(NoteHead Dots)
502      (list
503       )))
504
505
506    (cons
507     'Note_name_engraver
508     (engraver-description
509      "Note_name_engraver"
510      ""
511      '(NoteName)
512      (list
513       )))
514
515
516    (cons
517     'Output_property_engraver
518     (engraver-description
519      "Output_property_engraver"
520      "Interpret Music of Output_property type, and apply a function
521 to any Graphic objects that satisfies the predicate."
522      '()
523      (list
524       )))
525
526
527    (cons
528     'Piano_pedal_engraver
529     (engraver-description
530      "Piano_pedal_engraver"
531      "engrave Piano pedals symbols."
532      '(SostenutoPedal SustainPedal UnaChordaPedal)
533      (list
534       
535         (translator-property-description 'startSustain string? "")
536         (translator-property-description 'stopSustain  string? "")
537         (translator-property-description 'stopStartSustain  string? "")
538         (translator-property-description 'startUnaChorda  string? "")
539         (translator-property-description 'stopUnaChorda string? "")
540       )))
541
542    (cons 
543     'Pitch_squash_engraver
544     (engraver-description
545      "Pitch_squash_engraver"
546      "Treat all pitches as middle C.  Note that the notes move, but
547 the locations of accidentals stay the same. 
548 Set the position field of all note heads to zero. This useful for
549 making a single line staff that demonstrates the rhythm of a melody."
550      '()
551      (list
552       (translator-property-description 'squashedPosition integer? " Vertical position of
553 squashing.")
554       )))
555    
556    (cons
557     'Property_engraver
558     (engraver-description
559      "Property_engraver"
560 "This is a engraver that converts \property settings into
561 back-end element-property settings. Example: Voice.stemLength will set
562 #'length in all Stem objects<p>
563 Due to CPU and memory requirements, the use of this engraver is deprecated."
564      '()
565      (list
566       (translator-property-description 'Generic_property_list list? "description of the conversion.
567 <p>
568     Defines names and types for generic properties. These are properties
569     than can be plugged into the backend directly. See the init file
570     @file{generic-property.scm} for details.  For internal use only, deprecated.
571 ")
572       )))
573
574
575    (cons
576     'Repeat_acknowledge_engraver
577     (engraver-description
578      "Repeat_acknowledge_engraver"
579      
580      "Acknowledge repeated music, and convert the contents of
581 repeatCommands ainto an appropriate setting for whichBar"
582      '()
583      (list
584       (translator-property-description 'repeatCommands list? "")
585       (translator-property-description 'whichBar string? "")
586  
587       )))
588
589
590    (cons
591     'Rest_collision_engraver
592     (engraver-description
593      "Rest_collision_engraver"
594      "Handles collisions of rests."
595      '(RestCollision)
596      (list
597       )))
598
599
600    (cons
601     'Rest_engraver
602     (engraver-description
603      "Rest_engraver"
604      ""
605       '(Rest Dots)
606    (list
607       )))
608
609
610    (cons
611     'Rhythmic_column_engraver
612     (engraver-description
613      "Rhythmic_column_engraver"
614      "Generates NoteColumn, an objects that groups stems, noteheads and rests."
615      '(NoteColumn)
616      (list
617       )))
618
619
620    (cons
621     'Script_column_engraver
622     (engraver-description
623      "Script_column_engraver"
624      ""
625      '(ScriptColumn)
626      (list
627       )))
628
629
630    (cons
631     'Script_engraver
632     (engraver-description
633      "Script_engraver"
634      "    Handles note ornaments generated by @code{\script}.  
635 "
636      '(Script)
637      (list
638       (translator-property-description 'scriptDefinitions list? "
639 Description of scripts to use.  (fixme) 
640 ")
641
642       (translator-property-description 'scriptHorizontal boolean? "    Put scripts left or right of note heads.  Support for this is
643     limited.  Accidentals will collide with scripts.
644     
645 ")
646       )))
647
648    (cons
649     'Score_engraver
650     (engraver-description
651      "Score_engraver"
652      "Top level engraver. Takes care of generating columns and the complete  system (ie. LineOfScore)"
653      '(LineOfScore PaperColumn NonMusicalPaperColumn)
654      (list
655       (translator-property-description 'currentMusicalColumn ly-element? "")
656       (translator-property-description 'currentCommandColumn ly-element? "")
657       )))
658    
659    (cons
660     'Slur_engraver
661     (engraver-description
662      "Slur_engraver"
663      "Build slurs from Slur_reqs"
664      '(Slur)
665
666      (list
667       (translator-property-description 'slurBeginAttachment symbol? "")
668       (translator-property-description 'slurEndAttachment symbol? "")      
669       (translator-property-description 'slurMelismaBusy boolean? "Signal a slur if automaticMelismata is set")
670       )))
671
672
673    (cons
674     'Spacing_engraver
675     (engraver-description
676      "Spacing_engraver"
677      "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes  "
678      '(SpacingSpanner)
679      (list
680       )))
681
682
683    (cons
684     'Span_arpeggio_engraver
685     (engraver-description
686      "Span_arpeggio_engraver"
687      ""
688      '(Arpeggio)
689      (list
690       (translator-property-description 'connectArpeggios boolean? " If
691 set, connect all arpeggios that are found.  In this way, you can make
692 arpeggios that cross staffs.
693 ")
694       )))
695
696
697    (cons
698     'Span_bar_engraver
699     (engraver-description
700      "Span_bar_engraver"
701      "This engraver makes cross-staff barlines: It catches all normal
702 bar lines, and draws a single span-bar across them. <p>"
703
704      '(SpanBar)
705      (list
706       )))
707
708
709    (cons
710     'Staff_symbol_engraver
711     (engraver-description
712      "Staff_symbol_engraver"
713      "create the constellation of five (default) staff lines."
714      '(StaffSymbol)
715      (list
716       )))
717
718
719    (cons
720     'Stanza_number_engraver
721     (engraver-description
722      "Stanza_number_engraver"
723      ""
724      '(StanzaNumber
725        )
726      (list
727       (translator-property-description 'stz string? "")
728       (translator-property-description 'stanza string? "Stanza `number' to print at start of a verse")
729       )))
730
731
732
733    (cons
734     'System_start_delimiter_engraver
735     (engraver-description
736      "System_start_delimiter_engraver"
737      "creates a SystemStartDelimiter spanner"
738      '(SystemStartDelimiter)
739      (list
740       )))
741
742
743    (cons
744     'Text_engraver
745     (engraver-description
746      "Text_engraver"
747      "Create text-scripts"
748      '(TextScript)
749      (list
750       (translator-property-description 'scriptHorizontal boolean? "    Put scripts left or right of note heads.  Support for this is
751     limited.  Accidentals will collide with scripts.
752     
753 ")
754       (translator-property-description 'textNonEmpty boolean? " If set
755 to true then text placed above or below the staff is not assumed to
756 have zero width.  @code{fatText} and @code{emptyText} are predefined
757 settings.
758 ")
759       )))
760
761
762    (cons
763     'Text_spanner_engraver
764     (engraver-description
765      "Text_spanner_engraver"
766      "Create text spanner from a  Span_req "
767      '(TextSpanner)
768      (list
769       )))
770
771
772    (cons
773     'Thread_devnull_engraver
774     (engraver-description
775      "Thread_devnull_engraver"
776      "Kill elements whenever we are Voice called `two' and
777 either unison, unisilence or soloADue is set"
778      '()
779      '()))
780
781
782    (cons
783     'Tie_engraver
784     (engraver-description
785      "Tie_engraver"
786      "Generate ties between noteheads of equal pitch."
787      '(Tie TieColumn)
788      (list
789       
790
791       (translator-property-description 'sparseTies boolean? "only create one tie per chord.")
792       (translator-property-description 'tieMelismaBusy boolean? "Signal ties when automaticMelismata is set")
793       )))
794
795
796    (cons
797     'Time_signature_engraver
798     (engraver-description
799      "Time_signature_engraver"
800      "Create a TimeSignature whenever <code>timeSignatureFraction</code> changes"
801      '(TimeSignature)
802      (list
803       )))
804
805
806    (cons
807     'Timing_engraver
808     (engraver-description
809      "Timing_engraver"
810      " Responsible for synchronizing timing information from staffs. 
811     Normally in @code{Score}.  In order to create polyrhythmic music,
812     this engraver should be removed from @code{Score} and placed in
813     @code{Staff}."
814      '()
815      (list
816       (translator-property-description 'timeSignatureFraction number-pair? "
817 pair of numbers,  signifying the time signature. For example #'(4 . 4) is a 4/4 time signature.")   
818       
819       (translator-property-description 'barNonAuto boolean? " If set to true then bar lines will not be printed
820     automatically; they must be explicitly created with @code{\bar}
821     keywords.  Unlike with the @code{\cadenza} keyword, measures are
822     still counted.  Bar generation will resume according to that
823     count if this property is set to zero.
824 ")
825       (translator-property-description 'whichBar string? "if not set
826 explicitly (by \property or \bar), this is set according to values of
827 defaultBarType, barAlways, barNonAuto and measurePosition.
828  ")
829       
830       (translator-property-description 'barAlways boolean? " If set to true a bar line is drawn after each note.
831 ")
832       (translator-property-description 'defaultBarType string? "Sets the default type of bar line. See Section XREF-barlines [FIXME] 
833     for a list of available bar types.
834 ")
835       (translator-property-description 'skipBars boolean? " Set to true to skip the empty bars that are produced by
836     multimeasure notes and rests.  These bars will not appear on the
837     printed output.  If not set (the default)  multimeasure
838     notes and rests expand into their full length, printing the appropriate
839     number of empty bars so that synchronization with other voices is
840     preserved.
841 <code>
842 @mudela[fragment,verbatim,center]
843 r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3
844
845 @end mudela
846 </code>
847 ")
848       (translator-property-description 'timing boolean? " Keep administration of measure length, position, bar number, etc?
849 Switch off for cadenzas.")
850       (translator-property-description 'oneBeat moment? "  How long does one beat in the current time signature last?")
851       (translator-property-description 'measureLength moment? "  How long does one measure in the current time signature last?")
852       (translator-property-description 'measurePosition moment? "
853   How much of the current measure (measured in whole notes) have we had?
854 ")
855       (translator-property-description 'currentBarNumber integer? "Contains the current barnumber. This property is incremented at
856 every barline.
857 ")
858       )))
859
860
861    (cons
862     'Tuplet_engraver
863     (engraver-description
864      "Tuplet_engraver"
865      "Catch Time_scaled_music and generate appropriate bracket  "
866      '(
867        TupletBracket)
868      (list
869       (translator-property-description 'tupletSpannerDuration moment? "
870 Normally a tuplet bracket is as wide as the
871 @code{\times} expression that gave rise to it. By setting this
872 property, you can make brackets last shorter. Example
873 <xmp>
874 @mudela[verbatim,fragment]
875 \context Voice \times 2/3 {
876   \property Voice.tupletSpannerDuration = #(make-moment 1 4)
877   [c8 c c] [c c c]
878 }
879 @end mudela
880 </xmp>
881 ")
882       (translator-property-description 'tupletInvisible boolean? "
883     If set to true, tuplet bracket creation is switched off
884 entirely. This has the same effect as setting both
885 @code{tupletNumberVisibility} and @code{tupletBracketVisibility} to
886 @code{#f}, but as this does not even create elements, this setting
887 uses less memory and time.")
888       )))
889
890
891    (cons
892     'Vertical_align_engraver
893     (engraver-description
894      "Vertical_align_engraver"
895      "Catch Vertical axis groups and stack them."
896      '(VerticalAlignment)
897      (list
898       )))
899
900
901    (cons
902     'Voice_devnull_engraver
903     (engraver-description
904      "Voice_devnull_engraver"
905      "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
906      '()
907      (list
908       )))
909    ))
910
911
912
913
914 (define context-description-alist
915   '(
916 (Grace . "
917     The context for handling grace notes.  It is instantiated
918     automatically when you use @code{\grace}.  Basically, it is an
919     `embedded' miniature of the Score context.  Since this context
920     needs special interaction with the rest of LilyPond, you should
921     not explicitly instantiate it.
922 ")
923 (LyricVoice . "
924     Corresponds to a voice with lyrics.  Handles the printing of a
925     single line of lyrics.
926 ")
927 (Thread . "
928     Handles note heads, and is contained in the Voice context.  You
929     have to instantiate this explicitly if you want to adjust the
930     style of individual note heads.
931 ")
932 (Voice . "
933     Corresponds to a voice on a staff.  This context handles the
934     conversion of dynamic signs, stems, beams, super- and subscripts,
935     slurs, ties, and rests.
936
937     You have to instantiate this explicitly if you want to have
938     multiple voices on the same staff.")
939
940 (ChordNamesVoice . "
941     A voice with chord names.  Handles printing of a line of chord
942     names.")
943
944 (ChordNames . "
945     Typesets chord names.  Can contain @code{ChordNamesVoice}
946     contexts.")
947
948 (Lyrics . "
949     Typesets lyrics.  It can contain @code{LyricVoice} contexts.
950 ")
951 (Staff . "
952     Handles clefs, bar lines, keys, accidentals.  It can contain
953     @code{Voice} contexts.
954 ")
955 (RhythmicStaff . "
956     A context like @code{Staff} but for printing rhythms.  Pitches are
957     ignored; the notes are printed on one line.  It can contain
958     @code{Voice} contexts.
959 ")
960 (GrandStaff . "
961     Contains @code{Staff} or @code{RhythmicStaff} contexts.  It adds a
962     brace on the left side, grouping the staffs together.  The bar
963     lines of the contained staffs are connected vertically.  It can
964     contain @code{Staff} contexts.")
965
966 (PianoStaff . "
967     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
968     equal to @code{maxVerticalAlign} so that interstaff beaming and
969     slurring can be used.")
970
971 (StaffGroup . "
972     Contains @code{Staff} or @code{RhythmicStaff} contexts.  Adds a
973     bracket on the left side, grouping the staffs together.  The bar
974     lines of the contained staffs are connected vertically.  It can
975     contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
976     @code{Lyrics} contexts.
977 ")
978 (ChoirStaff . "
979     Identical to @code{StaffGroup} except that the contained staffs
980     are not connected vertically.
981 ")
982 (Score . "
983     This is the top level notation context.  No other context can
984     contain a @code{Score} context.  This context handles the
985     administration of time signatures.  It also makes sure that items
986     such as clefs, time signatures, and key-signatures are aligned
987     across staffs.  It can contain @code{Lyrics}, @code{Staff},
988     @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
989     @code{ChoirStaff} contexts.
990
991     You cannot explicitly instantiate a Score context (since it is
992     not contained in any other context).  It is instantiated
993     automatically when an output definition (a @code{\score} or
994     @code{\paper} block) is processed.
995 ")
996 )
997 )