LilyPond Internals Reference: 2.1.27 PetrucciVoice

### 2.1.27 `PetrucciVoice`

Same as `Voice` context, except that it is accommodated for typesetting a piece in Petrucci style.

This context also accepts commands for the following context(s): `Voice`.

This context creates the following layout object(s): `Arpeggio`, `Beam`, `BendAfter`, `BreathingSign`, `ClusterSpanner`, `ClusterSpannerBeacon`, `CombineTextScript`, `Dots`, `DoublePercentRepeat`, `DoublePercentRepeatCounter`, `DoubleRepeatSlash`, `DynamicLineSpanner`, `DynamicText`, `DynamicTextSpanner`, `FingerGlideSpanner`, `Fingering`, `Flag`, `Glissando`, `Hairpin`, `InstrumentSwitch`, `LaissezVibrerTie`, `LaissezVibrerTieColumn`, `MensuralLigature`, `MultiMeasureRest`, `MultiMeasureRestNumber`, `MultiMeasureRestScript`, `MultiMeasureRestText`, `NoteColumn`, `NoteHead`, `NoteSpacing`, `PercentRepeat`, `PercentRepeatCounter`, `PhrasingSlur`, `RepeatSlash`, `RepeatTie`, `RepeatTieColumn`, `Rest`, `Script`, `ScriptColumn`, `Slur`, `Stem`, `StemStub`, `StemTremolo`, `StringNumber`, `StrokeFinger`, `TextScript`, `TextSpanner`, `Tie`, `TieColumn`, `TrillPitchAccidental`, `TrillPitchGroup`, `TrillPitchHead`, `TrillPitchParentheses`, `TrillSpanner`, `TupletBracket`, `TupletNumber` and `VoiceFollower`.

This context sets the following properties:

- Set context property `autoBeaming` to `#f`.
- Set grob property `length` in `Stem` to `5`.
- Set grob property `style` in `NoteHead` to `'petrucci`.
- Set grob property `style` in `Rest` to `'mensural`.
- Set grob property `thickness` in `Stem` to `1.7`.

This is a ‘Bottom’ context; no contexts will be created implicitly from it.

This context cannot contain other contexts.

This context is built from the following engraver(s):

`Arpeggio_engraver`

  Generate an Arpeggio symbol.

  Music types accepted: `arpeggio-event`

  This engraver creates the following layout object(s): `Arpeggio`.

`Auto_beam_engraver`

  Generate beams based on measure characteristics and observed Stems. Uses `baseMoment`, `beatStructure`, `beamExceptions`, `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)

  `autoBeaming` (boolean)

    If set to true then beams are generated automatically.

  `baseMoment` (moment)

    Smallest unit of time that will stand on its own as a subdivided section.

  `beamExceptions` (list)

    An alist of exceptions to autobeam rules that normally end on beats.

  `beamHalfMeasure` (boolean)

    Whether to allow a beam to begin halfway through the measure in triple time, which could look like 6/8.

  `beatStructure` (list)

    List of `baseMoment`s that are combined to make beats.

  `subdivideBeams` (boolean)

    If set, multiple beams will be subdivided at `baseMoment` positions by only drawing one beam over the beat.

  This engraver creates the following layout object(s): `Beam`.

`Beam_engraver`

  Handle `Beam` events by engraving beams. If omitted, then notes are printed with flags instead of beams.

  Music types accepted: `beam-event`

  Properties (read)

  `baseMoment` (moment)

    Smallest unit of time that will stand on its own as a subdivided section.

  `beamMelismaBusy` (boolean)

    Signal if a beam is present.

  `beatStructure` (list)

    List of `baseMoment`s that are combined to make beats.

  `subdivideBeams` (boolean)

    If set, multiple beams will be subdivided at `baseMoment` positions by only drawing one beam over the beat.

  This engraver creates the following layout object(s): `Beam`.

`Bend_engraver`

  Create fall spanners.

  Music types accepted: `bend-after-event`

  Properties (read)

  `currentBarLine` (graphical (layout) object)

    Set to the `BarLine` that `Bar_engraver` has created in the current timestep.

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `currentMusicalColumn` (graphical (layout) object)

    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

  This engraver creates the following layout object(s): `BendAfter`.

`Breathing_sign_engraver`

  Notate breath marks.

  Music types accepted: `breathing-event`

  Properties (read)

  `breathMarkType` (symbol)

    The type of `BreathingSign` to create at `\breathe`.

  This engraver creates the following layout object(s): `BreathingSign`.

`Chord_tremolo_engraver`

  Generate beams for tremolo repeats.

  Music types accepted: `tremolo-span-event`

  This engraver creates the following layout object(s): `Beam`.

`Cluster_spanner_engraver`

  Engrave a cluster using `Spanner` notation.

  Music types accepted: `cluster-note-event`

  This engraver creates the following layout object(s): `ClusterSpanner` and `ClusterSpannerBeacon`.

`Dots_engraver`

  Create `Dots` objects for `rhythmic-head-interface`s.

  This engraver creates the following layout object(s): `Dots`.

`Double_percent_repeat_engraver`

  Make double measure repeats.

  Music types accepted: `double-percent-event`

  Properties (read)

  `countPercentRepeats` (boolean)

    If set, produce counters for percent repeats.

  `measureLength` (moment)

    Length of one measure in the current time signature.

  `repeatCountVisibility` (procedure)

    A procedure taking as arguments an integer and context, returning whether the corresponding percent repeat number should be printed when `countPercentRepeats` is set.

  Properties (write)

  `forbidBreak` (boolean)

    If set to `#t`, prevent a line break at this point, except if explicitly requested by the user.

  This engraver creates the following layout object(s): `DoublePercentRepeat` and `DoublePercentRepeatCounter`.

`Dynamic_align_engraver`

  Align hairpins and dynamic texts on a horizontal line.

  Properties (read)

  `currentMusicalColumn` (graphical (layout) object)

    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

  This engraver creates the following layout object(s): `DynamicLineSpanner`.

`Dynamic_engraver`

  Create hairpins, dynamic texts and dynamic text spanners.

  Music types accepted: `absolute-dynamic-event`, `break-dynamic-span-event` and `span-dynamic-event`

  Properties (read)

  `crescendoSpanner` (symbol)

    The type of spanner to be used for crescendi. Available values are ‘`hairpin`’ and ‘`text`’. If unset, a hairpin crescendo is used.

  `crescendoText` (markup)

    The text to print at start of non-hairpin crescendo, i.e., ‘`cresc.`’.

  `currentMusicalColumn` (graphical (layout) object)

    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

  `decrescendoSpanner` (symbol)

    The type of spanner to be used for decrescendi. Available values are ‘`hairpin`’ and ‘`text`’. If unset, a hairpin decrescendo is used.

  `decrescendoText` (markup)

    The text to print at start of non-hairpin decrescendo, i.e., ‘`dim.`’.

  This engraver creates the following layout object(s): `DynamicText`, `DynamicTextSpanner` and `Hairpin`.

`Finger_glide_engraver`

  Engraver to print a line between two `Fingering` grobs.

  Music types accepted: `note-event`

  This engraver creates the following layout object(s): `FingerGlideSpanner`.

`Fingering_engraver`

  Create fingering scripts.

  Music types accepted: `fingering-event`

  This engraver creates the following layout object(s): `Fingering`.

`Font_size_engraver`

  Put `fontSize` into `font-size` grob property.

  Properties (read)

  `fontSize` (number)

    The relative size of all grobs in a context.

`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)` cons cells. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g., note heads, spanners, etc.).

  Properties (write)

  `forbidBreak` (boolean)

    If set to `#t`, prevent a line break at this point, except if explicitly requested by the user.

`Glissando_engraver`

  Engrave glissandi.

  Music types accepted: `glissando-event`

  Properties (read)

  `glissandoMap` (list)

    A map in the form of ’((source1 . target1) (source2 . target2) (sourcen . targetn)) showing the glissandi to be drawn for note columns. The value ’() will default to ’((0 . 0) (1 . 1) (n . n)), where n is the minimal number of note-heads in the two note columns between which the glissandi occur.

  This engraver creates the following layout object(s): `Glissando`.

`Grace_auto_beam_engraver`

  Generates one autobeam group across an entire grace phrase. As usual, any manual beaming or `\noBeam` will block autobeaming, just like setting the context property ‘`autoBeaming`’ to `##f`.

  Music types accepted: `beam-forbid-event`

  Properties (read)

  `autoBeaming` (boolean)

    If set to true then beams are generated automatically.

  This engraver creates the following layout object(s): `Beam`.

`Grace_beam_engraver`

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

  Music types accepted: `beam-event`

  Properties (read)

  `baseMoment` (moment)

    Smallest unit of time that will stand on its own as a subdivided section.

  `beamMelismaBusy` (boolean)

    Signal if a beam is present.

  `beatStructure` (list)

    List of `baseMoment`s that are combined to make beats.

  `subdivideBeams` (boolean)

    If set, multiple beams will be subdivided at `baseMoment` positions by only drawing one beam over the beat.

  This engraver creates the following layout object(s): `Beam`.

`Grace_engraver`

  Set font size and other properties for grace notes.

  Properties (read)

  `graceSettings` (list)

    Overrides for grace notes. This property should be manipulated through the `add-grace-property` function.

`Grob_pq_engraver`

  Administrate when certain grobs (e.g., note heads) stop playing.

  Properties (read)

  `busyGrobs` (list)

    A queue of `(end-moment . grob)` cons cells. 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)` cons cells. This is for internal (C++) use only. This property contains the grobs which are still busy (e.g., note heads, spanners, etc.).

`Instrument_switch_engraver`

  Create a cue text for taking instrument.

  This engraver is deprecated.

  Properties (read)

  `instrumentCueName` (markup)

    The name to print if another instrument is to be taken.

    This property is deprecated

  This engraver creates the following layout object(s): `InstrumentSwitch`.

`Laissez_vibrer_engraver`

  Create laissez vibrer items.

  Music types accepted: `laissez-vibrer-event`

  This engraver creates the following layout object(s): `LaissezVibrerTie` and `LaissezVibrerTieColumn`.

`Mensural_ligature_engraver`

  Handle `Mensural_ligature_events` by glueing special ligature heads together.

  Music types accepted: `ligature-event`

  This engraver creates the following layout object(s): `MensuralLigature`.

`Multi_measure_rest_engraver`

  Engrave multi-measure rests that are produced with ‘`R`’. It reads `measureStartNow` and `internalBarNumber` to determine what number to print over the `MultiMeasureRest`.

  Music types accepted: `multi-measure-articulation-event`, `multi-measure-rest-event` and `multi-measure-text-event`

  Properties (read)

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `internalBarNumber` (integer)

    Contains the current barnumber. This property is used for internal timekeeping, among others by the `Accidental_engraver`.

  `measureStartNow` (boolean)

    True at the beginning of a measure.

  `restNumberThreshold` (number)

    If a multimeasure rest has more measures than this, a number is printed.

  This engraver creates the following layout object(s): `MultiMeasureRest`, `MultiMeasureRestNumber`, `MultiMeasureRestScript` and `MultiMeasureRestText`.

`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)

    A list of symbols, containing ‘`left`’, ‘`right`’, ‘`up`’ and/or ‘`down`’. This list determines where fingerings are put relative to the chord being fingered.

  `harmonicDots` (boolean)

    If set, harmonic notes in dotted chords get dots.

  `stringNumberOrientations` (list)

    See `fingeringOrientations`.

  `strokeFingerOrientations` (list)

    See `fingeringOrientations`.

  This engraver creates the following layout object(s): `Fingering`, `Script`, `StringNumber` and `StrokeFinger`.

`Note_head_line_engraver`

  Engrave a line between two note heads in a staff switch if `followVoice` is set.

  Properties (read)

  `followVoice` (boolean)

    If set, note heads are tracked across staff switches by a thin line.

  This engraver creates the following layout object(s): `VoiceFollower`.

`Note_heads_engraver`

  Generate note heads.

  Music types accepted: `note-event`

  Properties (read)

  `middleCPosition` (number)

    The place of the middle C, measured in half staff-spaces. Usually determined by looking at `middleCClefPosition` and `middleCOffset`.

  `staffLineLayoutFunction` (procedure)

    Layout of staff lines, `traditional`, or `semitone`.

  This engraver creates the following layout object(s): `NoteHead`.

`Note_spacing_engraver`

  Generate `NoteSpacing`, an object linking horizontal lines for use in spacing.

  This engraver creates the following layout object(s): `NoteSpacing`.

`Output_property_engraver`

  Apply a procedure to any grob acknowledged.

  Music types accepted: `apply-output-event`

`Part_combine_engraver`

  Part combine engraver for orchestral scores: Print markings ‘a2’, ‘Solo’, ‘Solo II’, and ‘unisono’.

  Music types accepted: `note-event` and `part-combine-event`

  Properties (read)

  `aDueText` (markup)

    Text to print at a unisono passage.

  `partCombineTextsOnNote` (boolean)

    Print part-combine texts only on the next note rather than immediately on rests or skips.

  `printPartCombineTexts` (boolean)

    Set ‘Solo’ and ‘A due’ texts in the part combiner?

  `soloIIText` (markup)

    The text for the start of a solo for voice ‘two’ when part-combining.

  `soloText` (markup)

    The text for the start of a solo when part-combining.

  This engraver creates the following layout object(s): `CombineTextScript`.

`Percent_repeat_engraver`

  Make whole measure repeats.

  Music types accepted: `percent-event`

  Properties (read)

  `countPercentRepeats` (boolean)

    If set, produce counters for percent repeats.

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `repeatCountVisibility` (procedure)

    A procedure taking as arguments an integer and context, returning whether the corresponding percent repeat number should be printed when `countPercentRepeats` is set.

  This engraver creates the following layout object(s): `PercentRepeat` and `PercentRepeatCounter`.

`Phrasing_slur_engraver`

  Print phrasing slurs. Similar to `Slur_engraver`.

  Music types accepted: `note-event` and `phrasing-slur-event`

  This engraver creates the following layout object(s): `PhrasingSlur`.

`Pitched_trill_engraver`

  Print the bracketed note head after a note head with trill.

  This engraver creates the following layout object(s): `TrillPitchAccidental`, `TrillPitchGroup`, `TrillPitchHead` and `TrillPitchParentheses`.

`Repeat_tie_engraver`

  Create repeat ties.

  Music types accepted: `repeat-tie-event`

  This engraver creates the following layout object(s): `RepeatTie` and `RepeatTieColumn`.

`Rest_engraver`

  Engrave rests.

  Music types accepted: `rest-event`

  Properties (read)

  `middleCPosition` (number)

    The place of the middle C, measured in half staff-spaces. Usually determined by looking at `middleCClefPosition` and `middleCOffset`.

  This engraver creates the following layout object(s): `Rest`.

`Rhythmic_column_engraver`

  Generate `NoteColumn`, an object that groups stems, note heads, and rests.

  This engraver creates the following layout object(s): `NoteColumn`.

`Script_column_engraver`

  Find potentially colliding scripts and put them into a `ScriptColumn` object; that will fix the collisions.

  This engraver creates the following layout object(s): `ScriptColumn`.

`Script_engraver`

  Handle note scripted articulations.

  Music types accepted: `articulation-event`

  Properties (read)

  `scriptDefinitions` (list)

    The description of scripts. This is used by the `Script_engraver` for typesetting note-superscripts and subscripts. See ‘`scm/script.scm`’ for more information.

  This engraver creates the following layout object(s): `Script`.

`Slash_repeat_engraver`

  Make beat repeats.

  Music types accepted: `repeat-slash-event`

  This engraver creates the following layout object(s): `DoubleRepeatSlash` and `RepeatSlash`.

`Slur_engraver`

  Build slur grobs from slur events.

  Music types accepted: `note-event` and `slur-event`

  Properties (read)

  `doubleSlurs` (boolean)

    If set, two slurs are created for every slurred note, one above and one below the chord.

  `slurMelismaBusy` (boolean)

    Signal if a slur is present.

  This engraver creates the following layout object(s): `Slur`.

`Spanner_break_forbid_engraver`

  Forbid breaks in certain spanners.

`Stem_engraver`

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

  Music types accepted: `tremolo-event` and `tuplet-span-event`

  Properties (read)

  `currentBarLine` (graphical (layout) object)

    Set to the `BarLine` that `Bar_engraver` has created in the current timestep.

  `stemLeftBeamCount` (integer)

    Specify the number of beams to draw on the left side of the next note. Overrides automatic beaming. The value is only used once, and then it is erased.

  `stemRightBeamCount` (integer)

    See `stemLeftBeamCount`.

  This engraver creates the following layout object(s): `Flag`, `Stem`, `StemStub` and `StemTremolo`.

`Text_engraver`

  Create text scripts.

  Music types accepted: `text-script-event`

  This engraver creates the following layout object(s): `TextScript`.

`Text_spanner_engraver`

  Create text spanner from an event.

  Music types accepted: `text-span-event`

  Properties (read)

  `currentMusicalColumn` (graphical (layout) object)

    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

  This engraver creates the following layout object(s): `TextSpanner`.

`Tie_engraver`

  Generate ties between note heads of equal pitch.

  Music types accepted: `tie-event`

  Properties (read)

  `skipTypesetting` (boolean)

    If true, no typesetting is done, speeding up the interpretation phase. Useful for debugging large scores.

  `tieWaitForNote` (boolean)

    If true, tied notes do not have to follow each other directly. This can be used for writing out arpeggios.

  Properties (write)

  `tieMelismaBusy` (boolean)

    Signal whether a tie is present.

  This engraver creates the following layout object(s): `Tie` and `TieColumn`.

`Trill_spanner_engraver`

  Create trill spanners.

  Music types accepted: `trill-span-event`

  Properties (read)

  `currentCommandColumn` (graphical (layout) object)

    Grob that is X-parent to all current breakable items (clef, key signature, etc.).

  `currentMusicalColumn` (graphical (layout) object)

    Grob that is X-parent to all non-breakable items (note heads, lyrics, etc.).

  This engraver creates the following layout object(s): `TrillSpanner`.

`Tuplet_engraver`

  Catch tuplet events and generate appropriate bracket.

  Music types accepted: `tuplet-span-event`

  Properties (read)

  `tupletFullLength` (boolean)

    If set, the tuplet is printed up to the start of the next note.

  `tupletFullLengthNote` (boolean)

    If set, end at the next note, otherwise end on the matter (time signatures, etc.) before the note.

  This engraver creates the following layout object(s): `TupletBracket` and `TupletNumber`.

#### LilyPond – Internals Reference v2.24.4 (stable-branch).