source: tests/python/src/temporal/zero_crossing_rate.py @ a9f1656

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since a9f1656 was 7e204d01, checked in by Paul Brossier <piem@piem.org>, 16 years ago

src/mathutils.c: change zero crossing function to split at >=0/<0; tests/python/src/temporal/zero_crossing_rate.py: add some tests for zero crossing

  • Property mode set to 100644
File size: 1.7 KB
Line 
1import unittest
2
3from aubio.aubiowrapper import *
4
5buf_size = 2048
6channels = 1
7
8class zero_crossing_rate_unit(unittest.TestCase):
9
10  def setUp(self):
11    self.vector = new_fvec(buf_size, channels)
12
13  def tearDown(self):
14    del_fvec(self.vector)
15
16  def test(self):
17    """ create and delete fvec """
18    pass
19
20  def test_zeroes(self):
21    """ check zero crossing rate on a buffer of 0. """
22    self.assertEqual(0., aubio_zero_crossing_rate(self.vector))
23
24  def test_ones(self):
25    """ check zero crossing rate on a buffer of 1. """
26    for index in range(buf_size):
27      for channel in range(channels):
28        fvec_write_sample(self.vector, 1., channel, index)
29    self.assertEqual(0., aubio_zero_crossing_rate(self.vector))
30
31  def test_impulse(self):
32    """ check zero crossing rate on a buffer with an impulse """
33    fvec_write_sample(self.vector, 1., 0, buf_size / 2)
34    self.assertEqual(0., aubio_zero_crossing_rate(self.vector))
35
36  def test_negative_impulse(self):
37    """ check zero crossing rate on a buffer with a negative impulse """
38    fvec_write_sample(self.vector, -1., 0, buf_size / 2)
39    self.assertEqual(2./buf_size, aubio_zero_crossing_rate(self.vector))
40
41  def test_single(self):
42    """ check zero crossing rate on single crossing """
43    fvec_write_sample(self.vector, +1., 0, buf_size / 2 - 1)
44    fvec_write_sample(self.vector, -1., 0, buf_size / 2)
45    self.assertEqual(2./buf_size, aubio_zero_crossing_rate(self.vector))
46
47  def test_single_with_gap(self):
48    """ check zero crossing rate on single crossing with a gap"""
49    fvec_write_sample(self.vector, +1., 0, buf_size / 2 - 2)
50    fvec_write_sample(self.vector, -1., 0, buf_size / 2)
51    self.assertEqual(2./buf_size, aubio_zero_crossing_rate(self.vector))
52
53if __name__ == '__main__':
54  unittest.main()
Note: See TracBrowser for help on using the repository browser.