Exemple #1
0
def test_quantizationtools_QGrid___eq___02():
    a = quantizationtools.QGrid(
        root_node=quantizationtools.QGridContainer(
            preprolated_duration=1,
            children=[
                quantizationtools.QGridLeaf(
                    preprolated_duration=1,
                    q_event_proxies=[
                        quantizationtools.QEventProxy(
                            quantizationtools.SilentQEvent(100),
                            0.5,
                        ),
                    ],
                ),
            ],
        ),
        next_downbeat=quantizationtools.QGridLeaf(
            preprolated_duration=1,
            q_event_proxies=[
                quantizationtools.QEventProxy(
                    quantizationtools.TerminalQEvent(200),
                    0.9,
                ),
            ],
        ),
    )
    b = quantizationtools.QGrid(
        root_node=quantizationtools.QGridContainer(
            preprolated_duration=1,
            children=[
                quantizationtools.QGridLeaf(
                    preprolated_duration=1,
                    q_event_proxies=[
                        quantizationtools.QEventProxy(
                            quantizationtools.SilentQEvent(100),
                            0.5,
                        ),
                    ],
                ),
            ],
        ),
        next_downbeat=quantizationtools.QGridLeaf(
            preprolated_duration=1,
            q_event_proxies=[
                quantizationtools.QEventProxy(
                    quantizationtools.TerminalQEvent(200),
                    0.9,
                ),
            ],
        ),
    )
    assert format(a) == format(b)
    assert a != b
Exemple #2
0
def test_quantizationtools_QGrid___eq___03():
    a = quantizationtools.QGrid()
    b = quantizationtools.QGrid(root_node=quantizationtools.QGridContainer(
        preprolated_duration=1,
        children=[
            quantizationtools.QGridLeaf(
                preprolated_duration=1,
                q_event_proxies=[
                    quantizationtools.QEventProxy(
                        quantizationtools.SilentQEvent(100), 0.5)
                ],
            ),
        ],
    ), )
    c = quantizationtools.QGrid(next_downbeat=quantizationtools.QGridLeaf(
        preprolated_duration=1,
        q_event_proxies=[
            quantizationtools.QEventProxy(
                quantizationtools.TerminalQEvent(200), 0.9),
        ],
    ), )
    d = quantizationtools.QGrid(
        root_node=quantizationtools.QGridContainer(
            preprolated_duration=1,
            children=[
                quantizationtools.QGridLeaf(
                    preprolated_duration=1,
                    q_event_proxies=[
                        quantizationtools.QEventProxy(
                            quantizationtools.SilentQEvent(100), 0.5),
                    ],
                ),
            ],
        ),
        next_downbeat=quantizationtools.QGridLeaf(
            preprolated_duration=1,
            q_event_proxies=[
                quantizationtools.QEventProxy(
                    quantizationtools.TerminalQEvent(200),
                    0.9,
                ),
            ],
        ),
    ),

    assert a != b
    assert a != c
    assert a != d
    assert b != c
    assert b != d
    assert c != d
Exemple #3
0
    def __call__(self):
        r'''Calls quantization job.

        Returns none.
        '''
        from abjad.tools import quantizationtools
        #print('XXX')
        #print(format(self.q_event_proxies[0]))

        q_grid = quantizationtools.QGrid()
        q_grid.fit_q_events(self.q_event_proxies)

        #print(format(q_grid))

        old_q_grids = []
        new_q_grids = [q_grid]

        while new_q_grids:
            q_grid = new_q_grids.pop()
            search_results = self.search_tree(q_grid)
            #print q_grid.rtm_format
            #for x in search_results:
            #    print '\t', x.rtm_format
            new_q_grids.extend(search_results)
            old_q_grids.append(q_grid)

        #for q_grid in old_q_grids:
        #    print('\t', q_grid)
        #print()

        self._q_grids = tuple(old_q_grids)
Exemple #4
0
def test_quantizationtools_QGrid_fit_q_events_01():

    q_grid = quantizationtools.QGrid()

    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 20), ['B']), (1, 20))
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((9, 20), ['C']), (9, 20))
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['D']), (1, 2))
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['G']),
                                      1)

    q_grid.fit_q_events([a, b, c, d, e, f, g])

    assert q_grid.leaves[0].q_event_proxies == [a, b, c, d]
    assert q_grid.leaves[1].q_event_proxies == [e, f, g]

    q_events = q_grid.subdivide_leaves([(0, (1, 1))])

    q_grid.fit_q_events(q_events)

    assert q_grid.leaves[0].q_event_proxies == [a, b]
    assert q_grid.leaves[1].q_event_proxies == [c, d, e]
    assert q_grid.leaves[2].q_event_proxies == [g, f]
Exemple #5
0
def test_quantizationtools_QGrid___call___03():
    r'''Non-binary works too.
    '''

    q_grid = quantizationtools.QGrid()
    q_grid.subdivide_leaves([(0, (1, 1))])

    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 20), ['B']), (1, 20))
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((9, 20), ['C']), (9, 20))
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['D']), (1, 2))
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['G']),
                                      1)

    q_grid.fit_q_events([a, b, c, d, e, f, g])

    result = q_grid((1, 3))

    assert isinstance(result, list) and len(result) == 1
    assert format(result[0]) == abjad.String.normalize(r'''
        \tweak edge-height #'(0.7 . 0)
        \times 2/3 {
            c'4
            c'4
        }
        ''')
def test_quantizationtools_QGrid_pickle_01():
    q_grid = quantizationtools.QGrid(
        root_node=quantizationtools.QGridContainer(
            preprolated_duration=1,
            children=[
                quantizationtools.QGridLeaf(
                    preprolated_duration=1,
                    q_event_proxies=[
                        quantizationtools.QEventProxy(
                            quantizationtools.SilentQEvent(100),
                            0.5,
                            ),
                        ],
                    ),
                ],
            ),
        next_downbeat=quantizationtools.QGridLeaf(
            preprolated_duration=1,
            q_event_proxies=[
                quantizationtools.QEventProxy(
                    quantizationtools.TerminalQEvent(200),
                    0.9,
                    ),
                ],
            ),
        )
    pickled = pickle.loads(pickle.dumps(q_grid))

    assert format(pickled) == format(q_grid)
    assert pickled is not q_grid
    assert pickled != q_grid, \
        systemtools.TestManager.diff(pickled, q_grid, 'Diff:')
def test_quantizationtools_UnweightedSearchTree___call___01():

    definition = {2: {2: {2: None}, 3: None}, 5: None}
    search_tree = quantizationtools.UnweightedSearchTree(definition)
    q_grid = quantizationtools.QGrid()
    a = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent(0, ['A'], index=1), 0, 1)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 5), ['B'], index=2), 0, 1)
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 4), ['C'], index=3), 0, 1)
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 3), ['D'], index=4), 0, 1)
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 5), ['E'], index=5), 0, 1)
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['F'], index=6), 0, 1)
    g = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 5), ['G'], index=7), 0, 1)
    h = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 3), ['H'], index=8), 0, 1)
    i = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 4), ['I'], index=9), 0, 1)
    j = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((4, 5), ['J'], index=10), 0, 1)
    k = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent(1, ['K'], index=11), 0, 1)
    q_grid.fit_q_events([a, b, c, d, e, f, g, h, i, j, k])

    q_grids = search_tree(q_grid)

    assert q_grids[0].root_node.rtm_format == '(1 (1 1))'
    assert q_grids[1].root_node.rtm_format == '(1 (1 1 1 1 1))'
Exemple #8
0
def test_quantizationtools_QGrid___call___01():

    q_grid = quantizationtools.QGrid()
    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 20), ['B']), (1, 20))
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((9, 20), ['C']), (9, 20))
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['D']), (1, 2))
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['G']),
                                      1)
    q_grid.fit_q_events([a, b, c, d, e, f, g])
    result = q_grid((1, 4))

    assert len(result) == 1
    assert format(result[0]) == "c'4"

    annotation = abjad.inspect(result[0]).get_indicator(dict)
    q_events = annotation['q_events']

    assert isinstance(q_events, tuple) and len(q_events) == 4
    assert q_events[0].attachments == ('A', )
    assert q_events[1].attachments == ('B', )
    assert q_events[2].attachments == ('C', )
    assert q_events[3].attachments == ('D', )
Exemple #9
0
def test_quantizationtools_QGrid___call___02():

    q_grid = quantizationtools.QGrid()
    q_grid.subdivide_leaves([(0, (1, 1, 1))])
    q_grid.subdivide_leaves([(1, (1, 1))])
    q_grid.subdivide_leaves([(-2, (1, 1, 1))])
    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 20), ['B']), (1, 20))
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((9, 20), ['C']), (9, 20))
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['D']), (1, 2))
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['G']),
                                      1)
    q_grid.fit_q_events([a, b, c, d, e, f, g])
    result = q_grid((1, 4))

    assert isinstance(result, list) and len(result) == 1
    assert format(result[0]) == abjad.String.normalize(r'''
        \times 2/3 {
            c'8
            c'16
            c'16
            \times 2/3 {
                c'16
                c'16
                c'16
            }
        }
        ''')

    leaves = abjad.select(result[0]).leaves()
    leaf = leaves[0]
    annotation = abjad.inspect(leaf).get_indicator(dict)
    q_events = annotation['q_events']
    assert isinstance(q_events, tuple) and len(q_events) == 2
    assert q_events[0].attachments == ('A', )
    assert q_events[1].attachments == ('B', )

    leaf = leaves[1]
    assert not abjad.inspect(leaf).get_indicator(dict)

    leaf = leaves[2]
    annotation = abjad.inspect(leaf).get_indicator(dict)
    q_events = annotation['q_events']

    assert isinstance(q_events, tuple) and len(q_events) == 3
    assert q_events[0].attachments == ('C', )
    assert q_events[1].attachments == ('D', )
    assert q_events[2].attachments == ('E', )

    for leaf in leaves[3:6]:
        assert not abjad.inspect(leaf).get_indicators(dict)
Exemple #10
0
def test_quantizationtools_QGrid___copy___01():
    q_grid = quantizationtools.QGrid()
    copied = copy.copy(q_grid)
    assert format(q_grid) == format(copied)
    assert q_grid != copied
    assert q_grid is not copied
    assert q_grid.root_node is not copied.root_node
    assert q_grid.next_downbeat is not copied.next_downbeat
Exemple #11
0
 def _process(self, q_target_beats):
     from abjad.tools import quantizationtools
     for q_target_beat in q_target_beats:
         q_grids = q_target_beat.q_grids
         if q_grids:
             sorted_q_grids = sorted(
                 q_grids, key=lambda x: (x.distance, len(x.leaves)))
             q_target_beat._q_grid = sorted_q_grids[0]
         else:
             q_target_beat._q_grid = quantizationtools.QGrid()
     return q_target_beats
Exemple #12
0
def test_quantizationtools_WeightedSearchTree___call___01():
    definition = {
        'divisors': (2, 3, 5, 7),
        'max_depth': 3,
        'max_divisions': 2,
    }
    search_tree = quantizationtools.WeightedSearchTree(definition)
    q_grid = quantizationtools.QGrid()
    a = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent(0, ['A'], index=1), 0, 1)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 5), ['B'], index=2), 0, 1)
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 4), ['C'], index=3), 0, 1)
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 3), ['D'], index=4), 0, 1)
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 5), ['E'], index=5), 0, 1)
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['F'], index=6), 0, 1)
    g = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 5), ['G'], index=7), 0, 1)
    h = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 3), ['H'], index=8), 0, 1)
    i = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 4), ['I'], index=9), 0, 1)
    j = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((4, 5), ['J'], index=10), 0, 1)
    k = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent(1, ['K'], index=11), 0, 1)
    q_grid.fit_q_events([a, b, c, d, e, f, g, h, i, j, k])
    q_grids = search_tree(q_grid)

    assert [q_grid.root_node.rtm_format for q_grid in q_grids] == [
        '(1 (1 1))', '(1 (2 1))', '(1 (1 2))', '(1 (4 1))', '(1 (3 2))',
        '(1 (2 3))', '(1 (1 4))', '(1 (6 1))', '(1 (5 2))', '(1 (4 3))',
        '(1 (3 4))', '(1 (2 5))', '(1 (1 6))'
    ]
Exemple #13
0
def test_quantizationtools_QGrid_distance_01():

    q_grid = quantizationtools.QGrid()

    assert q_grid.distance is None

    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0,        ['A']), 0)
    q_grid.fit_q_events([a])
    assert q_grid.distance == abjad.Offset(0)

    b = quantizationtools.QEventProxy(quantizationtools.SilentQEvent((1, 20),  ['B']), (1, 20))
    q_grid.fit_q_events([b])
    assert q_grid.distance == abjad.Offset(1, 40)

    c = quantizationtools.QEventProxy(quantizationtools.SilentQEvent((9, 20),  ['C']), (9, 20))
    q_grid.fit_q_events([c])
    assert q_grid.distance == abjad.Offset(1, 6)

    d = quantizationtools.QEventProxy(quantizationtools.SilentQEvent((1, 2),   ['D']), (1, 2))
    q_grid.fit_q_events([d])
    assert q_grid.distance == abjad.Offset(1, 4)

    e = quantizationtools.QEventProxy(quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    q_grid.fit_q_events([e])
    assert q_grid.distance == abjad.Offset(29, 100)

    f = quantizationtools.QEventProxy(quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    q_grid.fit_q_events([f])
    assert q_grid.distance == abjad.Offset(1, 4)

    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1,        ['G']), 1)
    q_grid.fit_q_events([g])
    assert q_grid.distance == abjad.Offset(3, 14)

    q_events = q_grid.subdivide_leaves([(0, (1, 1))])
    q_grid.fit_q_events(q_events)

    assert q_grid.distance == abjad.Offset(1, 35)
Exemple #14
0
def test_quantizationtools_QGrid_subdivide_leaves_02():

    q_grid = quantizationtools.QGrid()

    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 20), ['B']), (1, 20))
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((9, 20), ['C']), (9, 20))
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['D']), (1, 2))
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((11, 20), ['E']), (11, 20))
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((19, 20), ['F']), (19, 20))
    g = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['G']),
                                      1)

    q_grid.leaves[0].q_event_proxies.extend([a, b, c, d])
    q_grid.leaves[1].q_event_proxies.extend([e, f, g])

    assert q_grid.root_node.rtm_format == '1'

    q_events = q_grid.subdivide_leaves([(0, (1, 1))])

    assert q_events == [a, b, c, d, e, f]
    assert q_grid.root_node.rtm_format == '(1 (1 1))'

    q_grid.leaves[0].q_event_proxies.extend([a, b])
    q_grid.leaves[1].q_event_proxies.extend([c, d, e])
    q_grid.leaves[2].q_event_proxies.append(f)

    q_events = q_grid.subdivide_leaves([(0, (3, 4, 5))])

    assert q_events == [a, b, c]
    assert q_grid.root_node.rtm_format == '(1 ((1 (3 4 5)) 1))'
def test_quantizationtools_QGrid_subdivide_leaf_01():

    q_grid = quantizationtools.QGrid()

    a = quantizationtools.QEventProxy(quantizationtools.PitchedQEvent(0, [0]), 0)
    b = quantizationtools.QEventProxy(quantizationtools.PitchedQEvent((9, 20), [1]), (9, 20))
    c = quantizationtools.QEventProxy(quantizationtools.PitchedQEvent((1, 2), [2]), (1, 2))
    d = quantizationtools.QEventProxy(quantizationtools.PitchedQEvent((11, 20), [3]), (11, 20))
    e = quantizationtools.QEventProxy(quantizationtools.PitchedQEvent(1, [4]), 1)

    q_grid.leaves[0].q_event_proxies.extend([a, b, c, d])
    q_grid.leaves[1].q_event_proxies.append(e)

    result = q_grid.subdivide_leaf(q_grid.leaves[0], (2, 3))

    assert result == [a, b, c, d]
    root_node = quantizationtools.QGridContainer(
        children=[
            quantizationtools.QGridLeaf(preprolated_duration=2, q_event_proxies=[]),
            quantizationtools.QGridLeaf(preprolated_duration=3, q_event_proxies=[]),
            ],
        preprolated_duration=1
        )
    assert format(q_grid.root_node) == format(root_node)
Exemple #16
0
def test_quantizationtools_UnweightedSearchTree__find_divisible_leaf_indices_and_subdivisions_01(
):

    definition = {2: {2: {2: None}, 3: None}, 5: None}
    search_tree = quantizationtools.UnweightedSearchTree(definition)

    q_grid = quantizationtools.QGrid()
    a = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(0, ['A']),
                                      0, 1)
    b = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 5), ['B']), 0, 1)
    c = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 4), ['C']), 0, 1)
    d = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 3), ['D']), 0, 1)
    e = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 5), ['E']), 0, 1)
    f = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((1, 2), ['F']), 0, 1)
    g = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 5), ['G']), 0, 1)
    h = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((2, 3), ['H']), 0, 1)
    i = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((3, 4), ['I']), 0, 1)
    j = quantizationtools.QEventProxy(
        quantizationtools.SilentQEvent((4, 5), ['J']), 0, 1)
    k = quantizationtools.QEventProxy(quantizationtools.SilentQEvent(1, ['K']),
                                      0, 1)
    q_grid.fit_q_events([a, b, c, d, e, f, g, h, i, j, k])

    indices, subdivisions = search_tree._find_divisible_leaf_indices_and_subdivisions(
        q_grid)

    assert indices == [0]
    assert subdivisions == [((1, 1), (1, 1, 1, 1, 1))]
Exemple #17
0
def test_quantizationtools_QGrid___eq___01():
    a = quantizationtools.QGrid()
    b = quantizationtools.QGrid()
    assert format(a) == format(b)
    assert a != b