scamp.performance.PerformanceNote
- class scamp.performance.PerformanceNote(start_beat: float, length: float | tuple[float, ...], pitch: Union[float, Envelope, Sequence], volume: float | Envelope, properties: dict)[source]
Bases:
SavesToJSON
Represents a single note played by a
ScampInstrument
.- Parameters:
start_beat – the start beat of the note
length – the length of the note in beats (either a float or a tuple of floats representing tied segments)
pitch – the pitch of the note (float or Envelope)
volume – the volume of the note (float or Envelope)
properties – dictionary of note properties, or string representing those properties
- Variables:
start_beat – the start beat of the note
length – the length of the note in beats (either a float or a tuple of floats representing tied segments)
pitch – the pitch of the note (float or Envelope); note that this can also be a tuple of pitches representing a chord, but that this usually happens in the process of quantization when notes that can be merged into chords are merged.
volume – the volume of the note (float or Envelope)
properties – dictionary of note properties, or string representing those properties
Methods
attempt_chord_merger_with
(other)Try to merge this note with another note to form a chord.
Averages the pitch of this note, accounting for if it's a glissando or a chord
Total length of this note, adding together any tied segments.
next_id
()Return a new unique ID number for this note, different from all PerformanceNotes created so far.
play
(instrument[, clock, blocking])Play this note with the given instrument on the given clock
split_at_beat
(split_beat)Splits this note at the given beat, returning a tuple of the pieces created
If the self.length is a tuple, indicating a set of tied constituents, splits this into separate PerformanceNotes
Inherited Methods
Returns a copy of this object by serializing to and from JSON.
Dump this object as a JSON string.
json_loads
(s)Load this object from a JSON string.
load_from_json
(file_path)Load this object from a JSON file with the given path.
save_to_json
(file_path)Save this object to a JSON file using the given path.
Attributes
End beat of this note
- length_sum() float [source]
Total length of this note, adding together any tied segments. (The attribute “length” can be a list of floats representing tied segments.)
- Returns:
length of note as a float
- property end_beat: float
End beat of this note
- average_pitch() float [source]
Averages the pitch of this note, accounting for if it’s a glissando or a chord
- Returns:
the averaged pitch as a float
- play(instrument: ScampInstrument, clock: Optional[Clock] = None, blocking: bool = True) None [source]
Play this note with the given instrument on the given clock
- Parameters:
instrument – instrument to play back with
clock – the clock to play back on (if None, infers it from context)
blocking – if True, don’t return until the note is done playing; if False, return immediately
- static next_id() int [source]
Return a new unique ID number for this note, different from all PerformanceNotes created so far.
- Returns:
id number (int)
- split_at_beat(split_beat: float) Sequence[PerformanceNote] [source]
Splits this note at the given beat, returning a tuple of the pieces created
- Parameters:
split_beat – where to split (relative to the performance start time, not the note start time)
- Returns:
tuple of (first half note, second half note) if split beat is within the note. Otherwise just return the unchanged note in a length-1 tuple.
- split_at_length_divisions() Sequence[PerformanceNote] [source]
If the self.length is a tuple, indicating a set of tied constituents, splits this into separate PerformanceNotes
- Returns:
a list of pieces
- attempt_chord_merger_with(other: PerformanceNote) bool [source]
Try to merge this note with another note to form a chord. Returns whether it worked or not, and when it did, has the side effect of changing this note into a chord that incorporates the other note.
- Parameters:
other – another PerformanceNote
- Returns:
True if the merger works, False otherwise
- duplicate() T
Returns a copy of this object by serializing to and from JSON.
- json_dumps() str
Dump this object as a JSON string. This uses a custom encoder that recognizes and appropriately converts any attributes that are object inheriting from SavesToJSON.
- classmethod json_loads(s: str) T
Load this object from a JSON string. This uses a custom decoder that looks for a “_type” key in any object/dictionary being parsed and converts it to the class specified (assuming it a subclass of SavesToJSON).
- Parameters:
s – a string representing this object in JSON format
- classmethod load_from_json(file_path: str) T
Load this object from a JSON file with the given path. This uses a custom decoder that looks for a “_type” key in any object/dictionary being parsed and converts it to the class specified (assuming it a subclass of SavesToJSON).
- Parameters:
file_path – path for loading the file
- save_to_json(file_path: str) None
Save this object to a JSON file using the given path. This uses a custom encoder that recognizes and appropriately converts any attributes that are object inheriting from SavesToJSON.
- Parameters:
file_path – path for saving the file