def __init__(self, *args, **kwargs): from abjad.tools import lilypondparsertools from abjad.tools import notetools if len(args) == 1 and isinstance(args[0], str): string = '{{ {} }}'.format(args[0]) parsed = lilypondparsertools.LilyPondParser()(string) assert len(parsed) == 1 and isinstance(parsed[0], Leaf) args = [parsed[0]] is_cautionary = False is_forced = False if len(args) == 1 and isinstance(args[0], Leaf): leaf = args[0] written_duration = leaf.written_duration lilypond_multiplier = leaf.lilypond_duration_multiplier if hasattr(leaf, 'written_pitch'): pitch = leaf.written_pitch is_cautionary = leaf.note_head.is_cautionary is_forced = leaf.note_head.is_forced elif hasattr(leaf, 'written_pitches') and \ 0 < len(leaf.written_pitches): pitch = leaf.written_pitches[0] is_cautionary = leaf.note_heads[0].is_cautionary is_forced = leaf.note_heads[0].is_forced else: pitch = None self._copy_override_and_set_from_leaf(leaf) elif len(args) == 2: pitch, written_duration = args lilypond_multiplier = None elif len(args) == 3: pitch, written_duration, lilypond_multiplier = args else: message = 'can not initialize note from {!r}.' raise ValueError(message.format(args)) Leaf.__init__(self, written_duration, lilypond_multiplier) if pitch is not None: self.note_head = notetools.NoteHead( written_pitch=pitch, is_cautionary=is_cautionary, is_forced=is_forced ) else: self.note_head = None self._initialize_keyword_values(**kwargs)
def __init__(self, *args, **kwargs): from abjad.tools import lilypondparsertools if len(args) == 1 and isinstance(args[0], str): input = '{{ {} }}'.format(args[0]) parsed = lilypondparsertools.LilyPondParser()(input) assert len(parsed) == 1 and isinstance(parsed[0], Leaf) args = [parsed[0]] if len(args) == 1 and isinstance(args[0], Leaf): leaf = args[0] written_duration = leaf.written_duration lilypond_multiplier = leaf.lilypond_duration_multiplier self._copy_override_and_set_from_leaf(leaf) elif len(args) == 1 and not isinstance(args[0], str): written_duration = args[0] lilypond_multiplier = None elif len(args) == 2: written_duration, lilypond_multiplier = args else: raise ValueError('can not initialize rest from "%s".' % str(args)) Leaf.__init__(self, written_duration, lilypond_multiplier) self._initialize_keyword_values(**kwargs)
def __init__(self, *args, **kwargs): from abjad.tools import lilypondparsertools if len(args) == 1 and isinstance(args[0], str): input = '{{ {} }}'.format(args[0]) parsed = lilypondparsertools.LilyPondParser()(input) assert len(parsed) == 1 and isinstance(parsed[0], Leaf) args = [parsed[0]] is_cautionary = [] is_forced = [] if len(args) == 1 and isinstance(args[0], Leaf): leaf = args[0] written_duration = leaf.written_duration lilypond_multiplier = leaf.lilypond_duration_multiplier if hasattr(leaf, 'written_pitch'): written_pitches = [leaf.written_pitch] is_cautionary = [leaf.note_head.is_cautionary] is_forced = [leaf.note_head.is_forced] elif hasattr(leaf, 'written_pitches'): written_pitches = leaf.written_pitches is_cautionary = [x.is_cautionary for x in leaf.note_heads] is_forced = [x.is_forced for x in leaf.note_heads] else: written_pitches = [] self._copy_override_and_set_from_leaf(leaf) elif len(args) == 2: written_pitches, written_duration = args lilypond_multiplier = None elif len(args) == 3: written_pitches, written_duration, lilypond_multiplier = args else: message = 'can not initialize chord from {!r}.'.format(args) raise ValueError(message) Leaf.__init__(self, written_duration, lilypond_multiplier) self.written_pitches = written_pitches for note_head, cautionary, forced in zip( self.note_heads, is_cautionary, is_forced): note_head.is_cautionary = cautionary note_head.is_forced = forced self._initialize_keyword_values(**kwargs)