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)
'AbortEvent
internal-class-name
(string)
Event
span-type
(string)
TODO: consider making type into symbol
Default value: abort
types
(list)
'(general-music event abort-event)
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)
'AbsoluteDynamicEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event dynamic-event absolute-dynamic-event)
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)
'ApplyContext
internal-class-name
(string)
Music
types
(list)
'(general-music apply-context)
iterator-ctor
(procedure)
Apply_context_iterator::constructor
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)
'ApplyOutputEvent
internal-class-name
(string)
Event
iterator-ctor
(procedure)
Output_property_music_iterator::constructor
types
(list)
'(general-music layout-instruction)
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)
'ArpeggioEvent
internal-class-name
(string)
Event
types
(list)
'(general-music arpeggio-event event)
Adds an articulation marking to a note. Syntax:
noteX
Y
, 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)
'ArticulationEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event articulation-event script-event)
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)
'AutoChangeMusic
internal-class-name
(string)
Music_wrapper
iterator-ctor
(procedure)
Auto_change_iterator::constructor
types
(list)
'(general-music music-wrapper-music auto-change-instruction)
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)
'BarCheck
internal-class-name
(string)
Music
types
(list)
'(general-music bar-check)
iterator-ctor
(procedure)
Bar_check_iterator::constructor
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)
'BassFigureEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event rhythmic-event bass-figure-event)
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)
'BeamEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event beam-event span-event)
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)
'BreakEvent
internal-class-name
(string)
Event
types
(list)
'(general-music break-event event)
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)
'BreathingSignEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event breathing-event)
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)
'BusyPlayingEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event busy-playing-event)
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)
'ClusterNoteEvent
internal-class-name
(string)
Event
types
(list)
'(general-music cluster-note-event melodic-event rhythmic-event event)
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)
'ContextSpeccedMusic
iterator-ctor
(procedure)
Context_specced_music_iterator::constructor
internal-class-name
(string)
Music_wrapper
types
(list)
'(context-specification general-music music-wrapper-music)
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)
'CrescendoEvent
internal-class-name
(string)
Event
types
(list)
'(general-music dynamic-event crescendo-event event)
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)
'DecrescendoEvent
internal-class-name
(string)
Event
types
(list)
'(general-music dynamic-event decrescendo-event event)
Atomic music event.
Music types: general-music and event
Accepted by: Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'Event
internal-class-name
(string)
Event
types
(list)
'(general-music event)
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)
'EventChord
internal-class-name
(string)
Event_chord
iterator-ctor
(procedure)
Event_chord_iterator::constructor
types
(list)
'(general-music event-chord simultaneous-music)
Extend lyrics.
Music types: general-music, extender-event and event
Accepted by: Extender_engraver, Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'ExtenderEvent
internal-class-name
(string)
Event
types
(list)
'(general-music extender-event event)
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)
'FingerEvent
internal-class-name
(string)
Event
types
(list)
'(general-music fingering-event event)
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)
'FoldedRepeatedMusic
internal-class-name
(string)
Repeated_music
iterator-ctor
(procedure)
Folded_repeat_iterator::constructor
start-moment-function
(procedure)
Repeated_music::minimum_start
length
(procedure)
Repeated_music::folded_music_length
types
(list)
'(general-music repeated-music folded-repeated-music)
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)
'GlissandoEvent
internal-class-name
(string)
Event
types
(list)
'(general-music glissando-event event)
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)
'GraceMusic
internal-class-name
(string)
Grace_music
iterator-ctor
(procedure)
Grace_iterator::constructor
types
(list)
'(grace-music music-wrapper-music general-music)
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)
'HyphenEvent
internal-class-name
(string)
Event
types
(list)
'(general-music hyphen-event event)
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)
'KeyChangeEvent
internal-class-name
(string)
Key_change_ev
types
(list)
'(general-music key-change-event event)
(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)
'LigatureEvent
internal-class-name
(string)
Event
span-type
(string)
TODO: consider making type into symbol
Default value: 'ligature
types
(list)
'(general-music span-event ligature-event event)
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)
'LyricCombineMusic
internal-class-name
(string)
Lyric_combine_music
types
(list)
'(general-music lyric-combine-music)
iterator-ctor
(procedure)
Lyric_combine_music_iterator::constructor
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)
'LyricEvent
internal-class-name
(string)
Event
types
(list)
'(general-music rhythmic-event lyric-event event)
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)
'MarkEvent
internal-class-name
(string)
Event
types
(list)
'(general-music mark-event event)
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)
'MelismaPlayingEvent
internal-class-name
(string)
Event
types
(list)
'(general-music melisma-playing-event event)
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)
'MetronomeChangeEvent
internal-class-name
(string)
Event
types
(list)
'(general-music metronome-change-event tempo-event event)
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)
'MultiMeasureRestEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event span-event multi-measure-rest-event)
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)
'MultiMeasureRestMusicGroup
internal-class-name
(string)
Sequential_music
iterator-ctor
(procedure)
Sequential_music_iterator::constructor
types
(list)
'(general-music sequential-music)
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)
'MultiMeasureTextEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event multi-measure-text-event)
Generic type for music expressions.
Music types: general-music
Accepted by: Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'Music
internal-class-name
(string)
Music
types
(list)
'(general-music)
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)
'NonEventSkip
internal-class-name
(string)
Music
length
(procedure)
ly:music-duration-length
iterator-ctor
(procedure)
Simple_music_iterator::constructor
types
(list)
'(general-music event rhythmic-event skip-event)
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)
'NoteEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event note-event rhythmic-event melodic-event)
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)
'NoteGroupingEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event note-grouping-event)
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)
'OutputPropertySetMusic
internal-class-name
(string)
Music
iterator-ctor
(procedure)
Output_property_music_iterator::constructor
types
(list)
'(general-music layout-instruction)
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)
'OverrideProperty
internal-class-name
(string)
Music
types
(list)
'(general-music layout-instruction)
iterator-ctor
(procedure)
Push_property_iterator::constructor
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)
'PartCombineMusic
internal-class-name
(string)
Simultaneous_music
types
(list)
'(general-music part-combine-music)
iterator-ctor
(procedure)
Part_combine_music_iterator::constructor
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)
'PercentRepeatedMusic
internal-class-name
(string)
Repeated_music
iterator-ctor
(procedure)
Percent_repeat_iterator::constructor
start-moment-function
(procedure)
Repeated_music::first_start
length
(procedure)
Repeated_music::unfolded_music_length
types
(list)
'(general-music repeated-music percent-repeated-music)
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)
'PesOrFlexaEvent
internal-class-name
(string)
Event
types
(list)
'(general-music pes-or-flexa-event event)
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)
'PhrasingSlurEvent
internal-class-name
(string)
Event
types
(list)
'(general-music span-event phrasing-slur-event)
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)
'PropertySet
internal-class-name
(string)
Music
types
(list)
'(layout-instruction general-music)
iterator-ctor
(procedure)
Property_iterator::constructor
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)
'PropertyUnset
internal-class-name
(string)
Music
types
(list)
'(layout-instruction general-music)
iterator-ctor
(procedure)
Property_unset_iterator::constructor
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)
'RelativeOctaveCheck
internal-class-name
(string)
Relative_octave_check
types
(list)
'(general-music relative-octave-check)
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)
'RelativeOctaveMusic
internal-class-name
(string)
Relative_octave_music
types
(list)
'(music-wrapper-music general-music relative-octave-music)
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)
'RepeatedMusic
type
(symbol)
'repeated-music
types
(list)
'(general-music repeated-music)
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)
'RestEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event rhythmic-event rest-event)
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)
'RevertProperty
internal-class-name
(string)
Music
types
(list)
'(general-music layout-instruction)
iterator-ctor
(procedure)
Pop_property_iterator::constructor
Add an articulation mark to a note.
Music types: general-music and event
Accepted by: Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'ScriptEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event)
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)
'SequentialMusic
internal-class-name
(string)
Sequential_music
iterator-ctor
(procedure)
Sequential_music_iterator::constructor
types
(list)
'(general-music sequential-music)
Music playing together.
SYNTAX
\simultaneous { .. }
or < .. >.
Music types: general-music and simultaneous-music
Accepted by: Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'SimultaneousMusic
internal-class-name
(string)
Simultaneous_music
iterator-ctor
(procedure)
Simultaneous_music_iterator::constructor
types
(list)
'(general-music simultaneous-music)
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)
'SkipEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event rhythmic-event skip-event)
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)
'SlurEvent
internal-class-name
(string)
Event
types
(list)
'(general-music span-event slur-event)
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)
'SostenutoEvent
internal-class-name
(string)
Event
types
(list)
'(general-music pedal-event sostenuto-pedal-event)
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)
'SpanEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event)
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)
'StringNumberEvent
internal-class-name
(string)
Event
types
(list)
'(general-music string-number-event event)
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)
'SustainEvent
internal-class-name
(string)
Event
types
(list)
'(general-music pedal-event sustain-pedal-event)
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)
'TextScriptEvent
internal-class-name
(string)
Event
types
(list)
'(general-music script-event text-script-event event)
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)
'TextSpanEvent
internal-class-name
(string)
Event
types
(list)
'(general-music span-event text-span-event)
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)
'TieEvent
internal-class-name
(string)
Event
types
(list)
'(general-music tie-event event)
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)
'TimeScaledMusic
internal-class-name
(string)
Time_scaled_music
iterator-ctor
(procedure)
Time_scaled_music_iterator::constructor
types
(list)
'(time-scaled-music music-wrapper-music general-music)
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)
'TranslatorChange
internal-class-name
(string)
Music
iterator-ctor
(procedure)
Change_iterator::constructor
types
(list)
'(general-music translator-change-instruction)
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)
'TransposedMusic
internal-class-name
(string)
Transposed_music
types
(list)
'(music-wrapper-music general-music transposed-music)
Un measured tremolo.
Music types: general-music, event and tremolo-event
Accepted by: Stem_engraver, Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'TremoloEvent
internal-class-name
(string)
Event
types
(list)
'(general-music event tremolo-event)
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)
'TremoloRepeatedMusic
iterator-ctor
(procedure)
Chord_tremolo_iterator::constructor
internal-class-name
(string)
Repeated_music
start-moment-function
(procedure)
Repeated_music::first_start
length
(procedure)
Repeated_music::folded_music_length
types
(list)
'(general-music repeated-music tremolo-repeated-music)
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)
'UnaCordaEvent
internal-class-name
(string)
Event
types
(list)
'(general-music pedal-event una-corda-pedal-event)
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)
'UnfoldedRepeatedMusic
iterator-ctor
(procedure)
Unfolded_repeat_iterator::constructor
start-moment-function
(procedure)
Repeated_music::first_start
internal-class-name
(string)
Repeated_music
types
(list)
'(general-music repeated-music unfolded-repeated-music)
length
(procedure)
Repeated_music::unfolded_music_length
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)
'UnrelativableMusic
internal-class-name
(string)
Un_relativable_music
types
(list)
'(music-wrapper-music general-music unrelativable-music)
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)
'UntransposableMusic
internal-class-name
(string)
Untransposable_music
types
(list)
'(music-wrapper-music general-music untransposable-music)
Separate polyphonic voices in simultaneous music. Syntax: \\
Music types: separator and general-music
Accepted by: Swallow_performer and Voice_devnull_engraver
Properties:
name
(symbol)
'VoiceSeparator
internal-class-name
(string)
Music
types
(list)
'(separator general-music)
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)
'VoltaRepeatedMusic
iterator-ctor
(procedure)
Volta_repeat_iterator::constructor
internal-class-name
(string)
Repeated_music
start-moment-function
(procedure)
Repeated_music::first_start
length
(procedure)
Repeated_music::volta_music_length
types
(list)
'(general-music repeated-music volta-repeated-music)
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
Music event type absolute-dynamic-event
is in Music objects of type AbsoluteDynamicEvent
Accepted by: Dynamic_engraver and Dynamic_performer
Music event type apply-context
is in Music objects of type ApplyContext
Music event type arpeggio-event
is in Music objects of type ArpeggioEvent
Accepted by: Arpeggio_engraver
Music event type articulation-event
is in Music objects of type ArticulationEvent
Accepted by: Script_engraver
Music event type auto-change-instruction
is in Music objects of type AutoChangeMusic
Music event type bar-check
is in Music objects of type BarCheck
Music event type bass-figure-event
is in Music objects of type BassFigureEvent
Accepted by: Figured_bass_engraver
Music event type beam-event
is in Music objects of type BeamEvent
Accepted by: Beam_engraver and Grace_beam_engraver
Music event type break-event
is in Music objects of type BreakEvent
Accepted by: Score_engraver
Music event type breathing-event
is in Music objects of type BreathingSignEvent
Accepted by: Breathing_sign_engraver
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
Music event type cluster-note-event
is in Music objects of type ClusterNoteEvent
Accepted by: Cluster_spanner_engraver
Music event type context-specification
is in Music objects of type ContextSpeccedMusic
Music event type crescendo-event
is in Music objects of type CrescendoEvent
Accepted by: Dynamic_engraver and Span_dynamic_performer
Music event type decrescendo-event
is in Music objects of type DecrescendoEvent
Accepted by: Dynamic_engraver and Span_dynamic_performer
Music event type dynamic-event
is in Music objects of type AbsoluteDynamicEvent, CrescendoEvent and DecrescendoEvent
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
Music event type event-chord
is in Music objects of type EventChord
Music event type extender-event
is in Music objects of type ExtenderEvent
Accepted by: Extender_engraver
Music event type fingering-event
is in Music objects of type FingerEvent
Accepted by: Fingering_engraver
Music event type folded-repeated-music
is in Music objects of type FoldedRepeatedMusic
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
Music event type glissando-event
is in Music objects of type GlissandoEvent
Accepted by: Glissando_engraver and Note_head_line_engraver
Music event type grace-music
is in Music objects of type GraceMusic
Music event type hyphen-event
is in Music objects of type HyphenEvent
Accepted by: Hyphen_engraver
Music event type key-change-event
is in Music objects of type KeyChangeEvent
Accepted by: Key_engraver and Key_performer
Music event type layout-instruction
is in Music objects of type ApplyOutputEvent, OutputPropertySetMusic, OverrideProperty, PropertySet, PropertyUnset and RevertProperty
Accepted by: Output_property_engraver
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
Music event type lyric-combine-music
is in Music objects of type LyricCombineMusic
Music event type lyric-event
is in Music objects of type LyricEvent
Accepted by: Lyric_engraver and Lyric_performer
Music event type mark-event
is in Music objects of type MarkEvent
Accepted by: Mark_engraver
Music event type melisma-playing-event
is in Music objects of type MelismaPlayingEvent
Accepted by: Melisma_engraver
Music event type melodic-event
is in Music objects of type ClusterNoteEvent and NoteEvent
Music event type metronome-change-event
is in Music objects of type MetronomeChangeEvent
Accepted by: Metronome_mark_engraver and Tempo_performer
Music event type multi-measure-rest-event
is in Music objects of type MultiMeasureRestEvent
Accepted by: Multi_measure_rest_engraver
Music event type multi-measure-text-event
is in Music objects of type MultiMeasureTextEvent
Accepted by: Multi_measure_rest_engraver
Music event type music-wrapper-music
is in Music objects of type AutoChangeMusic, ContextSpeccedMusic, GraceMusic, RelativeOctaveMusic, TimeScaledMusic, TransposedMusic, UnrelativableMusic and UntransposableMusic
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
Music event type note-grouping-event
is in Music objects of type NoteGroupingEvent
Accepted by: Horizontal_bracket_engraver
Music event type part-combine-music
is in Music objects of type PartCombineMusic
Music event type pedal-event
is in Music objects of type SostenutoEvent, SustainEvent and UnaCordaEvent
Accepted by: Piano_pedal_engraver and Piano_pedal_performer
Music event type percent-repeated-music
is in Music objects of type PercentRepeatedMusic
Music event type pes-or-flexa-event
is in Music objects of type PesOrFlexaEvent
Music event type phrasing-slur-event
is in Music objects of type PhrasingSlurEvent
Accepted by: Phrasing_slur_engraver
Music event type relative-octave-check
is in Music objects of type RelativeOctaveCheck
Music event type relative-octave-music
is in Music objects of type RelativeOctaveMusic
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
Music event type rest-event
is in Music objects of type RestEvent
Accepted by: Figured_bass_engraver, Rest_engraver and Rest_swallow_translator
Music event type rhythmic-event
is in Music objects of type BassFigureEvent, ClusterNoteEvent, LyricEvent, NonEventSkip, NoteEvent, RestEvent and SkipEvent
Music event type script-event
is in Music objects of type ArticulationEvent and TextScriptEvent
Accepted by: Script_engraver
Music event type separator
is in Music objects of type VoiceSeparator
Music event type sequential-music
is in Music objects of type MultiMeasureRestMusicGroup and SequentialMusic
Music event type simultaneous-music
is in Music objects of type EventChord and SimultaneousMusic
Music event type skip-event
is in Music objects of type NonEventSkip and SkipEvent
Accepted by: Skip_event_swallow_translator
Music event type slur-event
is in Music objects of type SlurEvent
Accepted by: Slur_engraver
Music event type sostenuto-pedal-event
is in Music objects of type SostenutoEvent
Music event type span-event
is in Music objects of type BeamEvent, LigatureEvent, MultiMeasureRestEvent, PhrasingSlurEvent, SlurEvent and TextSpanEvent
Music event type string-number-event
is in Music objects of type StringNumberEvent
Accepted by: String_number_engraver and Tab_note_heads_engraver
Music event type sustain-pedal-event
is in Music objects of type SustainEvent
Music event type tempo-event
is in Music objects of type MetronomeChangeEvent
Music event type text-script-event
is in Music objects of type TextScriptEvent
Accepted by: Text_engraver
Music event type text-span-event
is in Music objects of type TextSpanEvent
Accepted by: Text_spanner_engraver
Music event type tie-event
is in Music objects of type TieEvent
Accepted by: Tie_engraver and Tie_performer
Music event type time-scaled-music
is in Music objects of type TimeScaledMusic
Accepted by: Tuplet_engraver
Music event type translator-change-instruction
is in Music objects of type TranslatorChange
Music event type transposed-music
is in Music objects of type TransposedMusic
Music event type tremolo-event
is in Music objects of type TremoloEvent
Accepted by: Stem_engraver
Music event type tremolo-repeated-music
is in Music objects of type TremoloRepeatedMusic
Music event type una-corda-pedal-event
is in Music objects of type UnaCordaEvent
Music event type unfolded-repeated-music
is in Music objects of type UnfoldedRepeatedMusic
Music event type unrelativable-music
is in Music objects of type UnrelativableMusic
Music event type untransposable-music
is in Music objects of type UntransposableMusic
Music event type volta-repeated-music
is in Music objects of type VoltaRepeatedMusic
alteration
(number)
articulation-type
(string)
TODO: consider making type into symbol
articulations
(list of music)
bass
(boolean)
bracket-start
(boolean)
bracket-stop
(boolean)
cautionary
(boolean)
change-to-id
(string)
change-to-type
(symbol)
compress-procedure
(procedure)
context-id
(string)
context-type
(symbol)
denominator
(integer)
digit
(integer)
direction
(direction)
duration
(duration)
element
(music)
elements
(list of music)
figure
(string)
force-accidental
(boolean)
grob-property
(symbol)
grob-value
(any type)
internal-class-name
(string)
inversion
(boolean)
iterator-ctor
(procedure)
label
(markup)
last-pitch
(pitch)
length
(procedure)
metronome-count
(number)
name
(symbol)
numerator
(integer)
octavation
(integer)
once
(boolean)
origin
(input location)
penalty
(number)
pitch
(pitch)
pitch-alist
(list)
pop-first
(boolean)
predicate
(procedure)
procedure
(procedure)
repeat-count
(integer)
epeat
how ofen?
span-direction
(direction)
span-type
(string)
TODO: consider making type into symbol
start-moment-function
(procedure)
string-number
(integer)
symbol
(symbol)
tags
(list)
\tag #'part ...
could tag a piece of music as only being active in a part.
tempo-unit
(duration)
text
(markup)
text-type
(symbol)
tonic
(pitch)
tremolo-type
(integer)
type
(symbol)
types
(list)
value
(any type)
what
(symbol)
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:
localKeySignature
to '()
systemStartDelimiter
to 'SystemStartBracket
Context ChoirStaff can contain InnerStaffGroup, InnerChoirStaff, ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and Staff
This context is built from the following engravers:
Properties (read)
systemStartDelimiter
(symbol)
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:
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(0 . 2.5)
This context is a `bottom' context; it can not contain other contexts.
This context is built from the following engravers:
Music types accepted:
skip-event
Music types accepted: note-event
Properties (read)
majorSevenSymbol
(markup)
chordNameExceptions
(list)
chordRootNamer
(procedure)
chordNoteNamer
(procedure)
chordNameFunction
(procedure)
chordNameExceptions
(list)
chordChanges
(boolean)
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Music types accepted:
layout-instruction
Music types accepted:
rest-event
This engraver creates the following grobs: RemoveEmptyVerticalGroup.
(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:
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Music types accepted:
note-event
Music types accepted:
rest-event
Music types accepted: bass-figure-event and rest-event
Properties (read)
bassFigureFormatFunction
(procedure)
This engraver creates the following grobs: RemoveEmptyVerticalGroup.
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:
systemStartDelimiter
to 'SystemStartBrace
localKeySignature
to '()
Context GrandStaff can contain Staff
This context is built from the following engravers:
Properties (read)
systemStartDelimiter
(symbol)
Properties (read)
connectArpeggios
(boolean)
This engraver creates the following grobs: SpanBar.
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:
transparent
in BarLine to #t
instr
to '()
instrument
to '()
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(-6 . 6)
spacing-procedure
in SeparatingGroupSpanner to Separating_group_spanner::set_spacing_rods_and_seqs
Context GregorianTranscriptionStaff can contain GregorianTranscriptionVoice
This context is built from the following engravers:
Music types accepted:
string-number-event
Properties (read)
busyGrobs
(list)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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.
Music types accepted: abort-event and pedal-event
Properties (read)
pedalUnaCordaStyle
(symbol)
pedalSustainStyle
(symbol)
pedalSostenutoStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalSustainStrings
(list)
pedalSostenutoStrings
(list)
Properties (read)
autoCautionaries
(list)
autoAccidentals
(list)
same-octave:
any-octave:
extraNatural
(boolean)
localKeySignature
(list)
localKeySignature
(list)
This engraver creates the following grobs:
RestCollision.
This engraver creates the following grobs:
NoteCollision.
This engraver creates the following grobs:
StaffSymbol.
timeSignatureFraction
changes
This engraver creates the following grobs:
TimeSignature.
Music types accepted: key-change-event
Properties (read)
keySignature
(list)
keyAccidentalOrder
(list)
createKeyOnClefChange
(boolean)
explicitKeySignatureVisibility
(procedure)
lastKeySignature
(list)
keySignature
(list)
keySignature
(list)
tonic
(pitch)
lastKeySignature
(list)
Properties (read)
explicitClefVisibility
(procedure)
clefOctavation
(integer)
centralCPosition
(number)
clefGlyph
(string)
clefPosition
(number)
Properties (read)
ottavation
(string)
This engraver creates the following grobs:
DotColumn.
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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)
Properties (read)
fontSize
(integer)
Font_size_engraver
.
whichBar
property. If it has no bar line to create, it will forbid a linebreak at this point
Properties (read)
whichBar
(string)
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.
.
Music types accepted:
layout-instruction
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
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:
edge-text
in TextSpanner to '( . )
enclose-bounds
in TextSpanner to #t
padding
in TextSpanner to 0.5
edge-height
in TextSpanner to '(0 . 0)
style
in TextSpanner to 'line
autobeaming
to #f
padding
in Script to 0.5
length
in Stem to 0.0
transparent
in Stem to #t
transparent
in Slur to #t
transparent
in LigatureBracket to #t
localKeySignature
to '()
Context GregorianTranscriptionVoice can contain Thread
This context is built from the following engravers:
Music types accepted:
skip-event
one
, down for the musicexpr called two
.
Properties (read)
unirhythm
(boolean)
unisilence
(boolean)
solo
(boolean)
unison
(boolean)
split-interval
(boolean)
aDueText
(string)
soloIIText
(string)
soloText
(string)
soloADue
(boolean)
noDirection
(boolean)
combineParts
(boolean)
Music types accepted: time-scaled-music
Properties (read)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletSpannerDuration
(moment)
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)
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Music types accepted: slur-event
Properties (read)
slurMelismaBusy
(boolean)
Music types accepted: abort-event and cluster-note-event
This engraver creates the following grobs:
ClusterSpanner and ClusterSpannerBeacon.
Music types accepted: phrasing-slur-event
This engraver creates the following grobs:
PhrasingSlur.
This engraver creates the following grobs:
NoteColumn and NoteSpacing.
This engraver creates the following grobs:
ScriptColumn.
Music types accepted: articulation-event and script-event
Properties (read)
scriptDefinitions
(list)
scm/script.scm
for more information
Music types accepted: fingering-event
This engraver creates the following grobs:
Fingering.
Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event
This engraver creates the following grobs:
DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.
Music types accepted: text-script-event
Properties (read)
scriptHorizontal
(boolean)
Music types accepted: melisma-playing-event
Properties (read)
beamMelismaBusy
(boolean)
tieMelismaBusy
(boolean)
slurMelismaBusy
(boolean)
melismaBusyProperties
(list)
melismaBusy
(boolean)
melismaEngraverBusy
(boolean)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
This engraver creates the following grobs:
Beam.
Properties (read)
fingeringOrientations
(list)
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
autoBeamSettings
(list)
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)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
allowBeamBreak
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: tremolo-event
Properties (read)
stemRightBeamCount
(integer)
stemLeftBeamCount
(integer)
tremoloFlags
(integer)
Music types accepted: breathing-event
This engraver creates the following grobs:
BreathingSign.
Music types accepted: abort-event and ligature-event
This engraver creates the following grobs:
TupletBracket.
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Music types accepted: text-span-event
This engraver creates the following grobs:
TextSpanner.
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)
measurePosition
(moment)
currentCommandColumn
(grob (GRaphical OBject))
restNumberThreshold
(number)
currentBarNumber
(integer)
Music types accepted: arpeggio-event
This engraver creates the following grobs:
Arpeggio.
Music types accepted:
layout-instruction
Music types accepted:
general-music
Properties (read)
fontSize
(integer)
Font_size_engraver
.
(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:
localKeySignature
to '()
systemStartDelimiter
to 'SystemStartBracket
Context InnerChoirStaff can contain ChordNames, Lyrics, PianoStaff, GrandStaff, RhythmicStaff and Staff
This context is built from the following engravers:
Properties (read)
systemStartDelimiter
(symbol)
(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:
systemStartDelimiter
to 'SystemStartBracket
localKeySignature
to '()
Context InnerStaffGroup can contain ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, RhythmicStaff and Staff
This context is built from the following engravers:
Properties (read)
systemStartDelimiter
(symbol)
Music types accepted:
layout-instruction
Properties (read)
connectArpeggios
(boolean)
This engraver creates the following grobs: SpanBar.
Typesets lyrics.
This context is also known as:
none
This context creates the following grobs: VerticalAlignment.
This context sets the following properties:
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to #f
Context Lyrics can contain LyricsVoice
This context is built from the following engravers:
This engraver creates the following grobs: VerticalAlignment.
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:
padding
in SeparationItem to 0.5
phrasingPunctuation
to .,:!?"
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(-1.2 . 2.4)
This context is a `bottom' context; it can not contain other contexts.
This context is built from the following engravers:
Music types accepted:
skip-event
Properties (read)
stanza
(markup)
stz
(markup)
Music types accepted: hyphen-event
This engraver creates the following grobs:
LyricHyphen.
Music types accepted: extender-event
This engraver creates the following grobs:
LyricExtender.
Music types accepted:
lyric-event
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
This engraver creates the following grobs: RemoveEmptyVerticalGroup.
(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:
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to #f
This context is a `bottom' context; it can not contain other contexts.
This context is built from the following engravers:
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Music types accepted: note-event
This engraver creates the following grobs:
NoteName.
Music types accepted:
note-event
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Music types accepted:
skip-event
Music types accepted:
rest-event
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
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:
instr
to '()
instrument
to '()
self-alignment-Y
in VerticalAlignment to 0
forced-distance
in VerticalAlignment to 12
verticalAlignmentChildCallback
to Align_interface::fixed_distance_alignment_callback
systemStartDelimiter
to 'SystemStartBrace
localKeySignature
to '()
Context PianoStaff can contain Staff
This context is built from the following engravers:
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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:
VerticalAlignment.
Properties (read)
systemStartDelimiter
(symbol)
Properties (read)
connectArpeggios
(boolean)
This engraver creates the following grobs: SpanBar.
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:
neutral-direction
in Beam to 1
neutral-direction
in Stem to 1
line-count
in StaffSymbol to 1
padding
in VoltaBracket to 5
minimum-space
in VoltaBracket to 15
bar-size
in BarLine to 4
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to #f
Context RhythmicStaff can contain Voice
This context is built from the following engravers:
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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:
StaffSymbol.
timeSignatureFraction
changes
This engraver creates the following grobs:
TimeSignature.
whichBar
property. If it has no bar line to create, it will forbid a linebreak at this point
Properties (read)
whichBar
(string)
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.
.
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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 engraver creates the following grobs:
DotColumn.
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Properties (read)
squashedPosition
(integer)
Music types accepted:
layout-instruction
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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 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:
graceSettings
to '#((Voice Stem direction 1) (Voice Stem lengths (2.8 2.8 2.8 3.6 4.0)) (Voice Stem stem-shorten (0.4 0)) (Voice Stem font-relative-size -1) (Voice NoteHead font-relative-size -1) (Voice Dots font-relative-size -1) (Voice Stem beamed-lengths (2.608)) (Voice Stem beamed-minimum-free-lengths (2.0 1.6 1.2)) (Voice Stem beamed-extreme-minimum-free-lengths (1.464 1.2)) (Voice Stem no-stem-extend #t) (Voice Beam thickness 0.384) (Voice Beam space-function #<procedure #f (beam mult)>) (Voice Beam position-callbacks (#<primitive-procedure Beam::least_squares> #<primitive-procedure Beam::check_concave> #<primitive-procedure Beam::slope_damping>)) (Staff Accidental font-relative-size -2) (Voice Slur direction -1))
metronomeMarkFormatter
to make-metronome-markup
bassFigureFormatFunction
to make-bass-figure-markup
tablatureFormat
to fret-number-tablature-format
stringTunings
to '(4 -1 -5 -10 -15 -20)
highStringOne
to #t
stringOneTopmost
to #t
chordNameExceptionsPartial
to '(((#<Pitch c' > #<Pitch d' >) (#<procedure line-markup (paper props . rest)> ((#<procedure normal-size-super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> 2))))) ((#<Pitch c' > #<Pitch ees' >) (#<procedure line-markup (paper props . rest)> ((#<procedure simple-markup (paper props . rest)> m)))) ((#<Pitch c' > #<Pitch f' >) (#<procedure line-markup (paper props . rest)> ((#<procedure normal-size-super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> sus4))))) ((#<Pitch c' > #<Pitch g' >) (#<procedure line-markup (paper props . rest)> ((#<procedure normal-size-super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> 5))))) ((#<Pitch c' > #<Pitch ees' > #<Pitch f' >) (#<procedure line-markup (paper props . rest)> ((#<procedure simple-markup (paper props . rest)> m))) (#<procedure line-markup (paper props . rest)> ((#<procedure normal-size-super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> sus4))))) ((#<Pitch c' > #<Pitch d' > #<Pitch ees' >) (#<procedure line-markup (paper props . rest)> ((#<procedure simple-markup (paper props . rest)> m))) (#<procedure line-markup (paper props . rest)> ((#<procedure normal-size-super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> sus2))))))
chordNameExceptionsFull
to '(((#<Pitch c' > #<Pitch e' > #<Pitch gis' >) (#<procedure line-markup (paper props . rest)> ((#<procedure simple-markup (paper props . rest)> +)))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' >) (#<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o))))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' > #<Pitch bes' >) (#<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure combine-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o) (#<procedure simple-markup (paper props . rest)> /)))))) ((#<Pitch c' > #<Pitch ees' > #<Pitch ges' > #<Pitch beses' >) (#<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o7))))))
chordRootNamer
to note-name->markup
chordNoteNamer
to '()
chordNameExceptions
to '(((#<Pitch e' > #<Pitch gis' >) #<procedure line-markup (paper props . rest)> ((#<procedure simple-markup (paper props . rest)> +))) ((#<Pitch ees' > #<Pitch ges' >) #<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o)))) ((#<Pitch ees' > #<Pitch ges' > #<Pitch bes' >) #<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure combine-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o) (#<procedure simple-markup (paper props . rest)> /))))) ((#<Pitch ees' > #<Pitch ges' > #<Pitch beses' >) #<procedure line-markup (paper props . rest)> ((#<procedure super-markup (paper props . rest)> (#<procedure simple-markup (paper props . rest)> o7)))))
chordNameSeparator
to '(#<procedure simple-markup (paper props . rest)> /)
majorSevenSymbol
to '(#<procedure override-markup (paper props . rest)> (font-family . math) (#<procedure simple-markup (paper props . rest)> M))
chordNameFunction
to ignatzek-chord-names
barCheckSynchronize
to #t
breakAlignOrder
to '(instrument-name left-edge ambitus breathing-sign clef staff-bar key-signature time-signature custos)
keyAccidentalOrder
to '((6 . -2) (2 . -2) (5 . -2) (1 . -2) (4 . -2) (0 . -2) (3 . -2) (3 . 2) (0 . 2) (4 . 2) (1 . 2) (5 . 2) (2 . 2) (6 . 2) (6 . -4) (2 . -4) (5 . -4) (1 . -4) (4 . -4) (0 . -4) (3 . -4) (3 . 4) (0 . 4) (4 . 4) (2 . 4) (5 . 4) (2 . 4) (6 . 4))
autoCautionaries
to '()
autoAccidentals
to '(Staff (same-octave . 0))
extraNatural
to #t
allowBeamBreak
to #f
subdivideBeams
to #f
tupletNumberFormatFunction
to denominator-tuplet-formatter
fingeringOrientations
to '(up down)
pedalSostenutoStyle
to 'mixed
pedalSostenutoStrings
to '(Sost. Ped. *Sost. Ped. *)
pedalUnaCordaStyle
to 'text
pedalUnaCordaStrings
to '(una corda tre corde)
pedalSustainStyle
to 'text
pedalSustainStrings
to '(Ped. *Ped. *)
verticalAlignmentChildCallback
to Align_interface::alignment_callback
scriptDefinitions
to '((thumb (script-molecule feta thumb . thumb) (direction . 1)) (accent (script-molecule feta sforzato . sforzato) (side-relative-direction . -1)) (marcato (script-molecule feta dmarcato . umarcato) (side-relative-direction . -1)) (staccatissimo (script-molecule feta dstaccatissimo . ustaccatissimo) (side-relative-direction . -1)) (portato (script-molecule feta dportato . uportato) (side-relative-direction . -1)) (accentus (script-molecule feta uaccentus . uaccentus) (side-relative-direction . -1) (follow-into-staff . #t) (priority . -100) (direction . 1)) (ictus (script-molecule feta ictus . ictus) (side-relative-direction . -1) (follow-into-staff . #t) (priority . -100) (direction . -1)) (semicirculus (script-molecule feta dsemicirculus . dsemicirculus) (side-relative-direction . -1) (follow-into-staff . #t) (priority . -100) (direction . 1)) (circulus (script-molecule feta circulus . circulus) (side-relative-direction . -1) (follow-into-staff . #t) (priority . -100) (direction . 1)) (signumcongruentiae (script-molecule feta dsignumcongruentiae . usignumcongruentiae) (direction . 1)) (fermata (script-molecule feta dfermata . ufermata) (direction . 1)) (shortfermata (script-molecule feta dshortfermata . ushortfermata) (direction . 1)) (longfermata (script-molecule feta dlongfermata . ulongfermata) (direction . 1)) (verylongfermata (script-molecule feta dverylongfermata . uverylongfermata) (direction . 1)) (stopped (script-molecule feta stopped . stopped) (direction . 1)) (staccato (script-molecule feta staccato . staccato) (side-relative-direction . -1) (follow-into-staff . #t) (priority . -100)) (tenuto (script-molecule feta tenuto . tenuto) (follow-into-staff . #t) (side-relative-direction . -1)) (comma (script-molecule feta lcomma . rcomma) (follow-into-staff . #t) (direction . 1)) (varcomma (script-molecule feta lvarcomma . rvarcomma) (follow-into-staff . #t) (direction . 1)) (upbow (script-molecule feta upbow . upbow) (direction . 1)) (downbow (script-molecule feta downbow . downbow) (direction . 1)) (lheel (script-molecule feta upedalheel . upedalheel) (direction . -1)) (rheel (script-molecule feta dpedalheel . dpedalheel) (direction . 1)) (ltoe (script-molecule feta upedaltoe . upedaltoe) (direction . -1)) (rtoe (script-molecule feta dpedaltoe . dpedaltoe) (direction . 1)) (turn (script-molecule feta turn . turn) (direction . 1)) (open (script-molecule feta open . open) (direction . 1)) (flageolet (script-molecule feta flageolet . flageolet) (direction . 1)) (reverseturn (script-molecule feta reverseturn . reverseturn) (direction . 1)) (trill (script-molecule feta trill . trill) (direction . 1) (priority . 2000)) (prall (script-molecule feta prall . prall) (direction . 1)) (mordent (script-molecule feta mordent . mordent) (direction . 1)) (prallprall (script-molecule feta prallprall . prallprall) (direction . 1)) (prallmordent (script-molecule feta prallmordent . prallmordent) (direction . 1)) (upprall (script-molecule feta upprall . upprall) (direction . 1)) (downprall (script-molecule feta downprall . downprall) (direction . 1)) (upmordent (script-molecule feta upmordent . upmordent) (direction . 1)) (downmordent (script-molecule feta downmordent . downmordent) (direction . 1)) (lineprall (script-molecule feta lineprall . lineprall) (direction . 1)) (pralldown (script-molecule feta pralldown . pralldown) (direction . 1)) (prallup (script-molecule feta prallup . prallup) (direction . 1)) (segno (script-molecule feta segno . segno) (direction . 1)) (coda (script-molecule feta coda . coda) (direction . 1)) (varcoda (script-molecule feta varcoda . varcoda) (direction . 1)))
autoBeaming
to #t
autoBeamSettings
to '(((end * * 3 2) . #<Mom 1/2 >) ((end 1 16 3 2) . #<Mom 1/4 >) ((end 1 32 3 2) . #<Mom 1/8 >) ((begin 1 8 3 4) . #<Mom 1/4 >) ((end * * 3 4) . #<Mom 3/4 >) ((begin 1 16 3 4) . #<Mom 1/16 >) ((end 1 16 3 4) . #<Mom 1/4 >) ((end 1 32 3 4) . #<Mom 1/8 >) ((begin 1 16 3 8) . #<Mom 1/8 >) ((end * * 3 8) . #<Mom 3/8 >) ((end * * 4 4) . #<Mom 1/2 >) ((end 1 12 4 4) . #<Mom 1/4 >) ((end 1 16 4 4) . #<Mom 1/4 >) ((end 1 32 4 4) . #<Mom 1/8 >) ((end * * 2 4) . #<Mom 1/4 >) ((end 1 12 2 4) . #<Mom 1/4 >) ((end 1 16 2 4) . #<Mom 1/4 >) ((end 1 32 2 4) . #<Mom 1/8 >) ((end * * 4 8) . #<Mom 1/4 >) ((end 1 16 4 8) . #<Mom 1/4 >) ((end 1 32 4 8) . #<Mom 1/8 >) ((end * * 4 16) . #<Mom 1/8 >) ((end * * 6 8) . #<Mom 3/8 >) ((end 1 16 6 8) . #<Mom 3/8 >) ((end 1 32 6 8) . #<Mom 1/8 >) ((end * * 9 8) . #<Mom 3/8 >) ((end 1 16 9 8) . #<Mom 3/8 >) ((end 1 32 9 8) . #<Mom 1/8 >) ((end * * 12 8) . #<Mom 3/8 >) ((end 1 16 12 8) . #<Mom 3/8 >) ((end 1 32 12 8) . #<Mom 1/8 >))
explicitKeySignatureVisibility
to all-visible
explicitClefVisibility
to all-visible
automaticBars
to #t
barNumberVisibility
to default-bar-number-visibility
defaultBarType
to |
automaticMelismata
to #t
automaticPhrasing
to #t
centralCPosition
to -6
clefPosition
to -2
clefGlyph
to clefs-G
melismaBusyProperties
to '(melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy)
systemStartDelimiter
to 'SystemStartBar
changeMoment
to '(#<Mom 0 > . #<Mom 1/512 >)
splitInterval
to '(0 . 1)
soloADue
to #t
aDueText
to a2
soloIIText
to Solo II
soloText
to Solo
localKeySignature
to '()
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:
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))
currentMusicalColumn
(grob (GRaphical OBject))
Properties (read)
connectArpeggios
(boolean)
Properties (read)
barNumberVisibility
(procedure)
stavesFound
(list)
currentBarNumber
(integer)
This engraver is switched on by default. Turn it off for faster processing of orchestral scores.
Properties (read)
phrasingPunctuation
(string)
associatedVoice
(string)
melismaEngraverBusy
(boolean)
automaticPhrasing
(boolean)
lyrics-multi-stanza.ly
.
This engraver creates the following grobs:
VerticalAlignment.
This engraver creates the following grobs:
SpacingSpanner.
Properties (read)
breakAlignOrder
(list)
\property Score.breakAlignOrder = #'( span-bar breathing-sign clef staff-bar key time-signature )
Music types accepted: metronome-change-event
Properties (read)
metronomeMarkFormatter
(procedure)
stavesFound
(list)
Music types accepted: mark-event
Properties (read)
stavesFound
(list)
rehearsalMark
(number or string)
Properties (read)
systemStartDelimiter
(symbol)
Music types accepted:
layout-instruction
Score
. In order to create polyrhythmic music, this engraver should be removed from Score
and placed in Staff
.
Properties (read)
currentBarNumber
(integer)
measurePosition
(moment)
measureLength
(moment)
timing
(boolean)
skipBars
(boolean)
@lilypond[fragment,verbatim,center] r1 r1*3 R1*3 \\property Score.skipBars= ##t r1*3 R1*3 @end lilypond
defaultBarType
(string)
This variable is typically read at Score level, so overriding
Staff.defaultBarType will have no effect.
barAlways
(boolean)
whichBar
(string)
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)
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)
Properties (read)
stavesFound
(list)
stavesFound
(list)
Properties (read)
whichBar
(string)
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)
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:
instr
to '()
instrument
to '()
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(-6 . 6)
spacing-procedure
in SeparatingGroupSpanner to Separating_group_spanner::set_spacing_rods_and_seqs
Context Staff can contain Voice
This context is built from the following engravers:
Music types accepted:
string-number-event
Properties (read)
busyGrobs
(list)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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.
Music types accepted: abort-event and pedal-event
Properties (read)
pedalUnaCordaStyle
(symbol)
pedalSustainStyle
(symbol)
pedalSostenutoStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalSustainStrings
(list)
pedalSostenutoStrings
(list)
Properties (read)
autoCautionaries
(list)
autoAccidentals
(list)
same-octave:
any-octave:
extraNatural
(boolean)
localKeySignature
(list)
localKeySignature
(list)
This engraver creates the following grobs:
RestCollision.
This engraver creates the following grobs:
NoteCollision.
This engraver creates the following grobs:
StaffSymbol.
timeSignatureFraction
changes
This engraver creates the following grobs:
TimeSignature.
Music types accepted: key-change-event
Properties (read)
keySignature
(list)
keyAccidentalOrder
(list)
createKeyOnClefChange
(boolean)
explicitKeySignatureVisibility
(procedure)
lastKeySignature
(list)
keySignature
(list)
keySignature
(list)
tonic
(pitch)
lastKeySignature
(list)
Properties (read)
explicitClefVisibility
(procedure)
clefOctavation
(integer)
centralCPosition
(number)
clefGlyph
(string)
clefPosition
(number)
Properties (read)
ottavation
(string)
This engraver creates the following grobs:
DotColumn.
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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)
Properties (read)
fontSize
(integer)
Font_size_engraver
.
whichBar
property. If it has no bar line to create, it will forbid a linebreak at this point
Properties (read)
whichBar
(string)
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.
.
Music types accepted:
layout-instruction
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
(not documented)
This context is also known as:
none
This context creates the following grobs: VerticalAxisGroup.
This context sets the following properties:
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to #f
Context StaffContainer can contain Staff
This context is built from the following engravers:
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
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:
systemStartDelimiter
to 'SystemStartBracket
localKeySignature
to '()
Context StaffGroup can contain FiguredBass, InnerStaffGroup, ChoirStaff, InnerChoirStaff, ChordNames, Lyrics, TabStaff, PianoStaff, GrandStaff, RhythmicStaff and Staff
This context is built from the following engravers:
Properties (read)
systemStartDelimiter
(symbol)
Music types accepted:
layout-instruction
Properties (read)
connectArpeggios
(boolean)
This engraver creates the following grobs: SpanBar.
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:
clefPosition
to 0
clefGlyph
to clefs-tab
avoid-note-head
in Stem to #t
staff-space
in StaffSymbol to 1.5
line-count
in StaffSymbol to 6
instr
to '()
instrument
to '()
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(-6 . 6)
spacing-procedure
in SeparatingGroupSpanner to Separating_group_spanner::set_spacing_rods_and_seqs
Context TabStaff can contain TabVoice
This context is built from the following engravers:
Properties (read)
busyGrobs
(list)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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.
Music types accepted: abort-event and pedal-event
Properties (read)
pedalUnaCordaStyle
(symbol)
pedalSustainStyle
(symbol)
pedalSostenutoStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalSustainStrings
(list)
pedalSostenutoStrings
(list)
This engraver creates the following grobs:
RestCollision.
This engraver creates the following grobs:
NoteCollision.
This engraver creates the following grobs:
StaffSymbol.
timeSignatureFraction
changes
This engraver creates the following grobs:
TimeSignature.
Properties (read)
explicitClefVisibility
(procedure)
clefOctavation
(integer)
centralCPosition
(number)
clefGlyph
(string)
clefPosition
(number)
Properties (read)
ottavation
(string)
This engraver creates the following grobs:
DotColumn.
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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)
Properties (read)
fontSize
(integer)
Font_size_engraver
.
whichBar
property. If it has no bar line to create, it will forbid a linebreak at this point
Properties (read)
whichBar
(string)
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.
.
Music types accepted:
layout-instruction
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
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:
direction
in Slur to -1
molecule-callback
in Slur to hammer-molecule-callback
font-family
in Slur to 'roman
localKeySignature
to '()
This context is a `bottom' context; it can not contain other contexts.
This context is built from the following engravers:
Music types accepted: busy-playing-event, string-number-event and note-event
Properties (read)
stringOneTopmost
(boolean)
highStringOne
(boolean)
tablatureFormat
(procedure)
minimumFret
(number)
stringTunings
(list)
centralCPosition
(number)
Music types accepted:
skip-event
one
, down for the musicexpr called two
.
Properties (read)
unirhythm
(boolean)
unisilence
(boolean)
solo
(boolean)
unison
(boolean)
split-interval
(boolean)
aDueText
(string)
soloIIText
(string)
soloText
(string)
soloADue
(boolean)
noDirection
(boolean)
combineParts
(boolean)
Music types accepted: time-scaled-music
Properties (read)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletSpannerDuration
(moment)
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)
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Music types accepted: slur-event
Properties (read)
slurMelismaBusy
(boolean)
Music types accepted: abort-event and cluster-note-event
This engraver creates the following grobs:
ClusterSpanner and ClusterSpannerBeacon.
Music types accepted: phrasing-slur-event
This engraver creates the following grobs:
PhrasingSlur.
This engraver creates the following grobs:
NoteColumn and NoteSpacing.
This engraver creates the following grobs:
ScriptColumn.
Music types accepted: articulation-event and script-event
Properties (read)
scriptDefinitions
(list)
scm/script.scm
for more information
Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event
This engraver creates the following grobs:
DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.
Music types accepted: text-script-event
Properties (read)
scriptHorizontal
(boolean)
Music types accepted: melisma-playing-event
Properties (read)
beamMelismaBusy
(boolean)
tieMelismaBusy
(boolean)
slurMelismaBusy
(boolean)
melismaBusyProperties
(list)
melismaBusy
(boolean)
melismaEngraverBusy
(boolean)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
This engraver creates the following grobs:
Beam.
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
autoBeamSettings
(list)
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)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
allowBeamBreak
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: tremolo-event
Properties (read)
stemRightBeamCount
(integer)
stemLeftBeamCount
(integer)
tremoloFlags
(integer)
Music types accepted: breathing-event
This engraver creates the following grobs:
BreathingSign.
Music types accepted: abort-event and ligature-event
This engraver creates the following grobs:
TupletBracket.
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Music types accepted: text-span-event
This engraver creates the following grobs:
TextSpanner.
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)
measurePosition
(moment)
currentCommandColumn
(grob (GRaphical OBject))
restNumberThreshold
(number)
currentBarNumber
(integer)
Music types accepted: arpeggio-event
This engraver creates the following grobs:
Arpeggio.
Music types accepted:
layout-instruction
Music types accepted:
general-music
Properties (read)
fontSize
(integer)
Font_size_engraver
.
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:
localKeySignature
to '()
This context is a `bottom' context; it can not contain other contexts.
This context is built from the following engravers:
Music types accepted:
layout-instruction
Music types accepted: rest-event
Properties (read)
centralCPosition
(number)
Music types accepted: abort-event, ligature-event, busy-playing-event and note-event
Properties (read)
centralCPosition
(number)
Thread_devnull_engraver
to discard everything in the second thread.
Properties (read)
fontSize
(integer)
Font_size_engraver
.
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:
adjust-if-on-staffline
in Custos to #t
neutral-direction
in Custos to -1
neutral-position
in Custos to 3
style
in Custos to 'vaticana
style
in Accidental to 'vaticana
style
in KeySignature to 'vaticana
clefOctavation
to 0
clefPosition
to 1
centralCPosition
to 1
clefGlyph
to clefs-vaticana_do
thickness
in StaffSymbol to 0.6
line-count
in StaffSymbol to 4
transparent
in BarLine to #t
instr
to '()
instrument
to '()
localKeySignature
to '()
verticalExtent
to #f
extraVerticalExtent
to #f
minimumVerticalExtent
to '(-6 . 6)
spacing-procedure
in SeparatingGroupSpanner to Separating_group_spanner::set_spacing_rods_and_seqs
Context VaticanaStaff can contain VaticanaVoice
This context is built from the following engravers:
This engraver creates the following grobs:
Custos.
Music types accepted:
string-number-event
Properties (read)
busyGrobs
(list)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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.
Music types accepted: abort-event and pedal-event
Properties (read)
pedalUnaCordaStyle
(symbol)
pedalSustainStyle
(symbol)
pedalSostenutoStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalSustainStrings
(list)
pedalSostenutoStrings
(list)
Properties (read)
autoCautionaries
(list)
autoAccidentals
(list)
same-octave:
any-octave:
extraNatural
(boolean)
localKeySignature
(list)
localKeySignature
(list)
This engraver creates the following grobs:
RestCollision.
This engraver creates the following grobs:
NoteCollision.
This engraver creates the following grobs:
StaffSymbol.
Music types accepted: key-change-event
Properties (read)
keySignature
(list)
keyAccidentalOrder
(list)
createKeyOnClefChange
(boolean)
explicitKeySignatureVisibility
(procedure)
lastKeySignature
(list)
keySignature
(list)
keySignature
(list)
tonic
(pitch)
lastKeySignature
(list)
Properties (read)
explicitClefVisibility
(procedure)
clefOctavation
(integer)
centralCPosition
(number)
clefGlyph
(string)
clefPosition
(number)
Properties (read)
ottavation
(string)
This engraver creates the following grobs:
DotColumn.
This engraver creates the following grobs:
SeparatingGroupSpanner and SeparationItem.
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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)
Properties (read)
fontSize
(integer)
Font_size_engraver
.
whichBar
property. If it has no bar line to create, it will forbid a linebreak at this point
Properties (read)
whichBar
(string)
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.
.
Music types accepted:
layout-instruction
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
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:
edge-text
in TextSpanner to '( . )
enclose-bounds
in TextSpanner to #t
padding
in TextSpanner to 0.5
edge-height
in TextSpanner to '(0 . 0)
style
in TextSpanner to 'line
autobeaming
to #f
padding
in Script to 0.5
style
in NoteHead to 'vaticana_punctum
length
in Stem to 0.0
transparent
in Stem to #t
transparent
in Slur to #t
localKeySignature
to '()
Context VaticanaVoice can contain Thread
This context is built from the following engravers:
Music types accepted: abort-event and ligature-event
This engraver creates the following grobs:
VaticanaLigature.
Music types accepted:
skip-event
one
, down for the musicexpr called two
.
Properties (read)
unirhythm
(boolean)
unisilence
(boolean)
solo
(boolean)
unison
(boolean)
split-interval
(boolean)
aDueText
(string)
soloIIText
(string)
soloText
(string)
soloADue
(boolean)
noDirection
(boolean)
combineParts
(boolean)
Music types accepted: time-scaled-music
Properties (read)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletSpannerDuration
(moment)
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)
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Music types accepted: slur-event
Properties (read)
slurMelismaBusy
(boolean)
Music types accepted: abort-event and cluster-note-event
This engraver creates the following grobs:
ClusterSpanner and ClusterSpannerBeacon.
Music types accepted: phrasing-slur-event
This engraver creates the following grobs:
PhrasingSlur.
This engraver creates the following grobs:
NoteColumn and NoteSpacing.
This engraver creates the following grobs:
ScriptColumn.
Music types accepted: articulation-event and script-event
Properties (read)
scriptDefinitions
(list)
scm/script.scm
for more information
Music types accepted: fingering-event
This engraver creates the following grobs:
Fingering.
Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event
This engraver creates the following grobs:
DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.
Music types accepted: text-script-event
Properties (read)
scriptHorizontal
(boolean)
Music types accepted: melisma-playing-event
Properties (read)
beamMelismaBusy
(boolean)
tieMelismaBusy
(boolean)
slurMelismaBusy
(boolean)
melismaBusyProperties
(list)
melismaBusy
(boolean)
melismaEngraverBusy
(boolean)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
This engraver creates the following grobs:
Beam.
Properties (read)
fingeringOrientations
(list)
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
autoBeamSettings
(list)
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)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
allowBeamBreak
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: tremolo-event
Properties (read)
stemRightBeamCount
(integer)
stemLeftBeamCount
(integer)
tremoloFlags
(integer)
Music types accepted: breathing-event
This engraver creates the following grobs:
BreathingSign.
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Music types accepted: text-span-event
This engraver creates the following grobs:
TextSpanner.
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)
measurePosition
(moment)
currentCommandColumn
(grob (GRaphical OBject))
restNumberThreshold
(number)
currentBarNumber
(integer)
Music types accepted: arpeggio-event
This engraver creates the following grobs:
Arpeggio.
Music types accepted:
layout-instruction
Music types accepted:
general-music
Properties (read)
fontSize
(integer)
Font_size_engraver
.
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:
localKeySignature
to '()
Context Voice can contain Thread
This context is built from the following engravers:
Music types accepted:
skip-event
one
, down for the musicexpr called two
.
Properties (read)
unirhythm
(boolean)
unisilence
(boolean)
solo
(boolean)
unison
(boolean)
split-interval
(boolean)
aDueText
(string)
soloIIText
(string)
soloText
(string)
soloADue
(boolean)
noDirection
(boolean)
combineParts
(boolean)
Music types accepted: time-scaled-music
Properties (read)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletSpannerDuration
(moment)
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)
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Music types accepted: slur-event
Properties (read)
slurMelismaBusy
(boolean)
Music types accepted: abort-event and cluster-note-event
This engraver creates the following grobs:
ClusterSpanner and ClusterSpannerBeacon.
Music types accepted: phrasing-slur-event
This engraver creates the following grobs:
PhrasingSlur.
This engraver creates the following grobs:
NoteColumn and NoteSpacing.
This engraver creates the following grobs:
ScriptColumn.
Music types accepted: articulation-event and script-event
Properties (read)
scriptDefinitions
(list)
scm/script.scm
for more information
Music types accepted: fingering-event
This engraver creates the following grobs:
Fingering.
Music types accepted: decrescendo-event, crescendo-event and absolute-dynamic-event
This engraver creates the following grobs:
DynamicLineSpanner, DynamicText, Hairpin and TextSpanner.
Music types accepted: text-script-event
Properties (read)
scriptHorizontal
(boolean)
Music types accepted: melisma-playing-event
Properties (read)
beamMelismaBusy
(boolean)
tieMelismaBusy
(boolean)
slurMelismaBusy
(boolean)
melismaBusyProperties
(list)
melismaBusy
(boolean)
melismaEngraverBusy
(boolean)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Music types accepted: repeated-music
This engraver creates the following grobs:
Beam.
Properties (read)
fingeringOrientations
(list)
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
autoBeamSettings
(list)
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)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
allowBeamBreak
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: abort-event and beam-event
Properties (read)
subdivideBeams
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Music types accepted: tremolo-event
Properties (read)
stemRightBeamCount
(integer)
stemLeftBeamCount
(integer)
tremoloFlags
(integer)
Music types accepted: breathing-event
This engraver creates the following grobs:
BreathingSign.
Music types accepted: abort-event and ligature-event
This engraver creates the following grobs:
TupletBracket.
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Properties (read)
busyGrobs
(list)
busyGrobs
(list)
Music types accepted: text-span-event
This engraver creates the following grobs:
TextSpanner.
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)
measurePosition
(moment)
currentCommandColumn
(grob (GRaphical OBject))
restNumberThreshold
(number)
currentBarNumber
(integer)
Music types accepted: arpeggio-event
This engraver creates the following grobs:
Arpeggio.
Music types accepted:
layout-instruction
Music types accepted:
general-music
Properties (read)
fontSize
(integer)
Font_size_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)
unisilence
(boolean)
solo
(boolean)
unison
(boolean)
split-interval
(boolean)
aDueText
(string)
soloIIText
(string)
soloText
(string)
soloADue
(boolean)
noDirection
(boolean)
combineParts
(boolean)
A2_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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)
autoAccidentals
(list)
same-octave:
any-octave:
extraNatural
(boolean)
localKeySignature
(list)
localKeySignature
(list)
Accidental_engraver is part of contexts: GregorianTranscriptionStaff, Staff and VaticanaStaff
This engraver creates the following grobs: Ambitus.
Ambitus_engraver is part of contexts: none
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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)
beatLength
(moment)
autoBeamSettings
(list)
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)
Auto_beam_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Group all objects created in this context in a VerticalAxisGroup spanner.
Properties (read)
extraVerticalExtent
(pair of numbers)
minimumVerticalExtent
(pair of numbers)
verticalExtent
(pair of numbers)
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
.
Axis_group_engraver is part of contexts: GregorianTranscriptionStaff, RhythmicStaff, NoteNames, Staff, VaticanaStaff, StaffContainer and TabStaff
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)
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.
.
Bar_engraver is part of contexts: GregorianTranscriptionStaff, RhythmicStaff, Staff, VaticanaStaff and TabStaff
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)
stavesFound
(list)
currentBarNumber
(integer)
Bar_number_engraver is part of contexts: Score
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)
beatLength
(moment)
beamMelismaBusy
(boolean)
Beam_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder
Properties (read)
breakAlignOrder
(list)
\property Score.breakAlignOrder = #'( span-bar breathing-sign clef staff-bar key time-signature )
Break_align_engraver is part of contexts: Score
Music types accepted: breathing-event
This engraver creates the following grobs: BreathingSign.
Breathing_sign_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Catch note-events and generate the appropriate chordname.
Music types accepted: note-event
Properties (read)
majorSevenSymbol
(markup)
chordNameExceptions
(list)
chordRootNamer
(procedure)
chordNoteNamer
(procedure)
chordNameFunction
(procedure)
chordNameExceptions
(list)
chordChanges
(boolean)
Chord_name_engraver is part of contexts: ChordNames
Generates beams for tremolo repeats.
Music types accepted: repeated-music
This engraver creates the following grobs: Beam.
Chord_tremolo_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Determine and set reference point for pitches
Properties (read)
explicitClefVisibility
(procedure)
clefOctavation
(integer)
centralCPosition
(number)
clefGlyph
(string)
clefPosition
(number)
Clef_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
This engraver creates the following grobs: NoteCollision.
Collision_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
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)
measurePosition
(moment)
centralCPosition
(number)
Completion_heads_engraver is part of contexts: none
This engraver creates the following grobs: Custos.
Custos_engraver is part of contexts: VaticanaStaff
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: GregorianTranscriptionStaff, RhythmicStaff, Staff, VaticanaStaff and TabStaff
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Music types accepted: absolute-dynamic-event
Properties (read)
instrumentEqualizer
(procedure)
midiInstrument
(string)
midiMinimumVolume
(number)
midiMaximumVolume
(number)
dynamicAbsoluteVolumeFunction
(procedure)
Dynamic_performer is part of contexts: none
Engraver is part of contexts: none
A group of engravers taken together
Engraver_group_engraver is part of contexts: GrandStaff, FiguredBass, ChordNames, InnerStaffGroup, GregorianTranscriptionVoice, Thread, GregorianTranscriptionStaff, PianoStaff, LyricsVoice, Voice, InnerChoirStaff, RhythmicStaff, TabVoice, StaffGroup, Lyrics, ChoirStaff, VaticanaVoice, NoteNames, Staff, VaticanaStaff, StaffContainer and TabStaff
Create lyric extenders
Music types accepted: extender-event
This engraver creates the following grobs: LyricExtender.
Extender_engraver is part of contexts: LyricsVoice
Make figured bass numbers.
Music types accepted: bass-figure-event and rest-event
Properties (read)
bassFigureFormatFunction
(procedure)
Figured_bass_engraver is part of contexts: FiguredBass
Create fingering-scripts
Music types accepted: fingering-event
This engraver creates the following grobs: Fingering.
Fingering_engraver is part of contexts: GregorianTranscriptionVoice, Voice and VaticanaVoice
Puts fontSize into font-relative-size grob property.
Properties (read)
fontSize
(integer)
Font_size_engraver
.
Font_size_engraver is part of contexts: GregorianTranscriptionVoice, Thread, GregorianTranscriptionStaff, Voice, TabVoice, VaticanaVoice, Staff, VaticanaStaff and TabStaff
Forbid line breaks when note heads are still playing at some point.
Properties (read)
busyGrobs
(list)
Forbid_line_break_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
Engrave a glissandi
Music types accepted: glissando-event
Properties (read)
followVoice
(boolean)
Glissando_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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)
allowBeamBreak
(boolean)
beatLength
(moment)
beamMelismaBusy
(boolean)
Grace_beam_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
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)
busyGrobs
(list)
Grob_pq_engraver is part of contexts: GregorianTranscriptionVoice, GregorianTranscriptionStaff, Voice, TabVoice, VaticanaVoice, Staff, VaticanaStaff and TabStaff
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: FiguredBass, ChordNames and LyricsVoice
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
Create lyric hyphens
Music types accepted: hyphen-event
This engraver creates the following grobs: LyricHyphen.
Hyphen_engraver is part of contexts: LyricsVoice
Prints the name of the instrument (specified by Staff.instrument
and Staff.instr
) at the left of the staff.
Properties (read)
instr
(markup)
instrument
instrument
(markup)
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.
Instrument_name_engraver is part of contexts: GregorianTranscriptionStaff, PianoStaff, RhythmicStaff, Staff, VaticanaStaff and TabStaff
Music types accepted: key-change-event
Properties (read)
keySignature
(list)
keyAccidentalOrder
(list)
createKeyOnClefChange
(boolean)
explicitKeySignatureVisibility
(procedure)
lastKeySignature
(list)
keySignature
(list)
keySignature
(list)
tonic
(pitch)
lastKeySignature
(list)
Key_engraver is part of contexts: GregorianTranscriptionStaff, Staff and VaticanaStaff
Music types accepted: key-change-event
Key_performer is part of contexts: none
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
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
Music types accepted: lyric-event
Lyric_engraver is part of contexts: LyricsVoice
Music types accepted: lyric-event
Lyric_performer is part of contexts: none
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)
associatedVoice
(string)
melismaEngraverBusy
(boolean)
automaticPhrasing
(boolean)
lyrics-multi-stanza.ly
.
Lyric_phrasing_engraver is part of contexts: Score
Music types accepted: mark-event
Properties (read)
stavesFound
(list)
rehearsalMark
(number or string)
Mark_engraver is part of contexts: Score
Creates Measure_grouping objects using beatGrouping property
Properties (read)
currentMusicalColumn
(grob (GRaphical OBject))
measurePosition
(moment)
beatLength
(moment)
beatGrouping
(list)
Measure_grouping_engraver is part of contexts: none
Music types accepted: melisma-playing-event
Properties (read)
beamMelismaBusy
(boolean)
tieMelismaBusy
(boolean)
slurMelismaBusy
(boolean)
melismaBusyProperties
(list)
melismaBusy
(boolean)
melismaEngraverBusy
(boolean)
Melisma_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
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)
stavesFound
(list)
Metronome_mark_engraver is part of contexts: Score
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)
measurePosition
(moment)
currentCommandColumn
(grob (GRaphical OBject))
restNumberThreshold
(number)
currentBarNumber
(integer)
Multi_measure_rest_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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)
autoAccidentals
(list)
same-octave:
any-octave:
extraNatural
(boolean)
localKeySignatureChanges
(list)
localKeySignature
(list)
localKeySignatureChanges
(list)
localKeySignature
(list)
New_accidental_engraver is part of contexts: none
Create fingering-scripts for notes in a new chord.
Properties (read)
fingeringOrientations
(list)
New_fingering_engraver is part of contexts: GregorianTranscriptionVoice, Voice and VaticanaVoice
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)
Note_head_line_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Generate noteheads.
Music types accepted: abort-event, ligature-event, busy-playing-event and note-event
Properties (read)
centralCPosition
(number)
Note_heads_engraver is part of contexts: Thread
Music types accepted: note-event
This engraver creates the following grobs: NoteName.
Note_name_engraver is part of contexts: NoteNames
Music types accepted: note-event
Note_performer is part of contexts: none
Swallow notes
Music types accepted: note-event
Note_swallow_translator is part of contexts: FiguredBass and NoteNames
Create a text spanner when the ottavation property changes..
Properties (read)
ottavation
(string)
Ottava_spanner_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
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: ChordNames, InnerStaffGroup, GregorianTranscriptionVoice, Score, Thread, GregorianTranscriptionStaff, Voice, RhythmicStaff, TabVoice, StaffGroup, VaticanaVoice, Staff, VaticanaStaff and TabStaff
Make whole bar and double bar repeats.
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Percent_repeat_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Performer_group_performer is part of contexts: none
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Engrave piano pedal symbols and brackets.
Music types accepted: abort-event and pedal-event
Properties (read)
pedalUnaCordaStyle
(symbol)
pedalSustainStyle
(symbol)
pedalSostenutoStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalSustainStrings
(list)
pedalSostenutoStrings
(list)
Piano_pedal_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
Music types accepted: pedal-event
Piano_pedal_performer is part of contexts: none
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)
Pitch_squash_engraver is part of contexts: RhythmicStaff
Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar.
Properties (read)
whichBar
(string)
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)
Repeat_acknowledge_engraver is part of contexts: Score
Handles collisions of rests.
This engraver creates the following grobs: RestCollision.
Rest_collision_engraver is part of contexts: GregorianTranscriptionStaff, Staff, VaticanaStaff and TabStaff
Music types accepted: rest-event
Properties (read)
centralCPosition
(number)
Rest_engraver is part of contexts: Thread
Swallow rest
Music types accepted: rest-event
Rest_swallow_translator is part of contexts: FiguredBass, ChordNames and NoteNames
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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))
currentMusicalColumn
(grob (GRaphical OBject))
Score_engraver is part of contexts: Score
Score_performer is part of contexts: none
This engraver creates the following grobs: ScriptColumn.
Script_column_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Handles note scripted articulations.
Music types accepted: articulation-event and script-event
Properties (read)
scriptDefinitions
(list)
scm/script.scm
for more information
Script_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Generates objects for computing spacing parameters.
This engraver creates the following grobs: SeparatingGroupSpanner and SeparationItem.
Separating_line_group_engraver is part of contexts: FiguredBass, ChordNames, GregorianTranscriptionStaff, LyricsVoice, RhythmicStaff, NoteNames, Staff, VaticanaStaff and TabStaff
Swallow \skip.
Music types accepted: skip-event
Skip_event_swallow_translator is part of contexts: ChordNames, GregorianTranscriptionVoice, LyricsVoice, Voice, TabVoice, VaticanaVoice and NoteNames
Make beat repeats.
Music types accepted: repeated-music
Properties (read)
currentCommandColumn
(grob (GRaphical OBject))
measureLength
(moment)
Slash_repeat_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Build slurs from Slur_evs
Music types accepted: slur-event
Properties (read)
slurMelismaBusy
(boolean)
Slur_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
Properties (read)
connectArpeggios
(boolean)
Span_arpeggio_engraver is part of contexts: GrandStaff, InnerStaffGroup, Score, PianoStaff and StaffGroup
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: GrandStaff, InnerStaffGroup, PianoStaff and StaffGroup
Music types accepted: decrescendo-event and crescendo-event
Span_dynamic_performer is part of contexts: none
Maintain the stavesFound variable
Properties (read)
stavesFound
(list)
stavesFound
(list)
Staff_collecting_engraver is part of contexts: Score
Staff_performer is part of contexts: none
create the constellation of five (default) staff lines.
This engraver creates the following grobs: StaffSymbol.
Staff_symbol_engraver is part of contexts: GregorianTranscriptionStaff, RhythmicStaff, Staff, VaticanaStaff and TabStaff
Properties (read)
stanza
(markup)
stz
(markup)
Stanza_number_engraver is part of contexts: LyricsVoice
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)
stemLeftBeamCount
(integer)
tremoloFlags
(integer)
Stem_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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: GregorianTranscriptionStaff, Staff and VaticanaStaff
Music types accepted: general-music
Swallow_performer is part of contexts: none
Creates a system start delimiter (ie. SystemStart{Bar,Brace,Bracket} spanner
Properties (read)
systemStartDelimiter
(symbol)
System_start_delimiter_engraver is part of contexts: GrandStaff, InnerStaffGroup, Score, PianoStaff, InnerChoirStaff, StaffGroup and ChoirStaff
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)
highStringOne
(boolean)
tablatureFormat
(procedure)
minimumFret
(number)
stringTunings
(list)
centralCPosition
(number)
Tab_note_heads_engraver is part of contexts: TabVoice
Music types accepted: metronome-change-event
Tempo_performer is part of contexts: none
Create text-scripts
Music types accepted: text-script-event
Properties (read)
scriptHorizontal
(boolean)
Text_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
Generate ties between noteheads of equal pitch.
Music types accepted: tie-event
Properties (read)
tieMelismaBusy
(boolean)
Tie_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice, VaticanaVoice and NoteNames
Music types accepted: tie-event
Tie_performer is part of contexts: none
Create a TimeSignature whenever timeSignatureFraction
changes
This engraver creates the following grobs: TimeSignature.
Time_signature_engraver is part of contexts: GregorianTranscriptionStaff, RhythmicStaff, Staff and TabStaff
Time_signature_performer is part of contexts: none
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)
measurePosition
(moment)
measureLength
(moment)
timing
(boolean)
skipBars
(boolean)
@lilypond[fragment,verbatim,center] r1 r1*3 R1*3 \\property Score.skipBars= ##t r1*3 R1*3 @end lilypond
defaultBarType
(string)
This variable is typically read at Score level, so overriding
Staff.defaultBarType will have no effect.
barAlways
(boolean)
whichBar
(string)
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)
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)
Timing_engraver is part of contexts: Score
Timing_translator is part of contexts: none
Catch Time_scaled_music and generate appropriate bracket
Music types accepted: time-scaled-music
Properties (read)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletSpannerDuration
(moment)
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)
Tuplet_engraver is part of contexts: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
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
Catch Vertical axis groups and stack them.
This engraver creates the following grobs: VerticalAlignment.
Vertical_align_engraver is part of contexts: Score, PianoStaff and Lyrics
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: GregorianTranscriptionVoice, Voice, TabVoice and VaticanaVoice
Make volta brackets
Properties (read)
stavesFound
(list)
voltaSpannerDuration
(moment)
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)
Volta_engraver is part of contexts: GregorianTranscriptionStaff, RhythmicStaff, Staff, VaticanaStaff and TabStaff
aDueText
(string)
acceptHashTable
(vector)
acknowledgeHashTable
(vector)
alignBassFigureAccidentals
(boolean)
allowBeamBreak
(boolean)
associatedVoice
(string)
autoAccidentals
(list)
same-octave:
any-octave:
autoBeamSettings
(list)
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)
autoCautionaries
(list)
automaticBars
(boolean)
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)
automaticPhrasing
(boolean)
lyrics-multi-stanza.ly
.
barAlways
(boolean)
barCheckSynchronize
(boolean)
barNumberVisibility
(procedure)
bassFigureFormatFunction
(procedure)
beamMelismaBusy
(boolean)
beatGrouping
(list)
beatLength
(moment)
breakAlignOrder
(list)
\property Score.breakAlignOrder = #'( span-bar breathing-sign clef staff-bar key time-signature )
busyGrobs
(list)
centralCPosition
(number)
changeMoment
(unknown)
chordChanges
(boolean)
chordNameExceptions
(list)
chordNameExceptionsFull
(list)
chordNameExceptionsPartial
(list)
chordNameFunction
(procedure)
chordNameSeparator
(markup)
chordNoteNamer
(procedure)
chordRootNamer
(procedure)
clefGlyph
(string)
clefOctavation
(integer)
clefPosition
(number)
combineParts
(boolean)
connectArpeggios
(boolean)
createKeyOnClefChange
(boolean)
crescendoSpanner
(symbol)
hairpin
, line
, dashed-line
, dotted-line
. If unset, hairpin type is used.
crescendoText
(markup)
cresc.
currentBarNumber
(integer)
currentCommandColumn
(grob (GRaphical OBject))
currentMusicalColumn
(grob (GRaphical OBject))
decrescendoSpanner
(symbol)
hairpin
, line
, dashed-line
, dotted-line
. If unset, hairpin type is used.
decrescendoText
(markup)
dim.
defaultBarType
(string)
This variable is typically read at Score level, so overriding
Staff.defaultBarType will have no effect.
devNullThread
(symbol)
(), or unset
always:
never:
devNullVoice
(symbol)
(), or unset
always:
never:
dynamicAbsoluteVolumeFunction
(procedure)
explicitClefVisibility
(procedure)
explicitKeySignatureVisibility
(procedure)
extraNatural
(boolean)
extraVerticalExtent
(pair of numbers)
finalizations
(list)
fingeringOrientations
(list)
followVoice
(boolean)
fontSize
(integer)
Font_size_engraver
.
forceClef
(boolean)
graceSettings
(vector)
add-grace-property
function.
highStringOne
(boolean)
instr
(markup)
instrument
instrument
(markup)
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)
instrumentSupport
(list)
keyAccidentalOrder
(list)
keySignature
(list)
lastKeySignature
(list)
localKeySignature
(list)
localKeySignatureChanges
(list)
majorSevenSymbol
(markup)
measureLength
(moment)
measurePosition
(moment)
melismaBusy
(boolean)
melismaBusyProperties
(list)
melismaEngraverBusy
(boolean)
metronomeMarkFormatter
(procedure)
midiInstrument
(string)
midiMaximumVolume
(number)
midiMinimumVolume
(number)
minimumFret
(number)
minimumVerticalExtent
(pair of numbers)
noDirection
(boolean)
originalCentralCPosition
(integer)
othersolo
(boolean)
ottavation
(string)
pedalSostenutoStrings
(list)
pedalSostenutoStyle
(symbol)
pedalSustainStrings
(list)
pedalSustainStyle
(symbol)
pedalUnaCordaStrings
(list)
pedalUnaCordaStyle
(symbol)
phrasingPunctuation
(string)
rehearsalMark
(number or string)
repeatCommands
(list)
restNumberThreshold
(number)
scriptDefinitions
(list)
scm/script.scm
for more information
scriptHorizontal
(boolean)
skipBars
(boolean)
@lilypond[fragment,verbatim,center] r1 r1*3 R1*3 \\property Score.skipBars= ##t r1*3 R1*3 @end lilypond
skipTypesetting
(boolean)
slurMelismaBusy
(boolean)
solo
(boolean)
soloADue
(boolean)
soloIIText
(string)
soloText
(string)
sparseTies
(boolean)
split-interval
(boolean)
splitInterval
(pair of numbers)
squashedPosition
(integer)
stanza
(markup)
stavesFound
(list)
stemLeftBeamCount
(integer)
stemRightBeamCount
(integer)
stringOneTopmost
(boolean)
stringTunings
(list)
stz
(markup)
subdivideBeams
(boolean)
systemStartDelimiter
(symbol)
tablatureFormat
(procedure)
tieMelismaBusy
(boolean)
timeSignatureFraction
(pair of numbers)
timing
(boolean)
tonic
(pitch)
transposing
(integer)
tremoloFlags
(integer)
tupletInvisible
(boolean)
tupletNumberVisibility
and tupletBracketVisibility
to
#f
, but as this does not even create any grobs, this setting
uses less memory and time.
tupletNumberFormatFunction
(procedure)
tupletSpannerDuration
(moment)
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)
unisilence
(boolean)
unison
(boolean)
verticalAlignmentChildCallback
(procedure)
verticalExtent
(pair of numbers)
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)
voltaSpannerDuration
(moment)
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)
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.
.
Accidental grobs are created by: Accidental_engraver and New_accidental_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
a single accidental
accidentals
(list)
cautionary
(boolean)
cautionary-style
(symbol)
'parentheses
style
(symbol)
tie
(grob (GRaphical OBject))
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Accidental_interface::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
AccidentalPlacement grobs are created by: none
Take care of complex accidental collisions.
accidental-grobs
(list)
alignment-done
(boolean)
left-padding
(dimension, in staff space)
0.3
padding
(dimension, in staff space)
right-padding
(dimension, in staff space)
0.15
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Ambitus grobs are created by: Ambitus_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
Default value: (unset)
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'ambitus
break-alignment-done
(boolean)
space-alist
(list)
'((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))
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)
An ambitus represents the pitch range of a voice.
accidentals
(list)
c0-position
(integer)
join-heads
(boolean)
#t
note-head-style
(string)
noteheads-2
pitch-max
(pitch)
pitch-min
(pitch)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Arpeggio grobs are created by: Arpeggio_engraver and Span_arpeggio_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
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)
0.0
Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.
arpeggio-direction
(direction)
stems
(list of grobs)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BarLine grobs are created by: Bar_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
'staff-bar
break-alignment-done
(boolean)
space-alist
(list)
'((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))
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)
Default value: all-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
bar-size-procedure
(procedure)
Bar_line::get_staff_bar_size
break-glyph-function
(procedure)
default-break-barline
glyph
(string)
|
hair-thickness
(number)
1.6
kern
(dimension, in staff space)
3.0
thick-thickness
(number)
6.0
thin-kern
(number)
3.0
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Bar_line::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BarNumber grobs are created by: Bar_number_engraver
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)
break-alignment-done
(boolean)
space-alist
(list)
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)
Default value: begin-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
-1
font-series
(symbol)
font-shape
(symbol)
Position self using some alignment
self-alignment-X
(number or grob)
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)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
1.0
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
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)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BassFigure grobs are created by: Figured_bass_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'number
font-magnification
(number)
1.0
.
Default value: 0.8
font-name
(string)
font-relative-size
(number)
-2
font-series
(symbol)
font-shape
(symbol)
Position self using some alignment
self-alignment-X
(number or grob)
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)
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
A bass figure, including bracket
Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Beam grobs are created by: Auto_beam_engraver, Beam_engraver, Chord_tremolo_engraver and Grace_beam_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
5.5
beamed-stem-shorten
(list)
'(1.0 0.5 0.25)
chord-tremolo
(boolean)
concaveness-gap
(dimension, in staff space)
2.0
concaveness-threshold
(number)
0.08
damping
(integer)
1
dir-function
(procedure)
The ways to calculate the direction of a beam work as follows:
majority
mean
median
Default value: beam-dir-majority-median
flag-width-function
(procedure)
beam-flag-width-function
gap
(dimension, in staff space)
0.8
gap-count
(integer)
knee
(boolean)
least-squares-dy
(number)
neutral-direction
(direction)
-1
position-callbacks
(list)
'(#<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)
'(#f . #f)
quant-score
(number)
shorten
(dimension, in staff space)
space-function
(procedure)
Beam::space_function
thickness
(number)
0.48
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)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Beam::after_line_breaking
before-line-breaking-callback
(procedure)
Beam::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BreakAlignGroup grobs are created by: Break_align_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
a group of coupled grobs
axes
(list)
'(0)
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
break-alignment-done
(boolean)
space-alist
(list)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BreakAlignment grobs are created by: Break_align_engraver
a group of coupled grobs
axes
(list)
'(0)
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)
Default value: (unset)
breakable
(boolean)
#t
no-spacing-rods
(boolean)
break-alignment-done
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
BreathingSign grobs are created by: Breathing_sign_engraver
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)
Default value: begin-of-line-invisible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
'(#<procedure musicglyph-markup (paper props . rest)> scripts-rcomma)
word-space
(dimension, in staff space)
A breathing sign.
direction
(direction)
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)
'breathing-sign
break-alignment-done
(boolean)
space-alist
(list)
'((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))
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Breathing_sign::offset_callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
ChordName grobs are created by: Chord_name_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
generate a chord name
bass
(list)
begin-of-line-visible
(boolean)
chord
(pair)
inversion
(list)
pitches
(list)
style
(symbol)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
0.0
Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'sans
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Chord_name::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Clef grobs are created by: Clef_engraver
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)
Default value: begin-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'clef
break-alignment-done
(boolean)
space-alist
(list)
'((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))
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
A clef sign
full-size-change
(boolean)
glyph-name
(string)
non-default
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Clef::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
ClusterSpanner grobs are created by: Cluster_spanner_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 0.0
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)
padding
(dimension, in staff space)
0.25
style
(symbol)
'ramp
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
ClusterSpannerBeacon grobs are created by: Cluster_spanner_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
A place holder for the cluster spanner to determine the vertical extents of a cluster spanner at this X position.
positions
(pair)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Custos grobs are created by: Custos_engraver
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)
Default value: end-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'custos
break-alignment-done
(boolean)
space-alist
(list)
'((first-note minimum-space . 0.0) (right-edge extra-space . 0.1))
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
Engrave custodes
adjust-if-on-staffline
(boolean)
#t
neutral-direction
(direction)
-1
neutral-position
(number)
0
style
(symbol)
'vaticana
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
DotColumn grobs are created by: Dot_column_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
a group of coupled grobs
axes
(list)
'(0)
Interface that groups dots so they form a column
direction
(direction)
1
stem
(grob (GRaphical OBject))
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Dots grobs are created by: Completion_heads_engraver, Note_heads_engraver, Rest_engraver and Tab_note_heads_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
dot-count
(integer)
1
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)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Dots::quantised_position_callback> #<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
DoublePercentRepeat grobs are created by: Percent_repeat_engraver
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)
Default value: begin-of-line-invisible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Repeats that look like percent signs
slope
(number)
1.0
thickness
(number)
0.48
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)
'staff-bar
break-alignment-done
(boolean)
space-alist
(list)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
DynamicLineSpanner grobs are created by: Dynamic_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
1.2
padding
(dimension, in staff space)
0.6
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
Any kind of loudness sign
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
DynamicText grobs are created by: Dynamic_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
#t
script-molecule
(pair)
script-priority
(number)
100
Any kind of loudness sign
Position self using some alignment
self-alignment-X
(number or grob)
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)
0
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'dynamic
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
'bold
font-shape
(symbol)
'italic
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Fingering grobs are created by: Fingering_engraver and New_fingering_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Position self using some alignment
self-alignment-X
(number or grob)
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)
0
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)
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.6
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
Any text script
script-priority
(number)
100
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'number
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
-3
font-series
(symbol)
font-shape
(symbol)
'upright
A fingering instruction
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Glissando grobs are created by: Glissando_engraver and Note_head_line_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
dash-period
(number)
gap
(dimension, in staff space)
0.5
style
(symbol)
'line
thickness
(number)
zigzag-length
(dimension, in staff space)
zigzag-width
(dimension, in staff space)
0.75
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Line_spanner::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Hairpin grobs are created by: Dynamic_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 2.0
Any kind of loudness sign
Position self using some alignment
self-alignment-X
(number or grob)
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)
0
hairpin crescendo.
dash-fraction
(number)
dash-period
(number)
grow-direction
(direction)
height
(dimension, in staff space)
0.6666
if-text-padding
(number)
1.0
thickness
(number)
1.0
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Self_alignment_interface::aligned_on_self>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
HorizontalBracket grobs are created by: Horizontal_bracket_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A horizontal bracket encompassing notes.
columns
(list of grobs)
direction
(direction)
-1
thickness
(number)
1.0
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
InstrumentName grobs are created by: Instrument_name_engraver
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)
Default value: begin-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'instrument-name
break-alignment-done
(boolean)
space-alist
(list)
'((left-edge extra-space . 1.0))
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
2
text
(markup)
word-space
(dimension, in staff space)
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)
0
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
Position self using some alignment
self-alignment-X
(number or grob)
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)
0
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
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)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
KeySignature grobs are created by: Key_engraver
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)
Default value: begin-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'key-signature
break-alignment-done
(boolean)
space-alist
(list)
'((time-signature extra-space . 1.25) (staff-bar extra-space . 1.1) (right-edge extra-space . 0.5) (first-note extra-space . 2.5))
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A group of accidentals, to be printed as signature sign.
c0-position
(integer)
new-accidentals
(list)
old-accidentals
(list)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
LeftEdge grobs are created by: Break_align_engraver
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)
Default value: (unset)
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
'left-edge
break-alignment-done
(boolean)
space-alist
(list)
'((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))
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
LigatureBracket grobs are created by: none
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
A bracket with a number in the middle, used for tuplets.
bracket-flare
(pair of numbers)
bracket-visibility
(boolean or symbol)
direction
(direction)
1
edge-height
(pair)
'(0.7 . 0.7)
gap
(dimension, in staff space)
0.0
left-position
(number)
note-columns
(pair)
number-visibility
(boolean or symbol)
bracket-visibility
, but for the number.
Default value: (unset)
padding
(dimension, in staff space)
2.0
right-position
(number)
shorten-pair
(pair of numbers)
'(-0.2 . -0.2)
thickness
(number)
1.6
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Tuplet_bracket::after_line_breaking
before-line-breaking-callback
(procedure)
Tuplet_bracket::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
LyricExtender grobs are created by: Extender_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
0.8
right-trim-amount
(dimension, in staff space)
0.5
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Grob::point_dimension_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
LyricHyphen grobs are created by: Hyphen_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 0.5
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)
0.4
maximum-length
(dimension, in staff space)
100
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
Default value: 0.5
thickness
(number)
1.0
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Grob::point_dimension_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Hyphen_spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
LyricText grobs are created by: none
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
'upright
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
0.6
Position self using some alignment
self-alignment-X
(number or grob)
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)
a single piece of lyrics
alignment
(number)
begin-alignment
(number)
4
end-alignment
(number)
2
ignore-length-mismatch
(boolean)
#f
word-space
(dimension, in staff space)
0.6
Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MeasureGrouping grobs are created by: Measure_grouping_engraver
indicate groups of beats. Valid choices for 'type are 'bracket and 'triangle.
height
(dimension, in staff space)
2.0
style
(symbol)
thickness
(number)
1
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: 3
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
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)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MensuralLigature grobs are created by: Mensural_ligature_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A mensural ligature
delta-pitch
(number)
flexa-width
(dimension, in staff space)
2.0
head-width
(dimension, in staff space)
join-left
(boolean)
join-left-amount
(number)
ligature-primitive-callback
(procedure)
Mensural_ligature::brew_ligature_primitive
primitive
(integer)
thickness
(number)
1.4
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MetronomeMark grobs are created by: Metronome_mark_engraver
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)
Default value: end-of-line-invisible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
a rehearsal mark
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.8
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MultiMeasureRest grobs are created by: Multi_measure_rest_engraver
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)
0
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
a rest
minimum-beam-collision-distance
(dimension, in staff space)
style
(symbol)
A rest that spans a whole number of measures.
expand-limit
(integer)
10
hair-thickness
(number)
2.0
measure-count
(integer)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
Default value: (unset)
thick-thickness
(number)
6.6
use-breve-rest
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Multi_measure_rest::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MultiMeasureRestNumber grobs are created by: Multi_measure_rest_engraver
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'number
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
Position self using some alignment
self-alignment-X
(number or grob)
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)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
1.3
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
MultiMeasureRestText grobs are created by: Multi_measure_rest_engraver
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
Position self using some alignment
self-alignment-X
(number or grob)
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)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
1.5
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NonMusicalPaperColumn grobs are created by: Score_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
A grob (a Paper_column) that takes part in the spacing problem.
ideal-distances
(list)
left-neighbors
(list of grobs)
The closest spacing-wishes determine the actual distances between the columns.
Default value: (unset)
measure-length
(moment)
minimum-distances
(list)
penalty
(number)
right-neighbors
(list of grobs)
spacing-wishes
(list of grobs)
a group of coupled grobs
axes
(list)
'(0)
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)
between-system-string
(string)
bounded-by-me
(list of grobs)
shortest-playing-duration
(moment)
shortest-starter-duration
(moment)
when
(moment)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Paper_column::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NoteCollision grobs are created by: Collision_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
a group of coupled grobs
axes
(list)
'(0 1)
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-differently-headed
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NoteColumn grobs are created by: Rhythmic_column_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Stem and noteheads combined
accidentals
(list)
arpeggio
(grob (GRaphical OBject))
force-hshift
(number)
horizontal-shift
(integer)
note-heads
(list of grobs)
rest
(grob (GRaphical OBject))
rest-collision
(grob (GRaphical OBject))
stem
(grob (GRaphical OBject))
a group of coupled grobs
axes
(list)
'(0 1)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NoteHead grobs are created by: Completion_heads_engraver and Note_heads_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
Note head
accidental-grob
(grob (GRaphical OBject))
glyph-name-procedure
(procedure)
find-notehead-symbol
stem-attachment-function
(procedure)
note-head-style->attachment-coordinates
style
(symbol)
'default
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
Note head or rest
dot
(grob (GRaphical OBject))
duration-log
(integer)
stem
(grob (GRaphical OBject))
Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.
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)
X-extent-callback
(procedure)
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: Note_head::extent
X-offset-callbacks
(list)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Note_head::extent
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NoteName grobs are created by: Note_name_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
Note name
style
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
NoteSpacing grobs are created by: Rhythmic_column_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
knee-spacing-correction
(number)
1.0
left-items
(list of grobs)
right-items
(list of grobs)
stem-spacing-correction
(number)
0.5
Something to do with line breaking and spacing. Kill this one after determining line breaks.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
OctavateEight grobs are created by: Clef_engraver
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)
Default value: begin-of-line-visible
breakable
(boolean)
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
-2
font-series
(symbol)
font-shape
(symbol)
'italic
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)
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.4
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
Position self using some alignment
self-alignment-X
(number or grob)
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)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
OttavaSpanner grobs are created by: Ottava_spanner_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
generic text spanner
bracket-flare
(pair of numbers)
dash-fraction
(number)
0.3
dash-period
(number)
edge-height
(pair)
'(0 . 1.5)
edge-text
(pair)
enclose-bounds
(boolean)
#t
if-text-padding
(number)
shorten-pair
(pair of numbers)
style
(symbol)
'dashed-line
thickness
(number)
width-correct
(dimension, in staff space)
0.0
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
PaperColumn grobs are created by: Score_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
A grob (a Paper_column) that takes part in the spacing problem.
ideal-distances
(list)
left-neighbors
(list of grobs)
The closest spacing-wishes determine the actual distances between the columns.
Default value: (unset)
measure-length
(moment)
minimum-distances
(list)
penalty
(number)
right-neighbors
(list of grobs)
spacing-wishes
(list of grobs)
a group of coupled grobs
axes
(list)
'(0)
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)
between-system-string
(string)
bounded-by-me
(list of grobs)
shortest-playing-duration
(moment)
shortest-starter-duration
(moment)
when
(moment)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Paper_column::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
PercentRepeat grobs are created by: Percent_repeat_engraver
Repeats that look like percent signs
slope
(number)
1.0
thickness
(number)
0.48
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
A rest that spans a whole number of measures.
expand-limit
(integer)
hair-thickness
(number)
measure-count
(integer)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
Default value: (unset)
thick-thickness
(number)
use-breve-rest
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Multi_measure_rest::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
PhrasingSlur grobs are created by: Phrasing_slur_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 1.5
A slur
attachment
(pair)
'(#f . #f)
attachment-offset
(pair)
'((0 . 0) 0 . 0)
beautiful
(number)
0.5
control-points
(list)
dashed
(number)
de-uglify-parameters
(list)
'(1.5 0.8 -2.0)
details
(list)
'((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)
extremity-offset-alist
(list)
'(((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)
'((#<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)
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
whereF (0) = 0 , F' (0) = 1, and F (infinity) = 1
Currently, for F we useh = height-limit * F (x * ratio / height-limit)
F (x) = 2/pi * atan (pi * x/2)
Default value: 2.0
ratio
(number)
0.333
slope-limit
(number)
0.8
thickness
(number)
1.2
y-free
(dimension, in staff space)
0.75
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Slur::height
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Slur::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
PianoPedalBracket grobs are created by: none
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
pedal-text
(grob (GRaphical OBject))
A piano pedal sign
generic text spanner
bracket-flare
(pair of numbers)
'(0.5 . 0.5)
dash-fraction
(number)
dash-period
(number)
edge-height
(pair)
'(1.0 . 1.0)
edge-text
(pair)
enclose-bounds
(boolean)
#t
if-text-padding
(number)
1.0
shorten-pair
(pair of numbers)
'(0.0 . 0.0)
style
(symbol)
'line
thickness
(number)
1.0
width-correct
(dimension, in staff space)
0
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Piano_pedal_bracket::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
RehearsalMark grobs are created by: Mark_engraver
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)
Default value: end-of-line-invisible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Position self using some alignment
self-alignment-X
(number or grob)
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)
a rehearsal mark
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
1
font-series
(symbol)
font-shape
(symbol)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.8
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
2
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
RemoveEmptyVerticalGroup grobs are created by: Hara_kiri_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
remove-first
(boolean)
#t
a group of coupled grobs
axes
(list)
'(1)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Hara_kiri_group_spanner::y_extent
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Hara_kiri_group_spanner::force_hara_kiri_callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
RepeatSlash grobs are created by: Slash_repeat_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Repeats that look like percent signs
slope
(number)
1.7
thickness
(number)
0.48
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Rest grobs are created by: Rest_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
a rest
minimum-beam-collision-distance
(dimension, in staff space)
0.75
style
(symbol)
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)
Any object with a rhythmic basis. Used to determine which grobs are interesting enough to maintain a hara-kiri staff.
Note head or rest
dot
(grob (GRaphical OBject))
duration-log
(integer)
stem
(grob (GRaphical OBject))
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Rest::extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
Rest::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
RestCollision grobs are created by: Rest_collision_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Move around ordinary rests (not multi-measure-rests) to avoid conflicts.
elements
(list of grobs)
maximum-rest-count
(integer)
minimum-distance
(dimension, in staff space)
0.75
rest-collision-done
(boolean)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Script grobs are created by: Script_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.25
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
script-molecule
(pair)
script-priority
(number)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Script_interface::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
ScriptColumn grobs are created by: Script_column_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
An interface that sorts scripts according to their script-priority
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Script_column::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SeparatingGroupSpanner grobs are created by: Separating_line_group_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Spanner that containing separation-item-interface
grobs to calculate rods
Something to do with line breaking and spacing. Kill this one after determining line breaks.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Separating_group_spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SeparationItem grobs are created by: Separating_line_group_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
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)
conditional-elements
(list of grobs)
elements
(list of grobs)
padding
(dimension, in staff space)
Something to do with line breaking and spacing. Kill this one after determining line breaks.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Slur grobs are created by: Slur_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 1.5
A slur
attachment
(pair)
'(#f . #f)
attachment-offset
(pair)
'((0 . 0) 0 . 0)
beautiful
(number)
0.5
control-points
(list)
dashed
(number)
de-uglify-parameters
(list)
'(1.5 0.8 -2.0)
details
(list)
'((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)
extremity-offset-alist
(list)
'(((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)
'((#<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)
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
whereF (0) = 0 , F' (0) = 1, and F (infinity) = 1
Currently, for F we useh = height-limit * F (x * ratio / height-limit)
F (x) = 2/pi * atan (pi * x/2)
Default value: 2.0
ratio
(number)
0.333
slope-limit
(number)
0.8
thickness
(number)
1.2
y-free
(dimension, in staff space)
0.75
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Slur::height
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Slur::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SostenutoPedal grobs are created by: Piano_pedal_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
#t
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
'italic
Position self using some alignment
self-alignment-X
(number or grob)
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)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SostenutoPedalLineSpanner grobs are created by: Piano_pedal_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
1.0
padding
(dimension, in staff space)
1.2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
A piano pedal sign
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SpacingSpanner grobs are created by: Spacing_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
'#<Mom 1/8 >
common-shortest-duration
(moment)
grace-space-factor
(number)
0.6
shortest-duration-space
(dimension, in staff space)
spacing-increment
as unit. See also
spacing-spanner-interface.
Default value: 2.0
spacing-increment
(number)
1.2
Something to do with line breaking and spacing. Kill this one after determining line breaks.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spacing_spanner::set_springs
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SpanBar grobs are created by: Span_bar_engraver
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)
Default value: begin-of-line-invisible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
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)
bar-size-procedure
(procedure)
Span_bar::get_bar_size
break-glyph-function
(procedure)
glyph
(string)
|
hair-thickness
(number)
1.6
kern
(dimension, in staff space)
3.0
thick-thickness
(number)
6.0
thin-kern
(number)
3.0
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A bar line that spans other barlines (typically used to get cross-staff barlines.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: '()
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Span_bar::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
StaffSpacing grobs are created by: none
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)
Default value: (unset)
breakable
(boolean)
#t
no-spacing-rods
(boolean)
left-items
(list of grobs)
right-items
(list of grobs)
stem-spacing-correction
(number)
0.4
Something to do with line breaking and spacing. Kill this one after determining line breaks.
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
StaffSymbol grobs are created by: Staff_symbol_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
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)
thickness
(number)
width
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
0
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
StanzaNumber grobs are created by: Stanza_number_engraver
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)
Default value: begin-of-line-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
'clef
break-alignment-done
(boolean)
space-alist
(list)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Stem grobs are created by: Stem_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'music
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A stem
adjust-if-on-staffline
(boolean)
#t
avoid-note-head
(boolean)
#f
beam
(grob (GRaphical OBject))
beamed-extreme-minimum-free-lengths
(list)
'(2.5 2.0 1.0)
beamed-lengths
(list)
'(3.26 3.26 1.5)
beamed-minimum-free-lengths
(list)
'(1.83 1.5 1.25)
beaming
(pair)
direction
(direction)
duration-log
(integer)
flag-style
(symbol)
no-flag
switches off the flag.
Default value: (unset)
french-beaming
(boolean)
length
(dimension, in staff space)
lengths
(list)
Default value: '(3.5 3.5 3.5 4.5 5.0)
neutral-direction
(direction)
-1
no-stem-extend
(boolean)
note-heads
(list of grobs)
stem-end-position
(number)
stem-info
(pair)
stem-shorten
(list)
Default value: '(1.0 0.5)
stroke-style
(string)
support-head
(grob (GRaphical OBject))
thickness
(number)
1.3
tremolo-flag
(grob (GRaphical OBject))
up-to-staff
(boolean)
#f
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Stem::height
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
Stem::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
StemTremolo grobs are created by: Stem_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
beam-thickness
(dimension, in staff space)
0.48
beam-width
(dimension, in staff space)
1.6
flag-count
(number)
stem
(grob (GRaphical OBject))
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Stem_tremolo::height
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SustainPedal grobs are created by: Piano_pedal_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
#t
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
Position self using some alignment
self-alignment-X
(number or grob)
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)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
generic text spanner
bracket-flare
(pair of numbers)
dash-fraction
(number)
dash-period
(number)
edge-height
(pair)
edge-text
(pair)
enclose-bounds
(boolean)
if-text-padding
(number)
shorten-pair
(pair of numbers)
style
(symbol)
thickness
(number)
width-correct
(dimension, in staff space)
A piano pedal sign
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SustainPedalLineSpanner grobs are created by: Piano_pedal_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
1.0
padding
(dimension, in staff space)
1.2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
A piano pedal sign
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
System grobs are created by: Score_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
a group of coupled grobs
axes
(list)
'(0 1)
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)
between-system-string
(string)
columns
(list of grobs)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SystemStartBar grobs are created by: System_start_delimiter_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
#'style can be bar-line, bracket or brace
arch-angle
(number)
arch-height
(dimension, in staff space)
arch-thick
(number)
arch-width
(dimension, in staff space)
bracket-thick
(number)
collapse-height
(dimension, in staff space)
glyph
(string)
bar-line
thickness
(number)
1.6
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
System_start_delimiter::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SystemStartBrace grobs are created by: System_start_delimiter_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'braces
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
#'style can be bar-line, bracket or brace
arch-angle
(number)
arch-height
(dimension, in staff space)
arch-thick
(number)
arch-width
(dimension, in staff space)
bracket-thick
(number)
collapse-height
(dimension, in staff space)
5.0
glyph
(string)
brace
thickness
(number)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
SystemStartBracket grobs are created by: System_start_delimiter_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
#'style can be bar-line, bracket or brace
arch-angle
(number)
50.0
arch-height
(dimension, in staff space)
1.5
arch-thick
(number)
0.25
arch-width
(dimension, in staff space)
1.5
bracket-thick
(number)
collapse-height
(dimension, in staff space)
glyph
(string)
bracket
thickness
(number)
0.25
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TabNoteHead grobs are created by: Tab_note_heads_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
Note head
accidental-grob
(grob (GRaphical OBject))
glyph-name-procedure
(procedure)
stem-attachment-function
(procedure)
tablature-stem-attachment-function
style
(symbol)
'default
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
Note head or rest
dot
(grob (GRaphical OBject))
duration-log
(integer)
stem
(grob (GRaphical OBject))
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Staff_symbol_referencer::callback>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
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)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TextScript grobs are created by: A2_engraver and Text_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
#t
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
0.5
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
2
text
(markup)
word-space
(dimension, in staff space)
Any text script
script-priority
(number)
200
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TextSpanner grobs are created by: Dynamic_engraver and Text_spanner_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
generic text spanner
bracket-flare
(pair of numbers)
dash-fraction
(number)
0.2
dash-period
(number)
3.0
edge-height
(pair)
edge-text
(pair)
enclose-bounds
(boolean)
if-text-padding
(number)
1.0
shorten-pair
(pair of numbers)
style
(symbol)
'dashed-line
thickness
(number)
width-correct
(dimension, in staff space)
-1
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
Tie grobs are created by: Completion_heads_engraver and Tie_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. .
Default value: 2.5
A tie connecting two noteheads. direction = Forced direction for all ties
control-points
(list)
details
(list)
'((ratio . 0.333) (height-limit . 1.0))
direction
(direction)
heads
(pair)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
Default value: 2.5
staffline-clearance
(dimension, in staff space)
0.35
thickness
(number)
1.2
x-gap
(dimension, in staff space)
-0.1
y-offset
(dimension, in staff space)
0.6
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
Spanner::set_spacing_rods
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TieColumn grobs are created by: Tie_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
that sets tie directions in a tied chord
direction
(direction)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Tie_column::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TimeSignature grobs are created by: Time_signature_engraver
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)
Default value: all-visible
breakable
(boolean)
#t
no-spacing-rods
(boolean)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'number
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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)
'time-signature
break-alignment-done
(boolean)
space-alist
(list)
'((first-note extra-space . 2.0) (right-edge extra-space . 0.5) (staff-bar minimum-space . 2.0))
A time signature, in different styles. The following values for 'style are are recognized:
C
neo_mensural
mensural
1xxx
1
will do.)
See also the test-file input/test/time.ly
.
fraction
(pair of numbers)
style
(symbol)
'C
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
TupletBracket grobs are created by: Ligature_bracket_engraver and Tuplet_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
-1
font-series
(symbol)
'bold
font-shape
(symbol)
'italic
A bracket with a number in the middle, used for tuplets.
bracket-flare
(pair of numbers)
bracket-visibility
(boolean or symbol)
direction
(direction)
edge-height
(pair)
'(0.7 . 0.7)
gap
(dimension, in staff space)
2.0
left-position
(number)
note-columns
(pair)
number-visibility
(boolean or symbol)
bracket-visibility
, but for the number.
Default value: (unset)
padding
(dimension, in staff space)
0.9
right-position
(number)
shorten-pair
(pair of numbers)
'(-0.2 . -0.2)
thickness
(number)
1.6
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Tuplet_bracket::after_line_breaking
before-line-breaking-callback
(procedure)
Tuplet_bracket::before_line_breaking
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
UnaCordaPedal grobs are created by: Piano_pedal_engraver
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)
Default value: (unset)
breakable
(boolean)
no-spacing-rods
(boolean)
#t
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'roman
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
'italic
Position self using some alignment
self-alignment-X
(number or grob)
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)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
UnaCordaPedalLineSpanner grobs are created by: Piano_pedal_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
-1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
1.0
padding
(dimension, in staff space)
1.2
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
A piano pedal sign
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
VaticanaLigature grobs are created by: Vaticana_ligature_engraver
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
A vaticana style gregorian ligature
add-cauda
(boolean)
add-join
(boolean)
add-stem
(boolean)
delta-pitch
(number)
flexa-height
(dimension, in staff space)
flexa-width
(dimension, in staff space)
2.0
glyph-name
(string)
ligature-primitive-callback
(procedure)
Vaticana_ligature::brew_ligature_primitive
thickness
(number)
0.6
x-offset
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
VerticalAlignment grobs are created by: Vertical_align_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
Order grobs top to bottom/left to right/right to left etc.
align-dir
(direction)
alignment-done
(boolean)
axes
(list)
'(1)
center-element
(grob (GRaphical OBject))
elements
(list of grobs)
forced-distance
(dimension, in staff space)
stacking-dir
(direction)
-1
threshold
(pair of numbers)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
VerticalAxisGroup grobs are created by: Axis_group_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
a group of coupled grobs
axes
(list)
'(1)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: Axis_group_interface::group_extent_callback
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
VoiceFollower grobs are created by: Note_head_line_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
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)
dash-period
(number)
gap
(dimension, in staff space)
0.5
style
(symbol)
'line
thickness
(number)
zigzag-length
(dimension, in staff space)
zigzag-width
(dimension, in staff space)
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: #f
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: (unset)
after-line-breaking-callback
(procedure)
Line_spanner::after_line_breaking
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
VoltaBracket grobs are created by: Volta_engraver
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
Item
s), 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)
Also works as a scaling parameter for the length of hyphen. . Default value: (unset)
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
'number
font-magnification
(number)
1.0
.
Default value: (unset)
font-name
(string)
font-relative-size
(number)
-2
font-series
(symbol)
font-shape
(symbol)
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)
1
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
5
padding
(dimension, in staff space)
1
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
Default value: (unset)
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
Volta bracket with number
bars
(list of grobs)
height
(dimension, in staff space)
2.0
thickness
(number)
1.6
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Default value: (unset)
Y-offset-callbacks
(list)
X-offset-callbacks
.
Default value: '(#<primitive-procedure Side_position_interface::aligned_side>)
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
Default value: (unset)
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
Default value: (unset)
interfaces
(list)
meta
field.
Default value: (unset)
layer
(number)
meta
(list)
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-Y-extent
(pair of numbers)
minimum-Y-extent
.
Default value: (unset)
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
a single accidental
accidentals
(list)
cautionary
(boolean)
cautionary-style
(symbol)
style
(symbol)
tie
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: Accidental
Take care of complex accidental collisions.
accidental-grobs
(list)
alignment-done
(boolean)
left-padding
(dimension, in staff space)
padding
(dimension, in staff space)
right-padding
(dimension, in staff space)
This grob interface is used in the following graphical objects: AccidentalPlacement
Order grobs top to bottom/left to right/right to left etc.
align-dir
(direction)
alignment-done
(boolean)
axes
(list)
center-element
(grob (GRaphical OBject))
elements
(list of grobs)
forced-distance
(dimension, in staff space)
stacking-dir
(direction)
threshold
(pair of numbers)
This grob interface is used in the following graphical objects: VerticalAlignment
An ambitus represents the pitch range of a voice.
accidentals
(list)
c0-position
(integer)
join-heads
(boolean)
note-head-style
(string)
pitch-max
(pitch)
pitch-min
(pitch)
This grob interface is used in the following graphical objects: Ambitus
Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.
arpeggio-direction
(direction)
stems
(list of grobs)
This grob interface is used in the following graphical objects: Arpeggio
a group of coupled grobs
axes
(list)
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.
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)
bar-size-procedure
(procedure)
break-glyph-function
(procedure)
glyph
(string)
hair-thickness
(number)
kern
(dimension, in staff space)
thick-thickness
(number)
thin-kern
(number)
This grob interface is used in the following graphical objects: SpanBar and BarLine
A bass figure, including bracket
This grob interface is used in the following graphical objects: BassFigure
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)
beamed-stem-shorten
(list)
chord-tremolo
(boolean)
concaveness-gap
(dimension, in staff space)
concaveness-threshold
(number)
damping
(integer)
dir-function
(procedure)
The ways to calculate the direction of a beam work as follows:
majority
mean
median
flag-width-function
(procedure)
gap
(dimension, in staff space)
gap-count
(integer)
knee
(boolean)
least-squares-dy
(number)
neutral-direction
(direction)
position-callbacks
(list)
positions
(pair)
quant-score
(number)
shorten
(dimension, in staff space)
space-function
(procedure)
thickness
(number)
This grob interface is used in the following graphical objects: Beam
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)
break-alignment-done
(boolean)
space-alist
(list)
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-done
(boolean)
This grob interface is used in the following graphical objects: BreakAlignment
A breathing sign.
direction
(direction)
This grob interface is used in the following graphical objects: BreathingSign
generate a chord name
bass
(list)
begin-of-line-visible
(boolean)
chord
(pair)
inversion
(list)
pitches
(list)
style
(symbol)
This grob interface is used in the following graphical objects: ChordName
A clef sign
full-size-change
(boolean)
glyph-name
(string)
non-default
(boolean)
This grob interface is used in the following graphical objects: Clef
A place holder for the cluster spanner to determine the vertical extents of a cluster spanner at this X position.
positions
(pair)
This grob interface is used in the following graphical objects: ClusterSpannerBeacon
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)
padding
(dimension, in staff space)
style
(symbol)
This grob interface is used in the following graphical objects: ClusterSpanner
Engrave custodes
adjust-if-on-staffline
(boolean)
neutral-direction
(direction)
neutral-position
(number)
style
(symbol)
This grob interface is used in the following graphical objects: Custos
Interface that groups dots so they form a column
direction
(direction)
stem
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: DotColumn
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)
dot-count
(integer)
This grob interface is used in the following graphical objects: Dots
Any kind of loudness sign
This grob interface is used in the following graphical objects: Hairpin, DynamicText and DynamicLineSpanner
A fingering instruction
This grob interface is used in the following graphical objects: Fingering
Any symbol that is typeset through fixed sets of glyphs (ie. fonts)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
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
A gregorian ligature
ascendens
(boolean)
auctum
(boolean)
cavum
(boolean)
context-info
(integer)
deminutum
(boolean)
descendens
(boolean)
inclinatum
(boolean)
linea
(boolean)
oriscus
(boolean)
pes-or-flexa
(boolean)
prefix-set
(number)
quilisma
(boolean)
stropha
(boolean)
virga
(boolean)
This grob interface is used in the following graphical objects: none
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)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Y-offset-callbacks
(list)
X-offset-callbacks
.
after-line-breaking-callback
(procedure)
before-line-breaking-callback
(procedure)
cause
(any type)
dependencies
(list of grobs)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
interfaces
(list)
meta
field.
layer
(number)
meta
(list)
The alist contains the following entries: name, interfaces.
minimum-X-extent
(pair of numbers)
minimum-Y-extent
(pair of numbers)
minimum-Y-extent
.
molecule
(unknown)
molecule-callback
(procedure)
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)
staff-symbol
(grob (GRaphical OBject))
transparent
(boolean)
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 crescendo.
dash-fraction
(number)
dash-period
(number)
grow-direction
(direction)
height
(dimension, in staff space)
if-text-padding
(number)
thickness
(number)
This grob interface is used in the following graphical objects: Hairpin
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)
remove-first
(boolean)
This grob interface is used in the following graphical objects: RemoveEmptyVerticalGroup
A horizontal bracket encompassing notes.
columns
(list of grobs)
direction
(direction)
thickness
(number)
This grob interface is used in the following graphical objects: HorizontalBracket
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)
breakable
(boolean)
no-spacing-rods
(boolean)
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
A group of accidentals, to be printed as signature sign.
c0-position
(integer)
new-accidentals
(list)
old-accidentals
(list)
This grob interface is used in the following graphical objects: KeySignature
A bracket indicating a ligature in the original edition
height
(dimension, in staff space)
ligature-primitive-callback
(procedure)
thickness
(number)
width
(dimension, in staff space)
This grob interface is used in the following graphical objects: none
A ligature
This grob interface is used in the following graphical objects: none
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)
dash-period
(number)
gap
(dimension, in staff space)
style
(symbol)
thickness
(number)
zigzag-length
(dimension, in staff space)
zigzag-width
(dimension, in staff space)
This grob interface is used in the following graphical objects: VoiceFollower and Glissando
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)
right-trim-amount
(dimension, in staff space)
word-space
(dimension, in staff space)
This grob interface is used in the following graphical objects: LyricExtender
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)
maximum-length
(dimension, in staff space)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
thickness
(number)
word-space
(dimension, in staff space)
This grob interface is used in the following graphical objects: LyricHyphen
a single piece of lyrics
alignment
(number)
begin-alignment
(number)
end-alignment
(number)
ignore-length-mismatch
(boolean)
word-space
(dimension, in staff space)
This grob interface is used in the following graphical objects: LyricText
a rehearsal mark
This grob interface is used in the following graphical objects: RehearsalMark
indicate groups of beats. Valid choices for 'type are 'bracket and 'triangle.
height
(dimension, in staff space)
style
(symbol)
thickness
(number)
This grob interface is used in the following graphical objects: MeasureGrouping
A mensural ligature
delta-pitch
(number)
flexa-width
(dimension, in staff space)
head-width
(dimension, in staff space)
join-left
(boolean)
join-left-amount
(number)
ligature-primitive-callback
(procedure)
primitive
(integer)
thickness
(number)
This grob interface is used in the following graphical objects: MensuralLigature
a rehearsal mark
This grob interface is used in the following graphical objects: MetronomeMark
A rest that spans a whole number of measures.
expand-limit
(integer)
hair-thickness
(number)
measure-count
(integer)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
thick-thickness
(number)
use-breve-rest
(boolean)
This grob interface is used in the following graphical objects: PercentRepeat and MultiMeasureRest
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-differently-headed
(boolean)
This grob interface is used in the following graphical objects: NoteCollision
Stem and noteheads combined
accidentals
(list)
arpeggio
(grob (GRaphical OBject))
force-hshift
(number)
horizontal-shift
(integer)
note-heads
(list of grobs)
rest
(grob (GRaphical OBject))
rest-collision
(grob (GRaphical OBject))
stem
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: NoteColumn
Note head
accidental-grob
(grob (GRaphical OBject))
glyph-name-procedure
(procedure)
stem-attachment-function
(procedure)
style
(symbol)
This grob interface is used in the following graphical objects: TabNoteHead and NoteHead
Note name
style
(symbol)
This grob interface is used in the following graphical objects: NoteName
knee-spacing-correction
(number)
left-items
(list of grobs)
right-items
(list of grobs)
stem-spacing-correction
(number)
This grob interface is used in the following graphical objects: NoteSpacing
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)
between-system-string
(string)
bounded-by-me
(list of grobs)
shortest-playing-duration
(moment)
shortest-starter-duration
(moment)
when
(moment)
This grob interface is used in the following graphical objects: PaperColumn and NonMusicalPaperColumn
Repeats that look like percent signs
slope
(number)
thickness
(number)
This grob interface is used in the following graphical objects: RepeatSlash, PercentRepeat and DoublePercentRepeat
pedal-text
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: PianoPedalBracket
A piano pedal sign
This grob interface is used in the following graphical objects: UnaCordaPedalLineSpanner, SustainPedalLineSpanner, SustainPedal, SostenutoPedalLineSpanner and PianoPedalBracket
Move around ordinary rests (not multi-measure-rests) to avoid conflicts.
elements
(list of grobs)
maximum-rest-count
(integer)
minimum-distance
(dimension, in staff space)
rest-collision-done
(boolean)
This grob interface is used in the following graphical objects: RestCollision
a rest
minimum-beam-collision-distance
(dimension, in staff space)
style
(symbol)
This grob interface is used in the following graphical objects: Rest and MultiMeasureRest
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
Note head or rest
dot
(grob (GRaphical OBject))
duration-log
(integer)
stem
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: TabNoteHead, Rest and NoteHead
An interface that sorts scripts according to their script-priority
This grob interface is used in the following graphical objects: ScriptColumn
script-molecule
(pair)
script-priority
(number)
This grob interface is used in the following graphical objects: Script and DynamicText
Position self using some alignment
self-alignment-X
(number or grob)
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)
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
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)
conditional-elements
(list of grobs)
elements
(list of grobs)
padding
(dimension, in staff space)
This grob interface is used in the following graphical objects: SeparationItem
Spanner that containing separation-item-interface
grobs to calculate rods
This grob interface is used in the following graphical objects: SeparatingGroupSpanner
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)
direction-source
(grob (GRaphical OBject))
minimum-space
(dimension, in staff space)
padding
(dimension, in staff space)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
staff-padding
(dimension, in staff space)
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
A slur
attachment
(pair)
attachment-offset
(pair)
beautiful
(number)
control-points
(list)
dashed
(number)
de-uglify-parameters
(list)
details
(list)
direction
(direction)
extremity-offset-alist
(list)
extremity-rules
(list)
height-limit
(dimension, in staff space)
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
whereF (0) = 0 , F' (0) = 1, and F (infinity) = 1
Currently, for F we useh = height-limit * F (x * ratio / height-limit)
F (x) = 2/pi * atan (pi * x/2)
ratio
(number)
slope-limit
(number)
thickness
(number)
y-free
(dimension, in staff space)
This grob interface is used in the following graphical objects: Slur and PhrasingSlur
A grob (a Paper_column) that takes part in the spacing problem.
ideal-distances
(list)
left-neighbors
(list of grobs)
The closest spacing-wishes determine the actual distances between the
columns.
measure-length
(moment)
minimum-distances
(list)
penalty
(number)
right-neighbors
(list of grobs)
spacing-wishes
(list of grobs)
This grob interface is used in the following graphical objects: PaperColumn and NonMusicalPaperColumn
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
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)
common-shortest-duration
(moment)
grace-space-factor
(number)
shortest-duration-space
(dimension, in staff space)
spacing-increment
as unit. See also
spacing-spanner-interface.
spacing-increment
(number)
This grob interface is used in the following graphical objects: SpacingSpanner
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
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
Item
s), 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)
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
left-items
(list of grobs)
right-items
(list of grobs)
stem-spacing-correction
(number)
This grob interface is used in the following graphical objects: StaffSpacing
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)
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)
thickness
(number)
width
(dimension, in staff space)
This grob interface is used in the following graphical objects: StaffSymbol
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)
This grob interface is used in the following graphical objects: TabNoteHead, Rest, NoteHead, MultiMeasureRest, Dots, Custos, Clef, Beam, Arpeggio and Ambitus
A stem
adjust-if-on-staffline
(boolean)
avoid-note-head
(boolean)
beam
(grob (GRaphical OBject))
beamed-extreme-minimum-free-lengths
(list)
beamed-lengths
(list)
beamed-minimum-free-lengths
(list)
beaming
(pair)
direction
(direction)
duration-log
(integer)
flag-style
(symbol)
no-flag
switches off the flag.
french-beaming
(boolean)
length
(dimension, in staff space)
lengths
(list)
neutral-direction
(direction)
no-stem-extend
(boolean)
note-heads
(list of grobs)
stem-end-position
(number)
stem-info
(pair)
stem-shorten
(list)
stroke-style
(string)
support-head
(grob (GRaphical OBject))
thickness
(number)
tremolo-flag
(grob (GRaphical OBject))
up-to-staff
(boolean)
This grob interface is used in the following graphical objects: Stem
beam-thickness
(dimension, in staff space)
beam-width
(dimension, in staff space)
flag-count
(number)
stem
(grob (GRaphical OBject))
This grob interface is used in the following graphical objects: StemTremolo
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)
between-system-string
(string)
columns
(list of grobs)
This grob interface is used in the following graphical objects: System
#'style can be bar-line, bracket or brace
arch-angle
(number)
arch-height
(dimension, in staff space)
arch-thick
(number)
arch-width
(dimension, in staff space)
bracket-thick
(number)
collapse-height
(dimension, in staff space)
glyph
(string)
thickness
(number)
This grob interface is used in the following graphical objects: SystemStartBracket, SystemStartBrace and SystemStartBar
tablature notes
This grob interface is used in the following graphical objects: none
A scheme markup text, see Markup functions.
baseline-skip
(dimension, in staff space)
text
(markup)
word-space
(dimension, in staff space)
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
Any text script
script-priority
(number)
This grob interface is used in the following graphical objects: TextScript and Fingering
generic text spanner
bracket-flare
(pair of numbers)
dash-fraction
(number)
dash-period
(number)
edge-height
(pair)
edge-text
(pair)
enclose-bounds
(boolean)
if-text-padding
(number)
shorten-pair
(pair of numbers)
style
(symbol)
thickness
(number)
width-correct
(dimension, in staff space)
This grob interface is used in the following graphical objects: TextSpanner, SustainPedal, PianoPedalBracket and OttavaSpanner
that sets tie directions in a tied chord
direction
(direction)
This grob interface is used in the following graphical objects: TieColumn
A tie connecting two noteheads. direction = Forced direction for all ties
control-points
(list)
details
(list)
direction
(direction)
heads
(pair)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
staffline-clearance
(dimension, in staff space)
thickness
(number)
x-gap
(dimension, in staff space)
y-offset
(dimension, in staff space)
This grob interface is used in the following graphical objects: Tie
A time signature, in different styles. The following values for 'style are are recognized:
C
neo_mensural
mensural
1xxx
1
will do.)
See also the test-file input/test/time.ly
.
fraction
(pair of numbers)
style
(symbol)
This grob interface is used in the following graphical objects: TimeSignature
A bracket with a number in the middle, used for tuplets.
bracket-flare
(pair of numbers)
bracket-visibility
(boolean or symbol)
direction
(direction)
edge-height
(pair)
gap
(dimension, in staff space)
left-position
(number)
note-columns
(pair)
number-visibility
(boolean or symbol)
bracket-visibility
, but for the number.
padding
(dimension, in staff space)
right-position
(number)
shorten-pair
(pair of numbers)
thickness
(number)
This grob interface is used in the following graphical objects: TupletBracket and LigatureBracket
A vaticana style gregorian ligature
add-cauda
(boolean)
add-join
(boolean)
add-stem
(boolean)
delta-pitch
(number)
flexa-height
(dimension, in staff space)
flexa-width
(dimension, in staff space)
glyph-name
(string)
ligature-primitive-callback
(procedure)
thickness
(number)
x-offset
(dimension, in staff space)
This grob interface is used in the following graphical objects: VaticanaLigature
Volta bracket with number
bars
(list of grobs)
height
(dimension, in staff space)
thickness
(number)
This grob interface is used in the following graphical objects: VoltaBracket
X-extent
(pair of numbers)
X-extent-callback
(procedure)
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)
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)
Y-extent-callback
(procedure)
X-extent-callback
.
Y-offset-callbacks
(list)
X-offset-callbacks
.
accidental-grob
(grob (GRaphical OBject))
accidental-grobs
(list)
accidentals
(list)
add-cauda
(boolean)
add-join
(boolean)
add-stem
(boolean)
adjust-if-on-staffline
(boolean)
after-line-breaking-callback
(procedure)
align-dir
(direction)
alignment
(number)
alignment-done
(boolean)
all-elements
(list of grobs)
arch-angle
(number)
arch-height
(dimension, in staff space)
arch-thick
(number)
arch-width
(dimension, in staff space)
arpeggio
(grob (GRaphical OBject))
arpeggio-direction
(direction)
ascendens
(boolean)
attachment
(pair)
attachment-offset
(pair)
auctum
(boolean)
auto-knee-gap
(dimension, in staff space)
avoid-note-head
(boolean)
axes
(list)
bar-size
(dimension, in staff space)
bar-size-procedure
(procedure)
bars
(list of grobs)
base-shortest-duration
(moment)
baseline-skip
(dimension, in staff space)
bass
(list)
beam
(grob (GRaphical OBject))
beam-thickness
(dimension, in staff space)
beam-width
(dimension, in staff space)
beamed-extreme-minimum-free-lengths
(list)
beamed-lengths
(list)
beamed-minimum-free-lengths
(list)
beamed-stem-shorten
(list)
beaming
(pair)
beautiful
(number)
before-line-breaking-callback
(procedure)
begin-alignment
(number)
begin-of-line-visible
(boolean)
between-cols
(pair)
between-system-string
(string)
bounded-by-me
(list of grobs)
bracket-flare
(pair of numbers)
bracket-thick
(number)
bracket-visibility
(boolean or symbol)
break-align-symbol
(symbol)
break-alignment-done
(boolean)
break-glyph-function
(procedure)
break-visibility
(procedure)
breakable
(boolean)
c0-position
(integer)
cause
(any type)
cautionary
(boolean)
cautionary-style
(symbol)
cavum
(boolean)
center-element
(grob (GRaphical OBject))
chord
(pair)
chord-tremolo
(boolean)
collapse-height
(dimension, in staff space)
collision-done
(boolean)
columns
(list of grobs)
common-shortest-duration
(moment)
concaveness-gap
(dimension, in staff space)
concaveness-threshold
(number)
conditional-elements
(list of grobs)
context-info
(integer)
control-points
(list)
damping
(integer)
dash-fraction
(number)
dash-period
(number)
dashed
(number)
de-uglify-parameters
(list)
delta-pitch
(number)
deminutum
(boolean)
dependencies
(list of grobs)
descendens
(boolean)
details
(list)
dir-function
(procedure)
The ways to calculate the direction of a beam work as follows:
majority
mean
median
direction
(direction)
direction-source
(grob (GRaphical OBject))
dot
(grob (GRaphical OBject))
dot-count
(integer)
duration-log
(integer)
edge-height
(pair)
edge-text
(pair)
elements
(list of grobs)
enclose-bounds
(boolean)
end-alignment
(number)
expand-limit
(integer)
extra-X-extent
(pair of numbers)
extra-Y-extent
(pair of numbers)
extra-Y-extent
.
extra-offset
(pair of numbers)
extra-offset
is added just before `printing' the grob, so the
typesetting engine is completely oblivious to it.
extremity-offset-alist
(list)
extremity-rules
(list)
flag-count
(number)
flag-style
(symbol)
no-flag
switches off the flag.
flag-width-function
(procedure)
flexa-height
(dimension, in staff space)
flexa-width
(dimension, in staff space)
font
(unknown)
font-design-size
(number)
font-family
(symbol)
font-magnification
(number)
1.0
.
font-name
(string)
font-relative-size
(number)
font-series
(symbol)
font-shape
(symbol)
force-hshift
(number)
forced-distance
(dimension, in staff space)
fraction
(pair of numbers)
french-beaming
(boolean)
full-size-change
(boolean)
gap
(dimension, in staff space)
gap-count
(integer)
glyph
(string)
glyph-name
(string)
glyph-name-procedure
(procedure)
grace-space-factor
(number)
grow-direction
(direction)
hair-thickness
(number)
head-width
(dimension, in staff space)
heads
(pair)
height
(dimension, in staff space)
height-limit
(dimension, in staff space)
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
whereF (0) = 0 , F' (0) = 1, and F (infinity) = 1
Currently, for F we useh = height-limit * F (x * ratio / height-limit)
F (x) = 2/pi * atan (pi * x/2)
horizontal-shift
(integer)
ideal-distances
(list)
if-text-padding
(number)
ignore-length-mismatch
(boolean)
inclinatum
(boolean)
interfaces
(list)
meta
field.
inversion
(list)
items-worth-living
(list of grobs)
join-heads
(boolean)
join-left
(boolean)
join-left-amount
(number)
kern
(dimension, in staff space)
knee
(boolean)
knee-spacing-correction
(number)
layer
(number)
least-squares-dy
(number)
left-items
(list of grobs)
left-neighbors
(list of grobs)
The closest spacing-wishes determine the actual distances between the
columns.
left-padding
(dimension, in staff space)
left-position
(number)
length
(dimension, in staff space)
lengths
(list)
ligature-primitive-callback
(procedure)
line-count
(integer)
outputproperty
. property .. override
will not
work: override
is processed after the StaffSymbol is created,
and will have no effect.
linea
(boolean)
maximum-length
(dimension, in staff space)
maximum-rest-count
(integer)
measure-count
(integer)
measure-length
(moment)
merge-differently-dotted
(boolean)
merge-differently-headed
(boolean)
meta
(list)
The alist contains the following entries: name, interfaces.
minimum-X-extent
(pair of numbers)
minimum-Y-extent
(pair of numbers)
minimum-Y-extent
.
minimum-beam-collision-distance
(dimension, in staff space)
minimum-distance
(dimension, in staff space)
minimum-distances
(list)
minimum-length
(dimension, in staff space)
Also works as a scaling parameter for the length of hyphen. .
minimum-space
(dimension, in staff space)
molecule
(unknown)
molecule-callback
(procedure)
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)
neutral-position
(number)
new-accidentals
(list)
no-spacing-rods
(boolean)
no-stem-extend
(boolean)
non-default
(boolean)
note-columns
(pair)
note-head-style
(string)
note-heads
(list of grobs)
number-visibility
(boolean or symbol)
bracket-visibility
, but for the number.
old-accidentals
(list)
oriscus
(boolean)
padding
(dimension, in staff space)
pedal-text
(grob (GRaphical OBject))
penalty
(number)
pes-or-flexa
(boolean)
pitch-max
(pitch)
pitch-min
(pitch)
pitches
(list)
position-callbacks
(list)
positions
(pair)
prefix-set
(number)
primitive
(integer)
quant-score
(number)
quilisma
(boolean)
ratio
(number)
remove-first
(boolean)
rest
(grob (GRaphical OBject))
rest-collision
(grob (GRaphical OBject))
rest-collision-done
(boolean)
right-items
(list of grobs)
right-neighbors
(list of grobs)
right-padding
(dimension, in staff space)
right-position
(number)
right-trim-amount
(dimension, in staff space)
script-molecule
(pair)
script-priority
(number)
self-alignment-X
(number or grob)
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)
shorten
(dimension, in staff space)
shorten-pair
(pair of numbers)
shortest-duration-space
(dimension, in staff space)
spacing-increment
as unit. See also
spacing-spanner-interface.
shortest-playing-duration
(moment)
shortest-starter-duration
(moment)
side-relative-direction
(direction)
side-support-elements
(list of grobs)
slope
(number)
slope-limit
(number)
space-alist
(list)
space-function
(procedure)
spacing-increment
(number)
spacing-procedure
(procedure)
spacing-wishes
(list of grobs)
stacking-dir
(direction)
staff-padding
(dimension, in staff space)
staff-position
(number)
staff-space
(dimension, in staff space)
staff-symbol
(grob (GRaphical OBject))
staffline-clearance
(dimension, in staff space)
stem
(grob (GRaphical OBject))
stem-attachment-function
(procedure)
stem-end-position
(number)
stem-info
(pair)
stem-shorten
(list)
stem-spacing-correction
(number)
stems
(list of grobs)
stroke-style
(string)
stropha
(boolean)
style
(symbol)
support-head
(grob (GRaphical OBject))
text
(markup)
thick-thickness
(number)
thickness
(number)
thin-kern
(number)
threshold
(pair of numbers)
tie
(grob (GRaphical OBject))
transparent
(boolean)
tremolo-flag
(grob (GRaphical OBject))
up-to-staff
(boolean)
use-breve-rest
(boolean)
virga
(boolean)
when
(moment)
width
(dimension, in staff space)
width-correct
(dimension, in staff space)
word-space
(dimension, in staff space)
x-gap
(dimension, in staff space)
x-offset
(dimension, in staff space)
y-free
(dimension, in staff space)
y-offset
(dimension, in staff space)
zigzag-length
(dimension, in staff space)
zigzag-width
(dimension, in staff space)
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. Properties are stored in two ways:
|
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
|
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 |
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 |
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
This function is useful to call from the command line: |
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. |
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
Apply_context_iterator::constructor
: Scheme functions
Auto_change_iterator::constructor
: Scheme functions
Bar_check_iterator::constructor
: Scheme functions
bigger-markup
: Markup functions
bold-markup
: Markup functions
box-markup
: Markup functions
bracket-markup
: Markup functions
center-markup
: Markup functions
Change_iterator::constructor
: Scheme functions
char-markup
: Markup functions
Chord_tremolo_iterator::constructor
: Scheme functions
column-markup
: Markup functions
combine-markup
: Markup functions
Context_specced_music_iterator::constructor
: Scheme functions
dir-column-markup
: Markup functions
dynamic-markup
: Markup functions
Event_chord_iterator::constructor
: Scheme functions
finger-markup
: Markup functions
Folded_repeat_iterator::constructor
: Scheme functions
fontsize-markup
: Markup functions
fraction-markup
: Markup functions
Grace_iterator::constructor
: Scheme functions
halign-markup
: Markup functions
hbracket-markup
: Markup functions
hspace-markup
: Markup functions
huge-markup
: Markup functions
italic-markup
: Markup functions
large-markup
: Markup functions
left-align-markup
: Markup functions
line-markup
: Markup functions
lookup-markup
: Markup functions
ly:add-interface
: Scheme functions
ly:add-moment
: Scheme functions
ly:all-grob-interfaces
: Scheme functions
ly:bracket
: Scheme functions
ly:context-parent
: Scheme functions
ly:context-properties
: Scheme functions
ly:context-property-where-defined
: Scheme functions
ly:context-pushpop-property
: Scheme functions
ly:context?
: Scheme functions
ly:dimension?
: Scheme functions
ly:dir?
: Scheme functions
ly:div-moment
: Scheme functions
ly:duration-dot-count
: Scheme functions
ly:duration-factor
: Scheme functions
ly:duration-log
: Scheme functions
ly:duration<?
: Scheme functions
ly:duration?
: Scheme functions
ly:export
: Scheme functions
ly:find-glyph-by-name
: Scheme functions
ly:font-metric?
: Scheme functions
ly:fontify-atom
: Scheme functions
ly:get-all-function-documentation
: Scheme functions
ly:get-all-translators
: Scheme functions
ly:get-broken-into
: Scheme functions
ly:get-context-property
: Scheme functions
ly:get-default-font
: Scheme functions
ly:get-extent
: Scheme functions
ly:get-glyph
: Scheme functions
ly:get-grob-property
: Scheme functions
ly:get-mus-property
: Scheme functions
ly:get-music-length
: Scheme functions
ly:get-mutable-properties
: Scheme functions
ly:get-option
: Scheme functions
ly:get-original
: Scheme functions
ly:get-paper-variable
: Scheme functions
ly:get-parent
: Scheme functions
ly:get-spanner-bound
: Scheme functions
ly:get-system
: Scheme functions
ly:grob-paper
: Scheme functions
ly:grob-pq-less?
: Scheme functions
ly:grob-script-priority-less
: Scheme functions
ly:grob-staff-position
: Scheme functions
ly:grob-suicide
: Scheme functions
ly:grob-translate-axis!
: Scheme functions
ly:grob?
: Scheme functions
ly:gulp-file
: Scheme functions
ly:input-location?
: Scheme functions
ly:input-message
: Scheme functions
ly:intlog2
: Scheme functions
ly:iterator?
: Scheme functions
ly:make-bare-music
: Scheme functions
ly:make-duration
: Scheme functions
ly:make-molecule
: Scheme functions
ly:make-moment
: Scheme functions
ly:make-pitch
: Scheme functions
ly:molecule-add
: Scheme functions
ly:molecule-align-to!
: Scheme functions
ly:molecule-combine-at-edge
: Scheme functions
ly:molecule-get-extent
: Scheme functions
ly:molecule-set-extent!
: Scheme functions
ly:molecule-translate
: Scheme functions
ly:molecule-translate-axis
: Scheme functions
ly:molecule?
: Scheme functions
ly:moment?
: Scheme functions
ly:mul-moment
: Scheme functions
ly:music-deep-copy
: Scheme functions
ly:music-duration-compress
: Scheme functions
ly:music-duration-length
: Scheme functions
ly:music-name
: Scheme functions
ly:music-transpose
: Scheme functions
ly:music?
: Scheme functions
ly:number->string
: Scheme functions
ly:option-usage
: Scheme functions
ly:paper-get-font
: Scheme functions
ly:paper-lookup
: Scheme functions
ly:pitch-alteration
: Scheme functions
ly:pitch-diff
: Scheme functions
ly:pitch-notename
: Scheme functions
ly:pitch-octave
: Scheme functions
ly:pitch-quartertones
: Scheme functions
ly:pitch-semitones
: Scheme functions
ly:pitch-steps
: Scheme functions
ly:pitch-transpose
: Scheme functions
ly:pitch<?
: Scheme functions
ly:pitch?
: Scheme functions
ly:round-filled-box
: Scheme functions
ly:set-context-property!
: Scheme functions
ly:set-grob-property!
: Scheme functions
ly:set-mus-property!
: Scheme functions
ly:set-option
: Scheme functions
ly:set-point-and-click
: Scheme functions
ly:text-dimension
: Scheme functions
ly:translator-description
: Scheme functions
ly:translator-find
: Scheme functions
ly:translator-name
: Scheme functions
ly:translator?
: Scheme functions
ly:transpose-key-alist
: Scheme functions
ly:unit
: Scheme functions
ly:unset-context-property
: Scheme functions
ly:version
: Scheme functions
ly:warn
: Scheme functions
Lyric_combine_music_iterator::constructor
: Scheme functions
magnify-markup
: Markup functions
music-list?
: Scheme functions
Music_iterator::constructor
: Scheme functions
Music_wrapper_iterator::constructor
: Scheme functions
musicglyph-markup
: Markup functions
normal-size-sub-markup
: Markup functions
normal-size-super-markup
: Markup functions
note-markup
: Markup functions
number-markup
: Markup functions
Output_property_music_iterator::constructor
: Scheme functions
override-markup
: Markup functions
Part_combine_music_iterator::constructor
: Scheme functions
Percent_repeat_iterator::constructor
: Scheme functions
Pop_property_iterator::constructor
: Scheme functions
Property_iterator::constructor
: Scheme functions
Property_unset_iterator::constructor
: Scheme functions
Push_property_iterator::constructor
: Scheme functions
raise-markup
: Markup functions
right-align-markup
: Markup functions
roman-markup
: Markup functions
Sequential_iterator::constructor
: Scheme functions
Sequential_music_iterator::constructor
: Scheme functions
simple-markup
: Markup functions
Simple_music_iterator::constructor
: Scheme functions
Simultaneous_music_iterator::constructor
: Scheme functions
small-markup
: Markup functions
smaller-markup
: Markup functions
strut-markup
: Markup functions
sub-markup
: Markup functions
super-markup
: Markup functions
teeny-markup
: Markup functions
Time_scaled_music_iterator::constructor
: Scheme functions
tiny-markup
: Markup functions
translate-markup
: Markup functions
typewriter-markup
: Markup functions
Unfolded_repeat_iterator::constructor
: Scheme functions
Volta_repeat_iterator::constructor
: Scheme functions
On unix systems, the file /dev/null
is special device: anything written to it is discarded.
On unix systems, the file /dev/null
is special device: anything written to it is discarded.
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.1 (stable-branch).