Example #1
0
 def test_iterate_inner_3(self):
     pattern = patterntools.Pbind(
         duration=patterntools.Pseq([1.0, 2.0], None),
         frequency=patterntools.Pseq([111, 222, 333, 444, 555, 666]),
         )
     iterator = patterntools.RealtimeEventPlayer._iterate_inner(
         pattern=pattern,
         server=self.pseudo_server,
         timestamp=0.0,
         uuids={},
         )
     event_products = list(iterator)
     assert all(
         isinstance(_, patterntools.EventProduct)
         for _ in event_products
         )
     assert [_._get_sort_bundle() for _ in event_products] == [
         (0.0, 0, False),
         (1.0, 0, True),
         (1.0, 1, False),
         (3.0, 1, True),
         (3.0, 2, False),
         (4.0, 2, True),
         (4.0, 3, False),
         (6.0, 3, True),
         (6.0, 4, False),
         (7.0, 4, True),
         (7.0, 5, False),
         (9.0, 5, True),
         ]
Example #2
0
class TestCase(TestCase):

    pattern = patterntools.Pseq([
        patterntools.Pbind(
            amplitude=1.0,
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            frequency=patterntools.Pseq([440, 660, 880], 1),
            ),
        patterntools.Pbind(
            amplitude=1.0,
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            frequency=patterntools.Pseq([440, 660, 880], 1),
            ),
        ])

    def test_send_01(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(2):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [
            (type(x).__name__, x.get('is_stop') or False)
            for x in events] == [
            ('NoteEvent', True),
            ('NoteEvent', True),
            ]
Example #3
0
class TestCase(TestCase):

    pattern = patterntools.Pchain([
        patterntools.Pbind(
            amplitude=1.0,
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            frequency=patterntools.Pseq([440, 660, 880], 1),
        ),
        patterntools.Pbind(amplitude=patterntools.Pseq(
            [0.111, 0.333, 0.666, 1.0]), ),
        patterntools.Pbind(pan=patterntools.Pseq([0., 0.5, 1.0, 0.5]), ),
    ])

    def test_iter(self):
        events = [event for event in self.pattern]
        assert len(events) == 3
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.111,
                duration=1.0,
                frequency=440,
                is_stop=True,
                pan=0.0,
                uuid=UUID('...'),
                )
            ''',
            format(events[0]),
        )
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.333,
                duration=2.0,
                frequency=660,
                is_stop=True,
                pan=0.5,
                uuid=UUID('...'),
                )
            ''',
            format(events[1]),
        )
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.666,
                duration=3.0,
                frequency=880,
                is_stop=True,
                pan=1.0,
                uuid=UUID('...'),
                )
            ''',
            format(events[2]),
        )
Example #4
0
 def _coerce_pattern_pairs(self, patterns):
     from supriya.tools import patterntools
     patterns = dict(patterns)
     for name, pattern in patterns.items():
         if not isinstance(pattern, patterntools.Pattern):
             pattern = patterntools.Pseq([pattern], None)
         patterns[name] = iter(pattern)
     return patterns
Example #5
0
class TestCase(TestCase):

    pattern = patterntools.Pbindf(
        patterntools.Pbind(
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            ),
        amplitude=patterntools.Pseq([0.111, 0.333, 0.666, 1.0]),
        pan=patterntools.Pseq([0., 0.5, 1.0, 0.5]),
        )

    def test_iter(self):
        events = [event for event in self.pattern]
        assert len(events) == 3
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.111,
                duration=1.0,
                pan=0.0,
                uuid=UUID('...'),
                )
            ''',
            format(events[0]),
            )
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.333,
                duration=2.0,
                pan=0.5,
                uuid=UUID('...'),
                )
            ''',
            format(events[1]),
            )
        self.compare_strings(
            '''
            supriya.tools.patterntools.NoteEvent(
                amplitude=0.666,
                duration=3.0,
                pan=1.0,
                uuid=UUID('...'),
                )
            ''',
            format(events[2]),
            )
Example #6
0
class TestCase(TestCase):

    pbind_01 = patterntools.Pbind(
        amplitude=1.0,
        duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
        frequency=patterntools.Pseq([440, 660, 880], 1),
        )

    pbind_02 = patterntools.Pbind(
        amplitude=1.0,
        duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
        frequency=patterntools.Pseq([[440, 550], [550, 660], [660, 770]]),
        )

    pbind_03 = patterntools.Pbind(
        duration=1,
        delta=0.25,
        frequency=patterntools.Pseq([220, 440, 330, 660], 2),
        )

    def test_manual_incommunicado_pbind_01(self):
        lists, deltas = self.manual_incommunicado(self.pbind_01)
        assert lists == [
            [10, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 1,
                    'amplitude', 1.0, 'frequency', 440]]],
            [11.0, [
                ['/n_set', 1000, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 1,
                    'amplitude', 1.0, 'frequency', 660]]],
            [13.0, [
                ['/n_set', 1001, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1,
                    'amplitude', 1.0, 'frequency', 880]]],
            [16.0, [
                ['/n_set', 1002, 'gate', 0]]]]
        assert deltas == [1.0, 2.0, 3.0, None]

    def test_manual_communicado_pbind_01(self):
        player = patterntools.RealtimeEventPlayer(
            self.pbind_01,
            server=self.server,
            )
        # Initial State
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        # Step 1
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
        ''')
        # Step 2
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1000 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        # Step 3
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')

    def test_automatic_communicado_pbind_01(self):
        self.pbind_01.play(server=self.server)
        time.sleep(6)

    def test_manual_incommunicado_pbind_02(self):
        lists, deltas = self.manual_incommunicado(self.pbind_02)
        assert lists == [
            [10, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 1,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 1,
                    'amplitude', 1.0, 'frequency', 550]]],
            [11.0, [
                ['/n_set', 1000, 'gate', 0],
                ['/n_set', 1001, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1,
                    'amplitude', 1.0, 'frequency', 550],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 1,
                    'amplitude', 1.0, 'frequency', 660]]],
            [13.0, [
                ['/n_set', 1002, 'gate', 0],
                ['/n_set', 1003, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1,
                    'amplitude', 1.0, 'frequency', 660],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1,
                    'amplitude', 1.0, 'frequency', 770]]],
            [16.0, [
                ['/n_set', 1004, 'gate', 0],
                ['/n_set', 1005, 'gate', 0]]]]
        assert deltas == [1.0, 2.0, 3.0, None]

    def test_manual_communicado_pbind_02(self):
        player = patterntools.RealtimeEventPlayer(
            self.pbind_02,
            server=self.server,
            )
        # Initial State
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        # Step 1
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 1.0, pan: 0.5
                    1000 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
        ''')
        # Step 2
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1003 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 1.0, pan: 0.5
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 0.0, pan: 0.5
                    1000 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1003 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 1.0, pan: 0.5
        ''')
        # Step 3
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1005 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 770.0, gate: 1.0, pan: 0.5
                    1004 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1003 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1005 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 770.0, gate: 1.0, pan: 0.5
                    1004 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1005 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 770.0, gate: 0.0, pan: 0.5
                    1004 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')

    def test_automatic_communicado_pbind_02(self):
        self.pbind_02.play(server=self.server)
        time.sleep(6)

    def test_manual_incommunicado_pbind_03(self):
        lists, deltas = self.manual_incommunicado(self.pbind_03)
        assert deltas == [
            0.25, 0.25, 0.25, 0.25,
            0.25, 0.25, 0.25, 0.25,
            0.25, 0.25, 0.25, None,
            ]
        assert lists == [
            [10, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 1,
                    'frequency', 220]]],
            [10.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 1,
                    'frequency', 440]]],
            [10.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1,
                    'frequency', 330]]],
            [10.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 1,
                    'frequency', 660]]],
            [11.0, [
                ['/n_set', 1000, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1,
                    'frequency', 220]]],
            [11.25, [
                ['/n_set', 1001, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1,
                    'frequency', 440]]],
            [11.5, [
                ['/n_set', 1002, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 1,
                    'frequency', 330]]],
            [11.75, [
                ['/n_set', 1003, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1007, 0, 1,
                    'frequency', 660]]],
            [12.0, [['/n_set', 1004, 'gate', 0]]],
            [12.25, [['/n_set', 1005, 'gate', 0]]],
            [12.5, [['/n_set', 1006, 'gate', 0]]],
            [12.75, [['/n_set', 1007, 'gate', 0]]]]

    def test_nonrealtime_01(self):
        session = nonrealtimetools.Session()
        with session.at(0):
            self.pbind_01.inscribe(session)
        assert session.to_lists() == [
            [0.0, [
                ['/d_recv', bytearray(synthdefs.default.compile())],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 0,
                    'amplitude', 1.0, 'frequency', 440]]],
            [1.0, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 0,
                    'amplitude', 1.0, 'frequency', 660],
                ['/n_set', 1000, 'gate', 0]]],
            [3.0, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 0,
                    'amplitude', 1.0, 'frequency', 880],
                ['/n_set', 1001, 'gate', 0]]],
            [6.0, [
                ['/n_set', 1002, 'gate', 0],
                [0]]],
            ]

    def test_nonrealtime_02(self):
        session = nonrealtimetools.Session()
        with session.at(10):
            self.pbind_02.inscribe(session)
        assert session.to_lists() == [
            [10.0, [
                ['/d_recv', bytearray(synthdefs.default.compile())],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 0,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 0,
                    'amplitude', 1.0, 'frequency', 550]]],
            [11.0, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 0,
                    'amplitude', 1.0, 'frequency', 550],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 0,
                    'amplitude', 1.0, 'frequency', 660],
                ['/n_set', 1000, 'gate', 0],
                ['/n_set', 1001, 'gate', 0]]],
            [13.0, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 0,
                    'amplitude', 1.0, 'frequency', 660],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 0,
                    'amplitude', 1.0, 'frequency', 770],
                ['/n_set', 1002, 'gate', 0],
                ['/n_set', 1003, 'gate', 0]]],
            [16.0, [
                ['/n_set', 1004, 'gate', 0],
                ['/n_set', 1005, 'gate', 0],
                [0]]]]

    def test_nonrealtime_03(self):
        session = nonrealtimetools.Session()
        with session.at(0):
            self.pbind_03.inscribe(session)
        assert session.to_lists() == [
            [0.0, [
                ['/d_recv', bytearray(synthdefs.default.compile())],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 0,
                    'frequency', 220]]],
            [0.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 0,
                    'frequency', 440]]],
            [0.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 0,
                    'frequency', 330]]],
            [0.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 0,
                    'frequency', 660]]],
            [1.0, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 0,
                    'frequency', 220],
                ['/n_set', 1000, 'gate', 0]]],
            [1.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 0,
                    'frequency', 440],
                ['/n_set', 1001, 'gate', 0]]],
            [1.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 0,
                    'frequency', 330],
                ['/n_set', 1002, 'gate', 0]]],
            [1.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1007, 0, 0,
                    'frequency', 660],
                ['/n_set', 1003, 'gate', 0]]],
            [2.0, [['/n_set', 1004, 'gate', 0]]],
            [2.25, [['/n_set', 1005, 'gate', 0]]],
            [2.5, [['/n_set', 1006, 'gate', 0]]],
            [2.75, [['/n_set', 1007, 'gate', 0], [0]]]]

    def test_manual_stop_pbind_01(self):
        # Initial State
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        player = self.pbind_01.play(server=self.server)
        time.sleep(2.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        player.stop()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1001 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')

    def test_manual_stop_pbind_02(self):
        # Initial State
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        player = self.pbind_02.play(server=self.server)
        time.sleep(2)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1003 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 1.0, pan: 0.5
        ''')
        player.stop()
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1003 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
                    1002 da0982184cc8fa54cf9d288a0fe1f6ca
                        out: 0.0, amplitude: 1.0, frequency: 550.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
Example #7
0
class TestCase(TestCase):

    pattern = patterntools.Ppar([
        patterntools.Pmono(
            amplitude=1.0,
            duration=1.0,
            frequency=patterntools.Pseq([440, 660, 880, 990], 1),
            ),
        patterntools.Pbind(
            amplitude=1.0,
            duration=0.75,
            frequency=patterntools.Pseq([222, 333, 444, 555], 1),
            ),
        ])

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern, 10)
        assert lists == [
            [10, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 1,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 1,
                    'amplitude', 1.0, 'frequency', 222]]],
            [10.75, [
                ['/n_set', 1001, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1,
                    'amplitude', 1.0, 'frequency', 333]]],
            [11.0, [['/n_set', 1000, 'amplitude', 1.0, 'frequency', 660]]],
            [11.5, [
                ['/n_set', 1002, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 1,
                    'amplitude', 1.0, 'frequency', 444]]],
            [12.0, [['/n_set', 1000, 'amplitude', 1.0, 'frequency', 880]]],
            [12.25, [
                ['/n_set', 1003, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1,
                    'amplitude', 1.0, 'frequency', 555]]],
            [13.0, [
                ['/n_set', 1004, 'gate', 0],
                ['/n_set', 1000, 'amplitude', 1.0, 'frequency', 990]]],
            [14.0, [['/n_set', 1000, 'gate', 0]]]]
        assert deltas == [0.75, 0.25, 0.5, 0.5, 0.25, 0.75, 1.0, None]

    def test_manual_communicado(self):
        player = patterntools.RealtimeEventPlayer(
            self.pattern,
            server=self.server,
            )
        # Initial State
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
        ''')
        # Step 1
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1001 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 222.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
        ''')
        # Step 2
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1002 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 333.0, gate: 1.0, pan: 0.5
                1001 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 222.0, gate: 0.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1002 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 333.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
        ''')
        # Step 3
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1002 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 333.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1003 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 444.0, gate: 1.0, pan: 0.5
                1002 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 333.0, gate: 0.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1003 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 444.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
        ''')
        # Step 5
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1003 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 444.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
        ''')
        # Step 6
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1004 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 555.0, gate: 1.0, pan: 0.5
                1003 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 444.0, gate: 0.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1004 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 555.0, gate: 1.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
        ''')
        # Step 7
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1004 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 555.0, gate: 0.0, pan: 0.5
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 990.0, gate: 1.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 990.0, gate: 1.0, pan: 0.5
        ''')
        # Step 8
        player(0, 0)
        self.server.sync()
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
                1000 da0982184cc8fa54cf9d288a0fe1f6ca
                    out: 0.0, amplitude: 1.0, frequency: 990.0, gate: 0.0, pan: 0.5
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
        NODE TREE 0 group
            1 group
        ''')

    def test_automatic_communicado(self):
        self.pattern.play(server=self.server)
        time.sleep(4)

    def test_nonrealtime(self):
        session = nonrealtimetools.Session()
        with session.at(10):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [10.0, [
                ['/d_recv', bytearray(synthdefs.default.compile())],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1000, 0, 0,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1001, 0, 0,
                    'amplitude', 1.0, 'frequency', 222]]],
            [10.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 0,
                    'amplitude', 1.0, 'frequency', 333],
                ['/n_set', 1001, 'gate', 0]]],
            [11.0, [
                ['/n_set', 1000, 'amplitude', 1.0, 'frequency', 660]]],
            [11.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 0,
                    'amplitude', 1.0, 'frequency', 444],
                ['/n_set', 1002, 'gate', 0]]],
            [12.0, [
                ['/n_set', 1000, 'amplitude', 1.0, 'frequency', 880]]],
            [12.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 0,
                    'amplitude', 1.0, 'frequency', 555],
                ['/n_set', 1003, 'gate', 0]]],
            [13.0, [
                ['/n_set', 1000, 'amplitude', 1.0, 'frequency', 990],
                ['/n_set', 1004, 'gate', 0]]],
            [14.0, [
                ['/n_set', 1000, 'gate', 0],
                [0]]]]
Example #8
0
class TestCase(TestCase):

    pattern = patterntools.Pgpar([
        patterntools.Pmono(
            amplitude=1.0,
            duration=1.0,
            frequency=patterntools.Pseq([440, 660, 880, 990], 1),
        ),
        patterntools.Pbind(
            amplitude=1.0,
            duration=0.75,
            frequency=patterntools.Pseq([222, 333, 444, 555], 1),
        ),
    ])

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern, 10)
        assert lists == [
            [
                10,
                [['/g_new', 1000, 1, 1], ['/g_new', 1001, 1, 1],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0,
                     1000, 'amplitude', 1.0, 'frequency', 440
                 ],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0,
                     1001, 'amplitude', 1.0, 'frequency', 222
                 ]]
            ],
            [
                10.75,
                [['/n_set', 1003, 'gate', 0],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0,
                     1001, 'amplitude', 1.0, 'frequency', 333
                 ]]
            ], [11.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 660]]],
            [
                11.5,
                [['/n_set', 1004, 'gate', 0],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0,
                     1001, 'amplitude', 1.0, 'frequency', 444
                 ]]
            ], [12.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 880]]],
            [
                12.25,
                [['/n_set', 1005, 'gate', 0],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0,
                     1001, 'amplitude', 1.0, 'frequency', 555
                 ]]
            ],
            [
                13.0,
                [['/n_set', 1006, 'gate', 0],
                 ['/n_set', 1002, 'amplitude', 1.0, 'frequency', 990]]
            ], [14.0, [['/n_set', 1002, 'gate', 0]]],
            [14.25, [['/n_free', 1000, 1001]]]
        ]
        assert deltas == [0.75, 0.25, 0.5, 0.5, 0.25, 0.75, 1.0, 0.25, None]

    def test_nonrealtime(self):
        session = nonrealtimetools.Session()
        with session.at(10):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [
                10.0,
                [['/d_recv', bytearray(synthdefs.default.compile())],
                 ['/g_new', 1000, 1, 0], ['/g_new', 1001, 1, 0],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0,
                     1000, 'amplitude', 1.0, 'frequency', 440
                 ],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0,
                     1001, 'amplitude', 1.0, 'frequency', 222
                 ]]
            ],
            [
                10.75,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0,
                    1001, 'amplitude', 1.0, 'frequency', 333
                ], ['/n_set', 1003, 'gate', 0]]
            ], [11.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 660]]],
            [
                11.5,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0,
                    1001, 'amplitude', 1.0, 'frequency', 444
                ], ['/n_set', 1004, 'gate', 0]]
            ], [12.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 880]]],
            [
                12.25,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0,
                    1001, 'amplitude', 1.0, 'frequency', 555
                ], ['/n_set', 1005, 'gate', 0]]
            ],
            [
                13.0,
                [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 990],
                 ['/n_set', 1006, 'gate', 0]]
            ], [14.0, [['/n_set', 1002, 'gate', 0]]],
            [14.25, [['/n_free', 1000, 1001], [0]]]
        ]
Example #9
0
class TestCase(TestCase):

    pattern = patterntools.Pgpar([
        patterntools.Pmono(
            amplitude=1.0,
            duration=1.0,
            frequency=patterntools.Pseq([440, 660, 880, 990], 1),
            ),
        patterntools.Pbind(
            amplitude=1.0,
            duration=0.75,
            frequency=patterntools.Pseq([222, 333, 444, 555], 1),
            ),
        ])

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern, 10)
        assert lists == [
            [10, [
                ['/g_new', 1000, 1, 1],
                ['/g_new', 1001, 1, 1],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1000,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 1001,
                    'amplitude', 1.0, 'frequency', 222]]],
            [10.75, [
                ['/n_set', 1003, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1001,
                    'amplitude', 1.0, 'frequency', 333]]],
            [11.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 660]]],
            [11.5, [
                ['/n_set', 1004, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1001,
                    'amplitude', 1.0, 'frequency', 444]]],
            [12.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 880]]],
            [12.25, [
                ['/n_set', 1005, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 1001,
                    'amplitude', 1.0, 'frequency', 555]]],
            [13.0, [
                ['/n_set', 1006, 'gate', 0],
                ['/n_set', 1002, 'amplitude', 1.0, 'frequency', 990]]],
            [14.0, [['/n_set', 1002, 'gate', 0]]],
            [14.25, [['/n_free', 1000, 1001]]]]
        assert deltas == [0.75, 0.25, 0.5, 0.5, 0.25, 0.75, 1.0, 0.25, None]

    def test_nonrealtime(self):
        session = nonrealtimetools.Session()
        with session.at(10):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [10.0, [
                ['/d_recv', bytearray(synthdefs.default.compile())],
                ['/g_new', 1000, 1, 0],
                ['/g_new', 1001, 1, 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1000,
                    'amplitude', 1.0, 'frequency', 440],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0, 1001,
                    'amplitude', 1.0, 'frequency', 222]]],
            [10.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1001,
                    'amplitude', 1.0, 'frequency', 333],
                ['/n_set', 1003, 'gate', 0]]],
            [11.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 660]]],
            [11.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1001,
                    'amplitude', 1.0, 'frequency', 444],
                ['/n_set', 1004, 'gate', 0]]],
            [12.0, [['/n_set', 1002, 'amplitude', 1.0, 'frequency', 880]]],
            [12.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 1001,
                    'amplitude', 1.0, 'frequency', 555],
                ['/n_set', 1005, 'gate', 0]]],
            [13.0, [
                ['/n_set', 1002, 'amplitude', 1.0, 'frequency', 990],
                ['/n_set', 1006, 'gate', 0]]],
            [14.0, [['/n_set', 1002, 'gate', 0]]],
            [14.25, [['/n_free', 1000, 1001], [0]]]]

    def test_send_01(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(3):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [
            (type(x).__name__, x.get('is_stop') or False)
            for x in events] == [
            ('GroupEvent', False),
            ('GroupEvent', False),
            ('NoteEvent', False),
            ('GroupEvent', True),
            ('GroupEvent', True),
            ]

    def test_send_02(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(2):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [
            (type(x).__name__, x.get('is_stop') or False)
            for x in events] == [
            ('GroupEvent', False),
            ('GroupEvent', False),
            ('GroupEvent', True),
            ('GroupEvent', True),
            ]

    def test_send_03(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(1):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [
            (type(x).__name__, x.get('is_stop') or False)
            for x in events] == [
            ('GroupEvent', False),
            ('GroupEvent', True),
            ]
Example #10
0
class TestCase(TestCase):

    pattern = patterntools.Pbus(
        patterntools.Pgpar([
            patterntools.Pmono(
                amplitude=1.0,
                duration=1.0,
                frequency=patterntools.Pseq([440, 660, 880, 990], 1),
                ),
            patterntools.Pbind(
                amplitude=1.0,
                duration=0.75,
                frequency=patterntools.Pseq([222, 333, 444, 555], 1),
                ),
            ]),
        )

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern, 10)
        assert lists == [
            [10, [
                ['/g_new', 1000, 0, 1],
                ['/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3, 1000,
                    'in_', 0],
                ['/g_new', 1002, 1, 1000],
                ['/g_new', 1003, 1, 1000],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1002,
                    'amplitude', 1.0, 'frequency', 440, 'out', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1003,
                    'amplitude', 1.0, 'frequency', 222, 'out', 0]]],
            [10.75, [
                ['/n_set', 1005, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 1003,
                    'amplitude', 1.0, 'frequency', 333, 'out', 0]]],
            [11.0, [['/n_set', 1004, 'amplitude', 1.0, 'frequency', 660, 'out', 0]]],
            [11.5, [
                ['/n_set', 1006, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1007, 0, 1003,
                    'amplitude', 1.0, 'frequency', 444, 'out', 0]]],
            [12.0, [['/n_set', 1004, 'amplitude', 1.0, 'frequency', 880, 'out', 0]]],
            [12.25, [
                ['/n_set', 1007, 'gate', 0],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1008, 0, 1003,
                    'amplitude', 1.0, 'frequency', 555, 'out', 0]]],
            [13.0, [
                ['/n_set', 1008, 'gate', 0],
                ['/n_set', 1004, 'amplitude', 1.0, 'frequency', 990, 'out', 0]]],
            [14.0, [['/n_set', 1004, 'gate', 0]]],
            [14.25, [['/n_free', 1002, 1003]]],
            [14.5, [['/n_free', 1000, 1001]]]]
        assert deltas == [0.75, 0.25, 0.5, 0.5, 0.25, 0.75, 1.0, 0.25, 0.25, None]

    def test_nonrealtime(self):
        session = nonrealtimetools.Session()
        with session.at(10):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [10.0, [
                ['/d_recv', bytearray(
                    synthdeftools.SynthDefCompiler.compile_synthdefs([
                        synthdefs.system_link_audio_2,
                        synthdefs.default,
                        ]))],
                ['/g_new', 1000, 0, 0],
                ['/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3, 1000,
                    'in_', 16],
                ['/g_new', 1002, 1, 1000],
                ['/g_new', 1003, 1, 1000],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0, 1002,
                    'amplitude', 1.0, 'frequency', 440, 'out', 16],
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1005, 0, 1003,
                    'amplitude', 1.0, 'frequency', 222, 'out', 16]]],
            [10.75, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1006, 0, 1003,
                    'amplitude', 1.0, 'frequency', 333, 'out', 16],
                ['/n_set', 1005, 'gate', 0]]],
            [11.0, [
                ['/n_set', 1004, 'amplitude', 1.0, 'frequency', 660, 'out', 16]]],
            [11.5, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1007, 0, 1003,
                    'amplitude', 1.0, 'frequency', 444, 'out', 16],
                ['/n_set', 1006, 'gate', 0]]],
            [12.0, [
                ['/n_set', 1004, 'amplitude', 1.0, 'frequency', 880, 'out', 16]]],
            [12.25, [
                ['/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1008, 0, 1003,
                    'amplitude', 1.0, 'frequency', 555, 'out', 16],
                ['/n_set', 1007, 'gate', 0]]],
            [13.0, [
                ['/n_set', 1004, 'amplitude', 1.0, 'frequency', 990, 'out', 16],
                ['/n_set', 1008, 'gate', 0]]],
            [14.0, [
                ['/n_set', 1004, 'gate', 0]]],
            [14.25, [
                ['/n_free', 1002, 1003]]],
            [14.5, [
                ['/n_free', 1000],
                ['/n_set', 1001, 'gate', 0],
                [0]]]]
Example #11
0
class TestCase(TestCase):

    pattern = patterntools.Pbus(
        pattern=patterntools.Pbind(
            amplitude=1.0,
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            frequency=patterntools.Pseq([440, 660, 880], 1),
        ),
        release_time=0.25,
    )

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern)
        assert lists == [[
            10,
            [['/g_new', 1000, 0, 1],
             [
                 '/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3, 1000,
                 'in_', 0
             ],
             [
                 '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1000,
                 'amplitude', 1.0, 'frequency', 440, 'out', 0
             ]]
        ],
                         [
                             11.0,
                             [['/n_set', 1002, 'gate', 0],
                              [
                                  '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca',
                                  1003, 0, 1000, 'amplitude', 1.0, 'frequency',
                                  660, 'out', 0
                              ]]
                         ],
                         [
                             13.0,
                             [['/n_set', 1003, 'gate', 0],
                              [
                                  '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca',
                                  1004, 0, 1000, 'amplitude', 1.0, 'frequency',
                                  880, 'out', 0
                              ]]
                         ], [16.0, [['/n_set', 1004, 'gate', 0]]],
                         [16.25, [['/n_free', 1000, 1001]]]]
        assert deltas == [1.0, 2.0, 3.0, 0.25, None]

    def test_manual_communicado_pbind_01(self):
        player = patterntools.RealtimeEventPlayer(
            self.pattern,
            server=self.server,
        )
        # Initial State
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        # Step 1
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1002 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 2
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                        1002 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 440.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 3
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')

    def test_nonrealtime_01a(self):
        session = nonrealtimetools.Session()
        with session.at(0):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [
                0.0,
                [[
                    '/d_recv',
                    bytearray(
                        synthdeftools.SynthDefCompiler.compile_synthdefs([
                            synthdefs.system_link_audio_2,
                            synthdefs.default,
                        ]))
                ], ['/g_new', 1000, 0, 0],
                 [
                     '/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3,
                     1000, 'in_', 16
                 ],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0,
                     1000, 'amplitude', 1.0, 'frequency', 440, 'out', 16
                 ]]
            ],
            [
                1.0,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0,
                    1000, 'amplitude', 1.0, 'frequency', 660, 'out', 16
                ], ['/n_set', 1002, 'gate', 0]]
            ],
            [
                3.0,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0,
                    1000, 'amplitude', 1.0, 'frequency', 880, 'out', 16
                ], ['/n_set', 1003, 'gate', 0]]
            ], [6.0, [['/n_set', 1004, 'gate', 0]]],
            [6.25, [['/n_free', 1000], ['/n_set', 1001, 'gate', 0], [0]]]
        ]

    def test_nonrealtime_01b(self):
        session = nonrealtimetools.Session()
        with session.at(0):
            final_offset = self.pattern.inscribe(session, duration=2)
        assert final_offset == 3.25
        assert session.to_lists() == [
            [
                0.0,
                [[
                    '/d_recv',
                    bytearray(
                        synthdeftools.SynthDefCompiler.compile_synthdefs([
                            synthdefs.system_link_audio_2,
                            synthdefs.default,
                        ]))
                ], ['/g_new', 1000, 0, 0],
                 [
                     '/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3,
                     1000, 'in_', 16
                 ],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0,
                     1000, 'amplitude', 1.0, 'frequency', 440, 'out', 16
                 ]]
            ],
            [
                1.0,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0,
                    1000, 'amplitude', 1.0, 'frequency', 660, 'out', 16
                ], ['/n_set', 1002, 'gate', 0]]
            ], [3.0, [['/n_set', 1003, 'gate', 0]]],
            [3.25, [['/n_free', 1000], ['/n_set', 1001, 'gate', 0], [0]]]
        ]

    def test_send_01(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(4):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [(type(x).__name__, x.get('is_stop') or False)
                for x in events] == [
                    ('BusEvent', False),
                    ('GroupEvent', False),
                    ('SynthEvent', False),
                    ('NoteEvent', True),
                    ('SynthEvent', True),
                    ('GroupEvent', True),
                    ('BusEvent', True),
                ]

    def test_send_02(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(3):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [(type(x).__name__, x.get('is_stop') or False)
                for x in events] == [
                    ('BusEvent', False),
                    ('GroupEvent', False),
                    ('SynthEvent', False),
                    ('SynthEvent', True),
                    ('GroupEvent', True),
                    ('BusEvent', True),
                ]

    def test_send_03(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(2):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [(type(x).__name__, x.get('is_stop') or False)
                for x in events] == [
                    ('BusEvent', False),
                    ('GroupEvent', False),
                    ('GroupEvent', True),
                    ('BusEvent', True),
                ]

    def test_send_04(self):
        events, iterator = [], iter(self.pattern)
        for _ in range(1):
            events.append(next(iterator))
        iterator.send(True)
        events.extend(iterator)
        assert [(type(x).__name__, x.get('is_stop') or False)
                for x in events] == [
                    ('BusEvent', False),
                    ('BusEvent', True),
                ]
Example #12
0
class TestCase(TestCase):

    pattern = patterntools.Pbus(
        pattern=patterntools.Pbind(
            amplitude=1.0,
            duration=patterntools.Pseq([1.0, 2.0, 3.0], 1),
            frequency=patterntools.Pseq([440, 660, 880], 1),
        ),
        release_time=0.25,
    )

    def test_manual_incommunicado(self):
        lists, deltas = self.manual_incommunicado(self.pattern)
        assert lists == [[
            10,
            [['/g_new', 1000, 0, 1],
             [
                 '/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3, 1000,
                 'in_', 0
             ],
             [
                 '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0, 1000,
                 'amplitude', 1.0, 'frequency', 440, 'out', 0
             ]]
        ],
                         [
                             11.0,
                             [['/n_set', 1002, 'gate', 0],
                              [
                                  '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca',
                                  1003, 0, 1000, 'amplitude', 1.0, 'frequency',
                                  660, 'out', 0
                              ]]
                         ],
                         [
                             13.0,
                             [['/n_set', 1003, 'gate', 0],
                              [
                                  '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca',
                                  1004, 0, 1000, 'amplitude', 1.0, 'frequency',
                                  880, 'out', 0
                              ]]
                         ], [16.0, [['/n_set', 1004, 'gate', 0]]],
                         [16.25, [['/n_free', 1000, 1001]]]]
        assert deltas == [1.0, 2.0, 3.0, 0.25, None]

    def test_manual_communicado_pbind_01(self):
        player = patterntools.RealtimeEventPlayer(
            self.pattern,
            server=self.server,
        )
        # Initial State
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')
        # Step 1
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1002 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 440.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 2
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                        1002 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 440.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 3
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
                        1003 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 660.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 1.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                        1004 da0982184cc8fa54cf9d288a0fe1f6ca
                            out: 16.0, amplitude: 1.0, frequency: 880.0, gate: 0.0, pan: 0.5
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Wait for termination
        time.sleep(0.5)
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
                    1000 group
                    1001 454b69a7c505ddecc5b39762d291a5ec
                        done_action: 2.0, fade_time: 0.02, gate: 1.0, in_: 16.0, out: 0.0
        ''')
        # Step 4
        player(0, 0)
        self.server.sync()
        server_state = str(
            self.server.query_remote_nodes(include_controls=True))
        assert server_state == self.normalize(r'''
            NODE TREE 0 group
                1 group
        ''')

    def test_nonrealtime(self):
        session = nonrealtimetools.Session()
        with session.at(0):
            self.pattern.inscribe(session)
        assert session.to_lists() == [
            [
                0.0,
                [[
                    '/d_recv',
                    bytearray(
                        synthdeftools.SynthDefCompiler.compile_synthdefs([
                            synthdefs.system_link_audio_2,
                            synthdefs.default,
                        ]))
                ], ['/g_new', 1000, 0, 0],
                 [
                     '/s_new', '454b69a7c505ddecc5b39762d291a5ec', 1001, 3,
                     1000, 'in_', 'a4'
                 ],
                 [
                     '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1002, 0,
                     1000, 'amplitude', 1.0, 'frequency', 440, 'out', 4
                 ]]
            ],
            [
                1.0,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1003, 0,
                    1000, 'amplitude', 1.0, 'frequency', 660, 'out', 4
                ], ['/n_set', 1002, 'gate', 0]]
            ],
            [
                3.0,
                [[
                    '/s_new', 'da0982184cc8fa54cf9d288a0fe1f6ca', 1004, 0,
                    1000, 'amplitude', 1.0, 'frequency', 880, 'out', 4
                ], ['/n_set', 1003, 'gate', 0]]
            ], [6.0, [['/n_set', 1004, 'gate', 0]]],
            [6.25, [['/n_free', 1000], ['/n_set', 1001, 'gate', 0], [0]]]
        ]