scamp.score.Voice

class scamp.score.Voice(contents: Sequence[Tuplet | NoteLike], time_signature: TimeSignature)[source]

Bases: ScoreComponent, ScoreContainer

Representation of a single voice within a single measure of a single staff of music.

Parameters:
  • contents – list of Tuplet or NoteLike objects in this voice

  • time_signature – the time signature of the measure to which this voice belongs

Variables:

time_signature – the time signature of the measure to which this voice belongs

Methods

empty_voice(time_signature)

Constructs an empty voice containing simply a bar rest.

from_performance_voice(notes, ...)

Constructs a Voice object from a list of PerformanceNotes

iterate_notes([include_rests])

Iterate through the notes (and possibly rests) within this Voice

non_empty_length()

Length of the part of this voice that has something in it.

to_music_xml([source_id_dict])

Convert this score component to its corresponding pymusicxml component

Inherited Methods

append(item)

Add a child ScoreComponent of the appropriate type

export_lilypond(file_path[, non_score_blocks])

Convert and wrap as a LilyPond (.ly) file, and save to the given path.

export_music_xml(file_path[, pretty_print])

Convert and wrap as a MusicXML score, and save to the given path.

export_pdf(file_path[, non_score_blocks])

Exports score as a PDF file and saves it to the given file_path

extend(items)

Add several child ScoreComponents of the appropriate type

index(item)

Get the index of the given child ScoreComponent

insert(index, item)

Insert a child ScoreComponent at the given index.

pop([i])

Pop and return the child ScoreComponent at the given index.

print_lilypond([wrap_as_file, non_score_blocks])

Convert and print LilyPond code, via the abjad library.

print_music_xml([pretty_print])

Convert and wrap as a MusicXML score, and print the resulting XML.

remove(item)

Remove the given child ScoreComponent.

show([non_score_blocks])

Using the abjad.show command, generates and opens a PDF of the music represented by this component

show_xml()

Convert and wrap as a MusicXML score, and open it up in notation software.

to_abjad([wrap_as_file, non_score_blocks])

Convert this score component to its corresponding abjad component

to_lilypond([wrap_as_file, non_score_blocks])

Convert to LilyPond code, via the abjad library.

Attributes

contents

list of Tuplet or NoteLike objects in this voice

property contents: Sequence[Tuplet | NoteLike]

list of Tuplet or NoteLike objects in this voice

iterate_notes(include_rests: bool = False) Iterator[NoteLike][source]

Iterate through the notes (and possibly rests) within this Voice

Parameters:

include_rests – Whether or not to include rests

non_empty_length() float[source]

Length of the part of this voice that has something in it. (i.e. the length not counting trailing rests that aren’t part of a tuplet)

classmethod empty_voice(time_signature: TimeSignature) Voice[source]

Constructs an empty voice containing simply a bar rest.

Parameters:

time_signature – the time signature of the measure to which this voice belongs

classmethod from_performance_voice(notes: Sequence[PerformanceNote], measure_quantization: QuantizedMeasure) Voice[source]

Constructs a Voice object from a list of PerformanceNotes

(This is where a lot of the magic of converting performed notes to written symbols occurs.)

Parameters:
  • notes – the list of PerformanceNotes played in this measure

  • measure_quantization – the quantization used for this measure for this voice

to_music_xml(source_id_dict=None) Sequence[BeamedGroup | pymusicxml.score_components._XMLNote][source]

Convert this score component to its corresponding pymusicxml component

append(item: ScoreComponent) None

Add a child ScoreComponent of the appropriate type

export_lilypond(file_path: str, non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) None

Convert and wrap as a LilyPond (.ly) file, and save to the given path.

Parameters:
  • file_path – file path to save to

  • non_score_blocks – a list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad); typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

export_music_xml(file_path: str, pretty_print: bool = True) None

Convert and wrap as a MusicXML score, and save to the given path.

Parameters:
  • file_path – file path to save to

  • pretty_print – whether or not to take the extra space and format the file with indentations, etc.

export_pdf(file_path: str, non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) None

Exports score as a PDF file and saves it to the given file_path

Parameters:
  • file_path – where to save the PDF

  • non_score_blocks – a list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad); typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

extend(items) None

Add several child ScoreComponents of the appropriate type

index(item) int

Get the index of the given child ScoreComponent

insert(index, item) None

Insert a child ScoreComponent at the given index.

pop(i=-1) ScoreComponent

Pop and return the child ScoreComponent at the given index.

print_lilypond(wrap_as_file: bool = False, non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) None

Convert and print LilyPond code, via the abjad library.

Parameters:
  • wrap_as_file – if True, wraps this as an abjad.LilypondFile

  • non_score_blocks – (Only applicable if wrap_as_file is set to True). A list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad). Typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

print_music_xml(pretty_print: bool = True) None

Convert and wrap as a MusicXML score, and print the resulting XML.

Parameters:

pretty_print – whether or not to take the extra space and format the file with indentations, etc.

remove(item) None

Remove the given child ScoreComponent.

show(non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) None

Using the abjad.show command, generates and opens a PDF of the music represented by this component

Parameters:
  • non_score_blocks – a list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad); typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

show_xml() None

Convert and wrap as a MusicXML score, and open it up in notation software. (The software to use is defined in engraving_settings.show_music_xml_command_line.)

to_abjad(wrap_as_file: bool = False, non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) Component

Convert this score component to its corresponding abjad component

Parameters:
  • wrap_as_file – if True, wraps this as an abjad.LilypondFile

  • non_score_blocks – (Only applicable if wrap_as_file is set to True). A list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad). Typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

to_lilypond(wrap_as_file: bool = False, non_score_blocks: Optional[Sequence] = None, **lilypond_file_args) str

Convert to LilyPond code, via the abjad library.

Parameters:
  • wrap_as_file – if True, wraps this as an abjad.LilypondFile

  • non_score_blocks – (Only applicable if wrap_as_file is set to True). A list of abjad.Block objects (or strings containing the LilyPond code for such a block, which are then parsed by abjad). Typical blocks might be a header block, a layout block, or a paper block. If no header block is specified, one will be created with the score’s title and composer. If a header is specified, title and composer will be added if not present.

  • lilypond_file_args – any additional keyword arguments will be passed along to the constructor of abjad.LilyPondFile (assuming wrap_as_file is True). This allows for setting staff size and various other customizations.

Returns:

a string containing the LilyPond code