shithub: aubio

ref: d3b1eb196325b80ad269ca74456b8f08d1ea4f27
dir: /tests/python/src/utils/scale.py/

View raw version
from template import aubio_unit_template
from localaubio import *

buf_size = 2000
channels = 2

ilow = .40
ihig = 40.00
olow = 100.0
ohig = 1000.

class scale_unit(aubio_unit_template):

  def setUp(self):
    self.o = new_aubio_scale(ilow, ihig, olow, ohig)

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

  def test(self):
    """ create and delete scale """
    pass

  def test_zeroes(self):
    """ test scale on zeroes """
    input = new_fvec(buf_size, channels)
    aubio_scale_do(self.o, input)
    for index in range(buf_size):
      for channel in range(channels):
        expval = (- ilow) * (ohig - olow) / \
          (ihig - ilow) + olow
        val = fvec_read_sample(input, channel, index)
        self.assertCloseEnough(expval, val)
    del_fvec(input)

  def test_ilow(self):
    """ test scale on ilow """
    input = new_fvec(buf_size, channels)
    for index in range(buf_size):
      for channel in range(channels):
        fvec_write_sample(input, ilow, channel, index)
    aubio_scale_do(self.o, input)
    for index in range(buf_size):
      for channel in range(channels):
        val = fvec_read_sample(input, channel, index)
        self.assertAlmostEqual(olow, val)
    del_fvec(input)

  def test_ihig(self):
    """ test scale on ihig """
    input = new_fvec(buf_size, channels)
    for index in range(buf_size):
      for channel in range(channels):
        fvec_write_sample(input, ihig, channel, index)
    aubio_scale_do(self.o, input)
    for index in range(buf_size):
      for channel in range(channels):
        val = fvec_read_sample(input, channel, index)
        self.assertCloseEnough(ohig, val)
    del_fvec(input)

  def test_climbing_ramp(self):
    """ test scale on climbing ramp """
    input = new_fvec(buf_size, channels)
    for index in range(buf_size):
      for channel in range(channels):
        rampval = index*(ihig-ilow)/buf_size + ilow 
        fvec_write_sample(input, rampval, channel, index)
    aubio_scale_do(self.o, input)
    for index in range(buf_size):
      for channel in range(channels):
        expval = index*(ohig-olow)/buf_size + olow
        self.assertCloseEnough(expval, \
          fvec_read_sample(input, channel, index))
    del_fvec(input)

  def test_falling_ramp(self):
    """ test scale on falling ramp """
    input = new_fvec(buf_size, channels)
    for index in range(buf_size):
      for channel in range(channels):
        fvec_write_sample(input, ihig \
          - index*(ihig-ilow)/buf_size, \
          channel, index)
    aubio_scale_do(self.o, input)
    for index in range(buf_size):
      for channel in range(channels):
        expval = ohig - index*(ohig-olow)/buf_size
        self.assertCloseEnough(expval, \
          fvec_read_sample(input, channel, index))
    del_fvec(input)

if __name__ == '__main__': unittest.main()