2 (define (engraver-description name description created-elts properties)
3 (list name description created-elts properties)
7 (define engraver-description-alist
13 "Create stems and single-stem tremolos. It also works together with
14 the beam engraver for overriding beaming."
25 "Create lyric hyphens"
34 "Create lyric extenders"
41 'Separating_line_group_engraver
43 "Separating_line_group_engraver"
44 "Generates objects for computing spacing parameters."
45 '(SeparationItem SeparatingGroupSpanner)
53 "Group all objects created in this context in a VerticalAxisGroup spanner."
55 '(VerticalExtent MinimumVerticalExtent ExtraVerticalExtent)
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)
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.
92 '(repeatCommands voltaSpannerDuration)
99 "Determine and set reference point for pitches"
100 '(Clef OctavateEight)
101 '( clefPosition clefGlyph centralCPosition clefOctavation explicitClefVisibility )))
105 (engraver-description
107 "Part combine engraver for orchestral scores.
109 The markings @emph{a2}, @emph{Solo} and @emph{Solo II}, are
110 created by this engraver. It also acts upon instructions of the part
111 combiner. Another thing that the this engraver, is forcing of stem,
112 slur and tie directions, always when both threads are not identical;
113 up for the musicexpr called @code{one}, down for the musicexpr called
134 (engraver-description
136 "Generate an Arpeggio from a Arpeggio_req"
143 (engraver-description
145 "Generate beams based on measure characteristics and observed
146 Stems. Uses beatLength, measureLength and measurePosition to decide
147 when to start and stop a beam. Overriding beaming is done through
148 @ref{Stem_engraver} properties stemLeftBeamCount and
159 (engraver-description
161 "Create barlines. This engraver is controlled through the
162 @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point"
172 (engraver-description
173 "Bar_number_engraver"
174 "A bar number is created whenever measurePosition is zero. It is
175 put on top of all staves, and appears only at left side of the staff."
184 (engraver-description
186 "Handles Beam_requests by engraving Beams. If omitted, then notes will be
187 printed with flags instead of beams."
194 'Break_align_engraver
195 (engraver-description
196 "Break_align_engraver"
197 "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
198 '(BreakAlignment BreakAlignGroup LeftEdge)
206 'Breathing_sign_engraver
207 (engraver-description
208 "Breathing_sign_engraver"
217 (engraver-description
218 "Chord_name_engraver"
219 "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
220 and generate the appropriate chordname."
226 'Chord_tremolo_engraver
227 (engraver-description
228 "Chord_tremolo_engraver"
229 "Generates beams for the \repeat X tremolo ... construct"
238 (engraver-description
248 (engraver-description
258 (engraver-description
259 "Dot_column_engraver"
260 " Engraves dots on dotted notes shifted to the right of the note.
261 If omitted, then dots appear on top of the notes.
271 (engraver-description
286 'Instrument_name_engraver
287 (engraver-description
288 "Instrument_name_engraver"
289 " Prints the name of the instrument (specified by
290 @code{Staff.instrument} and @code{Staff.instr}) at the left of the
299 'Engraver_group_engraver
300 (engraver-description
301 "Engraver_group_engraver"
302 "A group of engravers taken together"
309 (engraver-description
314 '( keySignature explicitKeySignatureVisibility createKeyOnClefChange keyAccidentalOrder keySignature )))
316 (cons 'Lyric_engraver
317 (engraver-description
325 (cons 'Lyric_phrasing_engraver
326 (engraver-description
327 "Lyric_phrasing_engraver"
340 (engraver-description
353 (engraver-description
367 'Multi_measure_rest_engraver
368 (engraver-description
369 "Multi_measure_rest_engraver"
370 "Engraves multi-measure rests that are produced with @code{R}. Reads
371 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
374 '(currentBarNumber currentCommandColumn measurePosition
379 (engraver-description
380 "Note_heads_engraver"
381 "Generate one or more noteheads from Music of type Note_req."
387 'Note_head_line_engraver
388 (engraver-description
389 "Note_head_line_engraver"
390 "Engrave a line between two note heads, for example a glissando.
391 If followVoice is set, staff switches also generate a line."
392 '(Glissando VoiceFollower)
397 (engraver-description
406 'Output_property_engraver
407 (engraver-description
408 "Output_property_engraver"
409 "Interpret Music of Output_property type, and apply a function
410 to any Graphic objects that satisfies the predicate."
417 'Piano_pedal_engraver
418 (engraver-description
419 "Piano_pedal_engraver"
420 "Engrave piano pedal symbols."
421 '(SostenutoPedal SustainPedal UnaCordaPedal)
422 '(pedalSostenutoStrings pedalSustainStrings pedalUnaCordaStrings
426 'Pitch_squash_engraver
427 (engraver-description
428 "Pitch_squash_engraver"
429 "Treat all pitches as middle C. Note that the notes move, but
430 the locations of accidentals stay the same.
431 Set the position field of all note heads to zero. This useful for
432 making a single line staff that demonstrates the rhythm of a melody."
440 (engraver-description
442 "Join adjacent notes to a porrectus ligature."
450 (engraver-description
452 "This is a engraver that converts \property settings into
453 back-end grob-property settings. Example: Voice.stemLength will set
454 #'length in all Stem objects.
456 Due to CPU and memory requirements, the use of this engraver is deprecated."
458 '(Generic_property_list)
463 'Repeat_acknowledge_engraver
464 (engraver-description
465 "Repeat_acknowledge_engraver"
467 "Acknowledge repeated music, and convert the contents of
468 repeatCommands ainto an appropriate setting for whichBar"
478 'Rest_collision_engraver
479 (engraver-description
480 "Rest_collision_engraver"
481 "Handles collisions of rests."
489 (engraver-description
498 'Rhythmic_column_engraver
499 (engraver-description
500 "Rhythmic_column_engraver"
501 "Generates NoteColumn, an objects that groups stems, noteheads and rests."
508 'Script_column_engraver
509 (engraver-description
510 "Script_column_engraver"
519 (engraver-description
521 " Handles note ornaments generated by @code{\script}.
531 (engraver-description
533 "Top level engraver. Takes care of generating columns and the complete system (ie. LineOfScore)
535 This engraver decides whether a column is breakable. The default is
536 that a column is always breakable. However, when every Bar_engraver
537 that does not have a barline at a certain point will call
538 Score_engraver::forbid_breaks to stop linebreaks. In practice, this
539 means that you can make a breakpoint by creating a barline (assuming
540 that there are no beams or notes that prevent a breakpoint.)
543 '(LineOfScore PaperColumn NonMusicalPaperColumn)
549 (cons 'Skip_req_swallow_translator
550 (engraver-description
551 "Skip_req_swallow_translator"
560 (engraver-description
562 "Build slurs from Slur_reqs"
574 (engraver-description
576 "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes "
583 'Span_arpeggio_engraver
584 (engraver-description
585 "Span_arpeggio_engraver"
595 (engraver-description
597 "This engraver makes cross-staff barlines: It catches all normal
598 bar lines, and draws a single span-bar across them."
606 'Staff_symbol_engraver
607 (engraver-description
608 "Staff_symbol_engraver"
609 "create the constellation of five (default) staff lines."
616 'Stanza_number_engraver
617 (engraver-description
618 "Stanza_number_engraver"
630 'System_start_delimiter_engraver
631 (engraver-description
632 "System_start_delimiter_engraver"
633 "creates a SystemStartDelimiter spanner"
634 '(SystemStartDelimiter)
641 (engraver-description
643 "Create text-scripts"
652 'Text_spanner_engraver
653 (engraver-description
654 "Text_spanner_engraver"
655 "Create text spanner from a Span_req "
662 'Thread_devnull_engraver
663 (engraver-description
664 "Thread_devnull_engraver"
665 "Kill elements whenever we are Voice called `two' and either
666 unison, unisilence or soloADue is set.@footnote{On unix systems, the
667 file @file{/dev/null} is special device: anything written to it is
668 discarded.}. This engraver works closely together with the part
669 combiner. When the part combiner notices that two threads are
670 identical, it tells the @code{Thread_devnull_engraver} to discard
671 everything in the second thread.
680 (engraver-description
682 "Generate ties between noteheads of equal pitch."
690 'Time_signature_engraver
691 (engraver-description
692 "Time_signature_engraver"
693 "Create a TimeSignature whenever @code{timeSignatureFraction} changes"
701 (engraver-description
703 " Responsible for synchronizing timing information from staves.
704 Normally in @code{Score}. In order to create polyrhythmic music,
705 this engraver should be removed from @code{Score} and placed in
709 timeSignatureFraction
710 barCheckNoSynchronize
726 (engraver-description
728 "Catch Time_scaled_music and generate appropriate bracket "
730 '(tupletNumberFormatFunction tupletSpannerDuration tupletInvisible)))
734 'Vertical_align_engraver
735 (engraver-description
736 "Vertical_align_engraver"
737 "Catch Vertical axis groups and stack them."
744 'Voice_devnull_engraver
745 (engraver-description
746 "Voice_devnull_engraver"
747 "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
754 (set! engraver-description-alist
755 (sort engraver-description-alist alist<?))
757 (define context-description-alist
760 The context for handling grace notes. It used to be instantiated
761 automatically when you use @code{\grace}. Basically, it is an
762 `embedded' miniature of the Score context. Since this context
763 needs special interaction with the rest of LilyPond, you should
764 not explicitly instantiate it.
769 Corresponds to a voice with lyrics. Handles the printing of a
770 single line of lyrics.
773 Handles note heads, and is contained in the Voice context. You
774 have to instantiate this explicitly if you want to adjust the
775 style of individual note heads.
778 Corresponds to a voice on a staff. This context handles the
779 conversion of dynamic signs, stems, beams, super- and subscripts,
780 slurs, ties, and rests.
782 You have to instantiate this explicitly if you want to have
783 multiple voices on the same staff.")
786 A voice with chord names. Handles printing of a line of chord
790 Typesets chord names. Can contain @code{ChordNamesVoice}
794 Typesets lyrics. It can contain @code{LyricsVoice} contexts.
797 Handles clefs, bar lines, keys, accidentals. It can contain
798 @code{Voice} contexts.
801 A context like @code{Staff} but for printing rhythms. Pitches are
802 ignored; the notes are printed on one line. It can contain
803 @code{Voice} contexts.
806 Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
807 brace on the left side, grouping the staves together. The bar
808 lines of the contained staves are connected vertically. It can
809 contain @code{Staff} contexts.")
812 Just like @code{GrandStaff} but with @code{minVerticalAlign} set
813 equal to @code{maxVerticalAlign} so that interstaff beaming and
814 slurring can be used.")
817 Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
818 bracket on the left side, grouping the staves together. The bar
819 lines of the contained staves are connected vertically. It can
820 contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
821 @code{Lyrics} contexts.
824 Identical to @code{StaffGroup} except that the contained staves
825 are not connected vertically.
828 This is the top level notation context. No other context can
829 contain a @code{Score} context. This context handles the
830 administration of time signatures. It also makes sure that items
831 such as clefs, time signatures, and key-signatures are aligned
832 across staves. It can contain @code{Lyrics}, @code{Staff},
833 @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
834 @code{ChoirStaff} contexts.
836 You cannot explicitly instantiate a Score context (since it is
837 not contained in any other context). It is instantiated
838 automatically when an output definition (a @code{\score} or
839 @code{\paper} block) is processed.
844 (set! context-description-alist
845 (sort context-description-alist alist<?))