#### Voice

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

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

This context creates the following layout objects:

Arpeggio, Beam, BreathingSign, ClusterSpannerBeacon, ClusterSpanner, CombineTextScript, Dots, DoublePercentRepeat, DynamicLineSpanner, DynamicText, Fingering, Glissando, Hairpin, MultiMeasureRestNumber, MultiMeasureRestText, MultiMeasureRest, NoteColumn, NoteHead, NoteSpacing, PercentRepeat, PhrasingSlur, RepeatSlash, Rest, ScriptColumn, Script, Slur, StemTremolo, Stem, TextScript, TextSpanner, TieColumn, Tie, TupletBracket and VoiceFollower.

This context sets the following properties:

- Set translator property `localKeySignature` to `'()`

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

This context is built from the following engravers:

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

  Music types accepted:

  skip-event

`Tuplet_engraver`
  Catch Time_scaled_music and generate appropriate bracket

  Music types accepted:

  time-scaled-music

  Properties (read)

  `tupletSpannerDuration` (moment)
    Normally a tuplet bracket is as wide as the `\times` expression that gave rise to it. By setting this property, you can make brackets last shorter. Example

                       @lilypond[verbatim,fragment]
                       context Voice \times 2/3 {
                         property Voice.tupletSpannerDuration = #(ly:make-moment 1 4)
                         c-[8 c c-] c-[ c c-]
                       }
                       @end lilypond

    .

  `tupletNumberFormatFunction` (procedure)
    Function taking a music as input, producing a string. This function is called to determine the text to print on a tuplet bracket.
  This engraver creates the following layout objects: TupletBracket.
`Tie_engraver`
  Generate ties between noteheads of equal pitch.

  Music types accepted:

  tie-event

  Properties (read)

  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  This engraver creates the following layout objects: Tie and TieColumn.
`Slur_engraver`
  Build slurs from Slur_evs

  Music types accepted:

  slur-event

  Properties (read)

  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  This engraver creates the following layout objects: Slur.
`Cluster_spanner_engraver`
  Engraves a cluster using Spanner notation

  Music types accepted:

  cluster-note-event

  This engraver creates the following layout objects: ClusterSpanner and ClusterSpannerBeacon.

`Phrasing_slur_engraver`
  Print phrasing slurs. Similar to Slur_engraver

  Music types accepted:

  phrasing-slur-event

  This engraver creates the following layout objects: PhrasingSlur.

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

  This engraver creates the following layout objects: NoteColumn and NoteSpacing.

`Script_column_engraver`

  This engraver creates the following layout objects: ScriptColumn.

`Script_engraver`
  Handles note scripted articulations.

  Music types accepted:

  articulation-event and script-event

  Properties (read)

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

  Music types accepted:

  fingering-event

  This engraver creates the following layout objects: Fingering.

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

  Music types accepted:

  decrescendo-event, crescendo-event and absolute-dynamic-event

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

`Text_engraver`
  Create text-scripts

  Music types accepted:

  text-script-event

  This engraver creates the following layout objects: TextScript.

`Part_combine_engraver`
  Part combine engraver for orchestral scores: Print markings a2, Solo, Solo II, and unisono

  Music types accepted:

  part-combine-event

  Properties (read)

  `soloADue` (boolean)
    set Solo/A due texts in the part combiner?
  This engraver creates the following layout objects: CombineTextScript.
`Melisma_translator`
  This translator collects melisma information about ties, beams, and user settings (`melismaBusy`, and signals it to the `ddlyrics` code.

  Music types accepted:

  melisma-span-event and melisma-playing-event

  Properties (read)

  `beamMelismaBusy` (boolean)
    Signal if a beam is present.
  `tieMelismaBusy` (boolean)
    Signal whether a tie is present.
  `slurMelismaBusy` (boolean)
    Signal if a slur is present.
  `melismaBusyProperties` (list)
    List of properties (symbols) to determine whether a melisma is playing. Setting this property will influence how lyrics are aligned to notes. For example, if set to `#'(melismaBusy beamMelismaBusy)`, only manual melismata and manual beams are considered. Possible values include `melismaBusy`, `slurMelismaBusy`, `tieMelismaBusy`, and `beamMelismaBusy`
  `melismaBusy` (boolean)
    Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected.
`Slash_repeat_engraver`
  Make beat repeats.

  Music types accepted:

  repeated-music

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  This engraver creates the following layout objects: RepeatSlash.
`Percent_repeat_engraver`
  Make whole bar and double bar repeats.

  Music types accepted:

  repeated-music

  Properties (read)

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

  Music types accepted:

  repeated-music

  This engraver creates the following layout objects: Beam.

`New_fingering_engraver`
  Create fingering-scripts for notes in a new chord. This engraver is ill-named, since it also takes care of articulations and harmonic note heads

  Properties (read)

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

  Music types accepted:

  beam-forbid-event

  Properties (read)

  `subdivideBeams` (boolean)
    If set, multiple beams will be subdivided at beat positions by only drawing one beam over the beat.
  `beatLength` (moment)
    The length of one beat in this time signature.
  `autoBeamSettings` (list)
    Specifies when automatically generated beams should begin and end. See Setting automatic beam behavior for more information.
  `autoBeaming` (boolean)
    If set to true then beams are generated automatically.
  This engraver creates the following layout objects: Beam.
`Grace_beam_engraver`
  Handles Beam events by engraving Beams. If omitted, then notes will be printed with flags instead of beams. Only engraves beams when we are at grace points in time.

  Music types accepted:

  beam-event

  Properties (read)

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

  Music types accepted:

  beam-event

  Properties (read)

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

  Music types accepted:

  tremolo-event

  Properties (read)

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

  Music types accepted:

  rest-event

  Properties (read)

  `middleCPosition` (number)
    Place of the middle C, measured in half staffspaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  This engraver creates the following layout objects: Dots and Rest.
`Note_heads_engraver`
  Generate noteheads.

  Music types accepted:

  busy-playing-event and note-event

  Properties (read)

  `middleCPosition` (number)
    Place of the middle C, measured in half staffspaces. Usually determined by looking at `clefPosition` and `clefGlyph`.
  This engraver creates the following layout objects: Dots and NoteHead.
`Breathing_sign_engraver`

  Music types accepted:

  breathing-event

  This engraver creates the following layout objects: BreathingSign.

`Ligature_bracket_engraver`
  Handles Ligature_events by engraving Ligature brackets.

  Music types accepted:

  ligature-event

  This engraver creates the following layout objects: TupletBracket.

`Glissando_engraver`
  Engrave a glissandi

  Music types accepted:

  glissando-event

  Properties (read)

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

  Music types accepted:

  glissando-event

  Properties (read)

  `followVoice` (boolean)
    if set, note heads are tracked across staff switches by a thin line
  This engraver creates the following layout objects: Glissando and VoiceFollower.
`Forbid_line_break_engraver`
  Forbid line breaks when note heads are still playing at some point.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Grob_pq_engraver`
  Administrate when certain grobs (eg. note heads) stop playing; this engraver is a sort-of a failure, since it doesn't handle all sorts of borderline cases very well.

  Properties (read)

  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
  Properties (write)
  `busyGrobs` (list)
    a queue of (end-moment . GROB) conses. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g. note heads, spanners, etc.)
`Text_spanner_engraver`
  Create text spanner from a Music.

  Music types accepted:

  text-span-event

  This engraver creates the following layout objects: TextSpanner.

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

  Music types accepted:

  multi-measure-text-event and multi-measure-rest-event

  Properties (read)

  `measureLength` (moment)
    Length of one measure in the current time signature.
  `measurePosition` (moment)
    How much of the current measure have we had. This can be set manually to create incomplete measures.
  `currentCommandColumn` (layout object)
    Grob that is X-parent to all current breakable (clef, key signature, etc.) items.
  `breakableSeparationItem` (layout object)
    The breakable items in this time step, for this staff.
  `restNumberThreshold` (number)
    If a multimeasure rest takes less than this number of measures, no number is printed.
  `currentBarNumber` (integer)
    Contains the current barnumber. This property is incremented at every bar line.
  This engraver creates the following layout objects: MultiMeasureRest, MultiMeasureRestNumber and MultiMeasureRestText.
`Arpeggio_engraver`
  Generate an Arpeggio from a Arpeggio_req

  Music types accepted:

  arpeggio-event

  This engraver creates the following layout objects: Arpeggio.

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

  Music types accepted:

  layout-instruction

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

  Properties (read)

  `fontSize` (number)
    The relative size of all grobs in a context.

Read comments on this page, or add one. This page is for LilyPond-2.2.5 (stable-branch).