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 '(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."
132 'Align_note_column_engraver
133 (engraver-description
134 "Align_note_column_engraver"
135 "Generate object to put grace notes from left to right."
145 (engraver-description
147 "Generate an Arpeggio from a Arpeggio_req"
154 (engraver-description
156 "Generate beams based on measure characteristics and observed
157 Stems. Uses beatLength, measureLength and measurePosition to decide
158 when to start and stop a beam. Overriding beaming is done through
159 @ref{Stem_engraver} properties stemLeftBeamCount and
170 (engraver-description
172 "Create barlines. This engraver is controlled through the
173 @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point"
183 (engraver-description
184 "Bar_number_engraver"
185 "A bar number is created whenever measurePosition is zero. It is
186 put on top of all staffs, and appears only at left side of the staff."
195 (engraver-description
197 "Handles Beam_requests by engraving Beams. If omitted, then notes will be
198 printed with flags instead of beams."
205 'Break_align_engraver
206 (engraver-description
207 "Break_align_engraver"
208 "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
209 '(BreakAlignment BreakAlignGroup LeftEdge)
217 'Breathing_sign_engraver
218 (engraver-description
219 "Breathing_sign_engraver"
228 (engraver-description
229 "Chord_name_engraver"
230 "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
231 and generate the appropriate chordname."
237 'Chord_tremolo_engraver
238 (engraver-description
239 "Chord_tremolo_engraver"
240 "Generates beams for the \repeat X tremolo ... construct"
249 (engraver-description
259 (engraver-description
269 (engraver-description
270 "Dot_column_engraver"
271 " Engraves dots on dotted notes shifted to the right of the note.
272 If omitted, then dots appear on top of the notes.
282 (engraver-description
295 'Grace_position_engraver
296 (engraver-description
297 "Grace_position_engraver"
298 "Attach a grace note alignment to a note-column "
304 'Grace_engraver_group
305 (engraver-description
306 "Grace_engraver_group"
307 "An engraver that creates a `shielded' context-tree with separate notion of time"
314 'Instrument_name_engraver
315 (engraver-description
316 "Instrument_name_engraver"
317 " Prints the name of the instrument (specified by
318 @code{Staff.instrument} and @code{Staff.instr}) at the left of the
327 'Engraver_group_engraver
328 (engraver-description
329 "Engraver_group_engraver"
330 "A group of engravers taken together"
337 (engraver-description
346 explicitKeySignatureVisibility
347 createKeyOnClefChange
352 (cons 'Lyric_engraver
353 (engraver-description
361 (cons 'Lyric_phrasing_engraver
362 (engraver-description
363 "Lyric_phrasing_engraver"
376 (engraver-description
389 (engraver-description
403 'Multi_measure_rest_engraver
404 (engraver-description
405 "Multi_measure_rest_engraver"
406 "Engraves multi-measure rests that are produced with @code{R}. Reads
407 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
415 (engraver-description
416 "Note_heads_engraver"
417 "Generate one or more noteheads from Music of type Note_req."
423 'Note_head_line_engraver
424 (engraver-description
425 "Note_head_line_engraver"
426 "Engrave a line between two note heads, for example a glissando.
427 If followThread is set, staff switches also generate a line."
428 '(Glissando FollowThread)
433 (engraver-description
442 'Output_property_engraver
443 (engraver-description
444 "Output_property_engraver"
445 "Interpret Music of Output_property type, and apply a function
446 to any Graphic objects that satisfies the predicate."
453 'Piano_pedal_engraver
454 (engraver-description
455 "Piano_pedal_engraver"
456 "Engrave piano pedal symbols."
457 '(SostenutoPedal SustainPedal UnaChordaPedal)
458 '(pedalSostenutoStrings pedalSustainStrings pedalUnaChordaStrings
462 'Pitch_squash_engraver
463 (engraver-description
464 "Pitch_squash_engraver"
465 "Treat all pitches as middle C. Note that the notes move, but
466 the locations of accidentals stay the same.
467 Set the position field of all note heads to zero. This useful for
468 making a single line staff that demonstrates the rhythm of a melody."
476 (engraver-description
478 "This is a engraver that converts \property settings into
479 back-end grob-property settings. Example: Voice.stemLength will set
480 #'length in all Stem objects.
482 Due to CPU and memory requirements, the use of this engraver is deprecated."
484 '(Generic_property_list)
489 'Repeat_acknowledge_engraver
490 (engraver-description
491 "Repeat_acknowledge_engraver"
493 "Acknowledge repeated music, and convert the contents of
494 repeatCommands ainto an appropriate setting for whichBar"
504 'Rest_collision_engraver
505 (engraver-description
506 "Rest_collision_engraver"
507 "Handles collisions of rests."
515 (engraver-description
524 'Rhythmic_column_engraver
525 (engraver-description
526 "Rhythmic_column_engraver"
527 "Generates NoteColumn, an objects that groups stems, noteheads and rests."
534 'Script_column_engraver
535 (engraver-description
536 "Script_column_engraver"
545 (engraver-description
547 " Handles note ornaments generated by @code{\script}.
557 (engraver-description
559 "Top level engraver. Takes care of generating columns and the complete system (ie. LineOfScore)
561 This engraver decides whether a column is breakable. The default is
562 that a column is always breakable. However, when every Bar_engraver
563 that does not have a barline at a certain point will call
564 Score_engraver::forbid_breaks to stop linebreaks. In practice, this
565 means that you can make a breakpoint by creating a barline (assuming
566 that there are no beams or notes that prevent a breakpoint.)
569 '(LineOfScore PaperColumn NonMusicalPaperColumn)
575 (cons 'Skip_req_swallow_translator
576 (engraver-description
577 "Skip_req_swallow_translator"
586 (engraver-description
588 "Build slurs from Slur_reqs"
600 (engraver-description
602 "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes "
609 'Span_arpeggio_engraver
610 (engraver-description
611 "Span_arpeggio_engraver"
621 (engraver-description
623 "This engraver makes cross-staff barlines: It catches all normal
624 bar lines, and draws a single span-bar across them."
632 'Staff_symbol_engraver
633 (engraver-description
634 "Staff_symbol_engraver"
635 "create the constellation of five (default) staff lines."
642 'Stanza_number_engraver
643 (engraver-description
644 "Stanza_number_engraver"
656 'System_start_delimiter_engraver
657 (engraver-description
658 "System_start_delimiter_engraver"
659 "creates a SystemStartDelimiter spanner"
660 '(SystemStartDelimiter)
667 (engraver-description
669 "Create text-scripts"
678 'Text_spanner_engraver
679 (engraver-description
680 "Text_spanner_engraver"
681 "Create text spanner from a Span_req "
688 'Thread_devnull_engraver
689 (engraver-description
690 "Thread_devnull_engraver"
691 "Kill elements whenever we are Voice called `two' and
692 either unison, unisilence or soloADue is set"
699 (engraver-description
701 "Generate ties between noteheads of equal pitch."
709 'Time_signature_engraver
710 (engraver-description
711 "Time_signature_engraver"
712 "Create a TimeSignature whenever @code{timeSignatureFraction} changes"
720 (engraver-description
722 " Responsible for synchronizing timing information from staffs.
723 Normally in @code{Score}. In order to create polyrhythmic music,
724 this engraver should be removed from @code{Score} and placed in
728 timeSignatureFraction
729 barCheckNoSynchronize
745 (engraver-description
747 "Catch Time_scaled_music and generate appropriate bracket "
749 '(tupletNumberFormatFunction tupletSpannerDuration tupletInvisible)))
753 'Vertical_align_engraver
754 (engraver-description
755 "Vertical_align_engraver"
756 "Catch Vertical axis groups and stack them."
763 'Voice_devnull_engraver
764 (engraver-description
765 "Voice_devnull_engraver"
766 "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
773 (set! engraver-description-alist
774 (sort engraver-description-alist alist<?))
776 (define context-description-alist
779 The context for handling grace notes. It is instantiated
780 automatically when you use @code{\grace}. Basically, it is an
781 `embedded' miniature of the Score context. Since this context
782 needs special interaction with the rest of LilyPond, you should
783 not explicitly instantiate it.
786 Corresponds to a voice with lyrics. Handles the printing of a
787 single line of lyrics.
790 Handles note heads, and is contained in the Voice context. You
791 have to instantiate this explicitly if you want to adjust the
792 style of individual note heads.
795 Corresponds to a voice on a staff. This context handles the
796 conversion of dynamic signs, stems, beams, super- and subscripts,
797 slurs, ties, and rests.
799 You have to instantiate this explicitly if you want to have
800 multiple voices on the same staff.")
803 A voice with chord names. Handles printing of a line of chord
807 Typesets chord names. Can contain @code{ChordNamesVoice}
811 Typesets lyrics. It can contain @code{LyricsVoice} contexts.
814 Handles clefs, bar lines, keys, accidentals. It can contain
815 @code{Voice} contexts.
818 A context like @code{Staff} but for printing rhythms. Pitches are
819 ignored; the notes are printed on one line. It can contain
820 @code{Voice} contexts.
823 Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
824 brace on the left side, grouping the staffs together. The bar
825 lines of the contained staffs are connected vertically. It can
826 contain @code{Staff} contexts.")
829 Just like @code{GrandStaff} but with @code{minVerticalAlign} set
830 equal to @code{maxVerticalAlign} so that interstaff beaming and
831 slurring can be used.")
834 Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
835 bracket on the left side, grouping the staffs together. The bar
836 lines of the contained staffs are connected vertically. It can
837 contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
838 @code{Lyrics} contexts.
841 Identical to @code{StaffGroup} except that the contained staffs
842 are not connected vertically.
845 This is the top level notation context. No other context can
846 contain a @code{Score} context. This context handles the
847 administration of time signatures. It also makes sure that items
848 such as clefs, time signatures, and key-signatures are aligned
849 across staffs. It can contain @code{Lyrics}, @code{Staff},
850 @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
851 @code{ChoirStaff} contexts.
853 You cannot explicitly instantiate a Score context (since it is
854 not contained in any other context). It is instantiated
855 automatically when an output definition (a @code{\score} or
856 @code{\paper} block) is processed.
861 (set! context-description-alist
862 (sort context-description-alist alist<?))