source: python/tests/test_notes.py @ cf5c2ca

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5sampler
Last change on this file since cf5c2ca was 0f173cc, checked in by Paul Brossier <piem@piem.org>, 8 years ago

python/tests/test_notes.py: use relative import

  • Property mode set to 100755
File size: 2.3 KB
Line 
1#! /usr/bin/env python
2
3from unittest import main
4from numpy.testing import TestCase, assert_equal, assert_almost_equal
5from aubio import notes
6
7AUBIO_DEFAULT_NOTES_SILENCE = -70.
8AUBIO_DEFAULT_NOTES_MINIOI_MS = 30.
9
10class aubio_notes_default(TestCase):
11
12    def test_members(self):
13        o = notes()
14        assert_equal ([o.buf_size, o.hop_size, o.method, o.samplerate],
15            [1024,512,'default',44100])
16
17
18class aubio_notes_params(TestCase):
19
20    samplerate = 44100
21
22    def setUp(self):
23        self.o = notes(samplerate = self.samplerate)
24
25    def test_get_minioi_ms(self):
26        assert_equal (self.o.get_minioi_ms(), AUBIO_DEFAULT_NOTES_MINIOI_MS)
27
28    def test_set_minioi_ms(self):
29        val = 40.
30        self.o.set_minioi_ms(val)
31        assert_almost_equal (self.o.get_minioi_ms(), val)
32
33    def test_get_silence(self):
34        assert_equal (self.o.get_silence(), AUBIO_DEFAULT_NOTES_SILENCE)
35
36    def test_set_silence(self):
37        val = -50
38        self.o.set_silence(val)
39        assert_equal (self.o.get_silence(), val)
40
41from .utils import list_all_sounds
42list_of_sounds = list_all_sounds('sounds')
43
44class aubio_notes_sinewave(TestCase):
45
46    def analyze_file(self, filepath, samplerate=0):
47        from aubio import source
48        import numpy as np
49        win_s = 512 # fft size
50        hop_s = 256 # hop size
51
52        s = source(filepath, samplerate, hop_s)
53        samplerate = s.samplerate
54
55        tolerance = 0.8
56
57        notes_o = notes("default", win_s, hop_s, samplerate)
58        total_frames = 0
59
60        results = []
61        while True:
62            samples, read = s()
63            new_note = notes_o(samples)
64            if (new_note[0] != 0):
65                note_str = ' '.join(["%.2f" % i for i in new_note])
66                results.append( [total_frames, np.copy(new_note)] )
67            total_frames += read
68            if read < hop_s: break
69        return results
70
71    def test_sinewave(self):
72        for filepath in list_of_sounds:
73            if '44100Hz_44100f_sine441.wav' in filepath:
74                results = self.analyze_file(filepath)
75                assert_equal (len(results), 1)
76                assert_equal (len(results[0]), 2)
77                assert_equal (results[0][0], 1280)
78                assert_equal (results[0][1], [69, 123, -1])
79
80if __name__ == '__main__':
81    main()
Note: See TracBrowser for help on using the repository browser.