def _expr_to_expression(self, expr): from abjad.tools import rhythmmakertools from experimental.tools import musicexpressiontools if isinstance(expr, musicexpressiontools.Expression): return expr elif self._all_are_expressions(expr): return musicexpressiontools.ExpressionInventory(expr) elif isinstance(expr, (tuple, list, datastructuretools.TypedList)): return musicexpressiontools.IterablePayloadExpression(expr) elif isinstance(expr, (str)): component = iotools.parse(expr) return musicexpressiontools.StartPositionedRhythmPayloadExpression( [component], start_offset=0) elif isinstance(expr, rhythmmakertools.RhythmMaker): return musicexpressiontools.RhythmMakerExpression(expr) else: message = 'do not know how to change {!r} to expression.' raise TypeError(message.format(expr))
def test_scoretools_make_piano_score_from_leaves_02(): r'''Works with explicit lowest treble pitch. ''' container = iotools.parse("{ g4 a4 b4 c'4 d'4 r4 a4 g4 }") container_contents = container[:] del(container[:]) lowest_treble_pitch = pitchtools.NamedPitch('a') score, treble_staff, bass_staff = \ scoretools.make_piano_score_from_leaves( container_contents, lowest_treble_pitch=lowest_treble_pitch, ) r''' \new Score << \new PianoStaff << \context Staff = "treble" { \clef "treble" r4 a4 b4 c'4 d'4 r4 a4 r4 } \context Staff = "bass" { \clef "bass" g4 r4 r4 r4 r4 r4 r4 g4 } >> >> ''' assert testtools.compare( score, r''' \new Score << \new PianoStaff << \context Staff = "treble" { \clef "treble" r4 a4 b4 c'4 d'4 r4 a4 r4 } \context Staff = "bass" { \clef "bass" g4 r4 r4 r4 r4 r4 r4 g4 } >> >> ''' )