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"
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 '(CONTEXTNAMEVerticalExtent CONTEXTNAMEMinimumVerticalExtent CONTEXTNAMExtraVerticalExtent)
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)
106 explicitClefVisibility
113 (engraver-description
115 "Part combine engraver for orchestral scores."
131 'Align_note_column_engraver
132 (engraver-description
133 "Align_note_column_engraver"
134 "Generate object to put grace notes from left to right."
144 (engraver-description
146 "Generate an Arpeggio from a Arpeggio_req"
153 (engraver-description
155 "Generate beams based on measure characteristics and observed Stems.
156 Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam.
166 (engraver-description
168 "Create barlines. This engraver is controlled through the
169 @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point"
179 (engraver-description
180 "Bar_number_engraver"
181 "A bar number is created whenever measurePosition is zero. It is
182 put on top of all staffs, and appears only at left side of the staff."
191 (engraver-description
193 "Handles Beam_requests by engraving Beams. If omitted, then notes will be
194 printed with flags instead of beams."
201 'Break_align_engraver
202 (engraver-description
203 "Break_align_engraver"
204 "Align graphic elements with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
205 '(BreakAlignment BreakAlignGroup LeftEdge)
213 'Breathing_sign_engraver
214 (engraver-description
215 "Breathing_sign_engraver"
224 (engraver-description
225 "Chord_name_engraver"
226 "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
227 and generate the appropriate chordname."
236 'Chord_tremolo_engraver
237 (engraver-description
238 "Chord_tremolo_engraver"
239 "Generates beams for the \repeat X tremolo ... construct"
248 (engraver-description
258 (engraver-description
268 (engraver-description
269 "Dot_column_engraver"
270 " Engraves dots on dotted notes shifted to the right of the note.
271 If omitted, then dots appear on top of the notes.
281 (engraver-description
285 DynamicText Crescendo
294 'Grace_position_engraver
295 (engraver-description
296 "Grace_position_engraver"
297 "Attach a grace note alignment to a note-column "
303 'Grace_engraver_group
304 (engraver-description
305 "Grace_engraver_group"
306 "An engraver that creates a `shielded' context-tree with separate notion of time"
313 'Instrument_name_engraver
314 (engraver-description
315 "Instrument_name_engraver"
316 " Prints the name of the instrument (specified by
317 @code{Staff.instrument} and @code{Staff.instr}) at the left of the
326 'Engraver_group_engraver
327 (engraver-description
328 "Engraver_group_engraver"
329 "A group of engravers taken together"
336 (engraver-description
345 explicitKeySignatureVisibility
346 createKeyOnClefChange
351 (cons 'Lyric_engraver
352 (engraver-description
360 (cons 'Lyric_phrasing_engraver
361 (engraver-description
362 "Lyric_phrasing_engraver"
375 (engraver-description
388 (engraver-description
402 'Multi_measure_rest_engraver
403 (engraver-description
404 "Multi_measure_rest_engraver"
405 "Engraves multi-measure rests that are produced with @code{R}. Reads
406 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
414 (engraver-description
415 "Note_heads_engraver"
416 "Generate one or more noteheads from Music of type Note_req."
422 'Note_head_line_engraver
423 (engraver-description
424 "Note_head_line_engraver"
425 "Engrave a line between two note heads."
426 '(Glissando FollowThread)
432 (engraver-description
441 'Output_property_engraver
442 (engraver-description
443 "Output_property_engraver"
444 "Interpret Music of Output_property type, and apply a function
445 to any Graphic objects that satisfies the predicate."
452 'Piano_pedal_engraver
453 (engraver-description
454 "Piano_pedal_engraver"
455 "engrave Piano pedals symbols."
456 '(SostenutoPedal SustainPedal UnaChordaPedal)
467 'Pitch_squash_engraver
468 (engraver-description
469 "Pitch_squash_engraver"
470 "Treat all pitches as middle C. Note that the notes move, but
471 the locations of accidentals stay the same.
472 Set the position field of all note heads to zero. This useful for
473 making a single line staff that demonstrates the rhythm of a melody."
481 (engraver-description
483 "This is a engraver that converts \property settings into
484 back-end element-property settings. Example: Voice.stemLength will set
485 #'length in all Stem objects.
487 Due to CPU and memory requirements, the use of this engraver is deprecated."
489 '(Generic_property_list)
494 'Repeat_acknowledge_engraver
495 (engraver-description
496 "Repeat_acknowledge_engraver"
498 "Acknowledge repeated music, and convert the contents of
499 repeatCommands ainto an appropriate setting for whichBar"
509 'Rest_collision_engraver
510 (engraver-description
511 "Rest_collision_engraver"
512 "Handles collisions of rests."
520 (engraver-description
529 'Rhythmic_column_engraver
530 (engraver-description
531 "Rhythmic_column_engraver"
532 "Generates NoteColumn, an objects that groups stems, noteheads and rests."
539 'Script_column_engraver
540 (engraver-description
541 "Script_column_engraver"
550 (engraver-description
552 " Handles note ornaments generated by @code{\script}.
562 (engraver-description
564 "Top level engraver. Takes care of generating columns and the complete system (ie. LineOfScore)
566 This engraver decides whether a column is breakable. The default is
567 that a column is always breakable. However, when every Bar_engraver
568 that does not have a barline at a certain point will call
569 Score_engraver::forbid_breaks to stop linebreaks. In practice, this
570 means that you can make a breakpoint by creating a barline (assuming
571 that there are no beams or notes that prevent a breakpoint.)
574 '(LineOfScore PaperColumn NonMusicalPaperColumn)
580 (cons 'Skip_req_swallow_translator
581 (engraver-description
582 "Skip_req_swallow_translator"
591 (engraver-description
593 "Build slurs from Slur_reqs"
605 (engraver-description
607 "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes "
614 'Span_arpeggio_engraver
615 (engraver-description
616 "Span_arpeggio_engraver"
626 (engraver-description
628 "This engraver makes cross-staff barlines: It catches all normal
629 bar lines, and draws a single span-bar across them."
637 'Staff_symbol_engraver
638 (engraver-description
639 "Staff_symbol_engraver"
640 "create the constellation of five (default) staff lines."
647 'Stanza_number_engraver
648 (engraver-description
649 "Stanza_number_engraver"
661 'System_start_delimiter_engraver
662 (engraver-description
663 "System_start_delimiter_engraver"
664 "creates a SystemStartDelimiter spanner"
665 '(SystemStartDelimiter)
672 (engraver-description
674 "Create text-scripts"
683 'Text_spanner_engraver
684 (engraver-description
685 "Text_spanner_engraver"
686 "Create text spanner from a Span_req "
693 'Thread_devnull_engraver
694 (engraver-description
695 "Thread_devnull_engraver"
696 "Kill elements whenever we are Voice called `two' and
697 either unison, unisilence or soloADue is set"
704 (engraver-description
706 "Generate ties between noteheads of equal pitch."
714 'Time_signature_engraver
715 (engraver-description
716 "Time_signature_engraver"
717 "Create a TimeSignature whenever @code{timeSignatureFraction} changes"
725 (engraver-description
727 " Responsible for synchronizing timing information from staffs.
728 Normally in @code{Score}. In order to create polyrhythmic music,
729 this engraver should be removed from @code{Score} and placed in
733 timeSignatureFraction
734 barCheckNoSynchronize
750 (engraver-description
752 "Catch Time_scaled_music and generate appropriate bracket "
756 tupletSpannerDuration
762 'Vertical_align_engraver
763 (engraver-description
764 "Vertical_align_engraver"
765 "Catch Vertical axis groups and stack them."
772 'Voice_devnull_engraver
773 (engraver-description
774 "Voice_devnull_engraver"
775 "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
782 (set! engraver-description-alist
783 (sort engraver-description-alist alist<?))
785 (define context-description-alist
788 The context for handling grace notes. It is instantiated
789 automatically when you use @code{\grace}. Basically, it is an
790 `embedded' miniature of the Score context. Since this context
791 needs special interaction with the rest of LilyPond, you should
792 not explicitly instantiate it.
795 Corresponds to a voice with lyrics. Handles the printing of a
796 single line of lyrics.
799 Handles note heads, and is contained in the Voice context. You
800 have to instantiate this explicitly if you want to adjust the
801 style of individual note heads.
804 Corresponds to a voice on a staff. This context handles the
805 conversion of dynamic signs, stems, beams, super- and subscripts,
806 slurs, ties, and rests.
808 You have to instantiate this explicitly if you want to have
809 multiple voices on the same staff.")
812 A voice with chord names. Handles printing of a line of chord
816 Typesets chord names. Can contain @code{ChordNamesVoice}
820 Typesets lyrics. It can contain @code{LyricVoice} contexts.
823 Handles clefs, bar lines, keys, accidentals. It can contain
824 @code{Voice} contexts.
827 A context like @code{Staff} but for printing rhythms. Pitches are
828 ignored; the notes are printed on one line. It can contain
829 @code{Voice} contexts.
832 Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
833 brace on the left side, grouping the staffs together. The bar
834 lines of the contained staffs are connected vertically. It can
835 contain @code{Staff} contexts.")
838 Just like @code{GrandStaff} but with @code{minVerticalAlign} set
839 equal to @code{maxVerticalAlign} so that interstaff beaming and
840 slurring can be used.")
843 Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
844 bracket on the left side, grouping the staffs together. The bar
845 lines of the contained staffs are connected vertically. It can
846 contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
847 @code{Lyrics} contexts.
850 Identical to @code{StaffGroup} except that the contained staffs
851 are not connected vertically.
854 This is the top level notation context. No other context can
855 contain a @code{Score} context. This context handles the
856 administration of time signatures. It also makes sure that items
857 such as clefs, time signatures, and key-signatures are aligned
858 across staffs. It can contain @code{Lyrics}, @code{Staff},
859 @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
860 @code{ChoirStaff} contexts.
862 You cannot explicitly instantiate a Score context (since it is
863 not contained in any other context). It is instantiated
864 automatically when an output definition (a @code{\score} or
865 @code{\paper} block) is processed.
870 (set! context-description-alist
871 (sort context-description-alist alist<?))