def test_asig_astf(self): a = Ugen().square() a_stft = a.to_stft() a_sig_from_stft = a_stft.to_sig() self.assertIsInstance(a, Asig) self.assertIsInstance(a_stft, Astft) self.assertIsInstance(a_sig_from_stft, Asig)
def test_asig_aspec(self): # Create a signale with 3 sine waves and gaps inbetween, # So that it will finds 3 events a = Ugen().sine() a_spec = a.to_spec() a_sig_from_aspec = a_spec.to_sig() self.assertIsInstance(a, Asig) self.assertIsInstance(a_spec, Aspec) self.assertIsInstance(a_sig_from_aspec, Asig)
def test_magspec_pspec(self): # Magnitude spectrum sq = Ugen().square(freq=20, sr=8000, channels=1) frames = signal_to_frame(sq.sig, 400, 400) mag = magspec(frames, 512) self.assertEqual(mag.shape, (20, 257)) self.assertTrue((mag >= 0.).all()) # All elements should be non-negative ps = powspec(frames, 512) self.assertEqual(ps.shape, (20, 257)) self.assertTrue((ps >= 0.).all()) # All elements should be non-negative
class TestAstft(TestCase): def setUp(self): self.asig = Ugen().sine() self.asig2 = Ugen().sine(channels=2, cn=['a', 'b']) self.asig_no_name = Ugen().sine(channels=3) def tearDown(self): pass def test_input_as_asig(self): astft = self.asig.to_stft() self.assertEqual(astft.sr, 44100) astft = self.asig.to_stft(sr=2000) self.assertEqual(astft.sr, 2000) signal = self.asig2.sig def test_wrong_input_type(self): with self.assertRaises(TypeError): asig = Astft(x=3, sr=500) def test_multichannel_asig(self): # Test conversion of a multi channel asig's astft. asine = Ugen().sawtooth(channels=3, cn=['a', 'b', 'c']) astft = asine.to_stft() self.assertEqual(astft.channels, 3) self.assertEqual(len(astft.cn), 3) def test_input_as_stft(self): sr = 10e3 N = 1e5 amp = 2 * np.sqrt(2) noise_power = 0.01 * sr / 2 time = np.arange(N) / float(sr) mod = 500 * np.cos(2 * np.pi * 0.25 * time) carrier = amp * np.sin(2 * np.pi * 3e3 * time + mod) noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape) noise *= np.exp(-time / 5) x = carrier + noise astft = Astft(x, sr, label="test") def test_plot(self): self.asig.to_stft().plot()
class TestAspec(TestCase): def setUp(self): self.asig = Ugen().sine() self.asig2 = Ugen().sine(channels=2, cn=['a', 'b']) self.asig_no_name = Ugen().sine(channels=3) def tearDown(self): pass def test_constructor(self): aspec = self.asig.to_spec() self.assertEqual(aspec.sr, 44100) aspec = self.asig2.to_spec() self.assertEqual(aspec.cn, self.asig2.cn) # The input can also be just an numpy array sig = Ugen().square().sig aspec = Aspec(sig, sr=400, label='square', cn=['a']) self.assertEqual(aspec.sr, 400) self.assertEqual(aspec.label, 'square') self.assertEqual(aspec.cn, ['a']) with self.assertRaises(TypeError): _ = Aspec(x=3) print(aspec) def test_plot(self): self.asig.to_spec().plot() self.asig.to_spec().plot(xlim=(0, 0.5), ylim=(0., 1.0)) def test_cn_conflict(self): with warnings.catch_warnings(record=True): _ = Aspec(self.asig, cn=['jf', 'dj'])
def test_constructor(self): aspec = self.asig.to_spec() self.assertEqual(aspec.sr, 44100) aspec = self.asig2.to_spec() self.assertEqual(aspec.cn, self.asig2.cn) # The input can also be just an numpy array sig = Ugen().square().sig aspec = Aspec(sig, sr=400, label='square', cn=['a']) self.assertEqual(aspec.sr, 400) self.assertEqual(aspec.label, 'square') self.assertEqual(aspec.cn, ['a']) with self.assertRaises(TypeError): _ = Aspec(x=3) print(aspec)
def test_events(self): # Create a signale with 3 sine waves and # gaps inbetween, So that it will finds 3 events""" a = Ugen().sine() a.x[a.samples:] = Asig(0.2) a.x[a.samples:] = Ugen().sine(freq=200) a.x[a.samples:] = Asig(0.2) a.x[a.samples:] = Ugen().sine(freq=20) a.x[a.samples:] = Asig(0.2) a.find_events(sil_thr=-30, evt_min_dur=0.2, sil_min_dur=0.04) self.assertEqual(3, a._['events'].shape[0])
def setUp(self): self.test_asig = Ugen().square(freq=20, sr=8000) self.test_sig = self.test_asig.sig
def test_plot_with_multichannel(self): asig = Ugen().sine(channels=2) amfcc = asig.to_mfcc() with warnings.catch_warnings(record=True): amfcc.plot()
def test_multichannel_asig(self): # Test conversion of a multi channel asig's astft. asine = Ugen().sawtooth(channels=3, cn=['a', 'b', 'c']) astft = asine.to_stft() self.assertEqual(astft.channels, 3) self.assertEqual(len(astft.cn), 3)
def setUp(self): self.asig = Ugen().sine() self.asig2 = Ugen().sine(channels=2, cn=['a', 'b']) self.asig_no_name = Ugen().sine(channels=3)
def test_signal_to_frame(self): sq = Ugen().square(freq=20, sr=8000, channels=1) frames = signal_to_frame(sq.sig, 400, 400) self.assertEqual(frames.shape, (20, 400)) frames = signal_to_frame(sq.sig, 400, 200) self.assertEqual(frames.shape, (39, 400))