musicscore.accidental
- class musicscore.accidental.Accidental(mode='standard', show: bool | None = None, **kwargs)[source]
Bases:
MusicTree,XMLWrapperParent type:
MidiChild type: None
Accidental is the class for managing
musicscore.midi.Midi’s accidental sign and its pitch parameters: step, alter, octave. The parameter mode (‘standard’, ‘enharmonic’, ‘flat’, ‘sharp’, ‘force-flat’, ‘force-sharp’) can be used to set different enharmonic variants of the same pitch.- XMLClass
alias of
XMLAccidental
- add_child(child: Tree) Tree
TreemethodCheck and add child to list of children. Child’s parent is set to self.
- Parameters:
child –
- Returns:
child
- Return type:
- get_children_of_type(type) List[Tree]
Treemethod- Returns:
list of added children of type.
- Return type:
List[
Tree]
- get_coordinates_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
>>> class TestTree(Tree): ... def _check_child_to_be_added(self, child): ... return True >>> root = TestTree() >>> root.get_coordinates_in_tree() '0' >>> child1 = root.add_child(TestTree()) >>> child2 = root.add_child(TestTree()) >>> grandchild1 = child2.add_child(TestTree()) >>> grandchild2 = child2.add_child(TestTree()) >>> child1.get_coordinates_in_tree() '1' >>> child2.get_coordinates_in_tree() '2' >>> grandchild1.get_coordinates_in_tree() '2.1' >>> grandchild2.get_coordinates_in_tree() '2.2'
- get_indentation() str
Treemethod- Returns:
indentation according to
level(layer number). As default it is used for creating tabs intree_representation- Return type:
str
- get_layer(level: int, key: Callable | None = None) list
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 | None = None) list
Treemethod- Parameters:
key – An optional callable to be called on each leaf.
- Returns:
nested list of leaves or values of key(leaf) for each leaf
- Return type:
nested list of
Tree
- get_pitch_parameters(midi_value: int | float | None = None) tuple | None[source]
- Param:
a valid midi value or
None. Ifmidi_value == 0(for a rest) return value isNone. Ifmidi_value is Noneand aparent_midiexists, parent_midi’s value will be used.- Returns:
A tuple consisting of pitch step name, alter value and octave value:
(step, alter, octave)
See also
- remove(child: Tree) None
TreemethodChild’s parent will be set to
Noneand child will be removed from list of children.- Parameters:
child –
- Returns:
None
- replace_child(old, new, 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
- reversed_path_to_root() Iterator[Tree]
Treemethod- Returns:
path from self upwards through all ancestors up to the
root.
- to_string(*args, **kwargs) str
XMLWrappermethodCalls
to_stringmethod of self.xml_object- Returns:
musicxml snippet
- tree_representation(key: Callable | None = None, tab: Callable | None = None) str
Treemethod- Parameters:
key – An optional callable if
Nonecompact_reprproperty of each node is called.tab – An optional callable if
Noneget_indentation()method of each node is called.
- Returns:
a representation of all nodes as string in tree form.
- Return type:
str
- property compact_repr: str
Treeproperty- Returns:
compact representation of a node. Default is the string representation. This property is used as default in the
tree_representationmethod and can be customized in subclasses to get the most appropriate representation.- Return type:
str
- 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 level: int
Treeproperty- Returns:
0forroot,1, 2 etc.for each layer of children- Return type:
nonnegative int
>>> class TestTree(Tree): ... def _check_child_to_be_added(self, child): ... return True >>> root = TestTree() >>> root.level 0 >>> ch = root.add_child(TestTree()).add_child(TestTree()).add_child(TestTree()) >>> ch.level 3
- property mode
permitted modes:
standard,flat,sharp,enharmonic,force-sharp,force-flat- Returns:
accidental mode which corresponds to global variables
STANDARD,FLAT,SHARP,ENHARMONIC,FORCESHARP,FORCEFLAT
- property next: Tree | None
Treeproperty- Returns:
next sibling.
Noneif this is the last current child of the parent.- Return type:
- property parent_midi: Midi
- Returns:
The midi parent of Accidental in the
MusicTreestructure. It is equivalent touporget_parent()- Return type:
- property previous: Tree | None
Treeproperty- Returns:
previous sibling.
Noneif this is the first child of the parent.- Return type:
- property show: bool
If
Falsexml_objectwill beNoneand no accidental is shown in theScore. IfTruethe accidental is shown. If the value of one of the following xml_objectXMLAccidentalproperties:self.parentheses,self.editorial.self.cautionaryorself.bracketis set to yes, the accidental is always shown regardless of this property
- 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 sign: str | None
Converts
alterparameter ofget_pitch_parametersinto an actualsigndepending onmode.parent_midimust be set first.- Returns:
Possible values:
flat-flat,three-quarters-flat,flat,quarter-flat,natural,quarter-sharp,sharp,three-quarters-sharp,double-sharp
- property xml_object: XMLAccidental | None
If an attribute is not found directly in a
MusicTreeclass which inherits this class, it wll be passed on to__get_attribute__and__set__attribute__methods ofxml_object. It can also use the short cut attributes ofXMLElementto get or set the first child.- Returns:
wrapped MusicXML element of type
XMLClass
- musicscore.accidental.ENHARMONIC = {0: ('C', 0, 0), 0.5: ('D', -1.5, 0), 1: ('D', -1, 0), 1.5: ('D', -0.5, 0), 2: ('D', 0, 0), 2.5: ('D', 0.5, 0), 3: ('D', 1, 0), 3.5: ('D', 1.5, 0), 4: ('E', 0, 0), 4.5: ('F', -0.5, 0), 5: ('F', 0, 0), 5.5: ('G', -1.5, 0), 6: ('G', -1, 0), 6.5: ('G', -0.5, 0), 7: ('G', 0, 0), 7.5: ('G', 0.5, 0), 8: ('G', 1, 0), 8.5: ('G', 1.5, 0), 9: ('A', 0, 0), 9.5: ('A', 0.5, 0), 10: ('A', 1, 0), 10.5: ('A', 1.5, 0), 11: ('B', 0, 0), 11.5: ('B', 0.5, 0)}
- musicscore.accidental.FLAT = {0: ('C', 0, 0), 0.5: ('D', -1.5, 0), 1: ('D', -1, 0), 1.5: ('D', -0.5, 0), 2: ('D', 0, 0), 2.5: ('E', -1.5, 0), 3: ('E', -1, 0), 3.5: ('E', -0.5, 0), 4: ('E', 0, 0), 4.5: ('F', -0.5, 0), 5: ('F', 0, 0), 5.5: ('G', -1.5, 0), 6: ('G', -1, 0), 6.5: ('G', -0.5, 0), 7: ('G', 0, 0), 7.5: ('A', -1.5, 0), 8: ('A', -1, 0), 8.5: ('A', -0.5, 0), 9: ('A', 0, 0), 9.5: ('B', -1.5, 0), 10: ('B', -1, 0), 10.5: ('B', -0.5, 0), 11: ('B', 0, 0), 11.5: ('C', -0.5, 1)}
- musicscore.accidental.FORCEFLAT = {0: ('D', -2, 0), 0.5: ('D', -1.5, 0), 1: ('D', -1, 0), 1.5: ('D', -0.5, 0), 2: ('E', -2, 0), 2.5: ('E', -1.5, 0), 3: ('F', -2, 0), 3.5: ('F', -1.5, 0), 4: ('F', -1, 0), 4.5: ('F', -0.5, 0), 5: ('G', -2, 0), 5.5: ('G', -1.5, 0), 6: ('G', -1, 0), 6.5: ('G', -0.5, 0), 7: ('A', -2, 0), 7.5: ('A', -1.5, 0), 8: ('A', -1, 0), 8.5: ('A', -0.5, 0), 9: ('B', -2, 0), 9.5: ('B', -1.5, 0), 10: ('C', -2, 1), 10.5: ('C', -1.5, 1), 11: ('C', -1, 1), 11.5: ('C', -0.5, 1)}
- musicscore.accidental.FORCESHARP = {0: ('B', 1, -1), 0.5: ('B', 1.5, -1), 1: ('B', 2, -1), 1.5: ('C', 1.5, 0), 2: ('C', 2, 0), 2.5: ('D', 0.5, 0), 3: ('D', 1, 0), 3.5: ('D', 1.5, 0), 4: ('D', 2, 0), 4.5: ('E', 0.5, 0), 5: ('E', 1, 0), 5.5: ('E', 1.5, 0), 6: ('E', 2, 0), 6.5: ('F', 1.5, 0), 7: ('F', 2, 0), 7.5: ('G', 0.5, 0), 8: ('G', 1, 0), 8.5: ('G', 1.5, 0), 9: ('G', 2, 0), 9.5: ('A', 0.5, 0), 10: ('A', 1, 0), 10.5: ('A', 1.5, 0), 11: ('A', 2, 0), 11.5: ('B', 0.5, 0)}
- musicscore.accidental.SHARP = {0: ('C', 0, 0), 0.5: ('C', 0.5, 0), 1: ('C', 1, 0), 1.5: ('C', 1.5, 0), 2: ('D', 0, 0), 2.5: ('D', 0.5, 0), 3: ('D', 1, 0), 3.5: ('D', 1.5, 0), 4: ('E', 0, 0), 4.5: ('E', 0.5, 0), 5: ('F', 0, 0), 5.5: ('F', 0.5, 0), 6: ('F', 1, 0), 6.5: ('F', 1.5, 0), 7: ('G', 0, 0), 7.5: ('G', 0.5, 0), 8: ('G', 1, 0), 8.5: ('G', 1.5, 0), 9: ('A', 0, 0), 9.5: ('A', 0.5, 0), 10: ('A', 1, 0), 10.5: ('A', 1.5, 0), 11: ('B', 0, 0), 11.5: ('B', 0.5, 0)}
- musicscore.accidental.SIGNS = {-2: 'flat-flat', -1.5: 'three-quarters-flat', -1: 'flat', -0.5: 'quarter-flat', 0: 'natural', 0.5: 'quarter-sharp', 1: 'sharp', 1.5: 'three-quarters-sharp', 2: 'double-sharp'}
- musicscore.accidental.STANDARD = {0: ('C', 0, 0), 0.5: ('C', 0.5, 0), 1: ('C', 1, 0), 1.5: ('C', 1.5, 0), 2: ('D', 0, 0), 2.5: ('E', -1.5, 0), 3: ('E', -1, 0), 3.5: ('E', -0.5, 0), 4: ('E', 0, 0), 4.5: ('E', 0.5, 0), 5: ('F', 0, 0), 5.5: ('F', 0.5, 0), 6: ('F', 1, 0), 6.5: ('F', 1.5, 0), 7: ('G', 0, 0), 7.5: ('A', -1.5, 0), 8: ('A', -1, 0), 8.5: ('A', -0.5, 0), 9: ('A', 0, 0), 9.5: ('B', -1.5, 0), 10: ('B', -1, 0), 10.5: ('B', -0.5, 0), 11: ('B', 0, 0), 11.5: ('C', -0.5, 1)}