Top

Music definitions

Music expressions

AbortEvent

End the currently running spanners.

Music types: general-music, event and abort-event

Accepted by: Beam_engraver, Cluster_spanner_engraver, Coherent_ligature_engraver, Grace_beam_engraver, Gregorian_ligature_engraver, Ligature_bracket_engraver, Ligature_engraver, Mensural_ligature_engraver, Note_heads_engraver, Piano_pedal_engraver, Swallow_performer, Vaticana_ligature_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'AbortEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
span-type (string)
What kind of spanner should be created?

TODO: consider making type into symbol Default value: abort

types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event abort-event)

AbsoluteDynamicEvent

Creates a dynamic mark. Syntax: note\x, where x is one of {\ppp, \pp, \p, \mp, \mf, \f, \ff, \fff.}

Music types: general-music, event, dynamic-event and absolute-dynamic-event

Accepted by: Dynamic_engraver, Dynamic_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'AbsoluteDynamicEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event dynamic-event absolute-dynamic-event)

ApplyContext

Call the argument with the current context during interpreting phase

Music types: general-music and apply-context

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ApplyContext
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music apply-context)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Apply_context_iterator::constructor

ApplyOutputEvent

Call the argument with all current grobs during interpreting phase.

SYNTAX

pplyoutput FUNC

arguments to func are 1. the grob, 2. the originating context, 3. context where FUNC is called.

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ApplyOutputEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Output_property_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music layout-instruction)

ArpeggioEvent

Make an arpeggio on this note. Syntax: note-\arpeggio

Music types: general-music, arpeggio-event and event

Accepted by: Arpeggio_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ArpeggioEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music arpeggio-event event)

ArticulationEvent

Adds an articulation marking to a note. Syntax: noteXY, where X is a direction (up ^, down _, or LilyPond's choice (no direction specified)), and where Y is an articulation (such as -., ->, \tenuto, \downbow). See the user manual for details.

Music types: general-music, event, articulation-event and script-event

Accepted by: Script_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ArticulationEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event articulation-event script-event)

AutoChangeMusic

Used for making voices that switch between piano staves automatically.

Music types: general-music, music-wrapper-music and auto-change-instruction

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'AutoChangeMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Music_wrapper
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Auto_change_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music music-wrapper-music auto-change-instruction)

BarCheck

Check whether this music coincides with the start of the measure.

Music types: general-music and bar-check

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BarCheck
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music bar-check)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Bar_check_iterator::constructor

BassFigureEvent

Print a bass-figure text

Music types: general-music, event, rhythmic-event and bass-figure-event

Accepted by: Figured_bass_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BassFigureEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event rhythmic-event bass-figure-event)

BeamEvent

Starts or stops a beam. Syntax for manual control: c8-[ c c-] c8

Music types: general-music, event, beam-event and span-event

Accepted by: Beam_engraver, Grace_beam_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BeamEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event beam-event span-event)

BreakEvent

Creates a line break. Syntax: \break.

Music types: general-music, break-event and event

Accepted by: Score_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BreakEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music break-event event)

BreathingSignEvent

Creates a `breath mark' or `comma'. Syntax: note\breathe.

Music types: general-music, event and breathing-event

Accepted by: Breathing_sign_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BreathingSignEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event breathing-event)

BusyPlayingEvent

Used internally to signal beginning and ending of notes.

Music types: general-music, event and busy-playing-event

Accepted by: Completion_heads_engraver, Note_heads_engraver, Swallow_performer, Tab_note_heads_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'BusyPlayingEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event busy-playing-event)

ClusterNoteEvent

A note that is part of a cluster.

Music types: general-music, cluster-note-event, melodic-event, rhythmic-event and event

Accepted by: Cluster_spanner_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ClusterNoteEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music cluster-note-event melodic-event rhythmic-event event)

ContextSpeccedMusic

Interpret the argument music within a specific context.

Music types: context-specification, general-music and music-wrapper-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ContextSpeccedMusic
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Context_specced_music_iterator::constructor
internal-class-name (string)
C++ class to use for this Music object Default value: Music_wrapper
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(context-specification general-music music-wrapper-music)

CrescendoEvent

Begins or ends a crescendo. Syntax: note\cr ... note\rc (you can also use \<, \!, \cresc, and \endcresc. See the user manual for details.).

Music types: general-music, dynamic-event, crescendo-event and event

Accepted by: Dynamic_engraver, Span_dynamic_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'CrescendoEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music dynamic-event crescendo-event event)

DecrescendoEvent

See CrescendoEvent.

Music types: general-music, dynamic-event, decrescendo-event and event

Accepted by: Dynamic_engraver, Span_dynamic_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'DecrescendoEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music dynamic-event decrescendo-event event)

Event

Atomic music event.

Music types: general-music and event

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'Event
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event)

EventChord

Internally used to group a set of events.

Music types: general-music, event-chord and simultaneous-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'EventChord
internal-class-name (string)
C++ class to use for this Music object Default value: Event_chord
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Event_chord_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event-chord simultaneous-music)

ExtenderEvent

Extend lyrics.

Music types: general-music, extender-event and event

Accepted by: Extender_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ExtenderEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music extender-event event)

FingerEvent

Specify what finger to use for this note.

Music types: general-music, fingering-event and event

Accepted by: Fingering_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'FingerEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music fingering-event event)

FoldedRepeatedMusic

Repeats with alternatives placed in parallel.

Music types: general-music, repeated-music and folded-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'FoldedRepeatedMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Repeated_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Folded_repeat_iterator::constructor
start-moment-function (procedure)
Function to compute the negative length of starting grace notes. Default value: Repeated_music::minimum_start
length (procedure)
How to compute the duration of this music Default value: Repeated_music::folded_music_length
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music folded-repeated-music)

GlissandoEvent

Start a glissando on this note.

Music types: general-music, glissando-event and event

Accepted by: Glissando_engraver, Note_head_line_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'GlissandoEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music glissando-event event)

GraceMusic

Interpret the argument as grace notes.

Music types: grace-music, music-wrapper-music and general-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'GraceMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Grace_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Grace_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(grace-music music-wrapper-music general-music)

HyphenEvent

A hyphen between lyric syllables.

Music types: general-music, hyphen-event and event

Accepted by: Hyphen_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'HyphenEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music hyphen-event event)

KeyChangeEvent

Change the key signature. Syntax: \key name scale.

Music types: general-music, key-change-event and event

Accepted by: Key_engraver, Key_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'KeyChangeEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Key_change_ev
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music key-change-event event)

LigatureEvent

(docme).

Music types: general-music, span-event, ligature-event and event

Accepted by: Coherent_ligature_engraver, Gregorian_ligature_engraver, Ligature_bracket_engraver, Ligature_engraver, Mensural_ligature_engraver, Note_heads_engraver, Swallow_performer, Vaticana_ligature_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'LigatureEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
span-type (string)
What kind of spanner should be created?

TODO: consider making type into symbol Default value: 'ligature

types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music span-event ligature-event event)

LyricCombineMusic

Align lyrics to the start of notes. Syntax \addlyrics music lyrics.

Music types: general-music and lyric-combine-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'LyricCombineMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Lyric_combine_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music lyric-combine-music)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Lyric_combine_music_iterator::constructor

LyricEvent

A lyric syllable. Must be entered in lyrics mode, i.e. \lyrics { twinkle4 twinkle4 } .

Music types: general-music, rhythmic-event, lyric-event and event

Accepted by: Lyric_engraver, Lyric_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'LyricEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music rhythmic-event lyric-event event)

MarkEvent

Insert a rehearsal mark. Syntax: mark marker, e.g. \mark "A".

Music types: general-music, mark-event and event

Accepted by: Mark_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MarkEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music mark-event event)

MelismaPlayingEvent

Used internally to signal melismas

Music types: general-music, melisma-playing-event and event

Accepted by: Melisma_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MelismaPlayingEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music melisma-playing-event event)

MetronomeChangeEvent

Change tempo setting (in beats per minute).

Music types: general-music, metronome-change-event, tempo-event and event

Accepted by: Metronome_mark_engraver, Swallow_performer, Tempo_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MetronomeChangeEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music metronome-change-event tempo-event event)

MultiMeasureRestEvent

Rests that may be compressed into Multi rests. Syntax R2.*4 for 4 measures in 3/4 time. Note the capital R.

Music types: general-music, event, span-event and multi-measure-rest-event

Accepted by: Multi_measure_rest_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MultiMeasureRestEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event span-event multi-measure-rest-event)

MultiMeasureRestMusicGroup

Like sequential-music, but specifically intended to group start-mmrest, skip, stop-mmrest sequence. Syntax R2.*5 for 5 measures in 3/4 time.

Music types: general-music and sequential-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MultiMeasureRestMusicGroup
internal-class-name (string)
C++ class to use for this Music object Default value: Sequential_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Sequential_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music sequential-music)

MultiMeasureTextEvent

Texts on mm rests. Syntax R-\markup { \roman "bla" }. Note the explicit font switch.

Music types: general-music, event and multi-measure-text-event

Accepted by: Multi_measure_rest_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'MultiMeasureTextEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event multi-measure-text-event)

Music

Generic type for music expressions.

Music types: general-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'Music
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music)

NonEventSkip

Filler that takes up duration, but does not print anything. This also does not create any event-accepting contexts.

Music types: general-music, event, rhythmic-event and skip-event

Accepted by: Skip_event_swallow_translator, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'NonEventSkip
internal-class-name (string)
C++ class to use for this Music object Default value: Music
length (procedure)
How to compute the duration of this music Default value: ly:music-duration-length
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Simple_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event rhythmic-event skip-event)

NoteEvent

A note.

Music types: general-music, event, note-event, rhythmic-event and melodic-event

Accepted by: Chord_name_engraver, Completion_heads_engraver, Note_heads_engraver, Note_name_engraver, Note_performer, Note_swallow_translator, Swallow_performer, Tab_note_heads_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'NoteEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event note-event rhythmic-event melodic-event)

NoteGroupingEvent

Start or stop grouping brackets.

Music types: general-music, event and note-grouping-event

Accepted by: Horizontal_bracket_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'NoteGroupingEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event note-grouping-event)

OutputPropertySetMusic

Set grob properties in objects individually. Syntax \outputproperty predicate prop = val.

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'OutputPropertySetMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Output_property_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music layout-instruction)

OverrideProperty

Extend the definition of a graphical object.

SYNTAX

\propery Foo.Bar \override SYMBOL = VALUE

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'OverrideProperty
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music layout-instruction)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Push_property_iterator::constructor

PartCombineMusic

Combine two parts on a staff, either merged or as separate voices.

Music types: general-music and part-combine-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PartCombineMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Simultaneous_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music part-combine-music)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Part_combine_music_iterator::constructor

PercentRepeatedMusic

Repeats encoded by percents.

Music types: general-music, repeated-music and percent-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PercentRepeatedMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Repeated_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Percent_repeat_iterator::constructor
start-moment-function (procedure)
Function to compute the negative length of starting grace notes. Default value: Repeated_music::first_start
length (procedure)
How to compute the duration of this music Default value: Repeated_music::unfolded_music_length
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music percent-repeated-music)

PesOrFlexaEvent

Within a ligature, mark the previous and the following note to form a pes (if melody goes up) or a flexa (if melody goes down).

Music types: general-music, pes-or-flexa-event and event

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PesOrFlexaEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music pes-or-flexa-event event)

PhrasingSlurEvent

Start or end phrasing slur. Syntax NOTE \( and \) NOTE

Music types: general-music, span-event and phrasing-slur-event

Accepted by: Phrasing_slur_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PhrasingSlurEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music span-event phrasing-slur-event)

PropertySet

Set a context property.

Syntax: property context.prop = scheme-val.

Music types: layout-instruction and general-music

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PropertySet
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(layout-instruction general-music)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Property_iterator::constructor

PropertyUnset

Remove the definition of a context property.

Music types: layout-instruction and general-music

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'PropertyUnset
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(layout-instruction general-music)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Property_unset_iterator::constructor

RelativeOctaveCheck

Check if a pitch is in the correct octave.

Music types: general-music and relative-octave-check

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'RelativeOctaveCheck
internal-class-name (string)
C++ class to use for this Music object Default value: Relative_octave_check
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music relative-octave-check)

RelativeOctaveMusic

Music that was entered in relative octave notation.

Music types: music-wrapper-music, general-music and relative-octave-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'RelativeOctaveMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Relative_octave_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(music-wrapper-music general-music relative-octave-music)

RepeatedMusic

Repeat music in different ways

Music types: general-music and repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'RepeatedMusic
type (symbol)
The type of this music object. Determines iteration in some cases. Default value: 'repeated-music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music)

RestEvent

A Rest. Syntax r4 for a quarter rest.

Music types: general-music, event, rhythmic-event and rest-event

Accepted by: Figured_bass_engraver, Rest_engraver, Rest_swallow_translator, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'RestEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event rhythmic-event rest-event)

RevertProperty

The opposite of OverrideProperty: remove a previously added property from a graphical object definition

Music types: general-music and layout-instruction

Accepted by: Output_property_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'RevertProperty
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music layout-instruction)
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Pop_property_iterator::constructor

ScriptEvent

Add an articulation mark to a note.

Music types: general-music and event

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'ScriptEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event)

SequentialMusic

Music expressions concatenated. Syntax \sequential {..} or simply {..} .

Music types: general-music and sequential-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SequentialMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Sequential_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Sequential_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music sequential-music)

SimultaneousMusic

Music playing together.

SYNTAX

\simultaneous { .. } or < .. >.

Music types: general-music and simultaneous-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SimultaneousMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Simultaneous_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Simultaneous_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music simultaneous-music)

SkipEvent

Filler that takes up duration, but does not print anything.

Music types: general-music, event, rhythmic-event and skip-event

Accepted by: Skip_event_swallow_translator, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SkipEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event rhythmic-event skip-event)

SlurEvent

Start or end slur. Syntax NOTE( and )NOTE

Music types: general-music, span-event and slur-event

Accepted by: Slur_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SlurEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music span-event slur-event)

SostenutoEvent

Depress or release sostenuto pedal.

Music types: general-music, pedal-event and sostenuto-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SostenutoEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music pedal-event sostenuto-pedal-event)

SpanEvent

Event for anything that is started at a different time than stopped.

Music types: general-music and event

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SpanEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event)

StringNumberEvent

Specify on which string to play this note. Syntax: \number.

Music types: general-music, string-number-event and event

Accepted by: String_number_engraver, Swallow_performer, Tab_note_heads_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'StringNumberEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music string-number-event event)

SustainEvent

Depress or release sustain pedal.

Music types: general-music, pedal-event and sustain-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'SustainEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music pedal-event sustain-pedal-event)

TextScriptEvent

Music types: general-music, script-event, text-script-event and event

Accepted by: Script_engraver, Swallow_performer, Text_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TextScriptEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music script-event text-script-event event)

TextSpanEvent

Start a text spanner like 8va.....|

Music types: general-music, span-event and text-span-event

Accepted by: Swallow_performer, Text_spanner_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TextSpanEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music span-event text-span-event)

TieEvent

A tie. Entered as note-~.

Music types: general-music, tie-event and event

Accepted by: Swallow_performer, Tie_engraver, Tie_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TieEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music tie-event event)

TimeScaledMusic

Multiply durations, as in tuplets. Syntax \times fraction music, e.g. \times 2/3 { ... } for triplets.

Music types: time-scaled-music, music-wrapper-music and general-music

Accepted by: Swallow_performer, Tuplet_engraver and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TimeScaledMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Time_scaled_music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Time_scaled_music_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(time-scaled-music music-wrapper-music general-music)

TranslatorChange

Change staffs in Piano staff. Syntax \translator Staff = new-id.

Music types: general-music and translator-change-instruction

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TranslatorChange
internal-class-name (string)
C++ class to use for this Music object Default value: Music
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Change_iterator::constructor
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music translator-change-instruction)

TransposedMusic

Music that has been transposed.

Music types: music-wrapper-music, general-music and transposed-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TransposedMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Transposed_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(music-wrapper-music general-music transposed-music)

TremoloEvent

Un measured tremolo.

Music types: general-music, event and tremolo-event

Accepted by: Stem_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TremoloEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music event tremolo-event)

TremoloRepeatedMusic

Repeated notes denoted by tremolo beams.

Music types: general-music, repeated-music and tremolo-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'TremoloRepeatedMusic
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Chord_tremolo_iterator::constructor
internal-class-name (string)
C++ class to use for this Music object Default value: Repeated_music
start-moment-function (procedure)
Function to compute the negative length of starting grace notes. Default value: Repeated_music::first_start
length (procedure)
How to compute the duration of this music Default value: Repeated_music::folded_music_length
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music tremolo-repeated-music)

UnaCordaEvent

Depress or release una-corda pedal.

Music types: general-music, pedal-event and una-corda-pedal-event

Accepted by: Piano_pedal_engraver, Piano_pedal_performer, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'UnaCordaEvent
internal-class-name (string)
C++ class to use for this Music object Default value: Event
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music pedal-event una-corda-pedal-event)

UnfoldedRepeatedMusic

Music types: general-music, repeated-music and unfolded-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'UnfoldedRepeatedMusic
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Unfolded_repeat_iterator::constructor
start-moment-function (procedure)
Function to compute the negative length of starting grace notes. Default value: Repeated_music::first_start
internal-class-name (string)
C++ class to use for this Music object Default value: Repeated_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music unfolded-repeated-music)
length (procedure)
How to compute the duration of this music Default value: Repeated_music::unfolded_music_length

UnrelativableMusic

Music that can not be converted from relative to absolute notation. For example, transposed music.

Music types: music-wrapper-music, general-music and unrelativable-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'UnrelativableMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Un_relativable_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(music-wrapper-music general-music unrelativable-music)

UntransposableMusic

Music that can not be transposed.

Music types: music-wrapper-music, general-music and untransposable-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'UntransposableMusic
internal-class-name (string)
C++ class to use for this Music object Default value: Untransposable_music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(music-wrapper-music general-music untransposable-music)

VoiceSeparator

Separate polyphonic voices in simultaneous music. Syntax: \\

Music types: separator and general-music

Accepted by: Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'VoiceSeparator
internal-class-name (string)
C++ class to use for this Music object Default value: Music
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(separator general-music)

VoltaRepeatedMusic

Music types: general-music, repeated-music and volta-repeated-music

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver, Slash_repeat_engraver, Swallow_performer and Voice_devnull_engraver

Properties:


name (symbol)
Name of this music object Default value: 'VoltaRepeatedMusic
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music Default value: Volta_repeat_iterator::constructor
internal-class-name (string)
C++ class to use for this Music object Default value: Repeated_music
start-moment-function (procedure)
Function to compute the negative length of starting grace notes. Default value: Repeated_music::first_start
length (procedure)
How to compute the duration of this music Default value: Repeated_music::volta_music_length
types (list)
The types of this music object. Determines iteration in some cases. Default value: '(general-music repeated-music volta-repeated-music)

Music classes

abort-event

Music event type abort-event is in Music objects of type AbortEvent

Accepted by: Beam_engraver, Cluster_spanner_engraver, Coherent_ligature_engraver, Grace_beam_engraver, Gregorian_ligature_engraver, Ligature_bracket_engraver, Ligature_engraver, Mensural_ligature_engraver, Note_heads_engraver, Piano_pedal_engraver and Vaticana_ligature_engraver

absolute-dynamic-event

Music event type absolute-dynamic-event is in Music objects of type AbsoluteDynamicEvent

Accepted by: Dynamic_engraver and Dynamic_performer

apply-context

Music event type apply-context is in Music objects of type ApplyContext

Accepted by: none

arpeggio-event

Music event type arpeggio-event is in Music objects of type ArpeggioEvent

Accepted by: Arpeggio_engraver

articulation-event

Music event type articulation-event is in Music objects of type ArticulationEvent

Accepted by: Script_engraver

auto-change-instruction

Music event type auto-change-instruction is in Music objects of type AutoChangeMusic

Accepted by: none

bar-check

Music event type bar-check is in Music objects of type BarCheck

Accepted by: none

bass-figure-event

Music event type bass-figure-event is in Music objects of type BassFigureEvent

Accepted by: Figured_bass_engraver

beam-event

Music event type beam-event is in Music objects of type BeamEvent

Accepted by: Beam_engraver and Grace_beam_engraver

break-event

Music event type break-event is in Music objects of type BreakEvent

Accepted by: Score_engraver

breathing-event

Music event type breathing-event is in Music objects of type BreathingSignEvent

Accepted by: Breathing_sign_engraver

busy-playing-event

Music event type busy-playing-event is in Music objects of type BusyPlayingEvent

Accepted by: Completion_heads_engraver, Note_heads_engraver and Tab_note_heads_engraver

cluster-note-event

Music event type cluster-note-event is in Music objects of type ClusterNoteEvent

Accepted by: Cluster_spanner_engraver

context-specification

Music event type context-specification is in Music objects of type ContextSpeccedMusic

Accepted by: none

crescendo-event

Music event type crescendo-event is in Music objects of type CrescendoEvent

Accepted by: Dynamic_engraver and Span_dynamic_performer

decrescendo-event

Music event type decrescendo-event is in Music objects of type DecrescendoEvent

Accepted by: Dynamic_engraver and Span_dynamic_performer

dynamic-event

Music event type dynamic-event is in Music objects of type AbsoluteDynamicEvent, CrescendoEvent and DecrescendoEvent

Accepted by: none

event

Music event type event is in Music objects of type AbortEvent, AbsoluteDynamicEvent, ArpeggioEvent, ArticulationEvent, BassFigureEvent, BeamEvent, BreakEvent, BreathingSignEvent, BusyPlayingEvent, ClusterNoteEvent, CrescendoEvent, DecrescendoEvent, Event, ExtenderEvent, FingerEvent, GlissandoEvent, HyphenEvent, KeyChangeEvent, LigatureEvent, LyricEvent, MarkEvent, MelismaPlayingEvent, MetronomeChangeEvent, MultiMeasureRestEvent, MultiMeasureTextEvent, NonEventSkip, NoteEvent, NoteGroupingEvent, PesOrFlexaEvent, RestEvent, ScriptEvent, SkipEvent, SpanEvent, StringNumberEvent, TextScriptEvent, TieEvent and TremoloEvent

Accepted by: none

event-chord

Music event type event-chord is in Music objects of type EventChord

Accepted by: none

extender-event

Music event type extender-event is in Music objects of type ExtenderEvent

Accepted by: Extender_engraver

fingering-event

Music event type fingering-event is in Music objects of type FingerEvent

Accepted by: Fingering_engraver

folded-repeated-music

Music event type folded-repeated-music is in Music objects of type FoldedRepeatedMusic

Accepted by: none

general-music

Music event type general-music is in Music objects of type AbortEvent, AbsoluteDynamicEvent, ApplyContext, ApplyOutputEvent, ArpeggioEvent, ArticulationEvent, AutoChangeMusic, BarCheck, BassFigureEvent, BeamEvent, BreakEvent, BreathingSignEvent, BusyPlayingEvent, ClusterNoteEvent, ContextSpeccedMusic, CrescendoEvent, DecrescendoEvent, EventChord, Event, ExtenderEvent, FingerEvent, FoldedRepeatedMusic, GlissandoEvent, GraceMusic, HyphenEvent, KeyChangeEvent, LigatureEvent, LyricCombineMusic, LyricEvent, MarkEvent, MelismaPlayingEvent, MetronomeChangeEvent, MultiMeasureRestEvent, MultiMeasureRestMusicGroup, MultiMeasureTextEvent, Music, NonEventSkip, NoteEvent, NoteGroupingEvent, OutputPropertySetMusic, OverrideProperty, PartCombineMusic, PercentRepeatedMusic, PesOrFlexaEvent, PhrasingSlurEvent, PropertySet, PropertyUnset, RelativeOctaveCheck, RelativeOctaveMusic, RepeatedMusic, RestEvent, RevertProperty, ScriptEvent, SequentialMusic, SimultaneousMusic, SkipEvent, SlurEvent, SostenutoEvent, SpanEvent, StringNumberEvent, SustainEvent, TextScriptEvent, TextSpanEvent, TieEvent, TimeScaledMusic, TranslatorChange, TransposedMusic, TremoloEvent, TremoloRepeatedMusic, UnaCordaEvent, UnfoldedRepeatedMusic, UnrelativableMusic, UntransposableMusic, VoiceSeparator and VoltaRepeatedMusic

Accepted by: Swallow_performer and Voice_devnull_engraver

glissando-event

Music event type glissando-event is in Music objects of type GlissandoEvent

Accepted by: Glissando_engraver and Note_head_line_engraver

grace-music

Music event type grace-music is in Music objects of type GraceMusic

Accepted by: none

hyphen-event

Music event type hyphen-event is in Music objects of type HyphenEvent

Accepted by: Hyphen_engraver

key-change-event

Music event type key-change-event is in Music objects of type KeyChangeEvent

Accepted by: Key_engraver and Key_performer

layout-instruction

Music event type layout-instruction is in Music objects of type ApplyOutputEvent, OutputPropertySetMusic, OverrideProperty, PropertySet, PropertyUnset and RevertProperty

Accepted by: Output_property_engraver

ligature-event

Music event type ligature-event is in Music objects of type LigatureEvent

Accepted by: Coherent_ligature_engraver, Gregorian_ligature_engraver, Ligature_bracket_engraver, Ligature_engraver, Mensural_ligature_engraver, Note_heads_engraver and Vaticana_ligature_engraver

lyric-combine-music

Music event type lyric-combine-music is in Music objects of type LyricCombineMusic

Accepted by: none

lyric-event

Music event type lyric-event is in Music objects of type LyricEvent

Accepted by: Lyric_engraver and Lyric_performer

mark-event

Music event type mark-event is in Music objects of type MarkEvent

Accepted by: Mark_engraver

melisma-playing-event

Music event type melisma-playing-event is in Music objects of type MelismaPlayingEvent

Accepted by: Melisma_engraver

melodic-event

Music event type melodic-event is in Music objects of type ClusterNoteEvent and NoteEvent

Accepted by: none

metronome-change-event

Music event type metronome-change-event is in Music objects of type MetronomeChangeEvent

Accepted by: Metronome_mark_engraver and Tempo_performer

multi-measure-rest-event

Music event type multi-measure-rest-event is in Music objects of type MultiMeasureRestEvent

Accepted by: Multi_measure_rest_engraver

multi-measure-text-event

Music event type multi-measure-text-event is in Music objects of type MultiMeasureTextEvent

Accepted by: Multi_measure_rest_engraver

music-wrapper-music

Music event type music-wrapper-music is in Music objects of type AutoChangeMusic, ContextSpeccedMusic, GraceMusic, RelativeOctaveMusic, TimeScaledMusic, TransposedMusic, UnrelativableMusic and UntransposableMusic

Accepted by: none

note-event

Music event type note-event is in Music objects of type NoteEvent

Accepted by: Chord_name_engraver, Completion_heads_engraver, Note_heads_engraver, Note_name_engraver, Note_performer, Note_swallow_translator and Tab_note_heads_engraver

note-grouping-event

Music event type note-grouping-event is in Music objects of type NoteGroupingEvent

Accepted by: Horizontal_bracket_engraver

part-combine-music

Music event type part-combine-music is in Music objects of type PartCombineMusic

Accepted by: none

pedal-event

Music event type pedal-event is in Music objects of type SostenutoEvent, SustainEvent and UnaCordaEvent

Accepted by: Piano_pedal_engraver and Piano_pedal_performer

percent-repeated-music

Music event type percent-repeated-music is in Music objects of type PercentRepeatedMusic

Accepted by: none

pes-or-flexa-event

Music event type pes-or-flexa-event is in Music objects of type PesOrFlexaEvent

Accepted by: none

phrasing-slur-event

Music event type phrasing-slur-event is in Music objects of type PhrasingSlurEvent

Accepted by: Phrasing_slur_engraver

relative-octave-check

Music event type relative-octave-check is in Music objects of type RelativeOctaveCheck

Accepted by: none

relative-octave-music

Music event type relative-octave-music is in Music objects of type RelativeOctaveMusic

Accepted by: none

repeated-music

Music event type repeated-music is in Music objects of type FoldedRepeatedMusic, PercentRepeatedMusic, RepeatedMusic, TremoloRepeatedMusic, UnfoldedRepeatedMusic and VoltaRepeatedMusic

Accepted by: Chord_tremolo_engraver, Percent_repeat_engraver and Slash_repeat_engraver

rest-event

Music event type rest-event is in Music objects of type RestEvent

Accepted by: Figured_bass_engraver, Rest_engraver and Rest_swallow_translator

rhythmic-event

Music event type rhythmic-event is in Music objects of type BassFigureEvent, ClusterNoteEvent, LyricEvent, NonEventSkip, NoteEvent, RestEvent and SkipEvent

Accepted by: none

script-event

Music event type script-event is in Music objects of type ArticulationEvent and TextScriptEvent

Accepted by: Script_engraver

separator

Music event type separator is in Music objects of type VoiceSeparator

Accepted by: none

sequential-music

Music event type sequential-music is in Music objects of type MultiMeasureRestMusicGroup and SequentialMusic

Accepted by: none

simultaneous-music

Music event type simultaneous-music is in Music objects of type EventChord and SimultaneousMusic

Accepted by: none

skip-event

Music event type skip-event is in Music objects of type NonEventSkip and SkipEvent

Accepted by: Skip_event_swallow_translator

slur-event

Music event type slur-event is in Music objects of type SlurEvent

Accepted by: Slur_engraver

sostenuto-pedal-event

Music event type sostenuto-pedal-event is in Music objects of type SostenutoEvent

Accepted by: none

span-event

Music event type span-event is in Music objects of type BeamEvent, LigatureEvent, MultiMeasureRestEvent, PhrasingSlurEvent, SlurEvent and TextSpanEvent

Accepted by: none

string-number-event

Music event type string-number-event is in Music objects of type StringNumberEvent

Accepted by: String_number_engraver and Tab_note_heads_engraver

sustain-pedal-event

Music event type sustain-pedal-event is in Music objects of type SustainEvent

Accepted by: none

tempo-event

Music event type tempo-event is in Music objects of type MetronomeChangeEvent

Accepted by: none

text-script-event

Music event type text-script-event is in Music objects of type TextScriptEvent

Accepted by: Text_engraver

text-span-event

Music event type text-span-event is in Music objects of type TextSpanEvent

Accepted by: Text_spanner_engraver

tie-event

Music event type tie-event is in Music objects of type TieEvent

Accepted by: Tie_engraver and Tie_performer

time-scaled-music

Music event type time-scaled-music is in Music objects of type TimeScaledMusic

Accepted by: Tuplet_engraver

translator-change-instruction

Music event type translator-change-instruction is in Music objects of type TranslatorChange

Accepted by: none

transposed-music

Music event type transposed-music is in Music objects of type TransposedMusic

Accepted by: none

tremolo-event

Music event type tremolo-event is in Music objects of type TremoloEvent

Accepted by: Stem_engraver

tremolo-repeated-music

Music event type tremolo-repeated-music is in Music objects of type TremoloRepeatedMusic

Accepted by: none

una-corda-pedal-event

Music event type una-corda-pedal-event is in Music objects of type UnaCordaEvent

Accepted by: none

unfolded-repeated-music

Music event type unfolded-repeated-music is in Music objects of type UnfoldedRepeatedMusic

Accepted by: none

unrelativable-music

Music event type unrelativable-music is in Music objects of type UnrelativableMusic

Accepted by: none

untransposable-music

Music event type untransposable-music is in Music objects of type UntransposableMusic

Accepted by: none

volta-repeated-music

Music event type volta-repeated-music is in Music objects of type VoltaRepeatedMusic

Accepted by: none

Music properties


alteration (number)
alteration for figured bass
articulation-type (string)
key for script definitions alist.

TODO: consider making type into symbol

articulations (list of music)
Articulation events specifically for this note.
bass (boolean)
Set if this note is a bass note in a chord
bracket-start (boolean)
start a bracket here. TODO: use span requests?
bracket-stop (boolean)
stop a bracket here.
cautionary (boolean)
If set, this alteration needs cautionary accidental
change-to-id (string)
name of the context to change to
change-to-type (symbol)
type of the context to change to.
compress-procedure (procedure)
compress this music expression. Argument 1: the music, arg 2: factor
context-id (string)
name of context
context-type (symbol)
type of context
denominator (integer)
denominator in a time signature
digit (integer)
digit for fingering
direction (direction)
Print this up or down?
duration (duration)
Duration of this note/lyric.
element (music)
The single child of a Music_wrapper music object, or the body of a repeat.
elements (list of music)
A list of elements for sequential of simultaneous music, or the alternatives of repeated music.
figure (string)
a `figure' (which may be a string) for figured bass
force-accidental (boolean)
If set, a cautionary accidental should always be printed on this note
grob-property (symbol)
The symbol of the grob property to set.
grob-value (any type)
The value of the grob property to set
internal-class-name (string)
C++ class to use for this Music object
inversion (boolean)
If set, this chord note is inverted.
iterator-ctor (procedure)
Function to construct music-event-iterator object for this Music
label (markup)
label of a mark.
last-pitch (pitch)
The last pitch after relativization.
length (procedure)
How to compute the duration of this music
metronome-count (number)
How many beats in a minute?
name (symbol)
Name of this music object
numerator (integer)
numerator of a time signature
octavation (integer)
This pitch was octavated by how many octaves? For chord inversions, this is negative.
once (boolean)
Apply this operation only during one time step?
origin (input location)
where was this piece of music defined?
penalty (number)
Penalty for break hint.
pitch (pitch)
the pitch of this note
pitch-alist (list)
list of pitches jointly forming the scale of a key signature
pop-first (boolean)
Do a revert before we try to do a override on some grob property.
predicate (procedure)
the predicate of a outputproperty
procedure (procedure)
The function to run with \applycontext. It must take a single argument, being the context.
repeat-count (integer)
do a epeat how ofen?
span-direction (direction)
Does this start or stop a spanner?
span-type (string)
What kind of spanner should be created?

TODO: consider making type into symbol

start-moment-function (procedure)
Function to compute the negative length of starting grace notes.
string-number (integer)
The number of the string in a String_number_req
symbol (symbol)
Grob name to perform an override/revert on.
tags (list)
List of symbols that for denoting extra details, eg. \tag #'part ... could tag a piece of music as only being active in a part.
tempo-unit (duration)
The unit for the metronome count.
text (markup)
markup expression to be printed
text-type (symbol)
Particular type of text script (eg. finger, dynamic).
tonic (pitch)
Base of the scale
tremolo-type (integer)

type (symbol)
The type of this music object. Determines iteration in some cases.
types (list)
The types of this music object. Determines iteration in some cases.
value (any type)
Assignment value for a translation property
what (symbol)
What to change for auto-change. FIXME, naming

Translation

Contexts

ChoirStaff

Identical to StaffGroup except that the contained staves are not connected vertically.

This context is also known as:

none

This context creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.

This context sets the following properties:

Context ChoirStaff can contain InnerStaffGroup, InnerChoirStaff, ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.

ChordNames

Typesets chord names.

This context is also known as:

none

This context creates the following grobs: ChordName, RemoveEmptyVerticalGroup, SeparatingGroupSpanner and SeparationItem.

This context sets the following properties:

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

Chord_name_engraver
Catch note-events and generate the appropriate chordname.

Music types accepted: note-event

Properties (read)


majorSevenSymbol (markup)
How should the major7 be formatted in a chord name?
chordNameExceptions (list)
Alist of chord exceptions. Contains (CHORD . MARKUP) entries.
chordRootNamer (procedure)
Function that converts from a pitch object to a text markup. Used for chords.
chordNoteNamer (procedure)
Function that converts from a pitch object to a text markup. Used for single pitches.
chordNameFunction (procedure)
The function that converts lists of pitches to chord names.
chordNameExceptions (list)
Alist of chord exceptions. Contains (CHORD . MARKUP) entries.
chordChanges (boolean)
Only show changes in chords scheme?
This engraver creates the following grobs: ChordName.
Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Rest_swallow_translator
Swallow rest

Music types accepted: rest-event

Hara_kiri_engraver
Like Axis_group_engraver, but make a hara kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

This engraver creates the following grobs: RemoveEmptyVerticalGroup.

FiguredBass

(not documented)

This context is also known as:

none

This context creates the following grobs: BassFigure, RemoveEmptyVerticalGroup, SeparatingGroupSpanner and SeparationItem.

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Note_swallow_translator
Swallow notes

Music types accepted: note-event

Rest_swallow_translator
Swallow rest

Music types accepted: rest-event

Figured_bass_engraver
Make figured bass numbers.

Music types accepted: bass-figure-event and rest-event

Properties (read)


bassFigureFormatFunction (procedure)
DOCME
This engraver creates the following grobs: BassFigure.
Hara_kiri_engraver
Like Axis_group_engraver, but make a hara kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

This engraver creates the following grobs: RemoveEmptyVerticalGroup.

GrandStaff

A group of staffs, with a brace on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically.

This context is also known as:

none

This context creates the following grobs: Arpeggio, SpanBar, SystemStartBar, SystemStartBrace and SystemStartBracket.

This context sets the following properties:

Context GrandStaff can contain Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.
Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.
Span_bar_engraver
This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following grobs: SpanBar.

GregorianTranscriptionStaff

Handles clefs, bar lines, keys, accidentals. It can contain Voice contexts.

This context is also known as:

Staff

This context creates the following grobs: Accidental, BarLine, Clef, DotColumn, InstrumentName, KeySignature, NoteCollision, OctavateEight, OttavaSpanner, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

Context GregorianTranscriptionStaff can contain GregorianTranscriptionVoice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
String_number_engraver
Swallow string-number-events - the purpose of this engraver is to process tab for normal notation. To provent warnings for unprocessed string-number-event to obscure real error messages, this engraver swallows them all.

Music types accepted: string-number-event

Forbid_line_break_engraver
Forbid line breaks when note heads are still playing at some point.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Piano_pedal_engraver
Engrave piano pedal symbols and brackets.

Music types accepted: abort-event and pedal-event

Properties (read)


pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSostenutoStrings (list)
see pedalSustainStrings.
This engraver creates the following grobs: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
Accidental_engraver
Make accidentals. Catches note heads, ties and notices key-change events. Due to interaction with ties (which don't come together with note heads), this needs to be in a context higher than Tie_engraver.

Properties (read)


autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
Properties (write)

localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
This engraver creates the following grobs: Accidental.
Rest_collision_engraver
Handles collisions of rests.

This engraver creates the following grobs: RestCollision.

Collision_engraver

This engraver creates the following grobs: NoteCollision.

Staff_symbol_engraver
create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Time_signature_engraver
Create a TimeSignature whenever timeSignatureFraction changes

This engraver creates the following grobs: TimeSignature.

Key_engraver

Music types accepted: key-change-event

Properties (read)


keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from -1, 1.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
explicitKeySignatureVisibility (procedure)
visibility-lambda function for explicit Key changes; override of #'break-visibility will set the visibility for normal (ie. at the start of the line) key signatures.
lastKeySignature (list)
Last key signature before a key signature change.
keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
Properties (write)

keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
tonic (pitch)
The tonic of the current scale
lastKeySignature (list)
Last key signature before a key signature change.
This engraver creates the following grobs: KeySignature.
Clef_engraver
Determine and set reference point for pitches

Properties (read)


explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
clefGlyph (string)
Name of the symbol within the music font
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
This engraver creates the following grobs: Clef and OctavateEight.
Ottava_spanner_engraver
Create a text spanner when the ottavation property changes..

Properties (read)


ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
This engraver creates the following grobs: OttavaSpanner.
Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Volta_engraver
Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.
Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Bar_engraver
Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

GregorianTranscriptionVoice

Corresponds to a voice on a staff. This context handles the conversion of dynamic signs, stems, beams, super- and subscripts, slurs, ties, and rests.

You have to instantiate this explicitly if you want to have multiple voices on the same staff.

This context is also known as:

Voice

This context creates the following grobs: Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteSpacing, PercentRepeat, PhrasingSlur, RepeatSlash, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TupletBracket and VoiceFollower.

This context sets the following properties:

Context GregorianTranscriptionVoice can contain Thread

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

A2_engraver
Part combine engraver for orchestral scores. The markings a2, Solo and Solo II, are created by this engraver. It also acts upon instructions of the part combiner. Another thing that the this engraver, is forcing of stem, slur and tie directions, always when both threads are not identical; up for the musicexpr called one, down for the musicexpr called two.

Properties (read)


unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
solo (boolean)
set if solo is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
aDueText (string)
text for begin of a due
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
combineParts (boolean)
try to combine parts?
This engraver creates the following grobs: TextScript.
Tuplet_engraver
Catch Time_scaled_music and generate appropriate bracket

Music types accepted: time-scaled-music

Properties (read)


tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
               @lilypond[verbatim,fragment]
               context Voice 	imes 2/3 {
                 property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
                 c-[8 c c-] c-[ c c-]
               }
               @end lilypond
               
.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
This engraver creates the following grobs: TupletBracket.
Tie_engraver
Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.
Slur_engraver
Build slurs from Slur_evs

Music types accepted: slur-event

Properties (read)


slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
This engraver creates the following grobs: Slur.
Cluster_spanner_engraver
Engraves a cluster using Spanner notation

Music types accepted: abort-event and cluster-note-event

This engraver creates the following grobs: ClusterSpanner and ClusterSpannerBeacon.

Phrasing_slur_engraver
Print phrasing slurs. Similar to Slur_engraver

Music types accepted: phrasing-slur-event

This engraver creates the following grobs: PhrasingSlur.

Rhythmic_column_engraver
Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following grobs: NoteColumn and NoteSpacing.

Script_column_engraver

This engraver creates the following grobs: ScriptColumn.

Script_engraver
Handles note scripted articulations.

Music types accepted: articulation-event and script-event

Properties (read)


scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
This engraver creates the following grobs: Script.
Fingering_engraver
Create fingering-scripts

Music types accepted: fingering-event

This engraver creates the following grobs: Fingering.

Dynamic_engraver
This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event

This engraver creates the following grobs: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

Text_engraver
Create text-scripts

Music types accepted: text-script-event

Properties (read)


scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
This engraver creates the following grobs: TextScript.
Melisma_engraver

Music types accepted: melisma-playing-event

Properties (read)


beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
Properties (write)

melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.

Slash_repeat_engraver
Make beat repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: RepeatSlash.
Percent_repeat_engraver
Make whole bar and double bar repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: DoublePercentRepeat and PercentRepeat.
Chord_tremolo_engraver
Generates beams for tremolo repeats.

Music types accepted: repeated-music

This engraver creates the following grobs: Beam.

New_fingering_engraver
Create fingering-scripts for notes in a new chord.

Properties (read)


fingeringOrientations (list)
List of symbols, containing left, right, up and/or down. This list determines where fingerings are put wrt. to the chord being fingered.
This engraver creates the following grobs: Fingering.
Auto_beam_engraver
Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties stemLeftBeamCount and stemRightBeamCount.

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
               
                  function shortest-duration-in-beam time-signature
               
               where
               
                   function = begin or end
                   shortest-duration-in-beam = numerator denominator; eg: 1 16
                   time-signature = numerator denominator, eg: 4 4
               
               unspecified or wildcard entries for duration or time-signature
               are given by * *
               
               The user can override beam begin or end time by pushing a wildcard entries
               '(begin * * * *) or '(end * * * *) resp., eg:
               
                   property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
               
               The head of the list:
                   '(
               ((end * * 3 2) . ,(ly:make-moment 1 2))
               ((end 1 16 3 2) . ,(ly:make-moment 1 4))
               ((end 1 32 3 2) . ,(ly:make-moment 1 8))
                    ...
                   )
               
               

autoBeaming (boolean)
If set to true then beams are generated automatically.
This engraver creates the following grobs: Beam.
Grace_beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
allowBeamBreak (boolean)
If true allow line breaks during beams.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Stem_engraver
Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted: tremolo-event

Properties (read)


stemRightBeamCount (integer)
idem, for the right side.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
This engraver creates the following grobs: Stem and StemTremolo.
Breathing_sign_engraver

Music types accepted: breathing-event

This engraver creates the following grobs: BreathingSign.

Ligature_bracket_engraver
Handles Ligature_events by engraving Ligature brackets.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: TupletBracket.

Glissando_engraver
Engrave a glissandi

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando.
Note_head_line_engraver
Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando and VoiceFollower.
Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Text_spanner_engraver
Create text spanner from a Music.

Music types accepted: text-span-event

This engraver creates the following grobs: TextSpanner.

Multi_measure_rest_engraver
Engraves multi-measure rests that are produced with R. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted: multi-measure-text-event and multi-measure-rest-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
Arpeggio_engraver
Generate an Arpeggio from a Arpeggio_req

Music types accepted: arpeggio-event

This engraver creates the following grobs: Arpeggio.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Voice_devnull_engraver
Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set.

Music types accepted: general-music

Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

InnerChoirStaff

(not documented)

This context is also known as:

none

This context creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.

This context sets the following properties:

Context InnerChoirStaff can contain ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.

InnerStaffGroup

(not documented)

This context is also known as:

none

This context creates the following grobs: Arpeggio, SpanBar, SystemStartBar, SystemStartBrace and SystemStartBracket.

This context sets the following properties:

Context InnerStaffGroup can contain ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, RhythmicStaff and Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.
Span_bar_engraver
This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following grobs: SpanBar.

Lyrics

Typesets lyrics.

This context is also known as:

none

This context creates the following grobs: VerticalAlignment.

This context sets the following properties:

Context Lyrics can contain LyricsVoice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Vertical_align_engraver
Catch Vertical axis groups and stack them.

This engraver creates the following grobs: VerticalAlignment.

LyricsVoice

Corresponds to a voice with lyrics. Handles the printing of a single line of lyrics.

This context is also known as:

none

This context creates the following grobs: LyricExtender, LyricHyphen, RemoveEmptyVerticalGroup, SeparatingGroupSpanner, SeparationItem and StanzaNumber.

This context sets the following properties:

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

Stanza_number_engraver

Properties (read)


stanza (markup)
Stanza `number' to print at start of a verse. Use in LyricsVoice context.
stz (markup)
Abbreviated form for a stanza, see also Stanza property.
This engraver creates the following grobs: StanzaNumber.
Hyphen_engraver
Create lyric hyphens

Music types accepted: hyphen-event

This engraver creates the following grobs: LyricHyphen.

Extender_engraver
Create lyric extenders

Music types accepted: extender-event

This engraver creates the following grobs: LyricExtender.

Lyric_engraver

Music types accepted: lyric-event

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Hara_kiri_engraver
Like Axis_group_engraver, but make a hara kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

This engraver creates the following grobs: RemoveEmptyVerticalGroup.

NoteNames

(not documented)

This context is also known as:

none

This context creates the following grobs: NoteName, SeparatingGroupSpanner, SeparationItem, TieColumn, Tie and VerticalAxisGroup.

This context sets the following properties:

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Note_name_engraver

Music types accepted: note-event

This engraver creates the following grobs: NoteName.

Note_swallow_translator
Swallow notes

Music types accepted: note-event

Tie_engraver
Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

Rest_swallow_translator
Swallow rest

Music types accepted: rest-event

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

PianoStaff

Just like GrandStaff but with minVerticalAlign set equal to maxVerticalAlign so that interstaff beaming and slurring can be used.

This context is also known as:

GrandStaff

This context creates the following grobs: Arpeggio, InstrumentName, SpanBar, SystemStartBar, SystemStartBrace, SystemStartBracket and VerticalAlignment.

This context sets the following properties:

Context PianoStaff can contain Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Vertical_align_engraver
Catch Vertical axis groups and stack them.

This engraver creates the following grobs: VerticalAlignment.

System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.
Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.
Span_bar_engraver
This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following grobs: SpanBar.

RhythmicStaff

A context like Staff but for printing rhythms. Pitches are ignored; the notes are printed on one line.

This context is also known as:

Staff

This context creates the following grobs: BarLine, DotColumn, InstrumentName, SeparatingGroupSpanner, SeparationItem, StaffSymbol, TimeSignature, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

Context RhythmicStaff can contain Voice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Staff_symbol_engraver
create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Time_signature_engraver
Create a TimeSignature whenever timeSignatureFraction changes

This engraver creates the following grobs: TimeSignature.

Bar_engraver
Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.
Volta_engraver
Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.
Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Pitch_squash_engraver
Treat all pitches as middle C. Note that the notes move, but the locations of accidentals stay the same. Set the position field of all note heads to zero. This useful for making a single line staff that demonstrates the rhythm of a melody.

Properties (read)


squashedPosition (integer)
Vertical position of squashing for Pitch_squash_engraver.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

Score

This is the top level notation context. No other context can contain a Score context. This context handles the administration of time signatures. It also makes sure that items such as clefs, time signatures, and key-signatures are aligned across staves.

You cannot explicitly instantiate a Score context (since it is not contained in any other context). It is instantiated automatically when an output definition (a \score or \paper block) is processed.

This context is also known as:

Timing

This context creates the following grobs: Arpeggio, BarNumber, BreakAlignGroup, BreakAlignment, LeftEdge, MetronomeMark, NonMusicalPaperColumn, PaperColumn, RehearsalMark, SpacingSpanner, SystemStartBar, SystemStartBrace, SystemStartBracket, System and VerticalAlignment.

This context sets the following properties:

Context Score can contain FiguredBass, NoteNames, PianoStaff, ChoirStaff, GrandStaff, ChordNames, Lyrics, RhythmicStaff, StaffGroup, StaffContainer, GregorianTranscriptionStaff, VaticanaStaff, TabStaff and Staff

This context is built from the following engravers:


Score_engraver
Top level engraver. Takes care of generating columns and the complete system (ie. System)

This engraver decides whether a column is breakable. The default is that a column is always breakable. However, when every Bar_engraver that does not have a barline at a certain point will call Score_engraver::forbid_breaks to stop linebreaks. In practice, this means that you can make a breakpoint by creating a barline (assuming that there are no beams or notes that prevent a breakpoint.)

Music types accepted: break-event

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
currentMusicalColumn (grob (GRaphical OBject))
Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
This engraver creates the following grobs: NonMusicalPaperColumn, PaperColumn and System.
Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.
Bar_number_engraver
A bar number is created whenever measurePosition is zero. It is put on top of all staves, and appears only at left side of the staff.

Properties (read)


barNumberVisibility (procedure)
Procedure that takes an int and returns whether the corresponding bar number should be printed
stavesFound (list)
list of all staff-symbols found.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: BarNumber.
Lyric_phrasing_engraver
This engraver combines note heads and lyrics for alignment.

This engraver is switched on by default. Turn it off for faster processing of orchestral scores.

Properties (read)


phrasingPunctuation (string)
A string of characters that are considered lyric punctuation
associatedVoice (string)
Name of the Voice that has the melody for this LyricsVoice.
melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.
automaticPhrasing (boolean)
If set, the Lyric_phrasing_engraver will match note heads of context called Voice X to syllables from LyricsVoice called X-<something>. This feature is turned on by default. See the example file lyrics-multi-stanza.ly.

Vertical_align_engraver
Catch Vertical axis groups and stack them.

This engraver creates the following grobs: VerticalAlignment.

Spacing_engraver
make a SpacingSpanner and do bookkeeping of shortest starting and playing notes

This engraver creates the following grobs: SpacingSpanner.

Break_align_engraver
Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder

Properties (read)


breakAlignOrder (list)
Defines the order in which prefatory matter (clefs, key signatures) appears, eg. this puts the key signatures after the bar lines:
               	\property Score.breakAlignOrder = #'(
               	  span-bar
               	  breathing-sign
               	  clef
               	  staff-bar
               	  key
               	  time-signature
               	)
               
This engraver creates the following grobs: BreakAlignGroup, BreakAlignment and LeftEdge.
Metronome_mark_engraver
Engrave metro nome marking. This delegates the real work to the function in the metronomeMarkFormatter property

Music types accepted: metronome-change-event

Properties (read)


metronomeMarkFormatter (procedure)
How to produce a metronome markup. Called with 2 arguments, event and context.
stavesFound (list)
list of all staff-symbols found.
This engraver creates the following grobs: MetronomeMark.
Mark_engraver

Music types accepted: mark-event

Properties (read)


stavesFound (list)
list of all staff-symbols found.
rehearsalMark (number or string)
The last rehearsal mark printed.
This engraver creates the following grobs: RehearsalMark.
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Timing_engraver
Responsible for synchronizing timing information from staves. Normally in Score. In order to create polyrhythmic music, this engraver should be removed from Score and placed in Staff.

Properties (read)


currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
measureLength (moment)
Length of one measure in the current time signature last?
timing (boolean)
Keep administration of measure length, position, bar number, etc? Switch off for cadenzas.
skipBars (boolean)
If set to true, then skip the empty bars that are produced by multimeasure notes and rests. These bars will not appear on the printed output. If not set (the default) multimeasure notes and rests expand into their full length, printing the appropriate number of empty bars so that synchronization with other voices is preserved.
               @lilypond[fragment,verbatim,center]
               r1 r1*3 R1*3  \\property Score.skipBars= ##t r1*3 R1*3
               
               @end lilypond
               

defaultBarType (string)
Sets the default type of bar line. Available bar types: [FIXME];

This variable is typically read at Score level, so overriding Staff.defaultBarType will have no effect.

barAlways (boolean)
If set to true a bar line is drawn after each note.
whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

automaticBars (boolean)
If set to true then bar lines will not be printed automatically; they must be explicitly created with bar keywords. Unlike with the cadenza keyword, measures are still counted. Bar generation will resume according to that count if this property is set to zero.
timeSignatureFraction (pair of numbers)
pair of numbers, signifying the time signature. For example #'(4 . 4) is a 4/4time signature.

Staff_collecting_engraver
Maintain the stavesFound variable

Properties (read)


stavesFound (list)
list of all staff-symbols found.
Properties (write)

stavesFound (list)
list of all staff-symbols found.

Repeat_acknowledge_engraver
Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar.

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f

Staff

Handles clefs, bar lines, keys, accidentals. It can contain Voice contexts.

This context is also known as:

none

This context creates the following grobs: Accidental, BarLine, Clef, DotColumn, InstrumentName, KeySignature, NoteCollision, OctavateEight, OttavaSpanner, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

Context Staff can contain Voice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
String_number_engraver
Swallow string-number-events - the purpose of this engraver is to process tab for normal notation. To provent warnings for unprocessed string-number-event to obscure real error messages, this engraver swallows them all.

Music types accepted: string-number-event

Forbid_line_break_engraver
Forbid line breaks when note heads are still playing at some point.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Piano_pedal_engraver
Engrave piano pedal symbols and brackets.

Music types accepted: abort-event and pedal-event

Properties (read)


pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSostenutoStrings (list)
see pedalSustainStrings.
This engraver creates the following grobs: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
Accidental_engraver
Make accidentals. Catches note heads, ties and notices key-change events. Due to interaction with ties (which don't come together with note heads), this needs to be in a context higher than Tie_engraver.

Properties (read)


autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
Properties (write)

localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
This engraver creates the following grobs: Accidental.
Rest_collision_engraver
Handles collisions of rests.

This engraver creates the following grobs: RestCollision.

Collision_engraver

This engraver creates the following grobs: NoteCollision.

Staff_symbol_engraver
create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Time_signature_engraver
Create a TimeSignature whenever timeSignatureFraction changes

This engraver creates the following grobs: TimeSignature.

Key_engraver

Music types accepted: key-change-event

Properties (read)


keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from -1, 1.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
explicitKeySignatureVisibility (procedure)
visibility-lambda function for explicit Key changes; override of #'break-visibility will set the visibility for normal (ie. at the start of the line) key signatures.
lastKeySignature (list)
Last key signature before a key signature change.
keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
Properties (write)

keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
tonic (pitch)
The tonic of the current scale
lastKeySignature (list)
Last key signature before a key signature change.
This engraver creates the following grobs: KeySignature.
Clef_engraver
Determine and set reference point for pitches

Properties (read)


explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
clefGlyph (string)
Name of the symbol within the music font
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
This engraver creates the following grobs: Clef and OctavateEight.
Ottava_spanner_engraver
Create a text spanner when the ottavation property changes..

Properties (read)


ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
This engraver creates the following grobs: OttavaSpanner.
Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Volta_engraver
Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.
Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Bar_engraver
Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

StaffContainer

(not documented)

This context is also known as:

none

This context creates the following grobs: VerticalAxisGroup.

This context sets the following properties:

Context StaffContainer can contain Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

StaffGroup

Groups staffs while adding a bracket on the left side, grouping the staves together. The bar lines of the contained staves are connected vertically.

This context is also known as:

none

This context creates the following grobs: Arpeggio, SpanBar, SystemStartBar, SystemStartBrace and SystemStartBracket.

This context sets the following properties:

Context StaffGroup can contain FiguredBass, InnerStaffGroup, ChoirStaff, InnerChoirStaff, ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, RhythmicStaff and Staff

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
System_start_delimiter_engraver
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.
Span_bar_engraver
This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following grobs: SpanBar.

TabStaff

Context for generating tablature. [DOCME]

This context is also known as:

Staff

This context creates the following grobs: BarLine, Clef, DotColumn, InstrumentName, NoteCollision, OctavateEight, OttavaSpanner, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSymbol, SustainPedalLineSpanner, SustainPedal, TimeSignature, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

Context TabStaff can contain TabVoice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Forbid_line_break_engraver
Forbid line breaks when note heads are still playing at some point.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Piano_pedal_engraver
Engrave piano pedal symbols and brackets.

Music types accepted: abort-event and pedal-event

Properties (read)


pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSostenutoStrings (list)
see pedalSustainStrings.
This engraver creates the following grobs: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
Rest_collision_engraver
Handles collisions of rests.

This engraver creates the following grobs: RestCollision.

Collision_engraver

This engraver creates the following grobs: NoteCollision.

Staff_symbol_engraver
create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Time_signature_engraver
Create a TimeSignature whenever timeSignatureFraction changes

This engraver creates the following grobs: TimeSignature.

Clef_engraver
Determine and set reference point for pitches

Properties (read)


explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
clefGlyph (string)
Name of the symbol within the music font
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
This engraver creates the following grobs: Clef and OctavateEight.
Ottava_spanner_engraver
Create a text spanner when the ottavation property changes..

Properties (read)


ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
This engraver creates the following grobs: OttavaSpanner.
Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Volta_engraver
Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.
Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Bar_engraver
Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

TabVoice

Corresponds to a voice on a staff. This context handles the conversion of dynamic signs, stems, beams, super- and subscripts, slurs, ties, and rests.

You have to instantiate this explicitly if you want to have multiple voices on the same staff.

This context is also known as:

none

This context creates the following grobs: Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, Dots, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Glissando, Hairpin, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteSpacing, PercentRepeat, PhrasingSlur, RepeatSlash, ScriptColumn, Script, Slur, StemTremolo, Stem, TabNoteHead, TextScript, TextSpanner, TieColumn, Tie, TupletBracket and VoiceFollower.

This context sets the following properties:

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Tab_note_heads_engraver
Generate one or more tablature noteheads from Music of type Note_req.

Music types accepted: busy-playing-event, string-number-event and note-event

Properties (read)


stringOneTopmost (boolean)
Whether the 1st string is printed on the top line of the tablature.
highStringOne (boolean)
Whether the 1st string is the string with highest pitch on the instrument (used by the automatic string selector).
tablatureFormat (procedure)
Function formatting a tab notehead; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
minimumFret (number)
The tablature auto string-selecting mechanism selects the highest string with a fret not less than minimumFret
stringTunings (list)
The tablature strings tuning. Must be a list of the different semitons pitch of each string (starting by the lower one).
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and TabNoteHead.
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

A2_engraver
Part combine engraver for orchestral scores. The markings a2, Solo and Solo II, are created by this engraver. It also acts upon instructions of the part combiner. Another thing that the this engraver, is forcing of stem, slur and tie directions, always when both threads are not identical; up for the musicexpr called one, down for the musicexpr called two.

Properties (read)


unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
solo (boolean)
set if solo is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
aDueText (string)
text for begin of a due
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
combineParts (boolean)
try to combine parts?
This engraver creates the following grobs: TextScript.
Tuplet_engraver
Catch Time_scaled_music and generate appropriate bracket

Music types accepted: time-scaled-music

Properties (read)


tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
               @lilypond[verbatim,fragment]
               context Voice 	imes 2/3 {
                 property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
                 c-[8 c c-] c-[ c c-]
               }
               @end lilypond
               
.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
This engraver creates the following grobs: TupletBracket.
Tie_engraver
Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.
Slur_engraver
Build slurs from Slur_evs

Music types accepted: slur-event

Properties (read)


slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
This engraver creates the following grobs: Slur.
Cluster_spanner_engraver
Engraves a cluster using Spanner notation

Music types accepted: abort-event and cluster-note-event

This engraver creates the following grobs: ClusterSpanner and ClusterSpannerBeacon.

Phrasing_slur_engraver
Print phrasing slurs. Similar to Slur_engraver

Music types accepted: phrasing-slur-event

This engraver creates the following grobs: PhrasingSlur.

Rhythmic_column_engraver
Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following grobs: NoteColumn and NoteSpacing.

Script_column_engraver

This engraver creates the following grobs: ScriptColumn.

Script_engraver
Handles note scripted articulations.

Music types accepted: articulation-event and script-event

Properties (read)


scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
This engraver creates the following grobs: Script.
Dynamic_engraver
This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event

This engraver creates the following grobs: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

Text_engraver
Create text-scripts

Music types accepted: text-script-event

Properties (read)


scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
This engraver creates the following grobs: TextScript.
Melisma_engraver

Music types accepted: melisma-playing-event

Properties (read)


beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
Properties (write)

melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.

Slash_repeat_engraver
Make beat repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: RepeatSlash.
Percent_repeat_engraver
Make whole bar and double bar repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: DoublePercentRepeat and PercentRepeat.
Chord_tremolo_engraver
Generates beams for tremolo repeats.

Music types accepted: repeated-music

This engraver creates the following grobs: Beam.

Auto_beam_engraver
Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties stemLeftBeamCount and stemRightBeamCount.

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
               
                  function shortest-duration-in-beam time-signature
               
               where
               
                   function = begin or end
                   shortest-duration-in-beam = numerator denominator; eg: 1 16
                   time-signature = numerator denominator, eg: 4 4
               
               unspecified or wildcard entries for duration or time-signature
               are given by * *
               
               The user can override beam begin or end time by pushing a wildcard entries
               '(begin * * * *) or '(end * * * *) resp., eg:
               
                   property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
               
               The head of the list:
                   '(
               ((end * * 3 2) . ,(ly:make-moment 1 2))
               ((end 1 16 3 2) . ,(ly:make-moment 1 4))
               ((end 1 32 3 2) . ,(ly:make-moment 1 8))
                    ...
                   )
               
               

autoBeaming (boolean)
If set to true then beams are generated automatically.
This engraver creates the following grobs: Beam.
Grace_beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
allowBeamBreak (boolean)
If true allow line breaks during beams.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Stem_engraver
Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted: tremolo-event

Properties (read)


stemRightBeamCount (integer)
idem, for the right side.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
This engraver creates the following grobs: Stem and StemTremolo.
Breathing_sign_engraver

Music types accepted: breathing-event

This engraver creates the following grobs: BreathingSign.

Ligature_bracket_engraver
Handles Ligature_events by engraving Ligature brackets.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: TupletBracket.

Glissando_engraver
Engrave a glissandi

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando.
Note_head_line_engraver
Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando and VoiceFollower.
Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Text_spanner_engraver
Create text spanner from a Music.

Music types accepted: text-span-event

This engraver creates the following grobs: TextSpanner.

Multi_measure_rest_engraver
Engraves multi-measure rests that are produced with R. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted: multi-measure-text-event and multi-measure-rest-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
Arpeggio_engraver
Generate an Arpeggio from a Arpeggio_req

Music types accepted: arpeggio-event

This engraver creates the following grobs: Arpeggio.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Voice_devnull_engraver
Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set.

Music types accepted: general-music

Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Thread

Handles note heads, and is contained in the Voice context. You have to instantiate this explicitly if you want to adjust the style of individual note heads.

This context is also known as:

none

This context creates the following grobs: Dots, NoteHead and Rest.

This context sets the following properties:

This context is a `bottom' context; it can not contain other contexts.

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Rest_engraver

Music types accepted: rest-event

Properties (read)


centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and Rest.
Note_heads_engraver
Generate noteheads.

Music types accepted: abort-event, ligature-event, busy-playing-event and note-event

Properties (read)


centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and NoteHead.
Thread_devnull_engraver
Kill elements whenever we are Voice called `two' and either unison, unisilence or soloADue is set.1. This engraver works closely together with the part combiner. When the part combiner notices that two threads are identical, it tells the Thread_devnull_engraver to discard everything in the second thread.
Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

VaticanaStaff

Same as Staff context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana.

This context is also known as:

Staff

This context creates the following grobs: Accidental, BarLine, Clef, Custos, DotColumn, InstrumentName, KeySignature, NoteCollision, OctavateEight, OttavaSpanner, RestCollision, SeparatingGroupSpanner, SeparationItem, SostenutoPedalLineSpanner, SostenutoPedal, StaffSymbol, SustainPedalLineSpanner, SustainPedal, UnaCordaPedalLineSpanner, UnaCordaPedal, VerticalAxisGroup and VoltaBracket.

This context sets the following properties:

Context VaticanaStaff can contain VaticanaVoice

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Custos_engraver

This engraver creates the following grobs: Custos.

String_number_engraver
Swallow string-number-events - the purpose of this engraver is to process tab for normal notation. To provent warnings for unprocessed string-number-event to obscure real error messages, this engraver swallows them all.

Music types accepted: string-number-event

Forbid_line_break_engraver
Forbid line breaks when note heads are still playing at some point.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Instrument_name_engraver
Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.
Piano_pedal_engraver
Engrave piano pedal symbols and brackets.

Music types accepted: abort-event and pedal-event

Properties (read)


pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSostenutoStrings (list)
see pedalSustainStrings.
This engraver creates the following grobs: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.
Accidental_engraver
Make accidentals. Catches note heads, ties and notices key-change events. Due to interaction with ties (which don't come together with note heads), this needs to be in a context higher than Tie_engraver.

Properties (read)


autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
Properties (write)

localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
This engraver creates the following grobs: Accidental.
Rest_collision_engraver
Handles collisions of rests.

This engraver creates the following grobs: RestCollision.

Collision_engraver

This engraver creates the following grobs: NoteCollision.

Staff_symbol_engraver
create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Key_engraver

Music types accepted: key-change-event

Properties (read)


keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from -1, 1.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
explicitKeySignatureVisibility (procedure)
visibility-lambda function for explicit Key changes; override of #'break-visibility will set the visibility for normal (ie. at the start of the line) key signatures.
lastKeySignature (list)
Last key signature before a key signature change.
keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
Properties (write)

keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
tonic (pitch)
The tonic of the current scale
lastKeySignature (list)
Last key signature before a key signature change.
This engraver creates the following grobs: KeySignature.
Clef_engraver
Determine and set reference point for pitches

Properties (read)


explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
clefGlyph (string)
Name of the symbol within the music font
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
This engraver creates the following grobs: Clef and OctavateEight.
Ottava_spanner_engraver
Create a text spanner when the ottavation property changes..

Properties (read)


ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
This engraver creates the following grobs: OttavaSpanner.
Dot_column_engraver
Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Separating_line_group_engraver
Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Volta_engraver
Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.
Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Bar_engraver
Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

               \property Staff.whichBar = "|:"
               

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.
Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Axis_group_engraver
Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
               property Staff.verticalExtent = #(-5.0 . 5.0)
               

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

VaticanaVoice

Same as Voice context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana.

This context is also known as:

Voice

This context creates the following grobs: Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteSpacing, PercentRepeat, PhrasingSlur, RepeatSlash, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TupletBracket, VaticanaLigature and VoiceFollower.

This context sets the following properties:

Context VaticanaVoice can contain Thread

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Vaticana_ligature_engraver
Handles ligatures by glueing special ligature heads together.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: VaticanaLigature.

Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

A2_engraver
Part combine engraver for orchestral scores. The markings a2, Solo and Solo II, are created by this engraver. It also acts upon instructions of the part combiner. Another thing that the this engraver, is forcing of stem, slur and tie directions, always when both threads are not identical; up for the musicexpr called one, down for the musicexpr called two.

Properties (read)


unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
solo (boolean)
set if solo is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
aDueText (string)
text for begin of a due
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
combineParts (boolean)
try to combine parts?
This engraver creates the following grobs: TextScript.
Tuplet_engraver
Catch Time_scaled_music and generate appropriate bracket

Music types accepted: time-scaled-music

Properties (read)


tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
               @lilypond[verbatim,fragment]
               context Voice 	imes 2/3 {
                 property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
                 c-[8 c c-] c-[ c c-]
               }
               @end lilypond
               
.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
This engraver creates the following grobs: TupletBracket.
Tie_engraver
Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.
Slur_engraver
Build slurs from Slur_evs

Music types accepted: slur-event

Properties (read)


slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
This engraver creates the following grobs: Slur.
Cluster_spanner_engraver
Engraves a cluster using Spanner notation

Music types accepted: abort-event and cluster-note-event

This engraver creates the following grobs: ClusterSpanner and ClusterSpannerBeacon.

Phrasing_slur_engraver
Print phrasing slurs. Similar to Slur_engraver

Music types accepted: phrasing-slur-event

This engraver creates the following grobs: PhrasingSlur.

Rhythmic_column_engraver
Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following grobs: NoteColumn and NoteSpacing.

Script_column_engraver

This engraver creates the following grobs: ScriptColumn.

Script_engraver
Handles note scripted articulations.

Music types accepted: articulation-event and script-event

Properties (read)


scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
This engraver creates the following grobs: Script.
Fingering_engraver
Create fingering-scripts

Music types accepted: fingering-event

This engraver creates the following grobs: Fingering.

Dynamic_engraver
This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event

This engraver creates the following grobs: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

Text_engraver
Create text-scripts

Music types accepted: text-script-event

Properties (read)


scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
This engraver creates the following grobs: TextScript.
Melisma_engraver

Music types accepted: melisma-playing-event

Properties (read)


beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
Properties (write)

melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.

Slash_repeat_engraver
Make beat repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: RepeatSlash.
Percent_repeat_engraver
Make whole bar and double bar repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: DoublePercentRepeat and PercentRepeat.
Chord_tremolo_engraver
Generates beams for tremolo repeats.

Music types accepted: repeated-music

This engraver creates the following grobs: Beam.

New_fingering_engraver
Create fingering-scripts for notes in a new chord.

Properties (read)


fingeringOrientations (list)
List of symbols, containing left, right, up and/or down. This list determines where fingerings are put wrt. to the chord being fingered.
This engraver creates the following grobs: Fingering.
Auto_beam_engraver
Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties stemLeftBeamCount and stemRightBeamCount.

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
               
                  function shortest-duration-in-beam time-signature
               
               where
               
                   function = begin or end
                   shortest-duration-in-beam = numerator denominator; eg: 1 16
                   time-signature = numerator denominator, eg: 4 4
               
               unspecified or wildcard entries for duration or time-signature
               are given by * *
               
               The user can override beam begin or end time by pushing a wildcard entries
               '(begin * * * *) or '(end * * * *) resp., eg:
               
                   property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
               
               The head of the list:
                   '(
               ((end * * 3 2) . ,(ly:make-moment 1 2))
               ((end 1 16 3 2) . ,(ly:make-moment 1 4))
               ((end 1 32 3 2) . ,(ly:make-moment 1 8))
                    ...
                   )
               
               

autoBeaming (boolean)
If set to true then beams are generated automatically.
This engraver creates the following grobs: Beam.
Grace_beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
allowBeamBreak (boolean)
If true allow line breaks during beams.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Stem_engraver
Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted: tremolo-event

Properties (read)


stemRightBeamCount (integer)
idem, for the right side.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
This engraver creates the following grobs: Stem and StemTremolo.
Breathing_sign_engraver

Music types accepted: breathing-event

This engraver creates the following grobs: BreathingSign.

Glissando_engraver
Engrave a glissandi

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando.
Note_head_line_engraver
Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando and VoiceFollower.
Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Text_spanner_engraver
Create text spanner from a Music.

Music types accepted: text-span-event

This engraver creates the following grobs: TextSpanner.

Multi_measure_rest_engraver
Engraves multi-measure rests that are produced with R. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted: multi-measure-text-event and multi-measure-rest-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
Arpeggio_engraver
Generate an Arpeggio from a Arpeggio_req

Music types accepted: arpeggio-event

This engraver creates the following grobs: Arpeggio.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Voice_devnull_engraver
Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set.

Music types accepted: general-music

Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Voice

Corresponds to a voice on a staff. This context handles the conversion of dynamic signs, stems, beams, super- and subscripts, slurs, ties, and rests.

You have to instantiate this explicitly if you want to have multiple voices on the same staff.

This context is also known as:

none

This context creates the following grobs: Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteSpacing, PercentRepeat, PhrasingSlur, RepeatSlash, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TupletBracket and VoiceFollower.

This context sets the following properties:

Context Voice can contain Thread

This context is built from the following engravers:


Engraver_group_engraver
A group of engravers taken together
Skip_event_swallow_translator
Swallow \skip.

Music types accepted: skip-event

A2_engraver
Part combine engraver for orchestral scores. The markings a2, Solo and Solo II, are created by this engraver. It also acts upon instructions of the part combiner. Another thing that the this engraver, is forcing of stem, slur and tie directions, always when both threads are not identical; up for the musicexpr called one, down for the musicexpr called two.

Properties (read)


unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
solo (boolean)
set if solo is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
aDueText (string)
text for begin of a due
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
combineParts (boolean)
try to combine parts?
This engraver creates the following grobs: TextScript.
Tuplet_engraver
Catch Time_scaled_music and generate appropriate bracket

Music types accepted: time-scaled-music

Properties (read)


tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
               @lilypond[verbatim,fragment]
               context Voice 	imes 2/3 {
                 property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
                 c-[8 c c-] c-[ c c-]
               }
               @end lilypond
               
.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
This engraver creates the following grobs: TupletBracket.
Tie_engraver
Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.
Slur_engraver
Build slurs from Slur_evs

Music types accepted: slur-event

Properties (read)


slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
This engraver creates the following grobs: Slur.
Cluster_spanner_engraver
Engraves a cluster using Spanner notation

Music types accepted: abort-event and cluster-note-event

This engraver creates the following grobs: ClusterSpanner and ClusterSpannerBeacon.

Phrasing_slur_engraver
Print phrasing slurs. Similar to Slur_engraver

Music types accepted: phrasing-slur-event

This engraver creates the following grobs: PhrasingSlur.

Rhythmic_column_engraver
Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following grobs: NoteColumn and NoteSpacing.

Script_column_engraver

This engraver creates the following grobs: ScriptColumn.

Script_engraver
Handles note scripted articulations.

Music types accepted: articulation-event and script-event

Properties (read)


scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
This engraver creates the following grobs: Script.
Fingering_engraver
Create fingering-scripts

Music types accepted: fingering-event

This engraver creates the following grobs: Fingering.

Dynamic_engraver
This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event

This engraver creates the following grobs: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

Text_engraver
Create text-scripts

Music types accepted: text-script-event

Properties (read)


scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
This engraver creates the following grobs: TextScript.
Melisma_engraver

Music types accepted: melisma-playing-event

Properties (read)


beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
Properties (write)

melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.

Slash_repeat_engraver
Make beat repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: RepeatSlash.
Percent_repeat_engraver
Make whole bar and double bar repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: DoublePercentRepeat and PercentRepeat.
Chord_tremolo_engraver
Generates beams for tremolo repeats.

Music types accepted: repeated-music

This engraver creates the following grobs: Beam.

New_fingering_engraver
Create fingering-scripts for notes in a new chord.

Properties (read)


fingeringOrientations (list)
List of symbols, containing left, right, up and/or down. This list determines where fingerings are put wrt. to the chord being fingered.
This engraver creates the following grobs: Fingering.
Auto_beam_engraver
Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties stemLeftBeamCount and stemRightBeamCount.

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
               
                  function shortest-duration-in-beam time-signature
               
               where
               
                   function = begin or end
                   shortest-duration-in-beam = numerator denominator; eg: 1 16
                   time-signature = numerator denominator, eg: 4 4
               
               unspecified or wildcard entries for duration or time-signature
               are given by * *
               
               The user can override beam begin or end time by pushing a wildcard entries
               '(begin * * * *) or '(end * * * *) resp., eg:
               
                   property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
               
               The head of the list:
                   '(
               ((end * * 3 2) . ,(ly:make-moment 1 2))
               ((end 1 16 3 2) . ,(ly:make-moment 1 4))
               ((end 1 32 3 2) . ,(ly:make-moment 1 8))
                    ...
                   )
               
               

autoBeaming (boolean)
If set to true then beams are generated automatically.
This engraver creates the following grobs: Beam.
Grace_beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
allowBeamBreak (boolean)
If true allow line breaks during beams.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Beam_engraver
Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.
Stem_engraver
Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted: tremolo-event

Properties (read)


stemRightBeamCount (integer)
idem, for the right side.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
This engraver creates the following grobs: Stem and StemTremolo.
Breathing_sign_engraver

Music types accepted: breathing-event

This engraver creates the following grobs: BreathingSign.

Ligature_bracket_engraver
Handles Ligature_events by engraving Ligature brackets.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: TupletBracket.

Glissando_engraver
Engrave a glissandi

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando.
Note_head_line_engraver
Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando and VoiceFollower.
Grob_pq_engraver
Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Text_spanner_engraver
Create text spanner from a Music.

Music types accepted: text-span-event

This engraver creates the following grobs: TextSpanner.

Multi_measure_rest_engraver
Engraves multi-measure rests that are produced with R. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted: multi-measure-text-event and multi-measure-rest-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
Arpeggio_engraver
Generate an Arpeggio from a Arpeggio_req

Music types accepted: arpeggio-event

This engraver creates the following grobs: Arpeggio.

Output_property_engraver
Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Voice_devnull_engraver
Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set.

Music types accepted: general-music

Font_size_engraver
Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Engravers

A2_engraver

Part combine engraver for orchestral scores. The markings a2, Solo and Solo II, are created by this engraver. It also acts upon instructions of the part combiner. Another thing that the this engraver, is forcing of stem, slur and tie directions, always when both threads are not identical; up for the musicexpr called one, down for the musicexpr called two.

Properties (read)


unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
solo (boolean)
set if solo is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
aDueText (string)
text for begin of a due
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
combineParts (boolean)
try to combine parts?
This engraver creates the following grobs: TextScript.

A2_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Accidental_engraver

Make accidentals. Catches note heads, ties and notices key-change events. Due to interaction with ties (which don't come together with note heads), this needs to be in a context higher than Tie_engraver.

Properties (read)


autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
Properties (write)

localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
This engraver creates the following grobs: Accidental.

Accidental_engraver is part of contexts: Staff, VaticanaStaff and GregorianTranscriptionStaff

Ambitus_engraver

This engraver creates the following grobs: Ambitus.

Ambitus_engraver is part of contexts: none

Arpeggio_engraver

Generate an Arpeggio from a Arpeggio_req

Music types accepted: arpeggio-event

This engraver creates the following grobs: Arpeggio.

Arpeggio_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Auto_beam_engraver

Generate beams based on measure characteristics and observed Stems. Uses beatLength, measureLength and measurePosition to decide when to start and stop a beam. Overriding beaming is done through Stem_engraver properties stemLeftBeamCount and stemRightBeamCount.

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
          
             function shortest-duration-in-beam time-signature
          
          where
          
              function = begin or end
              shortest-duration-in-beam = numerator denominator; eg: 1 16
              time-signature = numerator denominator, eg: 4 4
          
          unspecified or wildcard entries for duration or time-signature
          are given by * *
          
          The user can override beam begin or end time by pushing a wildcard entries
          '(begin * * * *) or '(end * * * *) resp., eg:
          
              property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
          
          The head of the list:
              '(
          ((end * * 3 2) . ,(ly:make-moment 1 2))
          ((end 1 16 3 2) . ,(ly:make-moment 1 4))
          ((end 1 32 3 2) . ,(ly:make-moment 1 8))
               ...
              )
          
          

autoBeaming (boolean)
If set to true then beams are generated automatically.
This engraver creates the following grobs: Beam.

Auto_beam_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Axis_group_engraver

Group all objects created in this context in a VerticalAxisGroup spanner.

Properties (read)


extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
          property Staff.verticalExtent = #(-5.0 . 5.0)
          

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

This engraver creates the following grobs: VerticalAxisGroup.

Axis_group_engraver is part of contexts: Staff, RhythmicStaff, NoteNames, VaticanaStaff, StaffContainer, TabStaff and GregorianTranscriptionStaff

Bar_engraver

Create barlines. This engraver is controlled through the whichBar property. If it has no bar line to create, it will forbid a linebreak at this point

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

          \property Staff.whichBar = "|:"
          

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

This engraver creates the following grobs: BarLine.

Bar_engraver is part of contexts: Staff, RhythmicStaff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Bar_number_engraver

A bar number is created whenever measurePosition is zero. It is put on top of all staves, and appears only at left side of the staff.

Properties (read)


barNumberVisibility (procedure)
Procedure that takes an int and returns whether the corresponding bar number should be printed
stavesFound (list)
list of all staff-symbols found.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: BarNumber.

Bar_number_engraver is part of contexts: Score

Beam_engraver

Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.

Beam_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Break_align_engraver

Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder

Properties (read)


breakAlignOrder (list)
Defines the order in which prefatory matter (clefs, key signatures) appears, eg. this puts the key signatures after the bar lines:
          	\property Score.breakAlignOrder = #'(
          	  span-bar
          	  breathing-sign
          	  clef
          	  staff-bar
          	  key
          	  time-signature
          	)
          
This engraver creates the following grobs: BreakAlignGroup, BreakAlignment and LeftEdge.

Break_align_engraver is part of contexts: Score

Breathing_sign_engraver

Music types accepted: breathing-event

This engraver creates the following grobs: BreathingSign.

Breathing_sign_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Chord_name_engraver

Catch note-events and generate the appropriate chordname.

Music types accepted: note-event

Properties (read)


majorSevenSymbol (markup)
How should the major7 be formatted in a chord name?
chordNameExceptions (list)
Alist of chord exceptions. Contains (CHORD . MARKUP) entries.
chordRootNamer (procedure)
Function that converts from a pitch object to a text markup. Used for chords.
chordNoteNamer (procedure)
Function that converts from a pitch object to a text markup. Used for single pitches.
chordNameFunction (procedure)
The function that converts lists of pitches to chord names.
chordNameExceptions (list)
Alist of chord exceptions. Contains (CHORD . MARKUP) entries.
chordChanges (boolean)
Only show changes in chords scheme?
This engraver creates the following grobs: ChordName.

Chord_name_engraver is part of contexts: ChordNames

Chord_tremolo_engraver

Generates beams for tremolo repeats.

Music types accepted: repeated-music

This engraver creates the following grobs: Beam.

Chord_tremolo_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Clef_engraver

Determine and set reference point for pitches

Properties (read)


explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
clefGlyph (string)
Name of the symbol within the music font
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
This engraver creates the following grobs: Clef and OctavateEight.

Clef_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Cluster_spanner_engraver

Engraves a cluster using Spanner notation

Music types accepted: abort-event and cluster-note-event

This engraver creates the following grobs: ClusterSpanner and ClusterSpannerBeacon.

Cluster_spanner_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Coherent_ligature_engraver

This is an abstract class. Subclasses such as Gregorian_ligature_engraver handle ligatures by glueing special ligature heads together.

Music types accepted: abort-event and ligature-event

Coherent_ligature_engraver is part of contexts: none

Collision_engraver

This engraver creates the following grobs: NoteCollision.

Collision_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Completion_heads_engraver

This engraver replaces Note_heads_engraver. It plays some trickery to break long notes and automatically tie them into the next measure.

Music types accepted: note-event and busy-playing-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots, NoteHead and Tie.

Completion_heads_engraver is part of contexts: none

Custos_engraver

This engraver creates the following grobs: Custos.

Custos_engraver is part of contexts: VaticanaStaff

Dot_column_engraver

Engraves dots on dotted notes shifted to the right of the note. If omitted, then dots appear on top of the notes.

This engraver creates the following grobs: DotColumn.

Dot_column_engraver is part of contexts: Staff, RhythmicStaff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Dynamic_engraver

This engraver creates hairpins, dynamic texts, and their vertical alignments. The symbols are collected onto a DynamicLineSpanner grob which takes care of vertical positioning.

Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event

This engraver creates the following grobs: DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.

Dynamic_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Dynamic_performer

Music types accepted: absolute-dynamic-event

Properties (read)


instrumentEqualizer (procedure)
[DOCUMENT-ME]
midiInstrument (string)
Name of the MIDI instrument to use
midiMinimumVolume (number)
[DOCUMENT-ME]
midiMaximumVolume (number)
[DOCUMENT-ME]
dynamicAbsoluteVolumeFunction (procedure)
[DOCUMENT-ME]

Dynamic_performer is part of contexts: none

Engraver

Engraver is part of contexts: none

Engraver_group_engraver

A group of engravers taken together

Engraver_group_engraver is part of contexts: LyricsVoice, Staff, InnerChoirStaff, RhythmicStaff, StaffGroup, Lyrics, ChoirStaff, VaticanaVoice, Thread, NoteNames, VaticanaStaff, StaffContainer, TabStaff, GrandStaff, FiguredBass, ChordNames, InnerStaffGroup, GregorianTranscriptionVoice, GregorianTranscriptionStaff, Voice, TabVoice and PianoStaff

Extender_engraver

Create lyric extenders

Music types accepted: extender-event

This engraver creates the following grobs: LyricExtender.

Extender_engraver is part of contexts: LyricsVoice

Figured_bass_engraver

Make figured bass numbers.

Music types accepted: bass-figure-event and rest-event

Properties (read)


bassFigureFormatFunction (procedure)
DOCME
This engraver creates the following grobs: BassFigure.

Figured_bass_engraver is part of contexts: FiguredBass

Fingering_engraver

Create fingering-scripts

Music types accepted: fingering-event

This engraver creates the following grobs: Fingering.

Fingering_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice and Voice

Font_size_engraver

Puts fontSize into font-relative-size grob property.

Properties (read)


fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.

Font_size_engraver is part of contexts: Staff, VaticanaVoice, Thread, VaticanaStaff, TabStaff, GregorianTranscriptionVoice, GregorianTranscriptionStaff, Voice and TabVoice

Forbid_line_break_engraver

Forbid line breaks when note heads are still playing at some point.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Forbid_line_break_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Glissando_engraver

Engrave a glissandi

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando.

Glissando_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Grace_beam_engraver

Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

Music types accepted: abort-event and beam-event

Properties (read)


subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
allowBeamBreak (boolean)
If true allow line breaks during beams.
beatLength (moment)
The length of one beat in this time signature.
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
This engraver creates the following grobs: Beam.

Grace_beam_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Gregorian_ligature_engraver

This is an abstract class. Subclasses such as Vaticana_ligature_engraver handle ligatures by glueing special ligature heads together.

Music types accepted: abort-event and ligature-event

Gregorian_ligature_engraver is part of contexts: none

Grob_pq_engraver

Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

Properties (read)


busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
Properties (write)

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.

Grob_pq_engraver is part of contexts: Staff, VaticanaVoice, VaticanaStaff, TabStaff, GregorianTranscriptionVoice, GregorianTranscriptionStaff, Voice and TabVoice

Hara_kiri_engraver

Like Axis_group_engraver, but make a hara kiri spanner, and add interesting items (ie. note heads, lyric syllables and normal rests)

This engraver creates the following grobs: RemoveEmptyVerticalGroup.

Hara_kiri_engraver is part of contexts: LyricsVoice, FiguredBass and ChordNames

Horizontal_bracket_engraver

Create horizontal brackets over notes for musical analysis purposes.

Music types accepted: note-grouping-event

This engraver creates the following grobs: HorizontalBracket.

Horizontal_bracket_engraver is part of contexts: none

Hyphen_engraver

Create lyric hyphens

Music types accepted: hyphen-event

This engraver creates the following grobs: LyricHyphen.

Hyphen_engraver is part of contexts: LyricsVoice

Instrument_name_engraver

Prints the name of the instrument (specified by Staff.instrument and Staff.instr) at the left of the staff.

Properties (read)


instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
This engraver creates the following grobs: InstrumentName.

Instrument_name_engraver is part of contexts: Staff, RhythmicStaff, VaticanaStaff, TabStaff, GregorianTranscriptionStaff and PianoStaff

Key_engraver

Music types accepted: key-change-event

Properties (read)


keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from -1, 1.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
explicitKeySignatureVisibility (procedure)
visibility-lambda function for explicit Key changes; override of #'break-visibility will set the visibility for normal (ie. at the start of the line) key signatures.
lastKeySignature (list)
Last key signature before a key signature change.
keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
Properties (write)

keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
tonic (pitch)
The tonic of the current scale
lastKeySignature (list)
Last key signature before a key signature change.
This engraver creates the following grobs: KeySignature.

Key_engraver is part of contexts: Staff, VaticanaStaff and GregorianTranscriptionStaff

Key_performer

Music types accepted: key-change-event

Key_performer is part of contexts: none

Ligature_bracket_engraver

Handles Ligature_events by engraving Ligature brackets.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: TupletBracket.

Ligature_bracket_engraver is part of contexts: GregorianTranscriptionVoice, Voice and TabVoice

Ligature_engraver

Abstract class; a concrete subclass handles Ligature_events by engraving Ligatures in a concrete style.

Music types accepted: abort-event and ligature-event

Ligature_engraver is part of contexts: none

Lyric_engraver

Music types accepted: lyric-event

Lyric_engraver is part of contexts: LyricsVoice

Lyric_performer

Music types accepted: lyric-event

Lyric_performer is part of contexts: none

Lyric_phrasing_engraver

This engraver combines note heads and lyrics for alignment.

This engraver is switched on by default. Turn it off for faster processing of orchestral scores.

Properties (read)


phrasingPunctuation (string)
A string of characters that are considered lyric punctuation
associatedVoice (string)
Name of the Voice that has the melody for this LyricsVoice.
melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.
automaticPhrasing (boolean)
If set, the Lyric_phrasing_engraver will match note heads of context called Voice X to syllables from LyricsVoice called X-<something>. This feature is turned on by default. See the example file lyrics-multi-stanza.ly.

Lyric_phrasing_engraver is part of contexts: Score

Mark_engraver

Music types accepted: mark-event

Properties (read)


stavesFound (list)
list of all staff-symbols found.
rehearsalMark (number or string)
The last rehearsal mark printed.
This engraver creates the following grobs: RehearsalMark.

Mark_engraver is part of contexts: Score

Measure_grouping_engraver

Creates Measure_grouping objects using beatGrouping property

Properties (read)


currentMusicalColumn (grob (GRaphical OBject))
Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
beatLength (moment)
The length of one beat in this time signature.
beatGrouping (list)
List of beatgroups. Eg. in 5/8 time #(list 2 3).
This engraver creates the following grobs: MeasureGrouping.

Measure_grouping_engraver is part of contexts: none

Melisma_engraver

Music types accepted: melisma-playing-event

Properties (read)


beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
Properties (write)

melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.

Melisma_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Mensural_ligature_engraver

Handles Mensural_ligature_events by glueing special ligature heads together.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: MensuralLigature.

Mensural_ligature_engraver is part of contexts: none

Metronome_mark_engraver

Engrave metro nome marking. This delegates the real work to the function in the metronomeMarkFormatter property

Music types accepted: metronome-change-event

Properties (read)


metronomeMarkFormatter (procedure)
How to produce a metronome markup. Called with 2 arguments, event and context.
stavesFound (list)
list of all staff-symbols found.
This engraver creates the following grobs: MetronomeMark.

Metronome_mark_engraver is part of contexts: Score

Multi_measure_rest_engraver

Engraves multi-measure rests that are produced with R. Reads measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest. Reads measureLength to determine if it should use a whole rest or a breve rest to represent 1 measure

Music types accepted: multi-measure-text-event and multi-measure-rest-event

Properties (read)


measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
This engraver creates the following grobs: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.

Multi_measure_rest_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

New_accidental_engraver

Make accidentals. Catches note heads, ties and notices key-change events. Due to interaction with ties (which don't come together with note heads), this needs to be in a context higher than Tie_engraver.

Properties (read)


autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
localKeySignatureChanges (list)
Experimental. [DOCME]
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
Properties (write)

localKeySignatureChanges (list)
Experimental. [DOCME]
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
This engraver creates the following grobs: Accidental.

New_accidental_engraver is part of contexts: none

New_fingering_engraver

Create fingering-scripts for notes in a new chord.

Properties (read)


fingeringOrientations (list)
List of symbols, containing left, right, up and/or down. This list determines where fingerings are put wrt. to the chord being fingered.
This engraver creates the following grobs: Fingering.

New_fingering_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice and Voice

Note_head_line_engraver

Engrave a line between two note heads, for example a glissando. If followVoice is set, staff switches also generate a line.

Music types accepted: glissando-event

Properties (read)


followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
This engraver creates the following grobs: Glissando and VoiceFollower.

Note_head_line_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Note_heads_engraver

Generate noteheads.

Music types accepted: abort-event, ligature-event, busy-playing-event and note-event

Properties (read)


centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and NoteHead.

Note_heads_engraver is part of contexts: Thread

Note_name_engraver

Music types accepted: note-event

This engraver creates the following grobs: NoteName.

Note_name_engraver is part of contexts: NoteNames

Note_performer

Music types accepted: note-event

Note_performer is part of contexts: none

Note_swallow_translator

Swallow notes

Music types accepted: note-event

Note_swallow_translator is part of contexts: NoteNames and FiguredBass

Ottava_spanner_engraver

Create a text spanner when the ottavation property changes..

Properties (read)


ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
This engraver creates the following grobs: OttavaSpanner.

Ottava_spanner_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Output_property_engraver

Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate.

Music types accepted: layout-instruction

Output_property_engraver is part of contexts: Staff, RhythmicStaff, StaffGroup, VaticanaVoice, Thread, VaticanaStaff, TabStaff, ChordNames, InnerStaffGroup, GregorianTranscriptionVoice, Score, GregorianTranscriptionStaff, Voice and TabVoice

Percent_repeat_engraver

Make whole bar and double bar repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: DoublePercentRepeat and PercentRepeat.

Percent_repeat_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Performer_group_performer

Performer_group_performer is part of contexts: none

Phrasing_slur_engraver

Print phrasing slurs. Similar to Slur_engraver

Music types accepted: phrasing-slur-event

This engraver creates the following grobs: PhrasingSlur.

Phrasing_slur_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Piano_pedal_engraver

Engrave piano pedal symbols and brackets.

Music types accepted: abort-event and pedal-event

Properties (read)


pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSostenutoStrings (list)
see pedalSustainStrings.
This engraver creates the following grobs: SostenutoPedal, SostenutoPedalLineSpanner, SustainPedal, SustainPedalLineSpanner, UnaCordaPedal and UnaCordaPedalLineSpanner.

Piano_pedal_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Piano_pedal_performer

Music types accepted: pedal-event

Piano_pedal_performer is part of contexts: none

Pitch_squash_engraver

Treat all pitches as middle C. Note that the notes move, but the locations of accidentals stay the same. Set the position field of all note heads to zero. This useful for making a single line staff that demonstrates the rhythm of a melody.

Properties (read)


squashedPosition (integer)
Vertical position of squashing for Pitch_squash_engraver.

Pitch_squash_engraver is part of contexts: RhythmicStaff

Repeat_acknowledge_engraver

Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar.

Properties (read)


whichBar (string)
This property is read to determine what type of barline to create.

Example:

          \property Staff.whichBar = "|:"
          

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f

Repeat_acknowledge_engraver is part of contexts: Score

Rest_collision_engraver

Handles collisions of rests.

This engraver creates the following grobs: RestCollision.

Rest_collision_engraver is part of contexts: Staff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Rest_engraver

Music types accepted: rest-event

Properties (read)


centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and Rest.

Rest_engraver is part of contexts: Thread

Rest_swallow_translator

Swallow rest

Music types accepted: rest-event

Rest_swallow_translator is part of contexts: NoteNames, FiguredBass and ChordNames

Rhythmic_column_engraver

Generates NoteColumn, an objects that groups stems, noteheads and rests.

This engraver creates the following grobs: NoteColumn and NoteSpacing.

Rhythmic_column_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Score_engraver

Top level engraver. Takes care of generating columns and the complete system (ie. System)

This engraver decides whether a column is breakable. The default is that a column is always breakable. However, when every Bar_engraver that does not have a barline at a certain point will call Score_engraver::forbid_breaks to stop linebreaks. In practice, this means that you can make a breakpoint by creating a barline (assuming that there are no beams or notes that prevent a breakpoint.)

Music types accepted: break-event

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
currentMusicalColumn (grob (GRaphical OBject))
Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
This engraver creates the following grobs: NonMusicalPaperColumn, PaperColumn and System.

Score_engraver is part of contexts: Score

Score_performer

Score_performer is part of contexts: none

Script_column_engraver

This engraver creates the following grobs: ScriptColumn.

Script_column_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Script_engraver

Handles note scripted articulations.

Music types accepted: articulation-event and script-event

Properties (read)


scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
This engraver creates the following grobs: Script.

Script_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Separating_line_group_engraver

Generates objects for computing spacing parameters.

This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.

Separating_line_group_engraver is part of contexts: LyricsVoice, Staff, RhythmicStaff, NoteNames, VaticanaStaff, TabStaff, FiguredBass, ChordNames and GregorianTranscriptionStaff

Skip_event_swallow_translator

Swallow \skip.

Music types accepted: skip-event

Skip_event_swallow_translator is part of contexts: LyricsVoice, VaticanaVoice, NoteNames, ChordNames, GregorianTranscriptionVoice, Voice and TabVoice

Slash_repeat_engraver

Make beat repeats.

Music types accepted: repeated-music

Properties (read)


currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
measureLength (moment)
Length of one measure in the current time signature last?
This engraver creates the following grobs: RepeatSlash.

Slash_repeat_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Slur_engraver

Build slurs from Slur_evs

Music types accepted: slur-event

Properties (read)


slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
This engraver creates the following grobs: Slur.

Slur_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Spacing_engraver

make a SpacingSpanner and do bookkeeping of shortest starting and playing notes

This engraver creates the following grobs: SpacingSpanner.

Spacing_engraver is part of contexts: Score

Span_arpeggio_engraver

Properties (read)


connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
This engraver creates the following grobs: Arpeggio.

Span_arpeggio_engraver is part of contexts: StaffGroup, GrandStaff, InnerStaffGroup, Score and PianoStaff

Span_bar_engraver

This engraver makes cross-staff barlines: It catches all normal bar lines, and draws a single span-bar across them.

This engraver creates the following grobs: SpanBar.

Span_bar_engraver is part of contexts: StaffGroup, GrandStaff, InnerStaffGroup and PianoStaff

Span_dynamic_performer

Music types accepted: decrescendo-event and crescendo-event

Span_dynamic_performer is part of contexts: none

Staff_collecting_engraver

Maintain the stavesFound variable

Properties (read)


stavesFound (list)
list of all staff-symbols found.
Properties (write)

stavesFound (list)
list of all staff-symbols found.

Staff_collecting_engraver is part of contexts: Score

Staff_performer

Staff_performer is part of contexts: none

Staff_symbol_engraver

create the constellation of five (default) staff lines.

This engraver creates the following grobs: StaffSymbol.

Staff_symbol_engraver is part of contexts: Staff, RhythmicStaff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Stanza_number_engraver

Properties (read)


stanza (markup)
Stanza `number' to print at start of a verse. Use in LyricsVoice context.
stz (markup)
Abbreviated form for a stanza, see also Stanza property.
This engraver creates the following grobs: StanzaNumber.

Stanza_number_engraver is part of contexts: LyricsVoice

Stem_engraver

Create stems and single-stem tremolos. It also works together with the beam engraver for overriding beaming.

Music types accepted: tremolo-event

Properties (read)


stemRightBeamCount (integer)
idem, for the right side.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
This engraver creates the following grobs: Stem and StemTremolo.

Stem_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

String_number_engraver

Swallow string-number-events - the purpose of this engraver is to process tab for normal notation. To provent warnings for unprocessed string-number-event to obscure real error messages, this engraver swallows them all.

Music types accepted: string-number-event

String_number_engraver is part of contexts: Staff, VaticanaStaff and GregorianTranscriptionStaff

Swallow_performer

Music types accepted: general-music

Swallow_performer is part of contexts: none

System_start_delimiter_engraver

Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner

Properties (read)


systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
This engraver creates the following grobs: SystemStartBar, SystemStartBrace and SystemStartBracket.

System_start_delimiter_engraver is part of contexts: InnerChoirStaff, StaffGroup, ChoirStaff, GrandStaff, InnerStaffGroup, Score and PianoStaff

Tab_note_heads_engraver

Generate one or more tablature noteheads from Music of type Note_req.

Music types accepted: busy-playing-event, string-number-event and note-event

Properties (read)


stringOneTopmost (boolean)
Whether the 1st string is printed on the top line of the tablature.
highStringOne (boolean)
Whether the 1st string is the string with highest pitch on the instrument (used by the automatic string selector).
tablatureFormat (procedure)
Function formatting a tab notehead; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
minimumFret (number)
The tablature auto string-selecting mechanism selects the highest string with a fret not less than minimumFret
stringTunings (list)
The tablature strings tuning. Must be a list of the different semitons pitch of each string (starting by the lower one).
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
This engraver creates the following grobs: Dots and TabNoteHead.

Tab_note_heads_engraver is part of contexts: TabVoice

Tempo_performer

Music types accepted: metronome-change-event

Tempo_performer is part of contexts: none

Text_engraver

Create text-scripts

Music types accepted: text-script-event

Properties (read)


scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
This engraver creates the following grobs: TextScript.

Text_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Text_spanner_engraver

Create text spanner from a Music.

Music types accepted: text-span-event

This engraver creates the following grobs: TextSpanner.

Text_spanner_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Thread_devnull_engraver

Kill elements whenever we are Voice called `two' and either unison, unisilence or soloADue is set.2. This engraver works closely together with the part combiner. When the part combiner notices that two threads are identical, it tells the Thread_devnull_engraver to discard everything in the second thread.

Thread_devnull_engraver is part of contexts: Thread

Tie_engraver

Generate ties between noteheads of equal pitch.

Music types accepted: tie-event

Properties (read)


tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
This engraver creates the following grobs: Tie and TieColumn.

Tie_engraver is part of contexts: VaticanaVoice, NoteNames, GregorianTranscriptionVoice, Voice and TabVoice

Tie_performer

Music types accepted: tie-event

Tie_performer is part of contexts: none

Time_signature_engraver

Create a TimeSignature whenever timeSignatureFraction changes

This engraver creates the following grobs: TimeSignature.

Time_signature_engraver is part of contexts: Staff, RhythmicStaff, TabStaff and GregorianTranscriptionStaff

Time_signature_performer

Time_signature_performer is part of contexts: none

Timing_engraver

Responsible for synchronizing timing information from staves. Normally in Score. In order to create polyrhythmic music, this engraver should be removed from Score and placed in Staff.

Properties (read)


currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
measureLength (moment)
Length of one measure in the current time signature last?
timing (boolean)
Keep administration of measure length, position, bar number, etc? Switch off for cadenzas.
skipBars (boolean)
If set to true, then skip the empty bars that are produced by multimeasure notes and rests. These bars will not appear on the printed output. If not set (the default) multimeasure notes and rests expand into their full length, printing the appropriate number of empty bars so that synchronization with other voices is preserved.
          @lilypond[fragment,verbatim,center]
          r1 r1*3 R1*3  \\property Score.skipBars= ##t r1*3 R1*3
          
          @end lilypond
          

defaultBarType (string)
Sets the default type of bar line. Available bar types: [FIXME];

This variable is typically read at Score level, so overriding Staff.defaultBarType will have no effect.

barAlways (boolean)
If set to true a bar line is drawn after each note.
whichBar (string)
This property is read to determine what type of barline to create.

Example:

          \property Staff.whichBar = "|:"
          

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

automaticBars (boolean)
If set to true then bar lines will not be printed automatically; they must be explicitly created with bar keywords. Unlike with the cadenza keyword, measures are still counted. Bar generation will resume according to that count if this property is set to zero.
timeSignatureFraction (pair of numbers)
pair of numbers, signifying the time signature. For example #'(4 . 4) is a 4/4time signature.

Timing_engraver is part of contexts: Score

Timing_translator

Timing_translator is part of contexts: none

Tuplet_engraver

Catch Time_scaled_music and generate appropriate bracket

Music types accepted: time-scaled-music

Properties (read)


tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
          @lilypond[verbatim,fragment]
          context Voice 	imes 2/3 {
            property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
            c-[8 c c-] c-[ c c-]
          }
          @end lilypond
          
.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
This engraver creates the following grobs: TupletBracket.

Tuplet_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Vaticana_ligature_engraver

Handles ligatures by glueing special ligature heads together.

Music types accepted: abort-event and ligature-event

This engraver creates the following grobs: VaticanaLigature.

Vaticana_ligature_engraver is part of contexts: VaticanaVoice

Vertical_align_engraver

Catch Vertical axis groups and stack them.

This engraver creates the following grobs: VerticalAlignment.

Vertical_align_engraver is part of contexts: Lyrics, Score and PianoStaff

Voice_devnull_engraver

Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set.

Music types accepted: general-music

Voice_devnull_engraver is part of contexts: VaticanaVoice, GregorianTranscriptionVoice, Voice and TabVoice

Volta_engraver

Make volta brackets

Properties (read)


stavesFound (list)
list of all staff-symbols found.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
This engraver creates the following grobs: VoltaBracket.

Volta_engraver is part of contexts: Staff, RhythmicStaff, VaticanaStaff, TabStaff and GregorianTranscriptionStaff

Context properties


aDueText (string)
text for begin of a due
acceptHashTable (vector)
Internal variable: store table with MusicName to Engraver entries.
acknowledgeHashTable (vector)
Internal variable: store interface to engraver smob table for current context. Don't mess with this.
alignBassFigureAccidentals (boolean)
If true, then the accidentals are aligned in bass figure context.
allowBeamBreak (boolean)
If true allow line breaks during beams.
associatedVoice (string)
Name of the Voice that has the melody for this LyricsVoice.
autoAccidentals (list)
List of different ways to typeset an accidental. All algorithms in the list are tried, and the one returning the most accidentals is used. Each entry is either a symbol containg a context name or a name-value pair containing an algorithm-description. The list must begin with a symbol (context name). The symbols denote in which context THE FOLLOWING algorithms (until next symbol) will be interpreted. All notes in the interpretation context will share accidentals. The contexts must be stated in order, innermost first. The algorithms are:
same-octave:
This is the default algorithm. Accidentals are typeset if the note changes the accidental of that note in that octave. Accidentals lasts to the end of the measure and then as many measures as specified in the value. I.e. 1 means to the end of next measure, -1 means to the end of previous measure (that is: no duration at all), etc. #t means forever.
any-octave:
Accidentals are typeset if the note is different from the previous note on the same pitch in any octave. The value has same meaning as in same-octave.

autoBeamSettings (list)
Specifies when automatically generated beams should begin and end. The elements have the format:
          
             function shortest-duration-in-beam time-signature
          
          where
          
              function = begin or end
              shortest-duration-in-beam = numerator denominator; eg: 1 16
              time-signature = numerator denominator, eg: 4 4
          
          unspecified or wildcard entries for duration or time-signature
          are given by * *
          
          The user can override beam begin or end time by pushing a wildcard entries
          '(begin * * * *) or '(end * * * *) resp., eg:
          
              property Voice.autoBeamSettings push #'(end * * * *) = #(ly:make-moment 1 4)
          
          The head of the list:
              '(
          ((end * * 3 2) . ,(ly:make-moment 1 2))
          ((end 1 16 3 2) . ,(ly:make-moment 1 4))
          ((end 1 32 3 2) . ,(ly:make-moment 1 8))
               ...
              )
          
          

autoBeaming (boolean)
If set to true then beams are generated automatically.
autoCautionaries (list)
List similar to autoAccidentals, but it controls cautionary accidentals rather than normal ones. Both lists are tried, and the one giving the most accidentals wins. In case of draw, a normal accidental is typeset.
automaticBars (boolean)
If set to true then bar lines will not be printed automatically; they must be explicitly created with bar keywords. Unlike with the cadenza keyword, measures are still counted. Bar generation will resume according to that count if this property is set to zero.
automaticMelismata (boolean)
If set, \addlyrics will assume that beams, slurs and ties signal melismata, and align lyrics accordingly.
automaticPhrasing (boolean)
If set, the Lyric_phrasing_engraver will match note heads of context called Voice X to syllables from LyricsVoice called X-<something>. This feature is turned on by default. See the example file lyrics-multi-stanza.ly.
barAlways (boolean)
If set to true a bar line is drawn after each note.
barCheckSynchronize (boolean)
If true then reset measurePosition when finding a barcheck. Turn off when using barchecks in polyphonic music.
barNumberVisibility (procedure)
Procedure that takes an int and returns whether the corresponding bar number should be printed
bassFigureFormatFunction (procedure)
DOCME
beamMelismaBusy (boolean)
Signal if a beam is set when automaticMelismata is set
beatGrouping (list)
List of beatgroups. Eg. in 5/8 time #(list 2 3).
beatLength (moment)
The length of one beat in this time signature.
breakAlignOrder (list)
Defines the order in which prefatory matter (clefs, key signatures) appears, eg. this puts the key signatures after the bar lines:
          	\property Score.breakAlignOrder = #'(
          	  span-bar
          	  breathing-sign
          	  clef
          	  staff-bar
          	  key
          	  time-signature
          	)
          

busyGrobs (list)
a queue of (END-MOMENT . GROB) conses. This is for internal (C++) use only. Use at your own risk. This property contains the grobs for which END-MOMENT >= NOW.
centralCPosition (number)
Place of the central C, measured in half staffspaces. Usually determined by looking at clefPosition and clefGlyph.
changeMoment (unknown)
duration that voices are examined for differences, when part-combining. Usually unset or zero when combining threads into one voice, and 1 (or the duration of one measure) when combining voices into one staff.
chordChanges (boolean)
Only show changes in chords scheme?
chordNameExceptions (list)
Alist of chord exceptions. Contains (CHORD . MARKUP) entries.
chordNameExceptionsFull (list)
Alist of chord exceptions. Contains (CHORD . (MARKUP)) entries.
chordNameExceptionsPartial (list)
Alist of partial chord exceptions. Contains (CHORD . (PREFIX-MARKUP SUFFIX-MARKUP)) entries.
chordNameFunction (procedure)
The function that converts lists of pitches to chord names.
chordNameSeparator (markup)
The markup object used to separate parts of a chord name.
chordNoteNamer (procedure)
Function that converts from a pitch object to a text markup. Used for single pitches.
chordRootNamer (procedure)
Function that converts from a pitch object to a text markup. Used for chords.
clefGlyph (string)
Name of the symbol within the music font
clefOctavation (integer)
Add this much extra octavation. Values of 7 and -7 are common.
clefPosition (number)
Where should the center of the clef symbol go? On systems with an odd number of stafflines, the value 0 puts the clef on the middle staffline; a positive value shifts it up, a negative value shifts it down. The unit of this distance is the half staff space.
combineParts (boolean)
try to combine parts?
connectArpeggios (boolean)
If set, connect all arpeggios that are found. In this way, you can make arpeggios that cross staves.
createKeyOnClefChange (boolean)
Print a key signature whenever the clef is changed.
crescendoSpanner (symbol)
Type of spanner to be used for crescendi. One of: hairpin, line, dashed-line, dotted-line. If unset, hairpin type is used.
crescendoText (markup)
Text to print at start of non-hairpin crecscendo, ie: cresc.
currentBarNumber (integer)
Contains the current barnumber. This property is incremented at every barline.
currentCommandColumn (grob (GRaphical OBject))
Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
currentMusicalColumn (grob (GRaphical OBject))
Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).
decrescendoSpanner (symbol)
Type of spanner to be used for decrescendi. One of: hairpin, line, dashed-line, dotted-line. If unset, hairpin type is used.
decrescendoText (markup)
Text to print at start of non-hairpin decrecscendo, ie: dim.
defaultBarType (string)
Sets the default type of bar line. Available bar types: [FIXME];

This variable is typically read at Score level, so overriding Staff.defaultBarType will have no effect.

devNullThread (symbol)
User control of Thread_devnull_engraver: one of
(), or unset
Behave in normal way: remove one set of grobs when in unisolo.
always:
Remove any grob that comes along.
never:
Do nothing.

devNullVoice (symbol)
User control of Voice_devnull_engraver: one of
(), or unset
Behave in normal way: remove spanners when in unisolo.
always:
Remove any spanners that come along.
never:
Do nothing.

dynamicAbsoluteVolumeFunction (procedure)
[DOCUMENT-ME]
explicitClefVisibility (procedure)
visibility-lambda function for clef changes.
explicitKeySignatureVisibility (procedure)
visibility-lambda function for explicit Key changes; override of #'break-visibility will set the visibility for normal (ie. at the start of the line) key signatures.
extraNatural (boolean)
Whether to typeset an extra natural sign before accidentals changing from a non-natural to another non-natural.
extraVerticalExtent (pair of numbers)
extra vertical extent, same format as MinimumVerticalExtent
finalizations (list)
List of expressions to evaluate before proceeding to next time step. Internal variable.
fingeringOrientations (list)
List of symbols, containing left, right, up and/or down. This list determines where fingerings are put wrt. to the chord being fingered.
followVoice (boolean)
if set, note heads are tracked across staff switches by a thin line
fontSize (integer)
Used to set the relative size of all grobs in a context. This is done using the Font_size_engraver.
forceClef (boolean)
Show clef symbol, even if it hasn't changed. Only active for the first clef after the property is set, not for the full staff.
graceSettings (vector)
Overrides for grace notes. This property should be manipulated through the add-grace-property function.
highStringOne (boolean)
Whether the 1st string is the string with highest pitch on the instrument (used by the automatic string selector).
instr (markup)
see instrument
instrument (markup)
If Instrument_name_engraver is added to the Staff translator, then the instrument property is used to label the first line of the staff and the instr property is used to label subsequent lines. If the midiInstrument property is not set, then instrument is used to determine the instrument for MIDI output.
instrumentEqualizer (procedure)
[DOCUMENT-ME]
instrumentSupport (list)
list of grobs to attach instrument name to.
keyAccidentalOrder (list)
Alist that defines in what order alterations should be printed. The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from -1, 1.
keySignature (list)
The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) or ((OCTAVE . NAME) . (ALTER . BARNUMBER)) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2. The optional barnumber contains the number of the measure of the accidental. FIXME: describe broken tie entries.
lastKeySignature (list)
Last key signature before a key signature change.
localKeySignature (list)
the key signature at this point in the measure. The format is the same as for keySignature. Is reset at every bar line.
localKeySignatureChanges (list)
Experimental. [DOCME]
majorSevenSymbol (markup)
How should the major7 be formatted in a chord name?
measureLength (moment)
Length of one measure in the current time signature last?
measurePosition (moment)
How much of the current measure (measured in whole notes) have we had. This can be set manually to create incomplete measures (anacrusis, upbeat), the start of the music.
melismaBusy (boolean)
Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
melismaBusyProperties (list)
List of properties (symbols) to determine whether a melisma is playing.
melismaEngraverBusy (boolean)
See melismaBusy. This is set automatically.
metronomeMarkFormatter (procedure)
How to produce a metronome markup. Called with 2 arguments, event and context.
midiInstrument (string)
Name of the MIDI instrument to use
midiMaximumVolume (number)
[DOCUMENT-ME]
midiMinimumVolume (number)
[DOCUMENT-ME]
minimumFret (number)
The tablature auto string-selecting mechanism selects the highest string with a fret not less than minimumFret
minimumVerticalExtent (pair of numbers)
minimum vertical extent, same format as VerticalExtent
noDirection (boolean)
Don't set directions by a2-engraver when part-combining.
originalCentralCPosition (integer)
Used for temporary overriding central C in octavation brackets.
othersolo (boolean)
FIXME
ottavation (string)
If set, the text for an 8va spanner. Changing this implies a new text spanner.
pedalSostenutoStrings (list)
see pedalSustainStrings.
pedalSostenutoStyle (symbol)
see pedalSustainStyle.
pedalSustainStrings (list)
List of string to print for sustain-pedal. Format is (UP UPDOWN DOWN), where each of the three is the string to print when this is done with the pedal.
pedalSustainStyle (symbol)
A symbol that indicates how to print sustain pedals: text, bracket or mixed (both).
pedalUnaCordaStrings (list)
see pedalSustainStrings.
pedalUnaCordaStyle (symbol)
see pedalSustainStyle.
phrasingPunctuation (string)
A string of characters that are considered lyric punctuation
rehearsalMark (number or string)
The last rehearsal mark printed.
repeatCommands (list)
This property is read to find any command of the form (volta . X), where X is a string or #f
restNumberThreshold (number)
If a multimeasure rest takes less than this number of measures, no number is printed.
scriptDefinitions (list)
Description of scripts. This is used by Script_engraver for typesetting note-super/subscripts. See scm/script.scm for more information
scriptHorizontal (boolean)
Put scripts left or right of note heads. Support for this is limited. Accidentals will collide with scripts.
skipBars (boolean)
If set to true, then skip the empty bars that are produced by multimeasure notes and rests. These bars will not appear on the printed output. If not set (the default) multimeasure notes and rests expand into their full length, printing the appropriate number of empty bars so that synchronization with other voices is preserved.
          @lilypond[fragment,verbatim,center]
          r1 r1*3 R1*3  \\property Score.skipBars= ##t r1*3 R1*3
          
          @end lilypond
          

skipTypesetting (boolean)
When true, all no typesetting is done at this moment, causing the interpretation phase to go a lot faster. This can help with debugging large scores.
slurMelismaBusy (boolean)
Signal a slur if automaticMelismata is set.
solo (boolean)
set if solo is detected by the part combiner.
soloADue (boolean)
set Solo/A due texts in the part combiner?.
soloIIText (string)
text for begin of solo for voice "two" when part-combining.
soloText (string)
text for begin of solo when part-combining.
sparseTies (boolean)
only create one tie per chord.
split-interval (boolean)
set if part-combiner separated voices based on splitInterval.
splitInterval (pair of numbers)
part-combiner will separate its two voices (or threads) when interval between the two voices is contained in this range.
squashedPosition (integer)
Vertical position of squashing for Pitch_squash_engraver.
stanza (markup)
Stanza `number' to print at start of a verse. Use in LyricsVoice context.
stavesFound (list)
list of all staff-symbols found.
stemLeftBeamCount (integer)
Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased. .
stemRightBeamCount (integer)
idem, for the right side.
stringOneTopmost (boolean)
Whether the 1st string is printed on the top line of the tablature.
stringTunings (list)
The tablature strings tuning. Must be a list of the different semitons pitch of each string (starting by the lower one).
stz (markup)
Abbreviated form for a stanza, see also Stanza property.
subdivideBeams (boolean)
If set, multiple beams will be subdivided at beat positions - by only drawing one beam over the beat.
systemStartDelimiter (symbol)
Which grob to make for the start of the system/staff?
tablatureFormat (procedure)
Function formatting a tab notehead; it takes a string number, a list of string tunings and Pitch object. It returns the text as a string.
tieMelismaBusy (boolean)
Signal ties when automaticMelismata is set.
timeSignatureFraction (pair of numbers)
pair of numbers, signifying the time signature. For example #'(4 . 4) is a 4/4time signature.
timing (boolean)
Keep administration of measure length, position, bar number, etc? Switch off for cadenzas.
tonic (pitch)
The tonic of the current scale
transposing (integer)
Transpose the MIDI output. Set this property to the number of half-steps to transpose by.
tremoloFlags (integer)
Number of tremolo flags to add if none is specified.
tupletInvisible (boolean)
If set to true, tuplet bracket creation is switched off entirely. This has the same effect as setting both tupletNumberVisibility and tupletBracketVisibility to #f, but as this does not even create any grobs, this setting uses less memory and time.
tupletNumberFormatFunction (procedure)
Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
tupletSpannerDuration (moment)
Normally a tuplet bracket is as wide as the imes expression that gave rise to it. By setting this property, you can make brackets last shorter. Example
          @lilypond[verbatim,fragment]
          context Voice 	imes 2/3 {
            property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
            c-[8 c c-] c-[ c c-]
          }
          @end lilypond
          
.
unirhythm (boolean)
set if unirhythm is detected by the part combiner.
unisilence (boolean)
set if unisilence is detected by the part combiner.
unison (boolean)
set if unisono is detected by the part combiner. .
verticalAlignmentChildCallback (procedure)
what callback to add to children of a vertical alignment. It determines what alignment procedure is used on the alignment itself. .
verticalExtent (pair of numbers)
hard coded vertical extent. The format is a pair of dimensions, for example, this sets the sizes of a staff to 10 (5+5) staffspaces high.
          property Staff.verticalExtent = #(-5.0 . 5.0)
          

VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are predefined in all relevant contexts to #f, so they will not inherit values.

Note that these VerticalExtents can only operate on vertical groups, and therefore only work in contexts which contain an Axis_group_engraver.

voltaOnThisStaff (boolean)
Normally, volta brackets are put only on the topmost staff. Setting this variable to true, will force a bracket to be on this staff as well.
voltaSpannerDuration (moment)
maximum duration of the volta bracket.

Set to a duration to control the size of the brackets printed by \alternative. It specifies the number of whole notes duration to use for the brackets. This can be used to shrink the length of brackets in the situation where one alternative is very large. It may have odd effects if the specified duration is longer than the music given in an \alternative. .

whichBar (string)
This property is read to determine what type of barline to create.

Example:

          \property Staff.whichBar = "|:"
          

This will create a start-repeat bar in this staff only.

If not set explicitly (by property or bar), this is set according to values of defaultBarType, barAlways, barNonAuto and measurePosition.

Valid values are described in (lilypond-internals)bar-line-interface.

.

Backend

All layout objects

Accidental

Accidental grobs are created by: Accidental_engraver and New_accidental_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
accidental-interface

a single accidental


accidentals (list)
List of alteration numbers. Default value: (unset)
cautionary (boolean)
is this a cautionary accidentals.? Default value: (unset)
cautionary-style (symbol)
style of cautionary accidentals. Choices are 'smaller (one size smaller) or 'parentheses. Default value: 'parentheses
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
tie (grob (GRaphical OBject))
Default value: (unset)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Accidental_interface::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Accidental) (interfaces grob-interface item-interface accidental-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Accidental_interface::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

AccidentalPlacement

AccidentalPlacement grobs are created by: none

accidental-placement-interface

Take care of complex accidental collisions.


accidental-grobs (list)
Alis with (NOTENAME . GROBLIST) entries Default value: (unset)
alignment-done (boolean)
boolean to administrate whether we've done the alignment already (to ensure that the process is done only once). Default value: (unset)
left-padding (dimension, in staff space)
space left of accs. Default value: 0.3
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
right-padding (dimension, in staff space)
space right of accs. Default value: 0.15
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . AccidentalPlacement) (interfaces grob-interface item-interface accidental-placement-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Ambitus

Ambitus grobs are created by: Ambitus_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'ambitus
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((clef extra-space . 0.0) (key-signature extra-space . 0.0) (staff-bar extra-space . 0.0) (time-signature extra-space . 0.0) (first-note extra-space . 0.0))
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
ambitus-interface

An ambitus represents the pitch range of a voice.


accidentals (list)
List of alteration numbers. Default value: (unset)
c0-position (integer)
integer indicating the position of central C. Default value: (unset)
join-heads (boolean)
Whether to join the noteheads of an ambitus grob with a vertical line. Default value: #t
note-head-style (string)
name of the font character to be used as note heads in the ambitus grob. Default value: noteheads-2
pitch-max (pitch)
FIXME, JUNKME Default value: (unset)
pitch-min (pitch)
FIXME, JUNKME Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Ambitus) (interfaces grob-interface ambitus-interface staff-symbol-referencer-interface break-aligned-interface item-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Ambitus::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Arpeggio

Arpeggio grobs are created by: Arpeggio_engraver and Span_arpeggio_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: 0.0
arpeggio-interface

Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.


arpeggio-direction (direction)
If set, put an arrow on the arpeggio squiggly line. Default value: (unset)
stems (list of grobs)
list of stem objects, corresponding to the notes that the arpeggio has to be before. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Arpeggio::width_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Arpeggio) (interfaces grob-interface arpeggio-interface staff-symbol-referencer-interface side-position-interface item-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Arpeggio::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BarLine

BarLine grobs are created by: Bar_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'staff-bar
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((time-signature extra-space . 0.75) (custos minimum-space . 2.0) (clef minimum-space . 1.0) (key-signature extra-space . 1.0) (first-note extra-space . 1.3) (right-edge extra-space . 0.0))
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: all-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
bar-line-interface

Bar line.

Print a special bar symbol. It replaces the regular bar symbol with a special symbol. The argument bartype is a string which specifies the kind of bar to print. Options are :|, |:, :|:, ||, |., .|, and .|..

These produce, respectively, a right repeat, a left repeat, a double repeat, a double bar, a start bar, an end bar, and a thick double bar. If bartype is set to empty then nothing is printed, but a line break is allowed at that spot.


bar-size (dimension, in staff space)
size of a bar line. Default value: (unset)
bar-size-procedure (procedure)
Procedure that computes the size of a bar line. Default value: Bar_line::get_staff_bar_size
break-glyph-function (procedure)
function taking glyph and break-direction, returning the glyph at a line break. Default value: default-break-barline
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: |
hair-thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
kern (dimension, in staff space)
amount of extra white space to add. For barline, space after a thick line. Default value: 3.0
thick-thickness (number)
thickness, measured in stafflinethickness. Default value: 6.0
thin-kern (number)
space after a hair-line. Default value: 3.0
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Bar_line::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BarLine) (interfaces grob-interface bar-line-interface item-interface break-aligned-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Bar_line::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BarNumber

BarNumber grobs are created by: Bar_number_engraver

break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: (unset)
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: (unset)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -1
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 1

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.0
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: '(1.3 . 0)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BarNumber) (interfaces grob-interface side-position-interface text-interface self-alignment-interface font-interface item-interface break-aligned-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BassFigure

BassFigure grobs are created by: Figured_bass_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'number
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: 0.8
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -2
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: (unset)

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
bass-figure-interface

A bass figure, including bracket

rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BassFigure) (interfaces grob-interface text-interface rhythmic-grob-interface bass-figure-interface item-interface self-alignment-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Beam

Beam grobs are created by: Auto_beam_engraver, Beam_engraver, Chord_tremolo_engraver and Grace_beam_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

beam-interface

A beam.

#'thickness= weight of beams, in staffspace We take the least squares line through the ideal-length stems, and then damp that using damped = tanh (slope)

this gives an unquantized left and right position for the beam end. Then we take all combinations of quantings near these left and right positions, and give them a score (according to how close they are to the ideal slope, how close the result is to the ideal stems, etc.). We take the best scoring combination.


auto-knee-gap (dimension, in staff space)
If a gap is found between noteheads where a horizontal beam fits that is larger than this number, make a kneed beam. Default value: 5.5
beamed-stem-shorten (list)
shorten beamed stems in forced direction. Default value: '(1.0 0.5 0.25)
chord-tremolo (boolean)
if set, this beam is a tremolo. TODO: use interface for this! Default value: (unset)
concaveness-gap (dimension, in staff space)
A beam is considered to be concave if the distance of an inner notehead to the line between two outer noteheads is bigger than this gap. Default value: 2.0
concaveness-threshold (number)
A beam is considered to be concave is concaveness is bigger than this threshold. Concaveness is calculated as the sum of the vertical distances of inner noteheads that fall outside the interval of the two outer noteheads, to the vertically nearest outer notehead, divided by the square of the inner notes involved. Default value: 0.08
damping (integer)
amount of beam slope damping should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams . Default value: 1
dir-function (procedure)
function of type (count total)->direction. Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.

The ways to calculate the direction of a beam work as follows:

majority
number count of up or down notes
mean
mean center distance of all notes
median
mean centre distance weighted per note

Default value: beam-dir-majority-median

flag-width-function (procedure)
Procedure that computes the width of a half-beam (a non-connecting beam.). Default value: beam-flag-width-function
gap (dimension, in staff space)
Size of a gap in a variable symbol. Default value: 0.8
gap-count (integer)
Number of gapped beams for tremolo. Default value: (unset)
knee (boolean)
Is this beam a knee? Default value: (unset)
least-squares-dy (number)
ideal beam slope, without damping. Default value: (unset)
neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate. Default value: -1
position-callbacks (list)
list of functions set spanner positions. Default value: '(#<primitive-procedure Beam::least_squares> #<primitive-procedure Beam::check_concave> #<primitive-procedure Beam::slope_damping> #<primitive-procedure Beam::shift_region_to_valid> #<primitive-procedure Beam::quanting>)
positions (pair)
cons of staff positions (LEFT . RIGHT Default value: '(#f . #f)
quant-score (number)
Beam quanting score - can be stored for debugging Default value: (unset)
shorten (dimension, in staff space)
the amount of space that a stem should be shortened (DOCME!) Default value: (unset)
space-function (procedure)
return interbeam space given Beam grob and multiplicity. Default value: Beam::space_function
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.48
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Beam::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Beam::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Beam) (interfaces grob-interface staff-symbol-referencer-interface beam-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Beam::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BreakAlignGroup

BreakAlignGroup grobs are created by: Break_align_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: (unset)
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Break_align_interface::alignment_callback>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BreakAlignGroup) (interfaces grob-interface break-aligned-interface item-interface axis-group-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BreakAlignment

BreakAlignment grobs are created by: Break_align_engraver

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0)
item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-alignment-interface

See break-aligned-interface.


break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BreakAlignment) (interfaces grob-interface break-alignment-interface item-interface axis-group-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

BreathingSign

BreathingSign grobs are created by: Breathing_sign_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-invisible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: '(#<procedure musicglyph-markup (paper props . rest)> scripts-rcomma)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
breathing-sign-interface

A breathing sign.


direction (direction)
up or down, left or right?. Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'breathing-sign
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((ambitus extra-space . 2.0) (custos minimum-space . 1.0) (key-signature minimum-space . 1.5) (staff-bar minimum-space . 1.5) (clef minimum-space . 2.0) (first-note minimum-space . 1.0) (right-edge extra-space . 0.1))
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Breathing_sign::offset_callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . BreathingSign) (interfaces grob-interface break-aligned-interface breathing-sign-interface text-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

ChordName

ChordName grobs are created by: Chord_name_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
chord-name-interface

generate a chord name


bass (list)
musical-pitch, optional. Default value: (unset)
begin-of-line-visible (boolean)
? Default value: (unset)
chord (pair)
? Default value: (unset)
inversion (list)
musical-pitch, optional. Default value: (unset)
pitches (list)
list of musical-pitch. Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: 0.0
rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'sans
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Chord_name::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . ChordName) (interfaces grob-interface font-interface rhythmic-grob-interface text-interface chord-name-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Clef

Clef grobs are created by: Clef_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'clef
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((ambitus extra-space . 2.0) (staff-bar minimum-space . 3.7) (key-signature minimum-space . 4.0) (time-signature minimum-space . 4.2) (first-note minimum-space . 5.0) (next-note extra-space . 0.5) (right-edge extra-space . 0.5))
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
clef-interface

A clef sign


full-size-change (boolean)
if set, don't make a change clef smaller. Default value: (unset)
glyph-name (string)
a name of character within font. Default value: (unset)
non-default (boolean)
not set because of existence of a bar?. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Clef::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Clef) (interfaces grob-interface clef-interface staff-symbol-referencer-interface font-interface break-aligned-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Clef::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

ClusterSpanner

ClusterSpanner grobs are created by: Cluster_spanner_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 0.0

cluster-interface

A graphically drawn musical cluster.

padding adds to the vertical extent of the shape (top and bottom) and is expressed in units of staffspace. Since the pitch range of a single pitch is infinitely small, if padding is set to 0.0, this possibly results in an invisible shape, if you,for example, say c-\startCluster d e-\endCluster. The default value for padding therefore is 0.25, such that a single pitch roughly shows the same height as a note head.

style controls the shape of cluster segments. Valid values include 'leftsided-stairs', 'rightsided-stairs', 'centered-stairs', and 'ramp'.


columns (list of grobs)
list of grobs, typically containing paper-columns. Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.25
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'ramp
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . ClusterSpanner) (interfaces grob-interface cluster-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Cluster::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

ClusterSpannerBeacon

ClusterSpannerBeacon grobs are created by: Cluster_spanner_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
cluster-beacon-interface

A place holder for the cluster spanner to determine the vertical extents of a cluster spanner at this X position.


positions (pair)
cons of staff positions (LEFT . RIGHT Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . ClusterSpannerBeacon) (interfaces grob-interface cluster-beacon-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: #f

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Custos

Custos grobs are created by: Custos_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: end-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'custos
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((first-note minimum-space . 0.0) (right-edge extra-space . 0.1))
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
custos-interface

Engrave custodes


adjust-if-on-staffline (boolean)
If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween. Default value: #t
neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate. Default value: -1
neutral-position (number)
Position (in half staff spaces) where to flip the direction of stems: by default, custodes above this position get their stems downwards; custodes below this position get their stems upwards. A value of 0 designates the center of the staff. Use property neutral-direction to control the behaviour of stems on the neutral position itself. (Note: currently, neutral-position is supported only for custodes; for stems of note heads, neutral-position is currently fixed to 0, i.e. the middle of the staff.) Default value: 0
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'vaticana
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Custos) (interfaces grob-interface custos-interface staff-symbol-referencer-interface font-interface break-aligned-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Custos::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

DotColumn

DotColumn grobs are created by: Dot_column_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0)
dot-column-interface

Interface that groups dots so they form a column


direction (direction)
up or down, left or right?. Default value: 1
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Dot_column::side_position>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . DotColumn) (interfaces grob-interface dot-column-interface axis-group-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Dots

Dots grobs are created by: Completion_heads_engraver, Note_heads_engraver, Rest_engraver and Tab_note_heads_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
dots-interface

The dots to go with a notehead/rest. A separate interface, since they are a party in collision resolution. #'direction is the Direction to handle staff-line collisions in.


direction (direction)
up or down, left or right?. Default value: (unset)
dot-count (integer)
number of dots. Default value: 1
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Dots::quantised_position_callback> #<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Dots) (interfaces grob-interface font-interface staff-symbol-referencer-interface dots-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Dots::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

DoublePercentRepeat

DoublePercentRepeat grobs are created by: Percent_repeat_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-invisible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
percent-repeat-interface

Repeats that look like percent signs


slope (number)
some kind of slope Default value: 1.0
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.48
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'staff-bar
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . DoublePercentRepeat) (interfaces grob-interface font-interface break-aligned-interface percent-repeat-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Percent_repeat_item_interface::double_percent

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

DynamicLineSpanner

DynamicLineSpanner grobs are created by: Dynamic_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: 1.2
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.6
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
dynamic-interface

Any kind of loudness sign

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . DynamicLineSpanner) (interfaces grob-interface dynamic-interface axis-group-interface side-position-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

DynamicText

DynamicText grobs are created by: Dynamic_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: #t
script-interface

script-molecule (pair)
Index code for script - internal, see script.cc. Default value: (unset)
script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts. Default value: 100
dynamic-interface

Any kind of loudness sign

self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: 0
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'dynamic
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: 'bold
font-shape (symbol)
partial font definition: upright or italic. Default value: 'italic
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self> #<primitive-procedure Self_alignment_interface::centered_on_parent>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . DynamicText) (interfaces grob-interface font-interface text-interface self-alignment-interface dynamic-interface script-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Fingering

Fingering grobs are created by: Fingering_engraver and New_fingering_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: 0
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: (unset)
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.6
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
text-script-interface

Any text script


script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts. Default value: 100
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'number
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -3
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: 'upright
finger-interface

A fingering instruction

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Fingering) (interfaces grob-interface finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Glissando

Glissando grobs are created by: Glissando_engraver and Note_head_line_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

line-spanner-interface

Generic line drawn between two objects, eg. for use with glissandi. gap is measured in staff-spaces. The property 'type is one of: line, dashed-line, trill, dotted-line or zigzag.


dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: (unset)
dash-period (number)
the length of one dash + white space. Default value: (unset)
gap (dimension, in staff space)
Size of a gap in a variable symbol. Default value: 0.5
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'line
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
zigzag-length (dimension, in staff space)
The length of the lines of a zigzag - relative to zigzag-width. a value of 1 gives 60-degree zigzags. Default value: (unset)
zigzag-width (dimension, in staff space)
the width of one zigzag-squiggle, measured in staff space. The width will be adjusted so that the line can be constructed from a whole number of squiggles. Default value: 0.75
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: #f

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Line_spanner::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Glissando) (interfaces grob-interface line-spanner-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Line_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Hairpin

Hairpin grobs are created by: Dynamic_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 2.0

dynamic-interface

Any kind of loudness sign

self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: (unset)

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: 0
hairpin-interface

hairpin crescendo.


dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: (unset)
dash-period (number)
the length of one dash + white space. Default value: (unset)
grow-direction (direction)
crescendo or decrescendo?. Default value: (unset)
height (dimension, in staff space)
in staffspace. Default value: 0.6666
if-text-padding (number)
padding in case texts are there. Default value: 1.0
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.0
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Hairpin) (interfaces grob-interface hairpin-interface self-alignment-interface dynamic-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Hairpin::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

HorizontalBracket

HorizontalBracket grobs are created by: Horizontal_bracket_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.2
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

horizontal-bracket-interface

A horizontal bracket encompassing notes.


columns (list of grobs)
list of grobs, typically containing paper-columns. Default value: (unset)
direction (direction)
up or down, left or right?. Default value: -1
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.0
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . HorizontalBracket) (interfaces grob-interface horizontal-bracket-interface side-position-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Horizontal_bracket::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

InstrumentName

InstrumentName grobs are created by: Instrument_name_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'instrument-name
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((left-edge extra-space . 1.0))
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: 2
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 0
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: (unset)

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: 0
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self> #<primitive-procedure Side_position_interface::aligned_on_support_refpoints>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . InstrumentName) (interfaces grob-interface font-interface self-alignment-interface side-position-interface text-interface break-aligned-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

KeySignature

KeySignature grobs are created by: Key_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'key-signature
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((time-signature extra-space . 1.25) (staff-bar extra-space . 1.1) (right-edge extra-space . 0.5) (first-note extra-space . 2.5))
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
key-signature-interface

A group of accidentals, to be printed as signature sign.


c0-position (integer)
integer indicating the position of central C. Default value: (unset)
new-accidentals (list)
list of (pitch, accidental) pairs. Default value: (unset)
old-accidentals (list)
list of (pitch, accidental) pairs. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . KeySignature) (interfaces grob-interface key-signature-interface font-interface break-aligned-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Key_signature_interface::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

LeftEdge

LeftEdge grobs are created by: Break_align_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'left-edge
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((custos extra-space . 0.0) (ambitus extra-space . 2.0) (time-signature extra-space . 0.0) (staff-bar extra-space . 0.0) (breathing-sign minimum-space . 0.0) (clef extra-space . 0.85) (first-note extra-space . 1.0) (right-edge extra-space . 0.0) (key-signature extra-space . 0.0))
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Grob::point_dimension_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . LeftEdge) (interfaces grob-interface break-aligned-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

LigatureBracket

LigatureBracket grobs are created by: none

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

tuplet-bracket-interface

A bracket with a number in the middle, used for tuplets.


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: (unset)
bracket-visibility (boolean or symbol)
This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to #'if-no-beam will make it print only if there is no beam associated with this tuplet bracket. Default value: (unset)
direction (direction)
up or down, left or right?. Default value: 1
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: '(0.7 . 0.7)
gap (dimension, in staff space)
Size of a gap in a variable symbol. Default value: 0.0
left-position (number)
position of left part of spanner. Default value: (unset)
note-columns (pair)
list of NoteColumn grobs. Default value: (unset)
number-visibility (boolean or symbol)
Like bracket-visibility, but for the number. Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 2.0
right-position (number)
position of right part of spanner. Default value: (unset)
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: '(-0.2 . -0.2)
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Tuplet_bracket::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Tuplet_bracket::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . LigatureBracket) (interfaces grob-interface tuplet-bracket-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Tuplet_bracket::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

LyricExtender

LyricExtender grobs are created by: Extender_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

lyric-extender-interface

The extender is a simple line at the baseline of the lyric that helps show the length of a melissima (tied/slurred note).


height (dimension, in staff space)
in staffspace. Default value: 0.8
right-trim-amount (dimension, in staff space)
shortening of the lyric extender on the right. Default value: 0.5
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Grob::point_dimension_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . LyricExtender) (interfaces grob-interface lyric-extender-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Lyric_extender::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

LyricHyphen

LyricHyphen grobs are created by: Hyphen_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 0.5

lyric-hyphen-interface

A centred hyphen is a simple line between lyrics used to divide syllables. The length of the hyphen line should stretch based on the size of the gap between syllables.


height (dimension, in staff space)
in staffspace. Default value: 0.4
maximum-length (dimension, in staff space)
don't make Grob longer than this Default value: 100
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 0.5

thickness (number)
thickness, measured in stafflinethickness. Default value: 1.0
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Grob::point_dimension_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . LyricHyphen) (interfaces grob-interface lyric-hyphen-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Hyphen_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Hyphen_spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

LyricText

LyricText grobs are created by: none

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: 'upright
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: 0.6
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
lyric-syllable-interface

a single piece of lyrics


alignment (number)
alignment of lyrics on notehead, -1 is LEFT, 0 is CENTRE, 1 is RIGHT . Default value: (unset)
begin-alignment (number)
proportion of lyric length from beginning to align with note-head for left-aligned lyrics. Default value: 4
end-alignment (number)
proportion of lyric length from end to align with note-head for right-aligned lyrics. Default value: 2
ignore-length-mismatch (boolean)
if #t, stanzas with shorter lyrics can be moved away from their respective note-head by the lyric alignment code. Default value: #f
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: 0.6
rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::centered_on_parent> #<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . LyricText) (interfaces grob-interface rhythmic-grob-interface lyric-syllable-interface self-alignment-interface text-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MeasureGrouping

MeasureGrouping grobs are created by: Measure_grouping_engraver

measure-grouping-interface

indicate groups of beats. Valid choices for 'type are 'bracket and 'triangle.


height (dimension, in staff space)
in staffspace. Default value: 2.0
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
thickness (number)
thickness, measured in stafflinethickness. Default value: 1
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 2
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: 3

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::out_of_staff> #<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MeasureGrouping) (interfaces grob-interface spanner-interface side-position-interface measure-grouping-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Measure_grouping::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MensuralLigature

MensuralLigature grobs are created by: Mensural_ligature_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
mensural-ligature-interface

A mensural ligature


delta-pitch (number)
the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes Default value: (unset)
flexa-width (dimension, in staff space)
width of a flexa shape in a ligature grob in staff_space. Default value: 2.0
head-width (dimension, in staff space)
width of this ligature head Default value: (unset)
join-left (boolean)
is this ligature head joined with the previous one by a vertical line? Default value: (unset)
join-left-amount (number)
DOCME Default value: (unset)
ligature-primitive-callback (procedure)
callback that brews ligature head. Default value: Mensural_ligature::brew_ligature_primitive
primitive (integer)
Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. [TODO: change this] Default value: (unset)
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.4
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MensuralLigature) (interfaces grob-interface mensural-ligature-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Mensural_ligature::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MetronomeMark

MetronomeMark grobs are created by: Metronome_mark_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: end-of-line-invisible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
metronome-mark-interface

a rehearsal mark

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.8
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MetronomeMark) (interfaces grob-interface text-interface side-position-interface font-interface metronome-mark-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MultiMeasureRest

MultiMeasureRest grobs are created by: Multi_measure_rest_engraver

staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: 0
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
rest-interface

a rest


minimum-beam-collision-distance (dimension, in staff space)
Minimum distance to beam for a rest collision. Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
multi-measure-rest-interface

A rest that spans a whole number of measures.


expand-limit (integer)
maximum number of measures expanded in church rests. Default value: 10
hair-thickness (number)
thickness, measured in stafflinethickness. Default value: 2.0
measure-count (integer)
number of measures for a multimeasure rest. Default value: (unset)
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

thick-thickness (number)
thickness, measured in stafflinethickness. Default value: 6.6
use-breve-rest (boolean)
boolean that tells multi-measure-rest to use a breve rest to represent the duration of 1 measure instead of whole rest. It defaults to false. It is set to true when the duration of a measure is a breve or longer. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MultiMeasureRest) (interfaces grob-interface multi-measure-rest-interface rest-interface font-interface staff-symbol-referencer-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Multi_measure_rest::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Multi_measure_rest::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MultiMeasureRestNumber

MultiMeasureRestNumber grobs are created by: Multi_measure_rest_engraver

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'number
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.3
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self> #<primitive-procedure Self_alignment_interface::centered_on_other_axis_parent>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MultiMeasureRestNumber) (interfaces grob-interface side-position-interface self-alignment-interface font-interface spanner-interface text-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

MultiMeasureRestText

MultiMeasureRestText grobs are created by: Multi_measure_rest_engraver

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.5
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self> #<primitive-procedure Self_alignment_interface::centered_on_other_axis_parent>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . MultiMeasureRestText) (interfaces grob-interface side-position-interface self-alignment-interface font-interface spanner-interface text-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NonMusicalPaperColumn

NonMusicalPaperColumn grobs are created by: Score_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
spaceable-grob-interface

A grob (a Paper_column) that takes part in the spacing problem.


ideal-distances (list)
(OBJ . (DIST . STRENGTH)) pairs. Default value: (unset)
left-neighbors (list of grobs)
List of spacing-wish grobs that are close to the current column.

The closest spacing-wishes determine the actual distances between the columns.

Default value: (unset)

measure-length (moment)
Length of a measure. Used in some spacing situations. Default value: (unset)
minimum-distances (list)
list of rods (ie. (OBJ . DIST) pairs). Default value: (unset)
penalty (number)
Penalty for breaking at this column. 10000 or more means forbid linebreak, -10000 or less means force linebreak. Other values influence linebreaking decisions as a real penalty. Default value: (unset)
right-neighbors (list of grobs)
see left-neighbors Default value: (unset)
spacing-wishes (list of grobs)
List of note spacing or staff spacing objects. Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0)
paper-column-interface

Paper_columns form the top-most item parent. (The Paper_columns X parent is System, which is a spanner.)

Paper_columns form the units for the spacing engine. They are numbered, the first (leftmost) is column 0. Numbering happens before line-breaking, and columns are not renumbered after line breaking.

Since many columns go unused, you should only use the rank field to get ordering information. Two adjacent columns may have non-adjacent numbers.

Don't be confused by right-items: each spacing wish can also contain a number of items, with which a spacing constraint may be kept. It's a little baroque, but it might come in handy later on?


between-cols (pair)
Where to attach a loose column to Default value: (unset)
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks. Default value: (unset)
bounded-by-me (list of grobs)
list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced. Default value: (unset)
shortest-playing-duration (moment)
duration of the shortest playing in that column. Default value: (unset)
shortest-starter-duration (moment)
duration of the shortest notes that starts exactly in this column. Default value: (unset)
when (moment)
when does this column happen?. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Paper_column::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NonMusicalPaperColumn) (interfaces grob-interface paper-column-interface axis-group-interface spaceable-grob-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NoteCollision

NoteCollision grobs are created by: Collision_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0 1)
note-collision-interface

An object that handles collisions between notes with different stem directions and horizontal shifts. Most of the interesting properties are to be set in note-column-interface: these are force-hshift and horizontal-shift.


collision-done (boolean)
Default value: (unset)
merge-differently-dotted (boolean)
Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by note-collision-interface . Default value: (unset)
merge-differently-headed (boolean)
Merge noteheads in collisions, even if they have different note heads. The smaller of the two heads will be rendered invisible. This used polyphonic guitar notation. The value of this setting is used by note-collision-interface . Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NoteCollision) (interfaces grob-interface note-collision-interface axis-group-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NoteColumn

NoteColumn grobs are created by: Rhythmic_column_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
note-column-interface

Stem and noteheads combined


accidentals (list)
List of alteration numbers. Default value: (unset)
arpeggio (grob (GRaphical OBject))
pointer to arpeggio object. Default value: (unset)
force-hshift (number)
amount of collision_note_width that overides automatic collision settings. This is used by note-collision-interface. Default value: (unset)
horizontal-shift (integer)
integer that identifies ranking of note-column for horizontal shifting. This is used by note-collision-interface. Default value: (unset)
note-heads (list of grobs)
List of note head grobs Default value: (unset)
rest (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
rest-collision (grob (GRaphical OBject))
rest collision that a rest is in. Default value: (unset)
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0 1)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NoteColumn) (interfaces grob-interface axis-group-interface note-column-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NoteHead

NoteHead grobs are created by: Completion_heads_engraver and Note_heads_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
note-head-interface

Note head


accidental-grob (grob (GRaphical OBject))
Accidental for this note. Default value: (unset)
glyph-name-procedure (procedure)
Return name of character within font. Default value: find-notehead-symbol
stem-attachment-function (procedure)
Where does the stem attach to the notehead? Function takes a symbol argument being the style. It returns a (X . Y) pair, specifying location in terms of note head bounding box. Default value: note-head-style->attachment-coordinates
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'default
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
rhythmic-head-interface

Note head or rest


dot (grob (GRaphical OBject))
reference to Dots object. Default value: (unset)
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc. Default value: (unset)
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NoteHead) (interfaces grob-interface rhythmic-grob-interface rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Note_head::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NoteName

NoteName grobs are created by: Note_name_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
note-name-interface

Note name


style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NoteName) (interfaces grob-interface note-name-interface text-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

NoteSpacing

NoteSpacing grobs are created by: Rhythmic_column_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
note-spacing-interface

knee-spacing-correction (number)
optical correction amount for knees. 0: no correction; 1: full correction. Default value: 1.0
left-items (list of grobs)
Default value: (unset)
right-items (list of grobs)
Default value: (unset)
stem-spacing-correction (number)
optical correction amount. [TODO: doco] Default value: 0.5
spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . NoteSpacing) (interfaces grob-interface spacing-interface note-spacing-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

OctavateEight

OctavateEight grobs are created by: Clef_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -2
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: 'italic
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: (unset)
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.4
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::centered_on_parent> #<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . OctavateEight) (interfaces grob-interface text-interface self-alignment-interface side-position-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

OttavaSpanner

OttavaSpanner grobs are created by: Ottava_spanner_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-spanner-interface

generic text spanner


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: (unset)
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: 0.3
dash-period (number)
the length of one dash + white space. Default value: (unset)
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: '(0 . 1.5)
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text). Default value: (unset)
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes Default value: #t
if-text-padding (number)
padding in case texts are there. Default value: (unset)
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'dashed-line
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners. Default value: 0.0
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . OttavaSpanner) (interfaces grob-interface text-spanner-interface side-position-interface font-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

PaperColumn

PaperColumn grobs are created by: Score_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
spaceable-grob-interface

A grob (a Paper_column) that takes part in the spacing problem.


ideal-distances (list)
(OBJ . (DIST . STRENGTH)) pairs. Default value: (unset)
left-neighbors (list of grobs)
List of spacing-wish grobs that are close to the current column.

The closest spacing-wishes determine the actual distances between the columns.

Default value: (unset)

measure-length (moment)
Length of a measure. Used in some spacing situations. Default value: (unset)
minimum-distances (list)
list of rods (ie. (OBJ . DIST) pairs). Default value: (unset)
penalty (number)
Penalty for breaking at this column. 10000 or more means forbid linebreak, -10000 or less means force linebreak. Other values influence linebreaking decisions as a real penalty. Default value: (unset)
right-neighbors (list of grobs)
see left-neighbors Default value: (unset)
spacing-wishes (list of grobs)
List of note spacing or staff spacing objects. Default value: (unset)
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0)
paper-column-interface

Paper_columns form the top-most item parent. (The Paper_columns X parent is System, which is a spanner.)

Paper_columns form the units for the spacing engine. They are numbered, the first (leftmost) is column 0. Numbering happens before line-breaking, and columns are not renumbered after line breaking.

Since many columns go unused, you should only use the rank field to get ordering information. Two adjacent columns may have non-adjacent numbers.

Don't be confused by right-items: each spacing wish can also contain a number of items, with which a spacing constraint may be kept. It's a little baroque, but it might come in handy later on?


between-cols (pair)
Where to attach a loose column to Default value: (unset)
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks. Default value: (unset)
bounded-by-me (list of grobs)
list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced. Default value: (unset)
shortest-playing-duration (moment)
duration of the shortest playing in that column. Default value: (unset)
shortest-starter-duration (moment)
duration of the shortest notes that starts exactly in this column. Default value: (unset)
when (moment)
when does this column happen?. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Paper_column::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . PaperColumn) (interfaces grob-interface paper-column-interface axis-group-interface spaceable-grob-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

PercentRepeat

PercentRepeat grobs are created by: Percent_repeat_engraver

percent-repeat-interface

Repeats that look like percent signs


slope (number)
some kind of slope Default value: 1.0
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.48
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

multi-measure-rest-interface

A rest that spans a whole number of measures.


expand-limit (integer)
maximum number of measures expanded in church rests. Default value: (unset)
hair-thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
measure-count (integer)
number of measures for a multimeasure rest. Default value: (unset)
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

thick-thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
use-breve-rest (boolean)
boolean that tells multi-measure-rest to use a breve rest to represent the duration of 1 measure instead of whole rest. It defaults to false. It is set to true when the duration of a measure is a breve or longer. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . PercentRepeat) (interfaces grob-interface multi-measure-rest-interface spanner-interface font-interface percent-repeat-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Multi_measure_rest::percent

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Multi_measure_rest::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

PhrasingSlur

PhrasingSlur grobs are created by: Phrasing_slur_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 1.5

slur-interface

A slur


attachment (pair)
cons of symbols indicating how a slur should be attached at the ends. The format is '(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of these symbols may be alongside-stem, stem, head or loose-end. Default value: '(#f . #f)
attachment-offset (pair)
cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs. [fixme: we need more documentation here]. . Default value: '((0 . 0) 0 . 0)
beautiful (number)
number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs. Default value: 0.5
control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape. Default value: (unset)
dashed (number)
[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes. Default value: (unset)
de-uglify-parameters (list)
list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical. Default value: '(1.5 0.8 -2.0)
details (list)
alist of parameters for detailed grob behavior. Default value: '((force-blowfit . 0.5) (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 6.0e-6) (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2) (bezier-area-steps . 1.0))
direction (direction)
up or down, left or right?. Default value: (unset)
extremity-offset-alist (list)
an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem. Default value: '(((head 1 1) -0.25 . 1.25) ((head 1 -1) -0.25 . 1.25) ((head -1 1) -0.25 . 1.25) ((head -1 -1) -0.85 . 1.25) ((stem 1 1) -0.25 . 1.5) ((stem -1 -1) -0.25 . 1.5) ((loose-end 1 1) -0.4 . 0) ((loose-end 1 -1) -0.4 . 0) ((loose-end -1 -1) -4 . 0) ((loose-end -1 1) -4 . 0))
extremity-rules (list)
an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried. Default value: '((#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . stem) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (x y)> . head))
height-limit (dimension, in staff space)
Maximum slur height, long slurs approach this height.

For small width w, the height should be proportional to w, for w -> infinity, the height should rise to limit h_infinity asymptotically.

Hence we take F (x) such that

                 F (0) = 0 , F' (0) = 1, and F (infinity) = 1
               
where
                 h = height-limit * F (x * ratio / height-limit)
               
Currently, for F we use
                 F (x) = 2/pi * atan (pi * x/2)
               

Default value: 2.0

ratio (number)
Slur parameter. See height-limit. Default value: 0.333
slope-limit (number)
set slope to zero if slope is running away steeper than this. Default value: 0.8
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.2
y-free (dimension, in staff space)
minimal vertical gap between slur and noteheads or stems. Default value: 0.75
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Slur::height
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Slur::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . PhrasingSlur) (interfaces grob-interface slur-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Slur::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

PianoPedalBracket

PianoPedalBracket grobs are created by: none

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

piano-pedal-bracket-interface

pedal-text (grob (GRaphical OBject))
Pointer to the text of a mixed-style piano pedal. Default value: (unset)
piano-pedal-interface

A piano pedal sign

text-spanner-interface

generic text spanner


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: '(0.5 . 0.5)
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: (unset)
dash-period (number)
the length of one dash + white space. Default value: (unset)
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: '(1.0 . 1.0)
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text). Default value: (unset)
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes Default value: #t
if-text-padding (number)
padding in case texts are there. Default value: 1.0
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: '(0.0 . 0.0)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'line
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.0
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners. Default value: 0
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Piano_pedal_bracket::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . PianoPedalBracket) (interfaces grob-interface text-spanner-interface piano-pedal-interface piano-pedal-bracket-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

RehearsalMark

RehearsalMark grobs are created by: Mark_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: end-of-line-invisible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
mark-interface

a rehearsal mark

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: 1
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.8
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: 2
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . RehearsalMark) (interfaces grob-interface text-interface side-position-interface font-interface mark-interface self-alignment-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

RemoveEmptyVerticalGroup

RemoveEmptyVerticalGroup grobs are created by: Hara_kiri_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
hara-kiri-group-interface

As Vertical_group_spanner, but keep track of interesting items. If we don't contain any interesting items after linebreaking, then gracefully commit suicide. Objective: don't disgrace Lily by typesetting empty lines in orchestral scores.


items-worth-living (list of grobs)
list of interesting items. If empty in a particular system, clear that system. Default value: (unset)
remove-first (boolean)
Remove the first staff of a orchestral score? Default value: #t
axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Hara_kiri_group_spanner::y_extent
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Hara_kiri_group_spanner::force_hara_kiri_callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . RemoveEmptyVerticalGroup) (interfaces grob-interface axis-group-interface hara-kiri-group-interface item-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

RepeatSlash

RepeatSlash grobs are created by: Slash_repeat_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
percent-repeat-interface

Repeats that look like percent signs


slope (number)
some kind of slope Default value: 1.7
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.48
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . RepeatSlash) (interfaces grob-interface percent-repeat-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Percent_repeat_item_interface::beat_slash

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Rest

Rest grobs are created by: Rest_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
rest-interface

a rest


minimum-beam-collision-distance (dimension, in staff space)
Minimum distance to beam for a rest collision. Default value: 0.75
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

rhythmic-head-interface

Note head or rest


dot (grob (GRaphical OBject))
reference to Dots object. Default value: (unset)
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc. Default value: (unset)
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Rest::extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Rest::extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Rest::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Rest) (interfaces grob-interface font-interface rhythmic-head-interface rhythmic-grob-interface staff-symbol-referencer-interface rest-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Rest::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

RestCollision

RestCollision grobs are created by: Rest_collision_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
rest-collision-interface

Move around ordinary rests (not multi-measure-rests) to avoid conflicts.


elements (list of grobs)
list of grobs, type depending on the Grob where this is set in. Default value: (unset)
maximum-rest-count (integer)
kill off rests so we don't more than this number left. Default value: (unset)
minimum-distance (dimension, in staff space)
minimum distance between notes and rests. Default value: 0.75
rest-collision-done (boolean)
Is this rest collision processed yet? Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . RestCollision) (interfaces grob-interface rest-collision-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Script

Script grobs are created by: Script_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: (unset)
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.25
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

script-interface

script-molecule (pair)
Index code for script - internal, see script.cc. Default value: (unset)
script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::centered_on_parent>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Script_interface::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Script) (interfaces grob-interface script-interface side-position-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Script_interface::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

ScriptColumn

ScriptColumn grobs are created by: Script_column_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
script-column-interface

An interface that sorts scripts according to their script-priority

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Script_column::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . ScriptColumn) (interfaces grob-interface script-column-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SeparatingGroupSpanner

SeparatingGroupSpanner grobs are created by: Separating_line_group_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

separation-spanner-interface

Spanner that containing separation-item-interface grobs to calculate rods

spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SeparatingGroupSpanner) (interfaces grob-interface spacing-interface separation-spanner-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Separating_group_spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SeparationItem

SeparationItem grobs are created by: Separating_line_group_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
separation-item-interface

Item that computes widths to generate spacing rods.

Calculate dimensions for the Separating_group_spanner; this has to be an item to get dependencies correct.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
conditional-elements (list of grobs)
Internal use only Default value: (unset)
elements (list of grobs)
list of grobs, type depending on the Grob where this is set in. Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SeparationItem) (interfaces grob-interface spacing-interface separation-item-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Slur

Slur grobs are created by: Slur_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 1.5

slur-interface

A slur


attachment (pair)
cons of symbols indicating how a slur should be attached at the ends. The format is '(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of these symbols may be alongside-stem, stem, head or loose-end. Default value: '(#f . #f)
attachment-offset (pair)
cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs. [fixme: we need more documentation here]. . Default value: '((0 . 0) 0 . 0)
beautiful (number)
number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs. Default value: 0.5
control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape. Default value: (unset)
dashed (number)
[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes. Default value: (unset)
de-uglify-parameters (list)
list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical. Default value: '(1.5 0.8 -2.0)
details (list)
alist of parameters for detailed grob behavior. Default value: '((force-blowfit . 0.5) (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 6.0e-6) (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2) (bezier-area-steps . 1.0))
direction (direction)
up or down, left or right?. Default value: (unset)
extremity-offset-alist (list)
an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem. Default value: '(((head 1 1) -0.25 . 0.75) ((head 1 -1) -0.25 . 0.75) ((head -1 1) -0.25 . 0.75) ((head -1 -1) -0.85 . 0.75) ((stem 1 1) -0.125 . 0.5) ((stem -1 -1) -0.125 . 0.5) ((loose-end 1 1) -0.4 . 0) ((loose-end 1 -1) -0.4 . 0) ((loose-end -1 -1) -4 . 0) ((loose-end -1 1) -4 . 0))
extremity-rules (list)
an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried. Default value: '((#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (slur dir)> . head) (#<procedure #f (slur dir)> . stem) (#<procedure #f (slur dir)> . loose-end) (#<procedure #f (x y)> . head))
height-limit (dimension, in staff space)
Maximum slur height, long slurs approach this height.

For small width w, the height should be proportional to w, for w -> infinity, the height should rise to limit h_infinity asymptotically.

Hence we take F (x) such that

                 F (0) = 0 , F' (0) = 1, and F (infinity) = 1
               
where
                 h = height-limit * F (x * ratio / height-limit)
               
Currently, for F we use
                 F (x) = 2/pi * atan (pi * x/2)
               

Default value: 2.0

ratio (number)
Slur parameter. See height-limit. Default value: 0.333
slope-limit (number)
set slope to zero if slope is running away steeper than this. Default value: 0.8
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.2
y-free (dimension, in staff space)
minimal vertical gap between slur and noteheads or stems. Default value: 0.75
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Slur::height
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Slur::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Slur) (interfaces grob-interface slur-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Slur::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SostenutoPedal

SostenutoPedal grobs are created by: Piano_pedal_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: #t
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: 'italic
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SostenutoPedal) (interfaces grob-interface text-interface self-alignment-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SostenutoPedalLineSpanner

SostenutoPedalLineSpanner grobs are created by: Piano_pedal_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: 1.0
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.2
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
piano-pedal-interface

A piano pedal sign

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SostenutoPedalLineSpanner) (interfaces grob-interface piano-pedal-interface axis-group-interface side-position-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SpacingSpanner

SpacingSpanner grobs are created by: Spacing_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

spacing-spanner-interface

The space taken by a note is dependent on its duration. Doubling a duration adds spacing-increment to the space. The most common shortest note gets shortest-duration-space. Notes that are even shorter are spaced proportonial to their duration.

Typically, the increment is the width of a black note head. In a piece with lots of 8th notes, and some 16th notes, the eighth note gets 2 note heads width (i.e. the space following a note is 1 note head width) A 16th note is followed by 0.5 note head width. The quarter note is followed by 3 NHW, the half by 4 NHW, etc.


base-shortest-duration (moment)
Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present. Default value: '#<Mom 1/8 >
common-shortest-duration (moment)
The most common shortest note length. This is used in spacing. Making this larger will make the score tighter. Default value: (unset)
grace-space-factor (number)
space grace at this fraction of the increment. Default value: 0.6
shortest-duration-space (dimension, in staff space)
Start with this much space for the shortest duration. This is explessed in spacing-increment as unit. See also spacing-spanner-interface. Default value: 2.0
spacing-increment (number)
Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface. Default value: 1.2
spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SpacingSpanner) (interfaces grob-interface spacing-interface spacing-spanner-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spacing_spanner::set_springs
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SpanBar

SpanBar grobs are created by: Span_bar_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-invisible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
bar-line-interface

Bar line.

Print a special bar symbol. It replaces the regular bar symbol with a special symbol. The argument bartype is a string which specifies the kind of bar to print. Options are :|, |:, :|:, ||, |., .|, and .|..

These produce, respectively, a right repeat, a left repeat, a double repeat, a double bar, a start bar, an end bar, and a thick double bar. If bartype is set to empty then nothing is printed, but a line break is allowed at that spot.


bar-size (dimension, in staff space)
size of a bar line. Default value: (unset)
bar-size-procedure (procedure)
Procedure that computes the size of a bar line. Default value: Span_bar::get_bar_size
break-glyph-function (procedure)
function taking glyph and break-direction, returning the glyph at a line break. Default value: (unset)
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: |
hair-thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
kern (dimension, in staff space)
amount of extra white space to add. For barline, space after a thick line. Default value: 3.0
thick-thickness (number)
thickness, measured in stafflinethickness. Default value: 6.0
thin-kern (number)
space after a hair-line. Default value: 3.0
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
span-bar-interface

A bar line that spans other barlines (typically used to get cross-staff barlines.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Span_bar::width_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: '()
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Span_bar::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SpanBar) (interfaces grob-interface span-bar-interface font-interface bar-line-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Span_bar::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

StaffSpacing

StaffSpacing grobs are created by: none

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
staff-spacing-interface

left-items (list of grobs)
Default value: (unset)
right-items (list of grobs)
Default value: (unset)
stem-spacing-correction (number)
optical correction amount. [TODO: doco] Default value: 0.4
spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . StaffSpacing) (interfaces grob-interface spacing-interface staff-spacing-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

StaffSymbol

StaffSymbol grobs are created by: Staff_symbol_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

staff-symbol-interface

This spanner draws the lines of a staff. The center (i.e. middle line or space) is position 0. The length of the symbol may be set by hand through the width property.


line-count (integer)
Number of staff lines. If you want to override this for staffs individually, you must use outputproperty. property .. override will not work: override is processed after the StaffSymbol is created, and will have no effect.

Default value: 5

staff-space (dimension, in staff space)
Amount of line leading relative to global staffspace. Default value: (unset)
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
width (dimension, in staff space)
width of a grob measured in staff space. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: 0
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . StaffSymbol) (interfaces grob-interface staff-symbol-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Staff_symbol::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

StanzaNumber

StanzaNumber grobs are created by: Stanza_number_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: begin-of-line-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'clef
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . StanzaNumber) (interfaces grob-interface break-aligned-interface text-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Stem

Stem grobs are created by: Stem_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'music
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
stem-interface

A stem


adjust-if-on-staffline (boolean)
If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween. Default value: #t
avoid-note-head (boolean)
if set, the stem of a chord does not pass through all note head, but start at the last note head. Used by tablature. Default value: #f
beam (grob (GRaphical OBject))
pointer to the beam, if applicable. Default value: (unset)
beamed-extreme-minimum-free-lengths (list)
list of extreme minimum free stem lengths (chord to beams) given beam multiplicity. Default value: '(2.5 2.0 1.0)
beamed-lengths (list)
list of stem lengths given beam multiplicity . Default value: '(3.26 3.26 1.5)
beamed-minimum-free-lengths (list)
list of normal minimum free stem lengths (chord to beams) given beam multiplicity. Default value: '(1.83 1.5 1.25)
beaming (pair)
Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam. Default value: (unset)
direction (direction)
up or down, left or right?. Default value: (unset)
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc. Default value: (unset)
flag-style (symbol)
a string determining what style of glyph is typeset on a Stem. Valid options include undefined and mensural. Additionally, no-flag switches off the flag. Default value: (unset)
french-beaming (boolean)
Use French beaming style: stems stop at innermost beams. Default value: (unset)
length (dimension, in staff space)
Stem length for unbeamed stems, only for user override. Default value: (unset)
lengths (list)
Stem length given multiplicity of flag. The Nth element of the list gives the stem length of a note with N flags.

Default value: '(3.5 3.5 3.5 4.5 5.0)

neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate. Default value: -1
no-stem-extend (boolean)
should stem not be extended to middle staff line?. Default value: (unset)
note-heads (list of grobs)
List of note head grobs Default value: (unset)
stem-end-position (number)
Where does the stem end (the end is opposite to the support-head. Default value: (unset)
stem-info (pair)
caching of stem parameters Default value: (unset)
stem-shorten (list)
shorten stems in forced directions given flag multiplicity: the Nth element of the list gives the amount stem shortening of a note with N flags.

Default value: '(1.0 0.5)

stroke-style (string)
set to "grace" to turn stroke through flag on. Default value: (unset)
support-head (grob (GRaphical OBject))
the note head at one end of the stem. Default value: (unset)
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.3
tremolo-flag (grob (GRaphical OBject))
The tremolo object on a stem. Default value: (unset)
up-to-staff (boolean)
if set, stems' lengths are set so as stems end out of the staff. Used by tablature. Default value: #f
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Stem::dim_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Stem::off_callback>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Stem::height
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Stem::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Stem) (interfaces grob-interface stem-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Stem::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

StemTremolo

StemTremolo grobs are created by: Stem_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
stem-tremolo-interface

beam-thickness (dimension, in staff space)
thickness, measured in staffspace. Default value: 0.48
beam-width (dimension, in staff space)
width of the tremolo sign. Default value: 1.6
flag-count (number)
Default value: (unset)
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: #f

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Stem_tremolo::height
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . StemTremolo) (interfaces grob-interface stem-tremolo-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Stem_tremolo::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SustainPedal

SustainPedal grobs are created by: Piano_pedal_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: #t
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
text-spanner-interface

generic text spanner


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: (unset)
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: (unset)
dash-period (number)
the length of one dash + white space. Default value: (unset)
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: (unset)
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text). Default value: (unset)
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes Default value: (unset)
if-text-padding (number)
padding in case texts are there. Default value: (unset)
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: (unset)
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners. Default value: (unset)
piano-pedal-interface

A piano pedal sign

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SustainPedal) (interfaces grob-interface piano-pedal-interface text-spanner-interface text-interface self-alignment-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Sustain_pedal::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SustainPedalLineSpanner

SustainPedalLineSpanner grobs are created by: Piano_pedal_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: 1.0
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.2
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
piano-pedal-interface

A piano pedal sign

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SustainPedalLineSpanner) (interfaces grob-interface piano-pedal-interface axis-group-interface side-position-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

System

System grobs are created by: Score_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(0 1)
system-interface

Super grob, parent of all:

The columns of a score that form one line. The toplevel grob. Any grob has a Line_of_score as both X and Y reference point. The Paper_score contains one grob of this type. Control enters the Grob dependency calculation from this single Line_of_score object.


all-elements (list of grobs)
list of all grobs in this line. Needed for protecting grobs from GC. Default value: (unset)
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks. Default value: (unset)
columns (list of grobs)
list of grobs, typically containing paper-columns. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . System) (interfaces grob-interface system-interface axis-group-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SystemStartBar

SystemStartBar grobs are created by: System_start_delimiter_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

system-start-delimiter-interface

#'style can be bar-line, bracket or brace


arch-angle (number)
turning angle of the hook of a system brace Default value: (unset)
arch-height (dimension, in staff space)
height of the hook of a system brace. Default value: (unset)
arch-thick (number)
thickness of the hook of system brace. Default value: (unset)
arch-width (dimension, in staff space)
width of the hook of a system brace. Default value: (unset)
bracket-thick (number)
width of a system start bracket. . Default value: (unset)
collapse-height (dimension, in staff space)
Minimum height of system start delimiter. If equal or smaller, the bracket is removed. Default value: (unset)
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: bar-line
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: System_start_delimiter::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SystemStartBar) (interfaces grob-interface system-start-delimiter-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: System_start_delimiter::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SystemStartBrace

SystemStartBrace grobs are created by: System_start_delimiter_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'braces
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
system-start-delimiter-interface

#'style can be bar-line, bracket or brace


arch-angle (number)
turning angle of the hook of a system brace Default value: (unset)
arch-height (dimension, in staff space)
height of the hook of a system brace. Default value: (unset)
arch-thick (number)
thickness of the hook of system brace. Default value: (unset)
arch-width (dimension, in staff space)
width of the hook of a system brace. Default value: (unset)
bracket-thick (number)
width of a system start bracket. . Default value: (unset)
collapse-height (dimension, in staff space)
Minimum height of system start delimiter. If equal or smaller, the bracket is removed. Default value: 5.0
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: brace
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SystemStartBrace) (interfaces grob-interface system-start-delimiter-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: System_start_delimiter::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

SystemStartBracket

SystemStartBracket grobs are created by: System_start_delimiter_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

system-start-delimiter-interface

#'style can be bar-line, bracket or brace


arch-angle (number)
turning angle of the hook of a system brace Default value: 50.0
arch-height (dimension, in staff space)
height of the hook of a system brace. Default value: 1.5
arch-thick (number)
thickness of the hook of system brace. Default value: 0.25
arch-width (dimension, in staff space)
width of the hook of a system brace. Default value: 1.5
bracket-thick (number)
width of a system start bracket. . Default value: (unset)
collapse-height (dimension, in staff space)
Minimum height of system start delimiter. If equal or smaller, the bracket is removed. Default value: (unset)
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: bracket
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.25
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . SystemStartBracket) (interfaces grob-interface system-start-delimiter-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: System_start_delimiter::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TabNoteHead

TabNoteHead grobs are created by: Tab_note_heads_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line. Default value: (unset)
note-head-interface

Note head


accidental-grob (grob (GRaphical OBject))
Accidental for this note. Default value: (unset)
glyph-name-procedure (procedure)
Return name of character within font. Default value: (unset)
stem-attachment-function (procedure)
Where does the stem attach to the notehead? Function takes a symbol argument being the style. It returns a (X . Y) pair, specifying location in terms of note head bounding box. Default value: tablature-stem-attachment-function
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'default
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
rhythmic-head-interface

Note head or rest


dot (grob (GRaphical OBject))
reference to Dots object. Default value: (unset)
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc. Default value: (unset)
stem (grob (GRaphical OBject))
pointer to Stem object. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: '(0 . -0.65)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TabNoteHead) (interfaces grob-interface rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface text-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: tablature-molecule-callback

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TextScript

TextScript grobs are created by: A2_engraver and Text_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: #t
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.5
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: 2
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
text-script-interface

Any text script


script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts. Default value: 200
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TextScript) (interfaces grob-interface text-script-interface text-interface side-position-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TextSpanner

TextSpanner grobs are created by: Dynamic_engraver and Text_spanner_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: (unset)
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-spanner-interface

generic text spanner


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: (unset)
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: 0.2
dash-period (number)
the length of one dash + white space. Default value: 3.0
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: (unset)
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text). Default value: (unset)
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes Default value: (unset)
if-text-padding (number)
padding in case texts are there. Default value: 1.0
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'dashed-line
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners. Default value: -1
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TextSpanner) (interfaces grob-interface text-spanner-interface side-position-interface font-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Tie

Tie grobs are created by: Completion_heads_engraver and Tie_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 2.5

tie-interface

A tie connecting two noteheads. direction = Forced direction for all ties


control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape. Default value: (unset)
details (list)
alist of parameters for detailed grob behavior. Default value: '((ratio . 0.333) (height-limit . 1.0))
direction (direction)
up or down, left or right?. Default value: (unset)
heads (pair)
Pair of grob pointers, pointing to the two heads of the tie. Default value: (unset)
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: 2.5

staffline-clearance (dimension, in staff space)
don't get closer than this to stafflines. Default value: 0.35
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.2
x-gap (dimension, in staff space)
horizontal gap between notehead and tie. Default value: -0.1
y-offset (dimension, in staff space)
extra vertical offset for ties away from the center line. Default value: 0.6
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . Tie) (interfaces grob-interface tie-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Tie::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: Spanner::set_spacing_rods
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TieColumn

TieColumn grobs are created by: Tie_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

tie-column-interface

that sets tie directions in a tied chord


direction (direction)
up or down, left or right?. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: '()

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Tie_column::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TieColumn) (interfaces grob-interface tie-column-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TimeSignature

TimeSignature grobs are created by: Time_signature_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: all-visible

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: #t
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: (unset)
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'number
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item. Default value: 'time-signature
break-alignment-done (boolean)
mark flag to signal we've done alignment already. Default value: (unset)
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space. Default value: '((first-note extra-space . 2.0) (right-edge extra-space . 0.5) (staff-bar minimum-space . 2.0))
time-signature-interface

A time signature, in different styles. The following values for 'style are are recognized:


C
4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits.
neo_mensural
2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with neo-mensural style mensuration marks. All other time signatures are written with two digits.
mensural
2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with mensural style mensuration marks. All other time signatures are written with two digits.
1xxx
All time signatures are typeset with a single digit, e.g. 3/2 is written as 3. (Any symbol starting with the digit 1 will do.)

See also the test-file input/test/time.ly.


fraction (pair of numbers)
fraction of a time signature. Default value: (unset)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'C
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TimeSignature) (interfaces grob-interface time-signature-interface break-aligned-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Time_signature::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

TupletBracket

TupletBracket grobs are created by: Ligature_bracket_engraver and Tuplet_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -1
font-series (symbol)
partial font definition: medium, bold. Default value: 'bold
font-shape (symbol)
partial font definition: upright or italic. Default value: 'italic
tuplet-bracket-interface

A bracket with a number in the middle, used for tuplets.


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges Default value: (unset)
bracket-visibility (boolean or symbol)
This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to #'if-no-beam will make it print only if there is no beam associated with this tuplet bracket. Default value: (unset)
direction (direction)
up or down, left or right?. Default value: (unset)
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height). Default value: '(0.7 . 0.7)
gap (dimension, in staff space)
Size of a gap in a variable symbol. Default value: 2.0
left-position (number)
position of left part of spanner. Default value: (unset)
note-columns (pair)
list of NoteColumn grobs. Default value: (unset)
number-visibility (boolean or symbol)
Like bracket-visibility, but for the number. Default value: (unset)
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 0.9
right-position (number)
position of right part of spanner. Default value: (unset)
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket Default value: '(-0.2 . -0.2)
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Tuplet_bracket::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: Tuplet_bracket::before_line_breaking
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . TupletBracket) (interfaces grob-interface text-interface tuplet-bracket-interface font-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Tuplet_bracket::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

UnaCordaPedal

UnaCordaPedal grobs are created by: Piano_pedal_engraver

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).

Default value: (unset)

breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.). Default value: (unset)
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM). Default value: #t
font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'roman
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: 'italic
self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing. Default value: 0

self-alignment-Y (number)
like self-alignment-X but for Y axis. Default value: (unset)
text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . UnaCordaPedal) (interfaces grob-interface text-interface self-alignment-interface font-interface item-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Text_item::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

UnaCordaPedalLineSpanner

UnaCordaPedalLineSpanner grobs are created by: Piano_pedal_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: -1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: 1.0
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1.2
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
piano-pedal-interface

A piano pedal sign

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . UnaCordaPedalLineSpanner) (interfaces grob-interface piano-pedal-interface axis-group-interface side-position-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

VaticanaLigature

VaticanaLigature grobs are created by: Vaticana_ligature_engraver

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: (unset)
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: (unset)
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
vaticana-ligature-interface

A vaticana style gregorian ligature


add-cauda (boolean)
does this flexa require an additional cauda on the left side?. Default value: (unset)
add-join (boolean)
is this ligature head joined with the next one by a vertical line? Default value: (unset)
add-stem (boolean)
is this ligature head a virga and therefore needs an additional stem on the right side? Default value: (unset)
delta-pitch (number)
the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes Default value: (unset)
flexa-height (dimension, in staff space)
height of a flexa shape in a ligature grob in staff_space. Default value: (unset)
flexa-width (dimension, in staff space)
width of a flexa shape in a ligature grob in staff_space. Default value: 2.0
glyph-name (string)
a name of character within font. Default value: (unset)
ligature-primitive-callback (procedure)
callback that brews ligature head. Default value: Vaticana_ligature::brew_ligature_primitive
thickness (number)
thickness, measured in stafflinethickness. Default value: 0.6
x-offset (dimension, in staff space)
extra horizontal offset for ligature heads. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . VaticanaLigature) (interfaces grob-interface vaticana-ligature-interface font-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Vaticana_ligature::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

VerticalAlignment

VerticalAlignment grobs are created by: Vertical_align_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
align-interface

Order grobs top to bottom/left to right/right to left etc.


align-dir (direction)
Which side to align? -1: left side, 0: around center of width, 1: right side. Default value: (unset)
alignment-done (boolean)
boolean to administrate whether we've done the alignment already (to ensure that the process is done only once). Default value: (unset)
axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
center-element (grob (GRaphical OBject))
grob which will be at the center of the group after aligning (when using Align_interface::center_on_element). . Default value: (unset)
elements (list of grobs)
list of grobs, type depending on the Grob where this is set in. Default value: (unset)
forced-distance (dimension, in staff space)
forced distance for an alignment. Default value: (unset)
stacking-dir (direction)
stack contents of grobs in which direction ?. Default value: -1
threshold (pair of numbers)
(cons MIN MAX), where MIN and MAX are dimensions in staffspace. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . VerticalAlignment) (interfaces grob-interface align-interface axis-group-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

VerticalAxisGroup

VerticalAxisGroup grobs are created by: Axis_group_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number. Default value: '(1)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: Axis_group_interface::group_extent_callback

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . VerticalAxisGroup) (interfaces grob-interface axis-group-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: (unset)

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

VoiceFollower

VoiceFollower grobs are created by: Note_head_line_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

line-spanner-interface

Generic line drawn between two objects, eg. for use with glissandi. gap is measured in staff-spaces. The property 'type is one of: line, dashed-line, trill, dotted-line or zigzag.


dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line). Default value: (unset)
dash-period (number)
the length of one dash + white space. Default value: (unset)
gap (dimension, in staff space)
Size of a gap in a variable symbol. Default value: 0.5
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. . Default value: 'line
thickness (number)
thickness, measured in stafflinethickness. Default value: (unset)
zigzag-length (dimension, in staff space)
The length of the lines of a zigzag - relative to zigzag-width. a value of 1 gives 60-degree zigzags. Default value: (unset)
zigzag-width (dimension, in staff space)
the width of one zigzag-squiggle, measured in staff space. The width will be adjusted so that the line can be constructed from a whole number of squiggles. Default value: (unset)
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: #f

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: #f
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: (unset)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: Line_spanner::after_line_breaking
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . VoiceFollower) (interfaces grob-interface line-spanner-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Line_spanner::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

VoltaBracket

VoltaBracket grobs are created by: Volta_engraver

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. . Default value: (unset)

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object Default value: (unset)
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size. Default value: (unset)
font-family (symbol)
partial font definition: music roman braces dynamic math ... Default value: 'number
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0. Default value: (unset)
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers. Default value: (unset)
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger. Default value: -2
font-series (symbol)
partial font definition: medium, bold. Default value: (unset)
font-shape (symbol)
partial font definition: upright or italic. Default value: (unset)
side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?. Default value: 1
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from . Default value: (unset)
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding). Default value: 5
padding (dimension, in staff space)
add this much extra space between objects that are next to each other. Default value: 1
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this. Default value: (unset)
side-support-elements (list of grobs)
the support, a list of grobs. Default value: (unset)
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

Default value: (unset)

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text. Default value: (unset)
text (markup)
Text markup. See the notation manual for more information. Default value: (unset)
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics). Default value: (unset)
volta-bracket-interface

Volta bracket with number


bars (list of grobs)
list of barline pointers. Default value: (unset)
height (dimension, in staff space)
in staffspace. Default value: 2.0
thickness (number)
thickness, measured in stafflinethickness. Default value: 1.6
grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

Default value: (unset)

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Default value: (unset)

Y-extent (pair of numbers)
Store extent. internal use only. Default value: (unset)
Y-extent-callback (procedure)
see X-extent-callback. Default value: (unset)
Y-offset-callbacks (list)
see X-offset-callbacks. Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored. Default value: (unset)
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored. Default value: (unset)
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob. Default value: (unset)
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes. Default value: (unset)
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space. Default value: (unset)
extra-Y-extent (pair of numbers)
see extra-Y-extent. Default value: (unset)
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.

Default value: (unset)

interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field. Default value: (unset)
layer (number)
The output layer [0..2]. The default is 1. Default value: (unset)
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

Default value: '((name . VoltaBracket) (interfaces grob-interface volta-bracket-interface text-interface side-position-interface font-interface spanner-interface))

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space. Default value: (unset)
minimum-Y-extent (pair of numbers)
see minimum-Y-extent. Default value: (unset)
molecule (unknown)
Cached output of the molecule-callback. Default value: (unset)
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

Default value: Volta_bracket_interface::brew_molecule

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored. Default value: (unset)
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in. Default value: (unset)
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. . Default value: (unset)

Graphical Object Interfaces

accidental-interface

a single accidental


accidentals (list)
List of alteration numbers.
cautionary (boolean)
is this a cautionary accidentals.?
cautionary-style (symbol)
style of cautionary accidentals. Choices are 'smaller (one size smaller) or 'parentheses.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .
tie (grob (GRaphical OBject))

This grob interface is used in the following graphical objects: Accidental

accidental-placement-interface

Take care of complex accidental collisions.


accidental-grobs (list)
Alis with (NOTENAME . GROBLIST) entries
alignment-done (boolean)
boolean to administrate whether we've done the alignment already (to ensure that the process is done only once).
left-padding (dimension, in staff space)
space left of accs.
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.
right-padding (dimension, in staff space)
space right of accs.

This grob interface is used in the following graphical objects: AccidentalPlacement

align-interface

Order grobs top to bottom/left to right/right to left etc.


align-dir (direction)
Which side to align? -1: left side, 0: around center of width, 1: right side.
alignment-done (boolean)
boolean to administrate whether we've done the alignment already (to ensure that the process is done only once).
axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number.
center-element (grob (GRaphical OBject))
grob which will be at the center of the group after aligning (when using Align_interface::center_on_element). .
elements (list of grobs)
list of grobs, type depending on the Grob where this is set in.
forced-distance (dimension, in staff space)
forced distance for an alignment.
stacking-dir (direction)
stack contents of grobs in which direction ?.
threshold (pair of numbers)
(cons MIN MAX), where MIN and MAX are dimensions in staffspace.

This grob interface is used in the following graphical objects: VerticalAlignment

ambitus-interface

An ambitus represents the pitch range of a voice.


accidentals (list)
List of alteration numbers.
c0-position (integer)
integer indicating the position of central C.
join-heads (boolean)
Whether to join the noteheads of an ambitus grob with a vertical line.
note-head-style (string)
name of the font character to be used as note heads in the ambitus grob.
pitch-max (pitch)
FIXME, JUNKME
pitch-min (pitch)
FIXME, JUNKME

This grob interface is used in the following graphical objects: Ambitus

arpeggio-interface

Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.


arpeggio-direction (direction)
If set, put an arrow on the arpeggio squiggly line.
stems (list of grobs)
list of stem objects, corresponding to the notes that the arpeggio has to be before.

This grob interface is used in the following graphical objects: Arpeggio

axis-group-interface

a group of coupled grobs


axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number.

This grob interface is used in the following graphical objects: VerticalAxisGroup, VerticalAlignment, UnaCordaPedalLineSpanner, System, SustainPedalLineSpanner, SostenutoPedalLineSpanner, RemoveEmptyVerticalGroup, PaperColumn, NoteColumn, NoteCollision, NonMusicalPaperColumn, DynamicLineSpanner, DotColumn, BreakAlignment and BreakAlignGroup

bar-line-interface

Bar line.

Print a special bar symbol. It replaces the regular bar symbol with a special symbol. The argument bartype is a string which specifies the kind of bar to print. Options are :|, |:, :|:, ||, |., .|, and .|..

These produce, respectively, a right repeat, a left repeat, a double repeat, a double bar, a start bar, an end bar, and a thick double bar. If bartype is set to empty then nothing is printed, but a line break is allowed at that spot.


bar-size (dimension, in staff space)
size of a bar line.
bar-size-procedure (procedure)
Procedure that computes the size of a bar line.
break-glyph-function (procedure)
function taking glyph and break-direction, returning the glyph at a line break.
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. .
hair-thickness (number)
thickness, measured in stafflinethickness.
kern (dimension, in staff space)
amount of extra white space to add. For barline, space after a thick line.
thick-thickness (number)
thickness, measured in stafflinethickness.
thin-kern (number)
space after a hair-line.

This grob interface is used in the following graphical objects: SpanBar and BarLine

bass-figure-interface

A bass figure, including bracket

This grob interface is used in the following graphical objects: BassFigure

beam-interface

A beam.

#'thickness= weight of beams, in staffspace We take the least squares line through the ideal-length stems, and then damp that using damped = tanh (slope)

this gives an unquantized left and right position for the beam end. Then we take all combinations of quantings near these left and right positions, and give them a score (according to how close they are to the ideal slope, how close the result is to the ideal stems, etc.). We take the best scoring combination.


auto-knee-gap (dimension, in staff space)
If a gap is found between noteheads where a horizontal beam fits that is larger than this number, make a kneed beam.
beamed-stem-shorten (list)
shorten beamed stems in forced direction.
chord-tremolo (boolean)
if set, this beam is a tremolo. TODO: use interface for this!
concaveness-gap (dimension, in staff space)
A beam is considered to be concave if the distance of an inner notehead to the line between two outer noteheads is bigger than this gap.
concaveness-threshold (number)
A beam is considered to be concave is concaveness is bigger than this threshold. Concaveness is calculated as the sum of the vertical distances of inner noteheads that fall outside the interval of the two outer noteheads, to the vertically nearest outer notehead, divided by the square of the inner notes involved.
damping (integer)
amount of beam slope damping should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams .
dir-function (procedure)
function of type (count total)->direction. Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.

The ways to calculate the direction of a beam work as follows:

majority
number count of up or down notes
mean
mean center distance of all notes
median
mean centre distance weighted per note

flag-width-function (procedure)
Procedure that computes the width of a half-beam (a non-connecting beam.).
gap (dimension, in staff space)
Size of a gap in a variable symbol.
gap-count (integer)
Number of gapped beams for tremolo.
knee (boolean)
Is this beam a knee?
least-squares-dy (number)
ideal beam slope, without damping.
neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate.
position-callbacks (list)
list of functions set spanner positions.
positions (pair)
cons of staff positions (LEFT . RIGHT
quant-score (number)
Beam quanting score - can be stored for debugging
shorten (dimension, in staff space)
the amount of space that a stem should be shortened (DOCME!)
space-function (procedure)
return interbeam space given Beam grob and multiplicity.
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: Beam

break-aligned-interface

Items that are aligned in prefatory matter.

The spacing of these items is controlled by the space-alist property. It contains a list break-align-symbols with a specification of the associated space. The space definition is either (extra-space . number), which adds space after the symbol, (minimum-space . ms), which pads the space until it it is ms.

Special keys for the alist are 'first-note and 'next-note, signifyign the first note on a line, and the next note halfway a line.

Rules for this spacing are much more complicated than this. See [Wanske] page 126 - 134, [Ross] pg 143 - 147


break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item.
break-alignment-done (boolean)
mark flag to signal we've done alignment already.
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space.

This grob interface is used in the following graphical objects: TimeSignature, StanzaNumber, LeftEdge, KeySignature, InstrumentName, DoublePercentRepeat, Custos, Clef, BreathingSign, BreakAlignGroup, BarNumber, BarLine and Ambitus

break-alignment-interface

See break-aligned-interface.


break-alignment-done (boolean)
mark flag to signal we've done alignment already.

This grob interface is used in the following graphical objects: BreakAlignment

breathing-sign-interface

A breathing sign.


direction (direction)
up or down, left or right?.

This grob interface is used in the following graphical objects: BreathingSign

chord-name-interface

generate a chord name


bass (list)
musical-pitch, optional.
begin-of-line-visible (boolean)
?
chord (pair)
?
inversion (list)
musical-pitch, optional.
pitches (list)
list of musical-pitch.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: ChordName

clef-interface

A clef sign


full-size-change (boolean)
if set, don't make a change clef smaller.
glyph-name (string)
a name of character within font.
non-default (boolean)
not set because of existence of a bar?.

This grob interface is used in the following graphical objects: Clef

cluster-beacon-interface

A place holder for the cluster spanner to determine the vertical extents of a cluster spanner at this X position.


positions (pair)
cons of staff positions (LEFT . RIGHT

This grob interface is used in the following graphical objects: ClusterSpannerBeacon

cluster-interface

A graphically drawn musical cluster.

padding adds to the vertical extent of the shape (top and bottom) and is expressed in units of staffspace. Since the pitch range of a single pitch is infinitely small, if padding is set to 0.0, this possibly results in an invisible shape, if you,for example, say c-\startCluster d e-\endCluster. The default value for padding therefore is 0.25, such that a single pitch roughly shows the same height as a note head.

style controls the shape of cluster segments. Valid values include 'leftsided-stairs', 'rightsided-stairs', 'centered-stairs', and 'ramp'.


columns (list of grobs)
list of grobs, typically containing paper-columns.
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: ClusterSpanner

custos-interface

Engrave custodes


adjust-if-on-staffline (boolean)
If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween.
neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate.
neutral-position (number)
Position (in half staff spaces) where to flip the direction of stems: by default, custodes above this position get their stems downwards; custodes below this position get their stems upwards. A value of 0 designates the center of the staff. Use property neutral-direction to control the behaviour of stems on the neutral position itself. (Note: currently, neutral-position is supported only for custodes; for stems of note heads, neutral-position is currently fixed to 0, i.e. the middle of the staff.)
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: Custos

dot-column-interface

Interface that groups dots so they form a column


direction (direction)
up or down, left or right?.
stem (grob (GRaphical OBject))
pointer to Stem object.

This grob interface is used in the following graphical objects: DotColumn

dots-interface

The dots to go with a notehead/rest. A separate interface, since they are a party in collision resolution. #'direction is the Direction to handle staff-line collisions in.


direction (direction)
up or down, left or right?.
dot-count (integer)
number of dots.

This grob interface is used in the following graphical objects: Dots

dynamic-interface

Any kind of loudness sign

This grob interface is used in the following graphical objects: Hairpin, DynamicText and DynamicLineSpanner

finger-interface

A fingering instruction

This grob interface is used in the following graphical objects: Fingering

font-interface

Any symbol that is typeset through fixed sets of glyphs (ie. fonts)


font (unknown)
Cached font metric object
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size.
font-family (symbol)
partial font definition: music roman braces dynamic math ...
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0.
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers.
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger.
font-series (symbol)
partial font definition: medium, bold.
font-shape (symbol)
partial font definition: upright or italic.

This grob interface is used in the following graphical objects: VoltaBracket, VaticanaLigature, UnaCordaPedal, TupletBracket, TimeSignature, TextSpanner, TextScript, TabNoteHead, SystemStartBrace, SustainPedal, Stem, StanzaNumber, SpanBar, SostenutoPedal, Script, Rest, RehearsalMark, PercentRepeat, OttavaSpanner, OctavateEight, NoteName, NoteHead, MultiMeasureRestText, MultiMeasureRestNumber, MultiMeasureRest, MetronomeMark, MensuralLigature, LyricText, KeySignature, InstrumentName, Fingering, DynamicText, DoublePercentRepeat, Dots, Custos, Clef, ChordName, BreathingSign, BassFigure, BarNumber, BarLine, Arpeggio, Ambitus and Accidental

gregorian-ligature-interface

A gregorian ligature


ascendens (boolean)
is this neume of an ascending?.
auctum (boolean)
is this neume augmented?.
cavum (boolean)
is this neume outlined?.
context-info (integer)
DOCME
deminutum (boolean)
is this neume deminished?.
descendens (boolean)
is this neume of a descendent type?.
inclinatum (boolean)
is this neume an inclinatum?.
linea (boolean)
attach vertical lines to this neume?.
oriscus (boolean)
is this neume an oriscus?.
pes-or-flexa (boolean)
shall this neume be joined with the previous head?.
prefix-set (number)
DOCME
quilisma (boolean)
is this neume a quilisma?.
stropha (boolean)
is this neume a stropha?.
virga (boolean)
is this neume a virga?.

This grob interface is used in the following graphical objects: none

grob-interface

In music notation, lots of symbols are related in some way. You can think of music notation as a graph where nodes are formed by the symbols, and the arcs by their relations. A grob is a node in that graph. The directed edges in the graph are formed by references to other grobs (i.e. pointers). This big graph of grobs specifies the notation problem. The solution of this problem is a description of the printout in closed form, i.e. a list of values. These values are Molecules.

All grobs have an X and Y-position on the page. These X and Y positions are stored in a relative format, so they can easily be combined by stacking them, hanging one grob to the side of another, and coupling them into a grouping-grob.

Each grob has a reference point (a.k.a. parent): the position of a grob is stored relative to that reference point. For example the X-reference point of a staccato dot usually is the note head that it applies to. When the note head is moved, the staccato dot moves along automatically.

A grob is often associated with a symbol, but some grobs do not print any symbols. They take care of grouping objects. For example, there is a separate grob that stacks staves vertically. The NoteCollision is also an abstract grob: it only moves around chords, but doesn't print anything.


X-extent (pair of numbers)
Store extent. internal use only.
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Y-extent (pair of numbers)
Store extent. internal use only.
Y-extent-callback (procedure)
see X-extent-callback.
Y-offset-callbacks (list)
see X-offset-callbacks.
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored.
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored.
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes.
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space.
extra-Y-extent (pair of numbers)
see extra-Y-extent.
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.
interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field.
layer (number)
The output layer [0..2]. The default is 1.
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space.
minimum-Y-extent (pair of numbers)
see minimum-Y-extent.
molecule (unknown)
Cached output of the molecule-callback.
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored.
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in.
transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. .

This grob interface is used in the following graphical objects: VoltaBracket, VoiceFollower, VerticalAxisGroup, VerticalAlignment, VaticanaLigature, UnaCordaPedalLineSpanner, UnaCordaPedal, TupletBracket, TimeSignature, TieColumn, Tie, TextSpanner, TextScript, TabNoteHead, SystemStartBracket, SystemStartBrace, SystemStartBar, System, SustainPedalLineSpanner, SustainPedal, StemTremolo, Stem, StanzaNumber, StaffSymbol, StaffSpacing, SpanBar, SpacingSpanner, SostenutoPedalLineSpanner, SostenutoPedal, Slur, SeparationItem, SeparatingGroupSpanner, ScriptColumn, Script, RestCollision, Rest, RepeatSlash, RemoveEmptyVerticalGroup, RehearsalMark, PianoPedalBracket, PhrasingSlur, PercentRepeat, PaperColumn, OttavaSpanner, OctavateEight, NoteSpacing, NoteName, NoteHead, NoteColumn, NoteCollision, NonMusicalPaperColumn, MultiMeasureRestText, MultiMeasureRestNumber, MultiMeasureRest, MetronomeMark, MensuralLigature, MeasureGrouping, LyricText, LyricHyphen, LyricExtender, LigatureBracket, LeftEdge, KeySignature, InstrumentName, HorizontalBracket, Hairpin, Glissando, Fingering, DynamicText, DynamicLineSpanner, DoublePercentRepeat, Dots, DotColumn, Custos, ClusterSpannerBeacon, ClusterSpanner, Clef, ChordName, BreathingSign, BreakAlignment, BreakAlignGroup, Beam, BassFigure, BarNumber, BarLine, Arpeggio, Ambitus, AccidentalPlacement and Accidental

hairpin-interface

hairpin crescendo.


dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
dash-period (number)
the length of one dash + white space.
grow-direction (direction)
crescendo or decrescendo?.
height (dimension, in staff space)
in staffspace.
if-text-padding (number)
padding in case texts are there.
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: Hairpin

hara-kiri-group-interface

As Vertical_group_spanner, but keep track of interesting items. If we don't contain any interesting items after linebreaking, then gracefully commit suicide. Objective: don't disgrace Lily by typesetting empty lines in orchestral scores.


items-worth-living (list of grobs)
list of interesting items. If empty in a particular system, clear that system.
remove-first (boolean)
Remove the first staff of a orchestral score?

This grob interface is used in the following graphical objects: RemoveEmptyVerticalGroup

horizontal-bracket-interface

A horizontal bracket encompassing notes.


columns (list of grobs)
list of grobs, typically containing paper-columns.
direction (direction)
up or down, left or right?.
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: HorizontalBracket

item-interface

Grobs can be distinguished in their role in the horizontal spacing. Many grobs define constraints on the spacing by their sizes. For example, note heads, clefs, stems, and all other symbols with a fixed shape. These grobs form a subtype called Item.

Some items need special treatment for line breaking. For example, a clef is normally only printed at the start of a line (i.e. after a line break). To model this, `breakable' items (clef, key signature, bar lines, etc.) are copied twice. Then we have three versions of each breakable item: one version if there is no line break, one version that is printed before the line break (at the end of a system), one version that is printed after the line break.

Whether these versions are visible and take up space, is determined by the outcome of the break-visibility. This grob property is a function taking a direction (-1, 0 or 1) as argument. It returns a cons of booleans, signifying whether this grob should be transparent and have no extent.


break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).
breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.).
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).

This grob interface is used in the following graphical objects: UnaCordaPedal, TimeSignature, TextScript, TabNoteHead, SustainPedal, StemTremolo, Stem, StanzaNumber, StaffSpacing, SpanBar, SostenutoPedal, SeparationItem, ScriptColumn, Script, RestCollision, Rest, RepeatSlash, RemoveEmptyVerticalGroup, RehearsalMark, PaperColumn, OctavateEight, NoteSpacing, NoteName, NoteHead, NoteColumn, NoteCollision, NonMusicalPaperColumn, MetronomeMark, LyricText, LeftEdge, KeySignature, InstrumentName, Fingering, DynamicText, DoublePercentRepeat, Dots, DotColumn, Custos, ClusterSpannerBeacon, Clef, ChordName, BreathingSign, BreakAlignment, BreakAlignGroup, BreakAlignGroup, BassFigure, BarNumber, BarLine, Arpeggio, Ambitus, AccidentalPlacement and Accidental

key-signature-interface

A group of accidentals, to be printed as signature sign.


c0-position (integer)
integer indicating the position of central C.
new-accidentals (list)
list of (pitch, accidental) pairs.
old-accidentals (list)
list of (pitch, accidental) pairs.

This grob interface is used in the following graphical objects: KeySignature

ligature-bracket-interface

A bracket indicating a ligature in the original edition


height (dimension, in staff space)
in staffspace.
ligature-primitive-callback (procedure)
callback that brews ligature head.
thickness (number)
thickness, measured in stafflinethickness.
width (dimension, in staff space)
width of a grob measured in staff space.

This grob interface is used in the following graphical objects: none

ligature-interface

A ligature

This grob interface is used in the following graphical objects: none

line-spanner-interface

Generic line drawn between two objects, eg. for use with glissandi. gap is measured in staff-spaces. The property 'type is one of: line, dashed-line, trill, dotted-line or zigzag.


dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
dash-period (number)
the length of one dash + white space.
gap (dimension, in staff space)
Size of a gap in a variable symbol.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .
thickness (number)
thickness, measured in stafflinethickness.
zigzag-length (dimension, in staff space)
The length of the lines of a zigzag - relative to zigzag-width. a value of 1 gives 60-degree zigzags.
zigzag-width (dimension, in staff space)
the width of one zigzag-squiggle, measured in staff space. The width will be adjusted so that the line can be constructed from a whole number of squiggles.

This grob interface is used in the following graphical objects: VoiceFollower and Glissando

lyric-extender-interface

The extender is a simple line at the baseline of the lyric that helps show the length of a melissima (tied/slurred note).


height (dimension, in staff space)
in staffspace.
right-trim-amount (dimension, in staff space)
shortening of the lyric extender on the right.
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics).

This grob interface is used in the following graphical objects: LyricExtender

lyric-hyphen-interface

A centred hyphen is a simple line between lyrics used to divide syllables. The length of the hyphen line should stretch based on the size of the gap between syllables.


height (dimension, in staff space)
in staffspace.
maximum-length (dimension, in staff space)
don't make Grob longer than this
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. .

thickness (number)
thickness, measured in stafflinethickness.
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics).

This grob interface is used in the following graphical objects: LyricHyphen

lyric-syllable-interface

a single piece of lyrics


alignment (number)
alignment of lyrics on notehead, -1 is LEFT, 0 is CENTRE, 1 is RIGHT .
begin-alignment (number)
proportion of lyric length from beginning to align with note-head for left-aligned lyrics.
end-alignment (number)
proportion of lyric length from end to align with note-head for right-aligned lyrics.
ignore-length-mismatch (boolean)
if #t, stanzas with shorter lyrics can be moved away from their respective note-head by the lyric alignment code.
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics).

This grob interface is used in the following graphical objects: LyricText

mark-interface

a rehearsal mark

This grob interface is used in the following graphical objects: RehearsalMark

measure-grouping-interface

indicate groups of beats. Valid choices for 'type are 'bracket and 'triangle.


height (dimension, in staff space)
in staffspace.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: MeasureGrouping

mensural-ligature-interface

A mensural ligature


delta-pitch (number)
the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
flexa-width (dimension, in staff space)
width of a flexa shape in a ligature grob in staff_space.
head-width (dimension, in staff space)
width of this ligature head
join-left (boolean)
is this ligature head joined with the previous one by a vertical line?
join-left-amount (number)
DOCME
ligature-primitive-callback (procedure)
callback that brews ligature head.
primitive (integer)
Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. [TODO: change this]
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: MensuralLigature

metronome-mark-interface

a rehearsal mark

This grob interface is used in the following graphical objects: MetronomeMark

multi-measure-rest-interface

A rest that spans a whole number of measures.


expand-limit (integer)
maximum number of measures expanded in church rests.
hair-thickness (number)
thickness, measured in stafflinethickness.
measure-count (integer)
number of measures for a multimeasure rest.
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. .

thick-thickness (number)
thickness, measured in stafflinethickness.
use-breve-rest (boolean)
boolean that tells multi-measure-rest to use a breve rest to represent the duration of 1 measure instead of whole rest. It defaults to false. It is set to true when the duration of a measure is a breve or longer.

This grob interface is used in the following graphical objects: PercentRepeat and MultiMeasureRest

note-collision-interface

An object that handles collisions between notes with different stem directions and horizontal shifts. Most of the interesting properties are to be set in note-column-interface: these are force-hshift and horizontal-shift.


collision-done (boolean)

merge-differently-dotted (boolean)
Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by note-collision-interface .
merge-differently-headed (boolean)
Merge noteheads in collisions, even if they have different note heads. The smaller of the two heads will be rendered invisible. This used polyphonic guitar notation. The value of this setting is used by note-collision-interface .

This grob interface is used in the following graphical objects: NoteCollision

note-column-interface

Stem and noteheads combined


accidentals (list)
List of alteration numbers.
arpeggio (grob (GRaphical OBject))
pointer to arpeggio object.
force-hshift (number)
amount of collision_note_width that overides automatic collision settings. This is used by note-collision-interface.
horizontal-shift (integer)
integer that identifies ranking of note-column for horizontal shifting. This is used by note-collision-interface.
note-heads (list of grobs)
List of note head grobs
rest (grob (GRaphical OBject))
the staff symbol grob that we're in.
rest-collision (grob (GRaphical OBject))
rest collision that a rest is in.
stem (grob (GRaphical OBject))
pointer to Stem object.

This grob interface is used in the following graphical objects: NoteColumn

note-head-interface

Note head


accidental-grob (grob (GRaphical OBject))
Accidental for this note.
glyph-name-procedure (procedure)
Return name of character within font.
stem-attachment-function (procedure)
Where does the stem attach to the notehead? Function takes a symbol argument being the style. It returns a (X . Y) pair, specifying location in terms of note head bounding box.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: TabNoteHead and NoteHead

note-name-interface

Note name


style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: NoteName

note-spacing-interface


knee-spacing-correction (number)
optical correction amount for knees. 0: no correction; 1: full correction.
left-items (list of grobs)

right-items (list of grobs)

stem-spacing-correction (number)
optical correction amount. [TODO: doco]

This grob interface is used in the following graphical objects: NoteSpacing

paper-column-interface

Paper_columns form the top-most item parent. (The Paper_columns X parent is System, which is a spanner.)

Paper_columns form the units for the spacing engine. They are numbered, the first (leftmost) is column 0. Numbering happens before line-breaking, and columns are not renumbered after line breaking.

Since many columns go unused, you should only use the rank field to get ordering information. Two adjacent columns may have non-adjacent numbers.

Don't be confused by right-items: each spacing wish can also contain a number of items, with which a spacing constraint may be kept. It's a little baroque, but it might come in handy later on?


between-cols (pair)
Where to attach a loose column to
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks.
bounded-by-me (list of grobs)
list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced.
shortest-playing-duration (moment)
duration of the shortest playing in that column.
shortest-starter-duration (moment)
duration of the shortest notes that starts exactly in this column.
when (moment)
when does this column happen?.

This grob interface is used in the following graphical objects: PaperColumn and NonMusicalPaperColumn

percent-repeat-interface

Repeats that look like percent signs


slope (number)
some kind of slope
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: RepeatSlash, PercentRepeat and DoublePercentRepeat

piano-pedal-bracket-interface


pedal-text (grob (GRaphical OBject))
Pointer to the text of a mixed-style piano pedal.

This grob interface is used in the following graphical objects: PianoPedalBracket

piano-pedal-interface

A piano pedal sign

This grob interface is used in the following graphical objects: UnaCordaPedalLineSpanner, SustainPedalLineSpanner, SustainPedal, SostenutoPedalLineSpanner and PianoPedalBracket

rest-collision-interface

Move around ordinary rests (not multi-measure-rests) to avoid conflicts.


elements (list of grobs)
list of grobs, type depending on the Grob where this is set in.
maximum-rest-count (integer)
kill off rests so we don't more than this number left.
minimum-distance (dimension, in staff space)
minimum distance between notes and rests.
rest-collision-done (boolean)
Is this rest collision processed yet?

This grob interface is used in the following graphical objects: RestCollision

rest-interface

a rest


minimum-beam-collision-distance (dimension, in staff space)
Minimum distance to beam for a rest collision.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: Rest and MultiMeasureRest

rhythmic-grob-interface

Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.

This grob interface is used in the following graphical objects: Rest, NoteHead, LyricText, ChordName and BassFigure

rhythmic-head-interface

Note head or rest


dot (grob (GRaphical OBject))
reference to Dots object.
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc.
stem (grob (GRaphical OBject))
pointer to Stem object.

This grob interface is used in the following graphical objects: TabNoteHead, Rest and NoteHead

script-column-interface

An interface that sorts scripts according to their script-priority

This grob interface is used in the following graphical objects: ScriptColumn

script-interface


script-molecule (pair)
Index code for script - internal, see script.cc.
script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts.

This grob interface is used in the following graphical objects: Script and DynamicText

self-alignment-interface

Position self using some alignment


self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing.

self-alignment-Y (number)
like self-alignment-X but for Y axis.

This grob interface is used in the following graphical objects: UnaCordaPedal, SustainPedal, SostenutoPedal, RehearsalMark, OctavateEight, MultiMeasureRestText, MultiMeasureRestNumber, LyricText, InstrumentName, Hairpin, Fingering, DynamicText, BassFigure and BarNumber

separation-item-interface

Item that computes widths to generate spacing rods.

Calculate dimensions for the Separating_group_spanner; this has to be an item to get dependencies correct.


X-extent (pair of numbers)
Store extent. internal use only.
conditional-elements (list of grobs)
Internal use only
elements (list of grobs)
list of grobs, type depending on the Grob where this is set in.
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.

This grob interface is used in the following graphical objects: SeparationItem

separation-spanner-interface

Spanner that containing separation-item-interface grobs to calculate rods

This grob interface is used in the following graphical objects: SeparatingGroupSpanner

side-position-interface

Position a victim object (this one) next to other objects (the support). In this case, the property direction signifies where to put the victim object relative to the support (left or right, up or down?)


direction (direction)
up or down, left or right?.
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from .
minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding).
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this.
side-support-elements (list of grobs)
the support, a list of grobs.
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.

This grob interface is used in the following graphical objects: VoltaBracket, UnaCordaPedalLineSpanner, TextSpanner, TextScript, SustainPedalLineSpanner, SostenutoPedalLineSpanner, Script, RehearsalMark, OttavaSpanner, OctavateEight, MultiMeasureRestText, MultiMeasureRestNumber, MetronomeMark, MeasureGrouping, InstrumentName, HorizontalBracket, Fingering, DynamicLineSpanner, BarNumber and Arpeggio

slur-interface

A slur


attachment (pair)
cons of symbols indicating how a slur should be attached at the ends. The format is '(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of these symbols may be alongside-stem, stem, head or loose-end.
attachment-offset (pair)
cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs. [fixme: we need more documentation here]. .
beautiful (number)
number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.
control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape.
dashed (number)
[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.
de-uglify-parameters (list)
list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.
details (list)
alist of parameters for detailed grob behavior.
direction (direction)
up or down, left or right?.
extremity-offset-alist (list)
an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem.
extremity-rules (list)
an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried.
height-limit (dimension, in staff space)
Maximum slur height, long slurs approach this height.

For small width w, the height should be proportional to w, for w -> infinity, the height should rise to limit h_infinity asymptotically.

Hence we take F (x) such that

                 F (0) = 0 , F' (0) = 1, and F (infinity) = 1
               
where
                 h = height-limit * F (x * ratio / height-limit)
               
Currently, for F we use
                 F (x) = 2/pi * atan (pi * x/2)
               

ratio (number)
Slur parameter. See height-limit.
slope-limit (number)
set slope to zero if slope is running away steeper than this.
thickness (number)
thickness, measured in stafflinethickness.
y-free (dimension, in staff space)
minimal vertical gap between slur and noteheads or stems.

This grob interface is used in the following graphical objects: Slur and PhrasingSlur

spaceable-grob-interface

A grob (a Paper_column) that takes part in the spacing problem.


ideal-distances (list)
(OBJ . (DIST . STRENGTH)) pairs.
left-neighbors (list of grobs)
List of spacing-wish grobs that are close to the current column.

The closest spacing-wishes determine the actual distances between the columns.

measure-length (moment)
Length of a measure. Used in some spacing situations.
minimum-distances (list)
list of rods (ie. (OBJ . DIST) pairs).
penalty (number)
Penalty for breaking at this column. 10000 or more means forbid linebreak, -10000 or less means force linebreak. Other values influence linebreaking decisions as a real penalty.
right-neighbors (list of grobs)
see left-neighbors
spacing-wishes (list of grobs)
List of note spacing or staff spacing objects.

This grob interface is used in the following graphical objects: PaperColumn and NonMusicalPaperColumn

spacing-interface

Something to do with line breaking and spacing. Kill this one after determining line breaks.

This grob interface is used in the following graphical objects: StaffSpacing, SpacingSpanner, SeparationItem, SeparatingGroupSpanner and NoteSpacing

spacing-spanner-interface

The space taken by a note is dependent on its duration. Doubling a duration adds spacing-increment to the space. The most common shortest note gets shortest-duration-space. Notes that are even shorter are spaced proportonial to their duration.

Typically, the increment is the width of a black note head. In a piece with lots of 8th notes, and some 16th notes, the eighth note gets 2 note heads width (i.e. the space following a note is 1 note head width) A 16th note is followed by 0.5 note head width. The quarter note is followed by 3 NHW, the half by 4 NHW, etc.


base-shortest-duration (moment)
Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.
common-shortest-duration (moment)
The most common shortest note length. This is used in spacing. Making this larger will make the score tighter.
grace-space-factor (number)
space grace at this fraction of the increment.
shortest-duration-space (dimension, in staff space)
Start with this much space for the shortest duration. This is explessed in spacing-increment as unit. See also spacing-spanner-interface.
spacing-increment (number)
Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface.

This grob interface is used in the following graphical objects: SpacingSpanner

span-bar-interface

A bar line that spans other barlines (typically used to get cross-staff barlines.

This grob interface is used in the following graphical objects: SpanBar

spanner-interface

Other grobs have a shape that depends on the horizontal spacing. For example, slur, beam, tie, etc. These grobs form a subtype called Spanner. All spanners have two span-points (these must be Items), one on the left and one on the right. The left bound is also the X-reference point of the spanner.


minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. .

This grob interface is used in the following graphical objects: VoltaBracket, VoiceFollower, VerticalAxisGroup, VerticalAlignment, UnaCordaPedalLineSpanner, TupletBracket, TieColumn, Tie, TextSpanner, SystemStartBracket, SystemStartBar, System, SustainPedalLineSpanner, StaffSymbol, SpacingSpanner, SostenutoPedalLineSpanner, Slur, SeparatingGroupSpanner, RemoveEmptyVerticalGroup, PianoPedalBracket, PhrasingSlur, PercentRepeat, OttavaSpanner, MultiMeasureRestText, MultiMeasureRestNumber, MeasureGrouping, LyricHyphen, LyricExtender, LigatureBracket, HorizontalBracket, Hairpin, Glissando, DynamicLineSpanner, ClusterSpanner and Beam

staff-spacing-interface


left-items (list of grobs)

right-items (list of grobs)

stem-spacing-correction (number)
optical correction amount. [TODO: doco]

This grob interface is used in the following graphical objects: StaffSpacing

staff-symbol-interface

This spanner draws the lines of a staff. The center (i.e. middle line or space) is position 0. The length of the symbol may be set by hand through the width property.


line-count (integer)
Number of staff lines. If you want to override this for staffs individually, you must use outputproperty. property .. override will not work: override is processed after the StaffSymbol is created, and will have no effect.
staff-space (dimension, in staff space)
Amount of line leading relative to global staffspace.
thickness (number)
thickness, measured in stafflinethickness.
width (dimension, in staff space)
width of a grob measured in staff space.

This grob interface is used in the following graphical objects: StaffSymbol

staff-symbol-referencer-interface

Object whose Y position is meaning with reference to a staff symbol. Objects that have this interface should include Staff_symbol_referencer::callback in their Y-offset-callback.


staff-position (number)
vertical position in staff spaces, counted from the middle line.

This grob interface is used in the following graphical objects: TabNoteHead, Rest, NoteHead, MultiMeasureRest, Dots, Custos, Clef, Beam, Arpeggio and Ambitus

stem-interface

A stem


adjust-if-on-staffline (boolean)
If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween.
avoid-note-head (boolean)
if set, the stem of a chord does not pass through all note head, but start at the last note head. Used by tablature.
beam (grob (GRaphical OBject))
pointer to the beam, if applicable.
beamed-extreme-minimum-free-lengths (list)
list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.
beamed-lengths (list)
list of stem lengths given beam multiplicity .
beamed-minimum-free-lengths (list)
list of normal minimum free stem lengths (chord to beams) given beam multiplicity.
beaming (pair)
Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.
direction (direction)
up or down, left or right?.
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc.
flag-style (symbol)
a string determining what style of glyph is typeset on a Stem. Valid options include undefined and mensural. Additionally, no-flag switches off the flag.
french-beaming (boolean)
Use French beaming style: stems stop at innermost beams.
length (dimension, in staff space)
Stem length for unbeamed stems, only for user override.
lengths (list)
Stem length given multiplicity of flag. The Nth element of the list gives the stem length of a note with N flags.
neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate.
no-stem-extend (boolean)
should stem not be extended to middle staff line?.
note-heads (list of grobs)
List of note head grobs
stem-end-position (number)
Where does the stem end (the end is opposite to the support-head.
stem-info (pair)
caching of stem parameters
stem-shorten (list)
shorten stems in forced directions given flag multiplicity: the Nth element of the list gives the amount stem shortening of a note with N flags.
stroke-style (string)
set to "grace" to turn stroke through flag on.
support-head (grob (GRaphical OBject))
the note head at one end of the stem.
thickness (number)
thickness, measured in stafflinethickness.
tremolo-flag (grob (GRaphical OBject))
The tremolo object on a stem.
up-to-staff (boolean)
if set, stems' lengths are set so as stems end out of the staff. Used by tablature.

This grob interface is used in the following graphical objects: Stem

stem-tremolo-interface


beam-thickness (dimension, in staff space)
thickness, measured in staffspace.
beam-width (dimension, in staff space)
width of the tremolo sign.
flag-count (number)

stem (grob (GRaphical OBject))
pointer to Stem object.

This grob interface is used in the following graphical objects: StemTremolo

system-interface

Super grob, parent of all:

The columns of a score that form one line. The toplevel grob. Any grob has a Line_of_score as both X and Y reference point. The Paper_score contains one grob of this type. Control enters the Grob dependency calculation from this single Line_of_score object.


all-elements (list of grobs)
list of all grobs in this line. Needed for protecting grobs from GC.
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks.
columns (list of grobs)
list of grobs, typically containing paper-columns.

This grob interface is used in the following graphical objects: System

system-start-delimiter-interface

#'style can be bar-line, bracket or brace


arch-angle (number)
turning angle of the hook of a system brace
arch-height (dimension, in staff space)
height of the hook of a system brace.
arch-thick (number)
thickness of the hook of system brace.
arch-width (dimension, in staff space)
width of the hook of a system brace.
bracket-thick (number)
width of a system start bracket. .
collapse-height (dimension, in staff space)
Minimum height of system start delimiter. If equal or smaller, the bracket is removed.
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. .
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: SystemStartBracket, SystemStartBrace and SystemStartBar

tablature-interface

tablature notes

This grob interface is used in the following graphical objects: none

text-interface

A scheme markup text, see Markup functions.


baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text.
text (markup)
Text markup. See the notation manual for more information.
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics).

This grob interface is used in the following graphical objects: VoltaBracket, UnaCordaPedal, TupletBracket, TextScript, TabNoteHead, SustainPedal, StanzaNumber, SostenutoPedal, RehearsalMark, OctavateEight, NoteName, MultiMeasureRestText, MultiMeasureRestNumber, MetronomeMark, LyricText, InstrumentName, Fingering, DynamicText, ChordName, BreathingSign, BassFigure and BarNumber

text-script-interface

Any text script


script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts.

This grob interface is used in the following graphical objects: TextScript and Fingering

text-spanner-interface

generic text spanner


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
dash-period (number)
the length of one dash + white space.
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height).
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text).
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes
if-text-padding (number)
padding in case texts are there.
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .
thickness (number)
thickness, measured in stafflinethickness.
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners.

This grob interface is used in the following graphical objects: TextSpanner, SustainPedal, PianoPedalBracket and OttavaSpanner

tie-column-interface

that sets tie directions in a tied chord


direction (direction)
up or down, left or right?.

This grob interface is used in the following graphical objects: TieColumn

tie-interface

A tie connecting two noteheads. direction = Forced direction for all ties


control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape.
details (list)
alist of parameters for detailed grob behavior.
direction (direction)
up or down, left or right?.
heads (pair)
Pair of grob pointers, pointing to the two heads of the tie.
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. .

staffline-clearance (dimension, in staff space)
don't get closer than this to stafflines.
thickness (number)
thickness, measured in stafflinethickness.
x-gap (dimension, in staff space)
horizontal gap between notehead and tie.
y-offset (dimension, in staff space)
extra vertical offset for ties away from the center line.

This grob interface is used in the following graphical objects: Tie

time-signature-interface

A time signature, in different styles. The following values for 'style are are recognized:


C
4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits.
neo_mensural
2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with neo-mensural style mensuration marks. All other time signatures are written with two digits.
mensural
2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are typeset with mensural style mensuration marks. All other time signatures are written with two digits.
1xxx
All time signatures are typeset with a single digit, e.g. 3/2 is written as 3. (Any symbol starting with the digit 1 will do.)

See also the test-file input/test/time.ly.


fraction (pair of numbers)
fraction of a time signature.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .

This grob interface is used in the following graphical objects: TimeSignature

tuplet-bracket-interface

A bracket with a number in the middle, used for tuplets.


bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges
bracket-visibility (boolean or symbol)
This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to #'if-no-beam will make it print only if there is no beam associated with this tuplet bracket.
direction (direction)
up or down, left or right?.
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height).
gap (dimension, in staff space)
Size of a gap in a variable symbol.
left-position (number)
position of left part of spanner.
note-columns (pair)
list of NoteColumn grobs.
number-visibility (boolean or symbol)
Like bracket-visibility, but for the number.
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.
right-position (number)
position of right part of spanner.
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: TupletBracket and LigatureBracket

vaticana-ligature-interface

A vaticana style gregorian ligature


add-cauda (boolean)
does this flexa require an additional cauda on the left side?.
add-join (boolean)
is this ligature head joined with the next one by a vertical line?
add-stem (boolean)
is this ligature head a virga and therefore needs an additional stem on the right side?
delta-pitch (number)
the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
flexa-height (dimension, in staff space)
height of a flexa shape in a ligature grob in staff_space.
flexa-width (dimension, in staff space)
width of a flexa shape in a ligature grob in staff_space.
glyph-name (string)
a name of character within font.
ligature-primitive-callback (procedure)
callback that brews ligature head.
thickness (number)
thickness, measured in stafflinethickness.
x-offset (dimension, in staff space)
extra horizontal offset for ligature heads.

This grob interface is used in the following graphical objects: VaticanaLigature

volta-bracket-interface

Volta bracket with number


bars (list of grobs)
list of barline pointers.
height (dimension, in staff space)
in staffspace.
thickness (number)
thickness, measured in stafflinethickness.

This grob interface is used in the following graphical objects: VoltaBracket

All backend properties


X-extent (pair of numbers)
Store extent. internal use only.
X-extent-callback (procedure)
procedure taking an grob and axis argument, returning a number-pair. The return value is the extent of the grob.

The size of a grob are determined through callbacks, settable with grob properties X-extent-callback and Y-extent-callback. There can be only one extent-callback for each axis. No callback (Scheme value #f) means: `empty in this direction'. If you fill in a pair of numbers, that pair hard-codes the extent in that coordinate.

X-offset-callbacks (list)
list of functions, each taking an grob and axis argument. The function determine the position relative to this grob's parent. The last one in the list is called first.

Offsets of grobs are relative to a parent reference point. Most positions are not known when an object is created, so these are calculated as needed. This is done by adding a callback for a specific direction.

Offset callbacks can be stacked, i.e.

                  property .... override #'Y-offset-callbacks = #(list
                          callback1 callback2 callback3)
          
          

The callbacks will be executed in the order callback3 callback2 callback1. This is used for quantized positioning: the staccato dot is above or below a note head, and it must not be on a staff-line. To achieve this, the staccato dot has two callbacks: one that positions the grob above or below the note head, and one that rounds the Y-position of the grob to the nearest open space.

Y-extent (pair of numbers)
Store extent. internal use only.
Y-extent-callback (procedure)
see X-extent-callback.
Y-offset-callbacks (list)
see X-offset-callbacks.
accidental-grob (grob (GRaphical OBject))
Accidental for this note.
accidental-grobs (list)
Alis with (NOTENAME . GROBLIST) entries
accidentals (list)
List of alteration numbers.
add-cauda (boolean)
does this flexa require an additional cauda on the left side?.
add-join (boolean)
is this ligature head joined with the next one by a vertical line?
add-stem (boolean)
is this ligature head a virga and therefore needs an additional stem on the right side?
adjust-if-on-staffline (boolean)
If this grob is on a staff line, adjust its appearance, so that it better fits into the staff. E.g., if set true on stem grobs, flares of mensural flags will always be aligned with the staff lines, regardless if the associated note head is printed on a staff line or inbetween.
after-line-breaking-callback (procedure)
Procedure taking a grob as argument. This procedure is called (using dependency resolution) after line breaking. Return value is ignored.
align-dir (direction)
Which side to align? -1: left side, 0: around center of width, 1: right side.
alignment (number)
alignment of lyrics on notehead, -1 is LEFT, 0 is CENTRE, 1 is RIGHT .
alignment-done (boolean)
boolean to administrate whether we've done the alignment already (to ensure that the process is done only once).
all-elements (list of grobs)
list of all grobs in this line. Needed for protecting grobs from GC.
arch-angle (number)
turning angle of the hook of a system brace
arch-height (dimension, in staff space)
height of the hook of a system brace.
arch-thick (number)
thickness of the hook of system brace.
arch-width (dimension, in staff space)
width of the hook of a system brace.
arpeggio (grob (GRaphical OBject))
pointer to arpeggio object.
arpeggio-direction (direction)
If set, put an arrow on the arpeggio squiggly line.
ascendens (boolean)
is this neume of an ascending?.
attachment (pair)
cons of symbols indicating how a slur should be attached at the ends. The format is '(LEFT-TYPE . RIGHT-TYPE), where both TYPEs are symbols. The values of these symbols may be alongside-stem, stem, head or loose-end.
attachment-offset (pair)
cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs. [fixme: we need more documentation here]. .
auctum (boolean)
is this neume augmented?.
auto-knee-gap (dimension, in staff space)
If a gap is found between noteheads where a horizontal beam fits that is larger than this number, make a kneed beam.
avoid-note-head (boolean)
if set, the stem of a chord does not pass through all note head, but start at the last note head. Used by tablature.
axes (list)
list of axis numbers. In the case of alignment grobs, this should contain only one number.
bar-size (dimension, in staff space)
size of a bar line.
bar-size-procedure (procedure)
Procedure that computes the size of a bar line.
bars (list of grobs)
list of barline pointers.
base-shortest-duration (moment)
Spacing is based on the shortest notes in a piece. Normally, pieces are spaced as if notes at least as short as this are present.
baseline-skip (dimension, in staff space)
Baseline skip to use for multiple lines of text.
bass (list)
musical-pitch, optional.
beam (grob (GRaphical OBject))
pointer to the beam, if applicable.
beam-thickness (dimension, in staff space)
thickness, measured in staffspace.
beam-width (dimension, in staff space)
width of the tremolo sign.
beamed-extreme-minimum-free-lengths (list)
list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.
beamed-lengths (list)
list of stem lengths given beam multiplicity .
beamed-minimum-free-lengths (list)
list of normal minimum free stem lengths (chord to beams) given beam multiplicity.
beamed-stem-shorten (list)
shorten beamed stems in forced direction.
beaming (pair)
Pair of number lists. Each number list specifies which beams to make. 0 is the central beam, 1 is the next beam toward the note etc. This information is used to determine how to connect the beaming patterns from stem to stem inside a beam.
beautiful (number)
number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.
before-line-breaking-callback (procedure)
Procedure taking grob as argument. This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored.
begin-alignment (number)
proportion of lyric length from beginning to align with note-head for left-aligned lyrics.
begin-of-line-visible (boolean)
?
between-cols (pair)
Where to attach a loose column to
between-system-string (string)
string to dump between two systems. Useful for forcing pagebreaks.
bounded-by-me (list of grobs)
list of spanners that have this column as start/begin point. Only columns that have grobs or act as bounds are spaced.
bracket-flare (pair of numbers)
a pair that specifies how much edges of brackets should slant outward. Value 0.0 means straight edges
bracket-thick (number)
width of a system start bracket. .
bracket-visibility (boolean or symbol)
This controls the visibility of the tuplet bracket. Setting it to false will prevent printing of the bracket. Setting the property to #'if-no-beam will make it print only if there is no beam associated with this tuplet bracket.
break-align-symbol (symbol)
the index in the spacing table (symbol) of the to be aligned item.
break-alignment-done (boolean)
mark flag to signal we've done alignment already.
break-glyph-function (procedure)
function taking glyph and break-direction, returning the glyph at a line break.
break-visibility (procedure)
a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).
breakable (boolean)
boolean indicating if this is a breakable item (clef, barline, key sig, etc.).
c0-position (integer)
integer indicating the position of central C.
cause (any type)
Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.
cautionary (boolean)
is this a cautionary accidentals.?
cautionary-style (symbol)
style of cautionary accidentals. Choices are 'smaller (one size smaller) or 'parentheses.
cavum (boolean)
is this neume outlined?.
center-element (grob (GRaphical OBject))
grob which will be at the center of the group after aligning (when using Align_interface::center_on_element). .
chord (pair)
?
chord-tremolo (boolean)
if set, this beam is a tremolo. TODO: use interface for this!
collapse-height (dimension, in staff space)
Minimum height of system start delimiter. If equal or smaller, the bracket is removed.
collision-done (boolean)

columns (list of grobs)
list of grobs, typically containing paper-columns.
common-shortest-duration (moment)
The most common shortest note length. This is used in spacing. Making this larger will make the score tighter.
concaveness-gap (dimension, in staff space)
A beam is considered to be concave if the distance of an inner notehead to the line between two outer noteheads is bigger than this gap.
concaveness-threshold (number)
A beam is considered to be concave is concaveness is bigger than this threshold. Concaveness is calculated as the sum of the vertical distances of inner noteheads that fall outside the interval of the two outer noteheads, to the vertically nearest outer notehead, divided by the square of the inner notes involved.
conditional-elements (list of grobs)
Internal use only
context-info (integer)
DOCME
control-points (list)
List of 4 offsets (number-pairs) that form control points for the tie/slur shape.
damping (integer)
amount of beam slope damping should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams .
dash-fraction (number)
Size of the dashes, relative to dash-period. Should be between 0.0 (no line) and 1.0 (continuous line).
dash-period (number)
the length of one dash + white space.
dashed (number)
[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.
de-uglify-parameters (list)
list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.
delta-pitch (number)
the interval between this and the next note, or, more precisely, their vertical distance; this is used in ligatures for calculation of the height of vertical joins flexa shapes
deminutum (boolean)
is this neume deminished?.
dependencies (list of grobs)
list of score-grob pointers that indicate who to compute first for certain global passes.
descendens (boolean)
is this neume of a descendent type?.
details (list)
alist of parameters for detailed grob behavior.
dir-function (procedure)
function of type (count total)->direction. Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.

The ways to calculate the direction of a beam work as follows:

majority
number count of up or down notes
mean
mean center distance of all notes
median
mean centre distance weighted per note

direction (direction)
up or down, left or right?.
direction-source (grob (GRaphical OBject))
in case side-relative-direction is set, which grob to get the direction from .
dot (grob (GRaphical OBject))
reference to Dots object.
dot-count (integer)
number of dots.
duration-log (integer)
2-log of the notehead duration, i.e. 0=whole note, 1 = half note, etc.
edge-height (pair)
a cons that specifies the heights of the vertical edges '(LEFT-height . RIGHT-height).
edge-text (pair)
a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text).
elements (list of grobs)
list of grobs, type depending on the Grob where this is set in.
enclose-bounds (boolean)
whether a text spanner should extend to the outer edge of the spanned notes
end-alignment (number)
proportion of lyric length from end to align with note-head for right-aligned lyrics.
expand-limit (integer)
maximum number of measures expanded in church rests.
extra-X-extent (pair of numbers)
enlarge in X dimension by this much, measured in staff space.
extra-Y-extent (pair of numbers)
see extra-Y-extent.
extra-offset (pair of numbers)
pair of reals (a cons) forcing an extra offset before outputting. extra-offset is added just before `printing' the grob, so the typesetting engine is completely oblivious to it.
extremity-offset-alist (list)
an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem.
extremity-rules (list)
an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried.
flag-count (number)

flag-style (symbol)
a string determining what style of glyph is typeset on a Stem. Valid options include undefined and mensural. Additionally, no-flag switches off the flag.
flag-width-function (procedure)
Procedure that computes the width of a half-beam (a non-connecting beam.).
flexa-height (dimension, in staff space)
height of a flexa shape in a ligature grob in staff_space.
flexa-width (dimension, in staff space)
width of a flexa shape in a ligature grob in staff_space.
font (unknown)
Cached font metric object
font-design-size (number)
partial font definition: exact font size in points FIXME: should override font-relative-size.
font-family (symbol)
partial font definition: music roman braces dynamic math ...
font-magnification (number)
Magnification of the font. If undefined, the default is 1.0.
font-name (string)
file name for the font to load. Overrides all other font-X qualifiers.
font-relative-size (number)
partial font definition: the relative size compared the `normal' size. 0 is style-sheet's normal size, -1 is smaller, +1 is bigger.
font-series (symbol)
partial font definition: medium, bold.
font-shape (symbol)
partial font definition: upright or italic.
force-hshift (number)
amount of collision_note_width that overides automatic collision settings. This is used by note-collision-interface.
forced-distance (dimension, in staff space)
forced distance for an alignment.
fraction (pair of numbers)
fraction of a time signature.
french-beaming (boolean)
Use French beaming style: stems stop at innermost beams.
full-size-change (boolean)
if set, don't make a change clef smaller.
gap (dimension, in staff space)
Size of a gap in a variable symbol.
gap-count (integer)
Number of gapped beams for tremolo.
glyph (string)
a string determining what (style) of glyph is typeset. Valid choices depend on the function that is reading this property. .
glyph-name (string)
a name of character within font.
glyph-name-procedure (procedure)
Return name of character within font.
grace-space-factor (number)
space grace at this fraction of the increment.
grow-direction (direction)
crescendo or decrescendo?.
hair-thickness (number)
thickness, measured in stafflinethickness.
head-width (dimension, in staff space)
width of this ligature head
heads (pair)
Pair of grob pointers, pointing to the two heads of the tie.
height (dimension, in staff space)
in staffspace.
height-limit (dimension, in staff space)
Maximum slur height, long slurs approach this height.

For small width w, the height should be proportional to w, for w -> infinity, the height should rise to limit h_infinity asymptotically.

Hence we take F (x) such that

                 F (0) = 0 , F' (0) = 1, and F (infinity) = 1
               
where
                 h = height-limit * F (x * ratio / height-limit)
               
Currently, for F we use
                 F (x) = 2/pi * atan (pi * x/2)
               

horizontal-shift (integer)
integer that identifies ranking of note-column for horizontal shifting. This is used by note-collision-interface.
ideal-distances (list)
(OBJ . (DIST . STRENGTH)) pairs.
if-text-padding (number)
padding in case texts are there.
ignore-length-mismatch (boolean)
if #t, stanzas with shorter lyrics can be moved away from their respective note-head by the lyric alignment code.
inclinatum (boolean)
is this neume an inclinatum?.
interfaces (list)
list of symbols indicating the interfaces supported by this object. Is initialized from the meta field.
inversion (list)
musical-pitch, optional.
items-worth-living (list of grobs)
list of interesting items. If empty in a particular system, clear that system.
join-heads (boolean)
Whether to join the noteheads of an ambitus grob with a vertical line.
join-left (boolean)
is this ligature head joined with the previous one by a vertical line?
join-left-amount (number)
DOCME
kern (dimension, in staff space)
amount of extra white space to add. For barline, space after a thick line.
knee (boolean)
Is this beam a knee?
knee-spacing-correction (number)
optical correction amount for knees. 0: no correction; 1: full correction.
layer (number)
The output layer [0..2]. The default is 1.
least-squares-dy (number)
ideal beam slope, without damping.
left-items (list of grobs)

left-neighbors (list of grobs)
List of spacing-wish grobs that are close to the current column.

The closest spacing-wishes determine the actual distances between the columns.

left-padding (dimension, in staff space)
space left of accs.
left-position (number)
position of left part of spanner.
length (dimension, in staff space)
Stem length for unbeamed stems, only for user override.
lengths (list)
Stem length given multiplicity of flag. The Nth element of the list gives the stem length of a note with N flags.
ligature-primitive-callback (procedure)
callback that brews ligature head.
line-count (integer)
Number of staff lines. If you want to override this for staffs individually, you must use outputproperty. property .. override will not work: override is processed after the StaffSymbol is created, and will have no effect.
linea (boolean)
attach vertical lines to this neume?.
maximum-length (dimension, in staff space)
don't make Grob longer than this
maximum-rest-count (integer)
kill off rests so we don't more than this number left.
measure-count (integer)
number of measures for a multimeasure rest.
measure-length (moment)
Length of a measure. Used in some spacing situations.
merge-differently-dotted (boolean)
Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by note-collision-interface .
merge-differently-headed (boolean)
Merge noteheads in collisions, even if they have different note heads. The smaller of the two heads will be rendered invisible. This used polyphonic guitar notation. The value of this setting is used by note-collision-interface .
meta (list)
Alist of meta information of this grob.

The alist contains the following entries: name, interfaces.

minimum-X-extent (pair of numbers)
minimum size in X dimension, measured in staff space.
minimum-Y-extent (pair of numbers)
see minimum-Y-extent.
minimum-beam-collision-distance (dimension, in staff space)
Minimum distance to beam for a rest collision.
minimum-distance (dimension, in staff space)
minimum distance between notes and rests.
minimum-distances (list)
list of rods (ie. (OBJ . DIST) pairs).
minimum-length (dimension, in staff space)
try to make the Grob at least this long.

Also works as a scaling parameter for the length of hyphen. .

minimum-space (dimension, in staff space)
minimum distance that the victim should move (after padding).
molecule (unknown)
Cached output of the molecule-callback.
molecule-callback (procedure)
Function taking grob as argument, returning a smobbed Molecule.

All visible, i.e. non-transparent, grobs have a callback to create a Molecule. The callback should be a Scheme function taking one argument (the grob) and returning a Molecule. Most molecule callbacks are written in C++, but you can also write them in Scheme. An example is provided in input/regression/molecule-hacking.ly.

neutral-direction (direction)
Where to go if we're on the neutral position of the staff (by default, the middle of the staff; see also grob-property neutral-position). [Ross] has the following to say about this: Some engravers consider the middle line neutral, and take the option of using either up- or down-stems for notes that fall on it. However, more up-to-date engraving no longer permits an option; now a down-stem is always appropriate.
neutral-position (number)
Position (in half staff spaces) where to flip the direction of stems: by default, custodes above this position get their stems downwards; custodes below this position get their stems upwards. A value of 0 designates the center of the staff. Use property neutral-direction to control the behaviour of stems on the neutral position itself. (Note: currently, neutral-position is supported only for custodes; for stems of note heads, neutral-position is currently fixed to 0, i.e. the middle of the staff.)
new-accidentals (list)
list of (pitch, accidental) pairs.
no-spacing-rods (boolean)
read from grobs: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM).
no-stem-extend (boolean)
should stem not be extended to middle staff line?.
non-default (boolean)
not set because of existence of a bar?.
note-columns (pair)
list of NoteColumn grobs.
note-head-style (string)
name of the font character to be used as note heads in the ambitus grob.
note-heads (list of grobs)
List of note head grobs
number-visibility (boolean or symbol)
Like bracket-visibility, but for the number.
old-accidentals (list)
list of (pitch, accidental) pairs.
oriscus (boolean)
is this neume an oriscus?.
padding (dimension, in staff space)
add this much extra space between objects that are next to each other.
pedal-text (grob (GRaphical OBject))
Pointer to the text of a mixed-style piano pedal.
penalty (number)
Penalty for breaking at this column. 10000 or more means forbid linebreak, -10000 or less means force linebreak. Other values influence linebreaking decisions as a real penalty.
pes-or-flexa (boolean)
shall this neume be joined with the previous head?.
pitch-max (pitch)
FIXME, JUNKME
pitch-min (pitch)
FIXME, JUNKME
pitches (list)
list of musical-pitch.
position-callbacks (list)
list of functions set spanner positions.
positions (pair)
cons of staff positions (LEFT . RIGHT
prefix-set (number)
DOCME
primitive (integer)
Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. [TODO: change this]
quant-score (number)
Beam quanting score - can be stored for debugging
quilisma (boolean)
is this neume a quilisma?.
ratio (number)
Slur parameter. See height-limit.
remove-first (boolean)
Remove the first staff of a orchestral score?
rest (grob (GRaphical OBject))
the staff symbol grob that we're in.
rest-collision (grob (GRaphical OBject))
rest collision that a rest is in.
rest-collision-done (boolean)
Is this rest collision processed yet?
right-items (list of grobs)

right-neighbors (list of grobs)
see left-neighbors
right-padding (dimension, in staff space)
space right of accs.
right-position (number)
position of right part of spanner.
right-trim-amount (dimension, in staff space)
shortening of the lyric extender on the right.
script-molecule (pair)
Index code for script - internal, see script.cc.
script-priority (number)
A sorting key that determines in what order a script is within a stack of scripts.
self-alignment-X (number or grob)
real number: -1 = left aligned, 0 = center, 1 right-aligned in X direction.

Set to an grob pointer, if you want that grob to be the center. In this case, the center grob should have this object as a reference point.

TODO: revise typing.

self-alignment-Y (number)
like self-alignment-X but for Y axis.
shorten (dimension, in staff space)
the amount of space that a stem should be shortened (DOCME!)
shorten-pair (pair of numbers)
the length on each side to shorten a text-spanner, for example a pedal bracket
shortest-duration-space (dimension, in staff space)
Start with this much space for the shortest duration. This is explessed in spacing-increment as unit. See also spacing-spanner-interface.
shortest-playing-duration (moment)
duration of the shortest playing in that column.
shortest-starter-duration (moment)
duration of the shortest notes that starts exactly in this column.
side-relative-direction (direction)
if set: get the direction from a different object, and multiply by this.
side-support-elements (list of grobs)
the support, a list of grobs.
slope (number)
some kind of slope
slope-limit (number)
set slope to zero if slope is running away steeper than this.
space-alist (list)
Alist of break align spacing tuples: format = (SYMBOL . (TYPE . DISTANCE)), where TYPE can be minimum-space or extra-space.
space-function (procedure)
return interbeam space given Beam grob and multiplicity.
spacing-increment (number)
Add this much space for a doubled duration. Typically, the width of a note head. See also spacing-spanner-interface.
spacing-procedure (procedure)
procedure taking grob as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored.
spacing-wishes (list of grobs)
List of note spacing or staff spacing objects.
stacking-dir (direction)
stack contents of grobs in which direction ?.
staff-padding (dimension, in staff space)
Maintain this much space to the staff. It's effect is similar to the padding mechanism, but this will keep objects above and below the staff in a row more often, when the heights of the notes vary.
staff-position (number)
vertical position in staff spaces, counted from the middle line.
staff-space (dimension, in staff space)
Amount of line leading relative to global staffspace.
staff-symbol (grob (GRaphical OBject))
the staff symbol grob that we're in.
staffline-clearance (dimension, in staff space)
don't get closer than this to stafflines.
stem (grob (GRaphical OBject))
pointer to Stem object.
stem-attachment-function (procedure)
Where does the stem attach to the notehead? Function takes a symbol argument being the style. It returns a (X . Y) pair, specifying location in terms of note head bounding box.
stem-end-position (number)
Where does the stem end (the end is opposite to the support-head.
stem-info (pair)
caching of stem parameters
stem-shorten (list)
shorten stems in forced directions given flag multiplicity: the Nth element of the list gives the amount stem shortening of a note with N flags.
stem-spacing-correction (number)
optical correction amount. [TODO: doco]
stems (list of grobs)
list of stem objects, corresponding to the notes that the arpeggio has to be before.
stroke-style (string)
set to "grace" to turn stroke through flag on.
stropha (boolean)
is this neume a stropha?.
style (symbol)
a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. .
support-head (grob (GRaphical OBject))
the note head at one end of the stem.
text (markup)
Text markup. See the notation manual for more information.
thick-thickness (number)
thickness, measured in stafflinethickness.
thickness (number)
thickness, measured in stafflinethickness.
thin-kern (number)
space after a hair-line.
threshold (pair of numbers)
(cons MIN MAX), where MIN and MAX are dimensions in staffspace.
tie (grob (GRaphical OBject))

transparent (boolean)
This is almost the same as setting molecule-callback to #f, but this retains the dimensions of this grob, which means that you can erase grobs individually. .
tremolo-flag (grob (GRaphical OBject))
The tremolo object on a stem.
up-to-staff (boolean)
if set, stems' lengths are set so as stems end out of the staff. Used by tablature.
use-breve-rest (boolean)
boolean that tells multi-measure-rest to use a breve rest to represent the duration of 1 measure instead of whole rest. It defaults to false. It is set to true when the duration of a measure is a breve or longer.
virga (boolean)
is this neume a virga?.
when (moment)
when does this column happen?.
width (dimension, in staff space)
width of a grob measured in staff space.
width-correct (dimension, in staff space)
width correction for (de)cresc. text spanners.
word-space (dimension, in staff space)
elongate left (?) by this much (FIXME: cumbersome semantics).
x-gap (dimension, in staff space)
horizontal gap between notehead and tie.
x-offset (dimension, in staff space)
extra horizontal offset for ligature heads.
y-free (dimension, in staff space)
minimal vertical gap between slur and noteheads or stems.
y-offset (dimension, in staff space)
extra vertical offset for ties away from the center line.
zigzag-length (dimension, in staff space)
The length of the lines of a zigzag - relative to zigzag-width. a value of 1 gives 60-degree zigzags.
zigzag-width (dimension, in staff space)
the width of one zigzag-squiggle, measured in staff space. The width will be adjusted so that the line can be constructed from a whole number of squiggles.

Scheme functions

Apply_context_iterator::constructor Function
Construct a Apply_context_iterator music iterator

Auto_change_iterator::constructor Function
Construct a Auto_change_iterator music iterator

Bar_check_iterator::constructor Function
Construct a Bar_check_iterator music iterator

Change_iterator::constructor Function
Construct a Change_iterator music iterator

Chord_tremolo_iterator::constructor Function
Construct a Chord_tremolo_iterator music iterator

Context_specced_music_iterator::constructor Function
Construct a Context_specced_music_iterator music iterator

Event_chord_iterator::constructor Function
Construct a Event_chord_iterator music iterator

Folded_repeat_iterator::constructor Function
Construct a Folded_repeat_iterator music iterator

Grace_iterator::constructor Function
Construct a Grace_iterator music iterator

Lyric_combine_music_iterator::constructor Function
Construct a Lyric_combine_music_iterator music iterator

Music_iterator::constructor Function
Construct a Music_iterator music iterator

Music_wrapper_iterator::constructor Function
Construct a Music_wrapper_iterator music iterator

Output_property_music_iterator::constructor Function
Construct a Output_property_music_iterator music iterator

Part_combine_music_iterator::constructor Function
Construct a Part_combine_music_iterator music iterator

Percent_repeat_iterator::constructor Function
Construct a Percent_repeat_iterator music iterator

Pop_property_iterator::constructor Function
Construct a Pop_property_iterator music iterator

Property_iterator::constructor Function
Construct a Property_iterator music iterator

Property_unset_iterator::constructor Function
Construct a Property_unset_iterator music iterator

Push_property_iterator::constructor Function
Construct a Push_property_iterator music iterator

Sequential_iterator::constructor Function
Construct a Sequential_iterator music iterator

Sequential_music_iterator::constructor Function
Construct a Sequential_music_iterator music iterator

Simple_music_iterator::constructor Function
Construct a Simple_music_iterator music iterator

Simultaneous_music_iterator::constructor Function
Construct a Simultaneous_music_iterator music iterator

Time_scaled_music_iterator::constructor Function
Construct a Time_scaled_music_iterator music iterator

Unfolded_repeat_iterator::constructor Function
Construct a Unfolded_repeat_iterator music iterator

Volta_repeat_iterator::constructor Function
Construct a Volta_repeat_iterator music iterator

ly:add-interface a b c Function
Add an interface description.

ly:add-moment a b Function
Add two moments.

ly:all-grob-interfaces Function
Get a hash table with all interface descriptions.

ly:bracket a iv t p Function
Make a bracket in direction a. The extent of the bracket is given by iv. The wings protude by an amount of p, which may be negative. The thickness is given by t.

ly:context-parent context Function
Return the parent of context, #f if none.

ly:context-properties context Function
Return all properties of context in an alist.

ly:context-property-where-defined context name Function
Return the context above context where name is defined.

ly:context-pushpop-property context grob eltprop val Function
Do a single \override or \revert operation in context. The grob definition grob is extended with eltprop (if val is specified) or reverted (if unspecified).

ly:context? x Function
Type predicate: is x a context?

ly:dimension? d Function
Return d is a number. Used to distinguish length variables from normal numbers.

ly:dir? s Function
type predicate. A direction is a -1, 0 or 1, where -1 represents left or down and 1 represents right or up.

ly:div-moment a b Function
Divide two moments.

ly:duration-dot-count dur Function
Extract the dot count from dur

ly:duration-factor dur Function
Extract the compression factor from dur. Return as a pair.

ly:duration-log dur Function
Extract the duration log from dur

ly:duration<? p1 p2 Function
Is p1 shorter than p2?

ly:duration? x Function
Check if x is a Duration object

ly:export arg Function
Export a Scheme object to the parser, so it is treated as an identifier.

ly:find-glyph-by-name font name Function
This function retrieves a Molecule for the glyph named name in font. The font must be available as an AFM file. If the glyph is not found, #f is returned.

ly:font-metric? x Function
Check if x is a Font_metric object

ly:fontify-atom met f Function
Add a font selection command for the font metric met to f.

ly:get-all-function-documentation Function
Get a hash table with all lilypond Scheme extension functions.

ly:get-all-translators Function
Return an list of a all translator objects that may be instantiated during a lilypond run.

ly:get-broken-into spanner Function
Return broken-into list for spanner.

ly:get-context-property context name Function
retrieve the value of name from context context

ly:get-default-font grob Function
Return the default font for grob gr.

ly:get-extent grob refp axis Function
Get the extent in axis direction of grob relative to the grob refp

ly:get-glyph font index Function
This function retrieves a Molecule for the glyph numbered index in font.

ly:get-grob-property grob sym Function
Get the value of a value in grob g of property sym. It will return '() (end-of-list) if g doesn't have sym set.

Grob properties are stored as GUILE association lists, with symbols as keys. All lookup functions identify undefined properties with end-of-list (i.e. '() in Scheme or SCM_EOL in C)

Properties are stored in two ways:

  • mutable properties. Grob properties that change from object to object. The storage of these are private to a grob. For example pointers to other grobs are always stored in the mutable properties.
  • immutable properties. Grob properties that are shared across different grobs of the same type. The storage is shared, and hence it is read-only. Typically, this is used to store function callbacks, and default settings. They are initially read from scm/grob-description.scm.

ly:get-mus-property mus sym Function
Get the property sym of music expression mus. If sym is undefined, return '().

ly:get-music-length mus Function
Get the length (in musical time) of music expression mus.

ly:get-mutable-properties mus Function
Return an alist signifying the mutable properties of mus. The immutable properties are not available; they should be initialized by the functions make-music-by-name function.

ly:get-option var Function
Get a global option setting. Supported options include
old-relative-used
Report whether old-relative compatibility mode is necessary
old-relative
Report whether old-relative compatibility mode is used
verbose
Report whether we are running in verbose mode

ly:get-original grob Function
Return the original Grob of grob

ly:get-paper-variable grob sym Function
Get a variable from the \paper block.

ly:get-parent grob axis Function
Get the parent of grob. axis is 0 for the X-axis, 1 for the Y-axis.

ly:get-spanner-bound slur dir Function
Get one of the bounds of spanner. dir is -1 for left, and 1 for right.

ly:get-system grob Function
Return the System Grob of grob.

ly:grob-paper grob Function
Get \paper definition from a grob.

ly:grob-pq-less? a b Function
Compare 2 Grob PQ entries. Internal

ly:grob-script-priority-less a b Function
Compare two grobs by script priority. For internal use.

ly:grob-staff-position sg Function
Return the Y-position of this grob relative to the staff.

ly:grob-suicide g Function
Kill g.

ly:grob-translate-axis! g d a Function
Translate g on axis a over distance d.

ly:grob? x Function
Check if x is a Grob object

ly:gulp-file name Function
Read the file named name, and return its contents in a string. The file is looked up using the lilypond search path.

ly:input-location? x Function
Return whether x is an input location

ly:input-message sip msg Function
Print msg as a GNU compliant error message, pointing to the location in sip.

ly:intlog2 d Function
The 2-logarithm of 1/d.

ly:iterator? x Function
Check if x is a Music_iterator object

ly:make-bare-music type props Function
Make a music object/expression of type type, init with props. Warning: this interface will likely change in the near future.

Music is the data type that music expressions are stored in. The data type does not yet offer many manipulations.

WARNING: only for internal use. Please use make-music-by-name.

ly:make-duration length dotcount num den Function

length is the negative logarithm (base 2) of the duration: 1 is a half note, 2 is a quarter note, 3 is an eighth note, etc. The number of dots after the note is given by dotcount.

The duration factor is optionally given by num and den.

A duration is a musical duration, i.e. a length of time described by a power of two (whole, half, quarter, etc.) and a number of augmentation dots.

ly:make-molecule expr xext yext Function

The objective of any typesetting system is to put ink on paper in the right places. For LilyPond, this final stage is left to the TeX and the printer subsystem. For lily, the last stage in processing a score is outputting a description of what to put where. This description roughly looks like

                  PUT glyph AT (x,y)
                  PUT glyph AT (x,y)
                  PUT glyph AT (x,y)
          
you merely have to look at the tex output of lily to see this. Internally these instructions are encoded in Molecules.3 A molecule is what-to-print-where information that also contains dimension information (how large is this glyph?).

Conceptually, Molecules can be constructed from Scheme code, by translating a Molecule and by combining two molecules. In BNF notation:

          Molecule  :: COMBINE Molecule Molecule
                     | TRANSLATE Offset Molecule
                     | GLYPH-DESCRIPTION
                     ;
          

If you are interested in seeing how this information is stored, you can run with the -f scm option. The scheme expressions are then dumped in the output file.

ly:make-moment n d Function
create the rational number with main timing n/d.

Moment is a point in musical time. It is consists of a pair of rationals (m,g), where m is the timing for the main notes, and g the timing for grace notes. In absence of grace notes, g is zero.

ly:make-pitch o n a Function
octave is specified by an integer, zero for the octave containing middle C. note is a number from 0 to 6, with 0 corresponding to C and 6 corresponding to B. The shift is zero for a natural, negative for flats, or positive for sharps.

ly:molecule-add args Function
Combine molecules. Takes any number of arguments.

ly:molecule-align-to! mol axis dir Function
Align mol using its own extents. dir is a number -1, 1 are left and right respectively. Other values are interpolated (so 0 means the center.

ly:molecule-combine-at-edge first axis direction second padding minimum Function
Construct a molecule by putting second next to first. axis can be 0 (x-axis) or 1 (y-axis), direction can be -1 (left or down) or 1 (right or up). The molecules are juxtaposed with padding as extra space. If this puts the reference points closer than minimum, they are moved by the latter amount.

ly:molecule-get-extent mol axis Function
Return a pair of numbers signifying the extent of mol in axis direction (0 or 1 for x and y axis respectively).

ly:molecule-set-extent! mol axis np Function
Set the extent (extent must be a pair of numbers) of mol in axis direction (0 or 1 for x- and y-axis respectively).

Note that an extent (A . B) is an interval and hence A is smaller than B, and is often negative.

ly:molecule-translate mol offset Function
Return a mol, but translated by offset (a pair of numbers).

ly:molecule-translate-axis mol amount axis Function
Return a mol, but translated by amount in axis direction

ly:molecule? x Function
Check if x is a Molecule object

ly:moment? x Function
Check if x is a Moment object

ly:mul-moment a b Function
Multiply two moments.

ly:music-deep-copy m Function
Copy m and all sub expressions of m

ly:music-duration-compress mus factor Function
Extract the duration field from mus, and compress it.

ly:music-duration-length mus Function
Extract the duration field from mus, and return the length.

ly:music-name mus Function
Return the name of music.

ly:music-transpose m p Function
Transpose m such that central C is mapped to p. Return m.

ly:music? x Function
Check if x is a Music object

ly:number->string s Function
converts num to a string without generating many decimals. It leaves a space at the end.

ly:option-usage Function
Print ly-set-option usage

ly:paper-get-font paper chain Function
Return a font metric satisfying the font-qualifiers in the alist chain chain.

The font object represents the metric information of a font. Every font that is loaded into LilyPond can be accessed via Scheme.

LilyPond only needs to know the dimension of glyph to be able to process them. This information is stored in font metric files. LilyPond can read two types of font-metrics: TeX Font Metric files (TFM files) and Adobe Font Metric files (AFM files). LilyPond will always try to load AFM files first since they are more versatile.

An alist chain is a list of alists, containing grob properties.

ly:paper-lookup pap sym Function
Lookup sym in pap. Return the value or '() if undefined.

ly:pitch-alteration pp Function
extract the alteration from pitch p.

ly:pitch-diff pitch root Function
Return pitch with value DELTA = PITCH - ROOT, ie, ROOT == (ly:pitch-transpose root delta).

ly:pitch-notename pp Function
extract the note name from pitch pp.

ly:pitch-octave pp Function
extract the octave from pitch p.

ly:pitch-quartertones pp Function
calculate the number of semitones of p from central C.

ly:pitch-semitones pp Function
calculate the number of semitones of p from central C.

ly:pitch-steps p Function
Number of steps counted from central C of the pitch p.

ly:pitch-transpose p delta Function
Transpose p by the amount delta, where delta is the pitch that central C is transposed to.

ly:pitch<? p1 p2 Function
Is p1 lower than p2? This uses lexicographic ordening.

ly:pitch? x Function
Check if x is a Pitch object

ly:round-filled-box xext yext blot Function
Make a filled-box of dimensions xext, yext and roundness blot.

ly:set-context-property! context name val Function
set value of property name in context context to val.

ly:set-grob-property! grob sym val Function
Set sym in grob grob to value val

ly:set-mus-property! mus sym val Function
Set property sym in music expression mus to val.

ly:set-option var val Function
Set a global option value. Supported options include
help
List all options.
midi-debug
If set to true, generate human readable MIDI
internal-type-checking
Set paranoia for property assignments
parse-protect
If protection is switched on, errors in inline scheme are caught in the parser. If off, GUILE will halt on errors, and give a stack trace. Default is protected evaluation.
old-relative
Relative for simultaneous functions similar to chord syntax
new-relative
Relative for simultaneous functions similar to sequential music

This function is useful to call from the command line: lilypond -e "(ly-set-option 'midi-debug #t_)".

ly:set-point-and-click what Function
Set the options for Point-and-click source specials output. The argument is a symbol. Possible options are none (no source specials), line and line-column

ly:text-dimension font text Function
Given the font metric in font and the string text, compute the extents of that text in that font. The return value is a pair of number-pairs.

ly:translator-description me Function
Return an alist of properties of translator me.

ly:translator-find context name Function
Find a parent of context that has name or alias name. Return #f if not found.

ly:translator-name trans Function
Return the type name of the translator trans.

ly:translator? x Function
Check if x is a Translator object

ly:transpose-key-alist l pitch Function
Make a new key alist of l transposed by pitch pitch

ly:unit Function
Return the unit used for lengths as a string.

ly:unset-context-property context name Function
Unset value of property name in context context.

ly:version Function
Return the current lilypond version as a list, e.g. (1 3 127 uu1).

ly:warn str Function
Scheme callable function to issue the warning msg.

music-list? l Function
Type predicate: return true if l is a list of music objects.

Markup functions

bigger-markup

Argument types: markup

Description:

Syntax: \bigger MARKUP

bold-markup

Argument types: markup

box-markup

Argument types: markup

Description:

Syntax: \box MARKUP

bracket-markup

Argument types: markup

Description:

Vertical brackets around its single argument. Syntax \bracket MARKUP.

center-markup

Argument types: list of markups

char-markup

Argument types: integer

Description:

Syntax: \char NUMBER.

column-markup

Argument types: list of markups

combine-markup

Argument types: markup markup

dir-column-markup

Argument types: list of markups

Description:

Make a column of args, going up or down, depending on DIRECTION.

dynamic-markup

Argument types: markup

finger-markup

Argument types: markup

fontsize-markup

Argument types: number markup

fraction-markup

Argument types: markup markup

Description:

Make a fraction of two markups.

Syntax: \fraction MARKUP1 MARKUP2.

halign-markup

Argument types: number markup

Description:

Set horizontal alignment. Syntax: haling A MARKUP. A=-1 is LEFT, A=1 is right, values in between vary alignment accordingly.

hbracket-markup

Argument types: markup

Description:

Horizontal brackets around its single argument. Syntax \hbracket MARKUP.

hspace-markup

Argument types: number

Description:

Syntax: \hspace NUMBER.

huge-markup

Argument types: markup

italic-markup

Argument types: markup

large-markup

Argument types: markup

left-align-markup

Argument types: markup

line-markup

Argument types: list of markups

Description:

A horizontal line of markups. Syntax: \line << MARKUPS >>

lookup-markup

Argument types: string

Description:

Lookup a glyph by name.

magnify-markup

Argument types: number markup

musicglyph-markup

Argument types: any type

normal-size-sub-markup

Argument types: markup

normal-size-super-markup

Argument types: markup

note-markup

Argument types: integer integer direction

Description:

Syntax: \note #LOG #DOTS #DIR. By using fractional values for DIR, you can obtain longer or shorter stems.

number-markup

Argument types: markup

override-markup

Argument types: pair markup

Description:

Tack the 1st arg in REST onto PROPS, e.g.

override #'(font-family . married) "bla"

raise-markup

Argument types: number markup

Description:

Syntax: \raise AMOUNT MARKUP.

right-align-markup

Argument types: markup

roman-markup

Argument types: markup

simple-markup

Argument types: string

small-markup

Argument types: markup

smaller-markup

Argument types: markup

Description:

Syntax: \smaller MARKUP

strut-markup

Argument types:

Description:

Syntax: strut

A box of the same height as the space.

sub-markup

Argument types: markup

Description:

Syntax: \sub MARKUP.

super-markup

Argument types: markup

Description:

Syntax: \super MARKUP.

teeny-markup

Argument types: markup

tiny-markup

Argument types: markup

translate-markup

Argument types: pair of numbers markup

Description:

Syntax: \translate OFFSET MARKUP.

typewriter-markup

Argument types: markup

Index

Concept index

Variable index

Function index


Footnotes

  1. On unix systems, the file /dev/null is special device: anything written to it is discarded.

  2. On unix systems, the file /dev/null is special device: anything written to it is discarded.

  3. At some point LilyPond also contained Atom-objects, but they have been replaced by Scheme expressions, making the name outdated.



This page is for LilyPond-2.0.0 (stable-branch).

Report errors to <bug-lilypond@gnu.org>.