musicscore.beat
- class musicscore.beat.Beat(quarter_duration=1, *args, **kwargs)[source]
Bases:
MusicTree,SimplifiedSextuplets,QuarterDurationMixin,QuantizeMixin,FinalizeMixinParent type:
VoiceChild type:
ChordBeat is the direct ancestor of chords. Each
Chordis placed with an offset between 0 and beat’s quarter duration inside the beat as its child .Quarter duration of a beat’s
Chordchild can exceed its own quarter duration. If aChordis longer than the quarter duration of beat’s parentVoice, a leftoverChordwill be added as leftover property to theVoicewhich will be added to next measure’s appropriate voice .Beat manages splitting of each child
Chordinto appropriate tiedChords if needed, for example if this chord has a non-writable quarter duration like 5/6.The dots and tuplets are also added here to
Chordor directly to theirNotechildren.Beaming and quantization are also further important tasks of a beat.
- add_child(child: Chord) List[Chord][source]
If child’s quarter duration is less than beat’s remaining quarter duration: child is added to the beat.
If child’s quarter duration is greater than beat’s remaining quarter duration:
Chord’s_split_and_add_beatwiseis method called. It is possible to add a chord with a quarter duration exceeding the beat’s quarter duration without splitting the chord. For example if the first beat in a 4/4 measure gets a chord with quarter duration 3, the chord will be added to this first beat as a child and the following two beats will be set to filled without having a child themselves and the parentVoicereturns the fourth beat if itsget_current_beatis called.If child’s quarter duration exceeds the
Voice’s remaining quarter duration a leftoverChordwill be added to the voice and can be accessed when the nextMeasureis created.- Parameters:
child –
Chordto be added as child- Returns:
list of split chords
- classmethod create_tree_from_list(tree_list_representation: list[list[Any]], represented_attribute_names: list[str]) T
- filter_nodes(key: Callable[[T], Any], return_value: Any) list[T]
Treemethod>>> root.filter_nodes(lambda node: node.get_level(), 2) [grandchild1, grandchild2, grandchild3]
- finalize()[source]
finalize can only be called once.
It calls finalize method of all
Chordchildren.Following updates are triggered: _update_note_tuplets, _update_chord_beams, quantize_quarter_durations (if get_quantized is True), _split_not_writable_chords
- get_beats() List[Beat]
MusicTreemethodThis method can be used for
ScoreandPart,Measure,StaffandVoice.- Returns:
a flat list of all beats.
- Return type:
List[
Beat]
- get_children() list[T]
Treemethod- Returns:
list of added children.
- get_children_of_type(type_: type) list[T]
Treemethod- Returns:
list of added children of type.d
- Return type:
list[
Tree]
- get_chord(*args, **kwargs) Chord
MusicTreemethodThis method can be used for
ScoreandPart,Measure,Staff,VoiceandBeat- Parameters:
args – can be used instead of
kwargs. A mixture of args and kwargs is not allowed.kwargs –
part_number,measure_number,staff_number,voice_number,beat_number,chord_numberdepending on musicscore’s class. AStafffor example needsvoice_number,beat_numberandchord_numberwhile aScoreneeds all keyword arguments.
- Return type:
- get_chords() List[Chord]
MusicTreemethodThis method can be used for
ScoreandPart,MeasureandStaff,VoiceandBeat- Returns:
a flat list of all chords.
- Return type:
List[
Chord]
- get_distance(reference: T | None = None) int
>>> root.get_distance() 0 >>> greatgrandchild1.get_distance() 3 >>> greatgrandchild1.get_distance(child2) 2
- get_farthest_leaf() T
>>> root.get_farthest_leaf() greatgrandchild1
- get_layer(level: int, key: Callable[[T], Any] | None = None) Any
Treemethod- Parameters:
level – layer number where 0 is the
root.key – An optional callable for each node in the layer.
- Returns:
All nodes on this level. The leaves of branches which are shorter than the given level will be repeated on this and all following layers.
- Return type:
list
- get_leaves(key: Callable[[T], Any] | None = None) list[Union[Any, list[Any]]]
Tree method
- Parameters:
key – An optional callable to be called on each leaf.
- Returns:
nested list of leaves or values of key(leaf) for each leaf
>>> root.get_leaves() [child1, [[greatgrandchild1, greatgrandchild2], grandchild2], child3, [grandchild3]]
- get_level() int
Tree- Returns:
0forroot,1, 2 etc.for each layer of children- Return type:
nonnegative int
>>> root.get_level() 0 >>> child1.get_level() 1 >>> grandchild1.get_level() 2 >>> greatgrandchild1.get_level() 3
- get_number_of_layers() int
>>> root.get_number_of_layers() 3
- get_parent() T | None
Treemethod- Returns:
parent.
Noneforroot.- Return type:
Tree
- get_position_in_tree() str
Treemethod- Returns:
0 for
root. 1, 2, … for layer 1. Other layers: x.y.z…. Example: 3.2.2 => third child of secod child of second child of the root.- Return type:
str
>>> print(root.get_tree_representation(key=lambda node: node.get_position_in_tree())) └── 0 ├── 1 ├── 2 │ ├── 2.1 │ │ ├── 2.1.1 │ │ └── 2.1.2 │ └── 2.2 ├── 3 └── 4 └── 4.1
- get_possible_subdivisions(beat_quarter_duration: QuarterDuration | None = None) List[int]
QuantizeMixinmethodThis method is used by
Beat’squantize_quarter_durations().Possible subdivisions dictionary can be set with
set_possible_subdivisions(). Keys in the subdivisions dictionary correspond to beat quarter durations (e.g. 1, 1/2 etc.) For example if get_possible_subdivisions()[1] == [3, 5, 8] a beat with a quarter duration of 1 can after quantization consists only of eighth triplets, quintuplets and 32ths. If this dictionary is not set orbeat_quarter_durationas key does not exist, the parent’s possible subdivisions dictionary will be checked.Scorehas a defaultPOSSIBLE_SUBDIVISIONSdictionary which will be used if no other musicscore node on the path from self to root has its own possible subdivisions dictionary withbeat_quarter_durationas a key. For setting possible subdivisions dictionary use alwaysset_possible_subdivisions().- Parameters:
beat_quarter_duration – Used as key in possible subdivisions dictionary. If
Noneand self is aBeatself.quarter_durationis used. IfNoneand self is not aBeatit is set to 1.- Returns:
A list of possible subdivisions of a
Beat. This is used by beat’squantize_quarter_durations()- Return type:
List[int]
- get_reversed_path_to_root() list[T]
Treemethod- Returns:
path from self upwards through all ancestors up to the
root.
>>> greatgrandchild1.get_reversed_path_to_root() [greatgrandchild1, grandchild1, child2, root]
- get_root() T
Treemethod- Returns:
root(upmost node of a tree which has no parent)- Return type:
Tree
>>> greatgrandchild1.get_root() == root True >>> child4.get_root() == root True >>> root.get_root() == root True
- get_self_with_key(key: Callable[[T], Any] | None = None) Any
- get_tree_representation(key: Callable[[T], Any] | None = None, space: int = 3) str
Treemethod- Parameters:
key – An optional callable if
Nonestring(node) is called.- Returns:
a representation of all nodes as string in tree form.
>>> print(root.get_tree_representation()) └── root ├── child1 ├── child2 │ ├── grandchild1 │ │ ├── greatgrandchild1 │ │ └── greatgrandchild2 │ └── grandchild2 ├── child3 └── child4 └── grandchild3
- iterate_leaves() Iterator[T]
Treemethod- Returns:
A generator iterating over all leaves.
- quantize_quarter_durations()[source]
When called the positioning of children will be quantized according to
get_possible_subdivisions()This method is called byMeasure
- remove(child: T) None
TreemethodChild’s parent will be set to
Noneand child will be removed from list of children.- Parameters:
child –
- Returns:
None
- replace_child(old: T, new: T, index: int = 0) None
Treemethod- Parameters:
old – child or function
new – child
index – index of old child in the list of its appearances
- Returns:
None
- set_possible_subdivisions(subdivisions: list[int], beat_quarter_duration: QuarterDuration | None = None) None
QuantizeMixinmethodThis method is used to set or change possible subdivisions dictionary of a beat or its ascendants. For example if get_possible_subdivisions()[1] == [3, 5, 8] a beat with a quarter duration of 1 can after quantization consists only of eighth triplets, quintuplets and 32ths.
- Parameters:
subdivisions – list of possible subdivisions to be used in
musicscore.beat.Beat.quantize_quarter_durations()beat_quarter_duration – If
Noneand self is aBeatself.quarter_durationis used. IfNoneand self is not aBeatit is set to 1.
- Returns:
None
- traverse() Iterator[T]
TreemethodTraverse all tree nodes.
- Returns:
generator
- property content: Any
- default_show_accidental_signs = 'modern'
- property filled_quarter_duration
- Returns:
How much of beat’s quarter duration is already filled.
- Return type:
- property get_quantized: bool
QuantizeMixinpropertyIf
get_quantizedis set to None the firstget_quantizedof ancestors which isFalseorTruewill be returned.If
musicscore.score.Score.get_quantizedis set to None it will be converted toFalsemusicscore.measure.Measure.finalize()loops over all beats. Ifmusicscore.beat.Beat.get_quantizedreturnsTruemusicscore.beat.Beat.quantize_quarter_durations()is called.
- Type:
Optional[bool]
- Return type:
bool
- property is_filled: bool
- Returns:
Trueif no children can be added anymore. IfFalsethere is still room for further child or children.- Return type:
bool
- property is_first_child: bool
- property is_last_child: bool
>>> t = TestTree('root') >>> for node in t.traverse(): ... if node.name in ['root', 'child4', 'grandchild2', 'grandchild3', 'greatgrandchild1']: ... assert node.is_last_child ... else: ... assert not node.is_last_child
- property is_leaf: bool
Treeproperty- Returns:
Trueif self has no children.Falseif self has one or more children.- Return type:
bool
- property is_root: bool
Treeproperty- Returns:
Trueif self has no parent, elseFalse.- Return type:
bool
- property next: T | None
Treeproperty- Returns:
next sibling.
Noneif this is the last current child of the parent.- Return type:
Tree
- property number: int
- Returns:
Beat’s number inside its parent’s
musicscore.voice.Voice- Return type:
int
- property offset: QuarterDuration
- Returns:
Offset in Beat’s parent
musicscore.voice.Voice- Return type:
- property previous: T | None
Treeproperty- Returns:
previous sibling.
Noneif this is the first child of the parent.- Return type:
Tree
- property quarter_duration: QuarterDuration
Set and get the duration measured in quarters.
Setting value can be of types
int,float,fractions.Fraction,QuarterDuration
- property show_accidental_signs: str
MusicTreepropertyIf show_accidental_signs is set to None the first get_quantized of ancestors which is
FalseorTruewill be returned.If
show_accidental_signsis set to None it will be converted todefault_show_accidental_signsPossible show_accidental_signs are: None, ‘modern’, ‘traditional’
- Type:
Optional[str]
- Return type:
str
- property simplified_sextuplets: bool
- property up: T | None
Treeproperty- Returns:
- Return type:
Tree