import unittest from template import aubio_unit_template from aubio.aubiowrapper 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()