shithub: aubio

ref: 6ef7f67e6037a3adae09cc41f865f9bee55abd9f
dir: /tests/python/phasevoc.py/

View raw version
import unittest

from aubio.aubiowrapper import *

buf_size = 1024
hop_size = 256
channels = 2

precision = 6

class aubio_phasevoc_test(unittest.TestCase):

  def setUp(self):
    self.o = new_aubio_pvoc(buf_size, hop_size, channels)

  def tearDown(self):
    del_aubio_pvoc(self.o)

  def test_create(self):
    """ create and delete phasevoc object """
    pass

  def test_zeroes(self):
    """ run phasevoc object on zeroes """
    input    = new_fvec(hop_size, channels)
    fftgrain = new_cvec(buf_size, channels)
    output   = new_fvec(hop_size, channels)
    for index in range(hop_size):
      for channel in range(channels):
        self.assertEqual(0., fvec_read_sample(input, channel, index))
    aubio_pvoc_do (self.o, input, fftgrain)
    aubio_pvoc_rdo(self.o, fftgrain, output)
    for index in range(hop_size):
      for channel in range(channels):
        self.assertEqual(0., fvec_read_sample(output, channel, index))
    del input
    del fftgrain

  def test_ones(self):
    """ run phasevoc object on ones """
    input    = new_fvec(hop_size, channels)
    fftgrain = new_cvec(buf_size, channels)
    output   = new_fvec(hop_size, channels)
    for index in range(hop_size):
      for channel in range(channels):
        fvec_write_sample(input, 1., channel, index)
        self.assertEqual(1., fvec_read_sample(input, channel, index))
    # make sure the first buf_size-hop_size samples are zeroes
    for i in range(buf_size/hop_size - 1):
      aubio_pvoc_do (self.o, input, fftgrain)
      aubio_pvoc_rdo(self.o, fftgrain, output)
      for index in range(hop_size):
        for channel in range(channels):
          self.assertAlmostEqual(0., fvec_read_sample(output, channel, index), precision)
    # make sure the first non zero input is correctly resynthesised
    aubio_pvoc_do (self.o, input, fftgrain)
    aubio_pvoc_rdo(self.o, fftgrain, output)
    for index in range(hop_size):
      for channel in range(channels):
        self.assertAlmostEqual(1., fvec_read_sample(output, channel, index), precision)
    del input
    del fftgrain