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.
117 The markings @emph{a2}, @emph{Solo} and @emph{Solo II}, are
118 created by this engraver. It also acts upon instructions of the part
119 combiner. Another thing that the this engraver, is forcing of stem,
120 slur and tie directions, always when both threads are not identical;
121 up for the musicexpr called @code{one}, down for the musicexpr called
141 'Align_note_column_engraver
142 (engraver-description
143 "Align_note_column_engraver"
144 "Generate object to put grace notes from left to right."
154 (engraver-description
156 "Generate an Arpeggio from a Arpeggio_req"
163 (engraver-description
165 "Generate beams based on measure characteristics and observed
166 Stems. Uses beatLength, measureLength and measurePosition to decide
167 when to start and stop a beam. Overriding beaming is done through
168 @ref{Stem_engraver} properties stemLeftBeamCount and
179 (engraver-description
181 "Create barlines. This engraver is controlled through the
182 @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point"
192 (engraver-description
193 "Bar_number_engraver"
194 "A bar number is created whenever measurePosition is zero. It is
195 put on top of all staffs, and appears only at left side of the staff."
204 (engraver-description
206 "Handles Beam_requests by engraving Beams. If omitted, then notes will be
207 printed with flags instead of beams."
214 'Break_align_engraver
215 (engraver-description
216 "Break_align_engraver"
217 "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder"
218 '(BreakAlignment BreakAlignGroup LeftEdge)
226 'Breathing_sign_engraver
227 (engraver-description
228 "Breathing_sign_engraver"
237 (engraver-description
238 "Chord_name_engraver"
239 "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req
240 and generate the appropriate chordname."
246 'Chord_tremolo_engraver
247 (engraver-description
248 "Chord_tremolo_engraver"
249 "Generates beams for the \repeat X tremolo ... construct"
258 (engraver-description
268 (engraver-description
278 (engraver-description
279 "Dot_column_engraver"
280 " Engraves dots on dotted notes shifted to the right of the note.
281 If omitted, then dots appear on top of the notes.
291 (engraver-description
304 'Grace_position_engraver
305 (engraver-description
306 "Grace_position_engraver"
307 "Attach a grace note alignment to a note-column "
313 'Grace_engraver_group
314 (engraver-description
315 "Grace_engraver_group"
316 "An engraver that creates a `shielded' context-tree with separate notion of time"
323 'Instrument_name_engraver
324 (engraver-description
325 "Instrument_name_engraver"
326 " Prints the name of the instrument (specified by
327 @code{Staff.instrument} and @code{Staff.instr}) at the left of the
336 'Engraver_group_engraver
337 (engraver-description
338 "Engraver_group_engraver"
339 "A group of engravers taken together"
346 (engraver-description
355 explicitKeySignatureVisibility
356 createKeyOnClefChange
361 (cons 'Lyric_engraver
362 (engraver-description
370 (cons 'Lyric_phrasing_engraver
371 (engraver-description
372 "Lyric_phrasing_engraver"
385 (engraver-description
398 (engraver-description
412 'Multi_measure_rest_engraver
413 (engraver-description
414 "Multi_measure_rest_engraver"
415 "Engraves multi-measure rests that are produced with @code{R}. Reads
416 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
424 (engraver-description
425 "Note_heads_engraver"
426 "Generate one or more noteheads from Music of type Note_req."
432 'Note_head_line_engraver
433 (engraver-description
434 "Note_head_line_engraver"
435 "Engrave a line between two note heads, for example a glissando.
436 If followVoice is set, staff switches also generate a line."
437 '(Glissando VoiceFollower)
442 (engraver-description
451 'Output_property_engraver
452 (engraver-description
453 "Output_property_engraver"
454 "Interpret Music of Output_property type, and apply a function
455 to any Graphic objects that satisfies the predicate."
462 'Piano_pedal_engraver
463 (engraver-description
464 "Piano_pedal_engraver"
465 "Engrave piano pedal symbols."
466 '(SostenutoPedal SustainPedal UnaChordaPedal)
467 '(pedalSostenutoStrings pedalSustainStrings pedalUnaChordaStrings
471 'Pitch_squash_engraver
472 (engraver-description
473 "Pitch_squash_engraver"
474 "Treat all pitches as middle C. Note that the notes move, but
475 the locations of accidentals stay the same.
476 Set the position field of all note heads to zero. This useful for
477 making a single line staff that demonstrates the rhythm of a melody."
485 (engraver-description
487 "This is a engraver that converts \property settings into
488 back-end grob-property settings. Example: Voice.stemLength will set
489 #'length in all Stem objects.
491 Due to CPU and memory requirements, the use of this engraver is deprecated."
493 '(Generic_property_list)
498 'Repeat_acknowledge_engraver
499 (engraver-description
500 "Repeat_acknowledge_engraver"
502 "Acknowledge repeated music, and convert the contents of
503 repeatCommands ainto an appropriate setting for whichBar"
513 'Rest_collision_engraver
514 (engraver-description
515 "Rest_collision_engraver"
516 "Handles collisions of rests."
524 (engraver-description
533 'Rhythmic_column_engraver
534 (engraver-description
535 "Rhythmic_column_engraver"
536 "Generates NoteColumn, an objects that groups stems, noteheads and rests."
543 'Script_column_engraver
544 (engraver-description
545 "Script_column_engraver"
554 (engraver-description
556 " Handles note ornaments generated by @code{\script}.
566 (engraver-description
568 "Top level engraver. Takes care of generating columns and the complete system (ie. LineOfScore)
570 This engraver decides whether a column is breakable. The default is
571 that a column is always breakable. However, when every Bar_engraver
572 that does not have a barline at a certain point will call
573 Score_engraver::forbid_breaks to stop linebreaks. In practice, this
574 means that you can make a breakpoint by creating a barline (assuming
575 that there are no beams or notes that prevent a breakpoint.)
578 '(LineOfScore PaperColumn NonMusicalPaperColumn)
584 (cons 'Skip_req_swallow_translator
585 (engraver-description
586 "Skip_req_swallow_translator"
595 (engraver-description
597 "Build slurs from Slur_reqs"
609 (engraver-description
611 "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes "
618 'Span_arpeggio_engraver
619 (engraver-description
620 "Span_arpeggio_engraver"
630 (engraver-description
632 "This engraver makes cross-staff barlines: It catches all normal
633 bar lines, and draws a single span-bar across them."
641 'Staff_symbol_engraver
642 (engraver-description
643 "Staff_symbol_engraver"
644 "create the constellation of five (default) staff lines."
651 'Stanza_number_engraver
652 (engraver-description
653 "Stanza_number_engraver"
665 'System_start_delimiter_engraver
666 (engraver-description
667 "System_start_delimiter_engraver"
668 "creates a SystemStartDelimiter spanner"
669 '(SystemStartDelimiter)
676 (engraver-description
678 "Create text-scripts"
687 'Text_spanner_engraver
688 (engraver-description
689 "Text_spanner_engraver"
690 "Create text spanner from a Span_req "
697 'Thread_devnull_engraver
698 (engraver-description
699 "Thread_devnull_engraver"
700 "Kill elements whenever we are Voice called `two' and either
701 unison, unisilence or soloADue is set.@footnote{On unix systems, the
702 file @file{/dev/null} is special device: anything written to it is
703 discarded.}. This engraver works closely together with the part
704 combiner. When the part combiner notices that two threads are
705 identical, it tells the @code{Thread_devnull_engraver} to discard
706 everything in the second thread.
715 (engraver-description
717 "Generate ties between noteheads of equal pitch."
725 'Time_signature_engraver
726 (engraver-description
727 "Time_signature_engraver"
728 "Create a TimeSignature whenever @code{timeSignatureFraction} changes"
736 (engraver-description
738 " Responsible for synchronizing timing information from staffs.
739 Normally in @code{Score}. In order to create polyrhythmic music,
740 this engraver should be removed from @code{Score} and placed in
744 timeSignatureFraction
745 barCheckNoSynchronize
761 (engraver-description
763 "Catch Time_scaled_music and generate appropriate bracket "
765 '(tupletNumberFormatFunction tupletSpannerDuration tupletInvisible)))
769 'Vertical_align_engraver
770 (engraver-description
771 "Vertical_align_engraver"
772 "Catch Vertical axis groups and stack them."
779 'Voice_devnull_engraver
780 (engraver-description
781 "Voice_devnull_engraver"
782 "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set."
789 (set! engraver-description-alist
790 (sort engraver-description-alist alist<?))
792 (define context-description-alist
795 The context for handling grace notes. It is instantiated
796 automatically when you use @code{\grace}. Basically, it is an
797 `embedded' miniature of the Score context. Since this context
798 needs special interaction with the rest of LilyPond, you should
799 not explicitly instantiate it.
802 Corresponds to a voice with lyrics. Handles the printing of a
803 single line of lyrics.
806 Handles note heads, and is contained in the Voice context. You
807 have to instantiate this explicitly if you want to adjust the
808 style of individual note heads.
811 Corresponds to a voice on a staff. This context handles the
812 conversion of dynamic signs, stems, beams, super- and subscripts,
813 slurs, ties, and rests.
815 You have to instantiate this explicitly if you want to have
816 multiple voices on the same staff.")
819 A voice with chord names. Handles printing of a line of chord
823 Typesets chord names. Can contain @code{ChordNamesVoice}
827 Typesets lyrics. It can contain @code{LyricsVoice} contexts.
830 Handles clefs, bar lines, keys, accidentals. It can contain
831 @code{Voice} contexts.
834 A context like @code{Staff} but for printing rhythms. Pitches are
835 ignored; the notes are printed on one line. It can contain
836 @code{Voice} contexts.
839 Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
840 brace 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} contexts.")
845 Just like @code{GrandStaff} but with @code{minVerticalAlign} set
846 equal to @code{maxVerticalAlign} so that interstaff beaming and
847 slurring can be used.")
850 Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
851 bracket on the left side, grouping the staffs together. The bar
852 lines of the contained staffs are connected vertically. It can
853 contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
854 @code{Lyrics} contexts.
857 Identical to @code{StaffGroup} except that the contained staffs
858 are not connected vertically.
861 This is the top level notation context. No other context can
862 contain a @code{Score} context. This context handles the
863 administration of time signatures. It also makes sure that items
864 such as clefs, time signatures, and key-signatures are aligned
865 across staffs. It can contain @code{Lyrics}, @code{Staff},
866 @code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
867 @code{ChoirStaff} contexts.
869 You cannot explicitly instantiate a Score context (since it is
870 not contained in any other context). It is instantiated
871 automatically when an output definition (a @code{\score} or
872 @code{\paper} block) is processed.
877 (set! context-description-alist
878 (sort context-description-alist alist<?))