Source code for musicscore.clef

from typing import Optional

from musicscore.xmlwrapper import XMLWrapper
from musicxml.xmlelement.xmlelement import XMLClef

__all__ = ['Clef', 'TrebleClef', 'BassClef', 'AltoClef', 'TenorClef']


[docs]class Clef(XMLWrapper): _ATTRIBUTES = {'show', 'sign', 'line', 'octave_change'} XMLClass = XMLClef def __init__(self, sign: str = 'G', line: Optional[int] = 2, octave_change: int = None, show: bool = True, default: bool = False, *args, **kwargs): super().__init__() self._xml_object = self.XMLClass(*args, **kwargs) self._show = None self.show = show self.line = line self.sign = sign self.octave_change = octave_change self._default = default @property def line(self) -> Optional[int]: """ Set and get ``value_`` of :obj:`~musicxml.xmlelement.xmlelement.XMLLine` :return: ``self.xml_object.xml_line.value_`` :rtype: int, None """ if self.xml_object.xml_line: return self.xml_object.xml_line.value_ @line.setter def line(self, val): self.xml_object.xml_line = val @property def octave_change(self) -> Optional[int]: """ Set and get ``value_`` (int) of :obj:`~musicxml.xmlelement.xmlelement.XMLOctaveChange` child object of associated :obj:`~musicxml.xmlelement.xmlelement.XMLClef` which indicates how many octaves must be added to get from written pitch to the sounding pitch. :return: ``self.xml_object.xml_clef_octave_change.value_`` """ if self.xml_object.xml_clef_octave_change: return self.xml_object.xml_clef_octave_change.value_ @octave_change.setter def octave_change(self, val): self.xml_object.xml_clef_octave_change = val @property def sign(self) -> Optional[str]: """ Set and get ``value_`` of :obj:`~musicxml.xmlelement.xmlelement.XMLSign` child object of associated :obj:`~musicxml.xmlelement.xmlelement.XMLClef` :return: ``self.xml_object.xml_sign.value_`` :rtype: str, None """ if self.xml_object.xml_sign: return self.xml_object.xml_sign.value_ @sign.setter def sign(self, val): self.xml_object.xml_sign = val @property def show(self) -> bool: """ Set and get show attribute. If ``False`` :obj:`Clef` element is not shown. """ return self._show @show.setter def show(self, val): if not isinstance(val, bool): raise TypeError self._show = val def __copy__(self): new_clef = self.__class__() new_clef.sign = self.sign new_clef.line = self.line new_clef.octave_change = self.octave_change new_clef.show = self._show return new_clef
[docs]class TrebleClef(Clef): """ Default parameters: - sign='G' - line=2 """ def __init__(self, show: bool = True, octave_change: Optional[int] = None, **kwargs): super().__init__(sign='G', line=2, show=show, octave_change=octave_change, **kwargs)
[docs]class BassClef(Clef): """ Default parameters: - sign='F' - line=4 """ def __init__(self, show: bool = True, octave_change: Optional[int] = None, **kwargs): super().__init__(sign='F', line=4, show=show, octave_change=octave_change, **kwargs)
[docs]class AltoClef(Clef): """ Default parameters: - sign='C' - line=3 """ def __init__(self, show: bool = True, octave_change: Optional[int] = None, **kwargs): super().__init__(sign='C', line=3, show=show, octave_change=octave_change, **kwargs)
[docs]class TenorClef(Clef): """ Default parameters: - sign='C' - line=4 """ def __init__(self, show: bool = True, octave_change: Optional[int] = None, **kwargs): super().__init__(sign='C', line=4, show=show, octave_change=octave_change, **kwargs)
class PercussionClef(Clef): """ Default parameters: - sign=percussion - line=None """ def __init__(self, show: bool = True, octave_change: Optional[int] = None, **kwargs): super().__init__(sign='percussion', line=None, show=show, octave_change=octave_change, **kwargs)