From 17728d28ad2b9c23bdc108c402ecb893adc86783 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 28 Oct 2013 16:57:34 +0100 Subject: [PATCH] add decoder.utils, fix some api test names --- ...ipe_spectrogram.py => test_spectrogram.py} | 0 ...test_pipe_waveform.py => test_waveform.py} | 0 timeside/decoder/utils.py | 37 +++++++++++++++++++ 3 files changed, 37 insertions(+) rename tests/api/{test_pipe_spectrogram.py => test_spectrogram.py} (100%) rename tests/api/{test_pipe_waveform.py => test_waveform.py} (100%) create mode 100644 timeside/decoder/utils.py diff --git a/tests/api/test_pipe_spectrogram.py b/tests/api/test_spectrogram.py similarity index 100% rename from tests/api/test_pipe_spectrogram.py rename to tests/api/test_spectrogram.py diff --git a/tests/api/test_pipe_waveform.py b/tests/api/test_waveform.py similarity index 100% rename from tests/api/test_pipe_waveform.py rename to tests/api/test_waveform.py diff --git a/timeside/decoder/utils.py b/timeside/decoder/utils.py new file mode 100644 index 0000000..b806e1e --- /dev/null +++ b/timeside/decoder/utils.py @@ -0,0 +1,37 @@ +import numpy + + +class Noise(object): + """A class that mimics audiolab.sndfile but generates noise instead of reading + a wave file. Additionally it can be told to have a "broken" header and thus crashing + in the middle of the file. Also useful for testing ultra-short files of 20 samples.""" + + def __init__(self, num_frames, has_broken_header=False): + self.seekpoint = 0 + self.num_frames = num_frames + self.has_broken_header = has_broken_header + + def seek(self, seekpoint): + self.seekpoint = seekpoint + + def get_nframes(self): + return self.num_frames + + def get_samplerate(self): + return 44100 + + def get_channels(self): + return 1 + + def read_frames(self, frames_to_read): + if self.has_broken_header and self.seekpoint + frames_to_read > self.num_frames / 2: + raise IOError() + + num_frames_left = self.num_frames - self.seekpoint + if num_frames_left < frames_to_read: + will_read = num_frames_left + else: + will_read = frames_to_read + self.seekpoint += will_read + return numpy.random.random(will_read)*2 - 1 + -- 2.39.5