示例#1
0
def test_patch(graph):
    prototype = Patch()
    buf_in = prototype.add_buffer_input("buffer")
    input = prototype.add_input("input")
    player = prototype.add_node(BufferPlayer(buf_in, loop=True))
    output = prototype.add_node(Multiply(input, player))
    prototype.set_output(output)
    spec = prototype.create_spec()

    patch = Patch(spec)
    buf_in = Buffer([2, 2, 2, 2])
    patch.set_input("input", 123)
    patch.set_input("buffer", buf_in)
    assert len(patch.nodes) == 5
    assert len(patch.inputs) == 1
    assert patch.output.name == "multiply"
    assert patch.output.patch == patch
    assert patch.auto_free == False

    graph.play(patch)
    b = Buffer(1, 1000)
    graph.render_to_buffer(b)
    assert np.all(b.data[0] == 246)

    patch.auto_free = True
    assert patch.auto_free == True

    graph.stop(patch)
示例#2
0
def test_comb_delay(graph):
    graph.sample_rate = 100

    #--------------------------------------------------------------------------------
    # feedback = 0
    # Input signal is passed through unmodified
    #--------------------------------------------------------------------------------
    i = Impulse(0)
    a = CombDelay(i, 0.1, 0.0)
    b = Buffer(1, 100)
    process_tree(a, buffer=b)
    assert b.data[0][0] == 1.0
    assert np.all(b.data[0][1:] == 0.0)

    #--------------------------------------------------------------------------------
    # feedback = 0.5
    # Input signal is passed through with 50% feedback
    #--------------------------------------------------------------------------------
    i = Impulse(0)
    a = CombDelay(i, 0.1, 0.5)
    b = Buffer(1, 100)
    process_tree(a, buffer=b)
    assert b.data[0][0] == 1.0
    assert np.all(b.data[0][1:10] == 0.0)
    assert b.data[0][10] == 0.5
    assert np.all(b.data[0][11:20] == 0.0)
    assert b.data[0][20] == 0.25
示例#3
0
def test_buffer_fill(graph):
    b = Buffer(4, 44100)
    b.fill(0.5)
    assert b.data.shape == (4, 44100)
    assert np.all(b.data[0] == 0.5)
    assert np.all(b.data[1] == 0.5)
    assert np.all(b.data[2] == 0.5)
    assert np.all(b.data[3] == 0.5)
示例#4
0
def test_buffer_split(graph):
    b = Buffer(1, 8192)
    b.fill(1)
    buffers = b.split(2048)
    assert len(buffers) == 4
    for buf in buffers:
        assert buf.num_channels == 1
        assert buf.num_frames == 2048
        assert np.all(b.data[0] == 1)
示例#5
0
def test_buffer(graph):
    b = Buffer(1, 32)
    assert b.num_channels == 1
    assert b.num_frames == 32
    assert len(b) == 32

    data = np.array([[ -1, 0, 1 ], [ -1, 0, 1 ]])
    b = Buffer(2, len(data[0]), data)
    assert b.num_channels == 2
    assert b.num_frames == len(data[0])
    assert np.array_equal(data, b.data)
示例#6
0
def test_buffer_save(graph):
    buf_len = 44100
    rand_buf = np.array([ np.random.uniform(size=buf_len) ])
    b = Buffer(1, 44100, rand_buf)
    BUFFER_FILENAME = ".tmp.wav"
    b.save(BUFFER_FILENAME)
    b2 = Buffer(BUFFER_FILENAME)
    assert b2.num_channels == 1
    assert b2.num_frames == buf_len
    assert np.all(b2.data[0] - rand_buf < 0.0001)
    os.unlink(BUFFER_FILENAME)
示例#7
0
def test_buffer_interpolate(graph):
    b = Buffer(1, 2, np.array([[ 1, 2 ]]))
    assert b.get(0, 0) == 1
    assert b.get(0, 1) == 2
    assert b.get(0, 0.5) == 1.5
    assert b.get(0, 0.25) == 1.25
    assert b.get(0, -0.5) == 1
    assert b.get(0, 1.5) == 2

    b.interpolate = SIGNALFLOW_INTERPOLATION_NONE
    assert b.get(0, 0) == 1
    assert b.get(0, 1) == 2
    assert b.get(0, 0.5) == 1
    assert b.get(0, 0.25) == 1
示例#8
0
def test_one_tap_delay(graph):
    graph.sample_rate = 100

    #--------------------------------------------------------------------------------
    # Test one-tap delay with a delay time that is an integer # of samples
    #--------------------------------------------------------------------------------
    i = Impulse(0)
    a = OneTapDelay(i, 0.1)
    b = Buffer(1, 100)
    process_tree(a, buffer=b)
    assert np.all(b.data[0][:10] == 0.0)
    assert b.data[0][10] == 1.0
    assert np.all(b.data[0][11:] == 0.0)

    #--------------------------------------------------------------------------------
    # Test delay with a fractional # samples and interpolation
    #--------------------------------------------------------------------------------
    i = Impulse(0)
    a.set_input("delay_time", 0.095)
    a.set_input("input", i)
    process_tree(a, buffer=b)

    assert np.all(b.data[0][:9] == 0.0)
    assert b.data[0][9] == 0.5
    assert b.data[0][10] == 0.5
    assert np.all(b.data[0][11:] == 0.0)
示例#9
0
def test_buffer_load(graph):
    b = Buffer("examples/audio/gliss.aif")
    assert b.data.shape == (1, 262856)
    assert b.num_frames == 262856
    assert b.num_channels == 1
    assert b.sample_rate == 44100
    assert b.duration == pytest.approx(5.960453)
    rms = np.sqrt(np.mean(np.square(b.data[0])))
    assert rms == pytest.approx(0.08339643)
示例#10
0
def test_buffer_subscript(graph):
    data = np.array([[ -1, 0, 1 ], [ 2, 3, 4 ]])
    b = Buffer(data)
    b0 = b[0]
    b1 = b[1]
    assert b0.num_channels == 1
    assert np.array_equal(b0.data[0], data[0])
    assert b1.num_channels == 1
    assert np.array_equal(b1.data[0], data[1])

    with pytest.raises(Exception):
        _ = b[2]
    with pytest.raises(Exception):
        _ = b[-1]
示例#11
0
def test_buffer_2d(graph):
    b1 = Buffer([ 1, 5, 9 ])
    b2 = Buffer([ 2, 4, 5 ])
    b3 = Buffer([ 5, 5, 5 ])

    b2d = Buffer2D([ b1, b2, b3 ])

    assert b2d.get2D(0, 0.00) == 1
    assert b2d.get2D(0, 0.25) == 1.5
    assert b2d.get2D(0, 0.50) == 2
    assert b2d.get2D(0, 0.75) == 3.5
    assert b2d.get2D(0, 1.00) == 5

    assert b2d.get2D(2, 0.00) == 9
    assert b2d.get2D(2, 0.25) == 7
    assert b2d.get2D(2, 0.50) == 5
    assert b2d.get2D(2, 0.75) == 5
    assert b2d.get2D(2, 1.00) == 5

    assert b2d.get2D(1.5, 0.00) == 7
    assert b2d.get2D(1.5, 0.25) == 5.75
    assert b2d.get2D(1.5, 0.50) == 4.5
    assert b2d.get2D(1.5, 0.75) == 4.75
    assert b2d.get2D(1.5, 1.00) == 5
示例#12
0
def test_patch_duplicate(graph):
    patch = Patch()
    a = patch.add_input("a", 1)
    b = patch.add_input("b", 2)
    c = patch.add_input("c", 3)
    sum = patch.add_node(Sum([a, b, c]))
    patch.set_output(sum)
    duplicate = Patch(patch)
    duplicate.set_input("a", 1)
    duplicate.set_input("b", 2)
    duplicate.set_input("c", 3)
    graph.play(duplicate)
    buf = Buffer(1, 100)
    assert np.all(buf.data[0] == 0)
    graph.render_to_buffer(buf)
    assert np.all(buf.data[0] == 6)
示例#13
0
def test_buffer_write_from_python(graph):
    b = Buffer(2, 32)
    assert b.data[0][0] == 0.0
    b.data[0][1] = 1.0
    assert b.data[0][1] == 1.0
    b.data[1][31] = 1.0
    assert b.data[1][31] == 1.0
    with pytest.raises(IndexError):
        b.data[1][32] = 1.0
    with pytest.raises(IndexError):
        b.data[2][31] = 1.0