Changeset e1bfde5


Ignore:
Timestamp:
Mar 6, 2013, 9:25:23 PM (8 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink, feature/constantq, feature/pitchshift, feature/pydocstrings, feature/timestretch, master, pitchshift, sampler, timestretch, yinfft+
Children:
037319a
Parents:
143cc43
Message:

tests/test_{source,sink}.py: add sink, improve source, use sounds in python/tests/sounds

Location:
python/tests
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • python/tests/test_source.py

    r143cc43 re1bfde5  
    44from aubio import fvec, source
    55from numpy import array
     6from utils import list_all_sounds
    67
    7 path = "/Users/piem/archives/sounds/loops/drum_Chocolate_Milk_-_Ation_Speaks_Louder_Than_Words.wav"
     8list_of_sounds = list_all_sounds('sounds')
     9path = None
    810
    9 class aubio_filter_test_case(TestCase):
     11class aubio_source_test_case(TestCase):
    1012
    11   def test_members(self):
    12     f = source(path)
    13     print dir(f)
     13    def setUp(self):
     14        if not len(list_of_sounds): self.skipTest('add some sound files in \'python/tests/sounds\'')
    1415
    15   def test_read(self):
    16     f = source(path)
    17     total_frames = 0
    18     while True:
    19       vec, read = f()
    20       total_frames += read
    21       if read < f.hop_size: break
    22     print "read", total_frames / float(f.samplerate), " seconds from", path
     16    def read_from_sink(self, f):
     17        total_frames = 0
     18        while True:
     19            vec, read = f()
     20            total_frames += read
     21            if read < f.hop_size: break
     22        print "read", "%.2fs" % (total_frames / float(f.samplerate) ),
     23        print "(", total_frames, "frames", "in",
     24        print total_frames / f.hop_size, "blocks", "at", "%dHz" % f.samplerate, ")",
     25        print "from", f.uri
     26
     27    def test_samplerate_hopsize(self):
     28        for p in list_of_sounds:
     29            for samplerate, hop_size in zip([0, 44100, 8000, 32000], [ 512, 512, 64, 256]):
     30                f = source(p, samplerate, hop_size)
     31                assert f.samplerate != 0
     32                self.read_from_sink(f)
     33
     34    def test_samplerate_none(self):
     35        for p in list_of_sounds:
     36            f = source(p)
     37            assert f.samplerate != 0
     38            self.read_from_sink(f)
     39
     40    def test_samplerate_0(self):
     41        for p in list_of_sounds:
     42            f = source(p, 0)
     43            assert f.samplerate != 0
     44            self.read_from_sink(f)
     45
     46    def test_wrong_samplerate(self):
     47        for p in list_of_sounds:
     48            try:
     49                f = source(p, -1)
     50            except Exception, e:
     51                print e
     52            else:
     53                self.fail('does not fail with wrong samplerate')
     54
     55    def test_wrong_hop_size(self):
     56        for p in list_of_sounds:
     57            f = source(p, 0, -1)
     58            print f.hop_size
     59
     60    def test_zero_hop_size(self):
     61        for p in list_of_sounds:
     62            f = source(p, 0, 0)
     63            assert f.samplerate != 0
     64            assert f.hop_size != 0
     65            self.read_from_sink(f)
    2366
    2467if __name__ == '__main__':
    25   from unittest import main
    26   main()
    27 
     68    from unittest import main
     69    main()
  • python/tests/utils.py

    r143cc43 re1bfde5  
    22
    33def array_from_text_file(filename, dtype = 'float'):
    4   import os.path
    5   from numpy import array
    6   filename = os.path.join(os.path.dirname(__file__), filename)
    7   return array([line.split() for line in open(filename).readlines()],
    8       dtype = dtype)
     4    import os.path
     5    from numpy import array
     6    filename = os.path.join(os.path.dirname(__file__), filename)
     7    return array([line.split() for line in open(filename).readlines()],
     8        dtype = dtype)
    99
     10def list_all_sounds(rel_dir):
     11    import os.path, glob
     12    datadir = os.path.join(os.path.dirname(__file__), rel_dir)
     13    return glob.glob(os.path.join(datadir,'*.*'))
Note: See TracChangeset for help on using the changeset viewer.