]> git.parisson.com Git - timeside.git/commitdiff
add decoder.utils, fix some api test names
authorGuillaume Pellerin <yomguy@parisson.com>
Mon, 28 Oct 2013 15:57:34 +0000 (16:57 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Mon, 28 Oct 2013 15:57:34 +0000 (16:57 +0100)
tests/api/test_pipe_spectrogram.py [deleted file]
tests/api/test_pipe_waveform.py [deleted file]
tests/api/test_spectrogram.py [new file with mode: 0644]
tests/api/test_waveform.py [new file with mode: 0644]
timeside/decoder/utils.py [new file with mode: 0644]

diff --git a/tests/api/test_pipe_spectrogram.py b/tests/api/test_pipe_spectrogram.py
deleted file mode 100644 (file)
index a16874e..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-from timeside.core import *
-from timeside.api import *
-from timeside.decoder import *
-from timeside.grapher import *
-
-sample_dir = '../samples'
-img_dir = '../results/img'
-if not os.path.exists(img_dir):
-    os.mkdir(img_dir)
-
-test_dict = {'sweep.wav': 'spec_wav.png',
-            'sweep.flac': 'spec_flac.png',
-            'sweep.ogg': 'spec_ogg.png',
-            'sweep.mp3': 'spec_mp3.png',
-            }
-
-for source, image in test_dict.iteritems():
-    audio = os.path.join(os.path.dirname(__file__), sample_dir + os.sep + source)
-    image = img_dir + os.sep + image
-    print 'Test : decoder(%s) | waveform (%s)' % (source, image)
-    decoder  = FileDecoder(audio)
-    spectrogram = Spectrogram()
-    (decoder | spectrogram).run()
-    print 'frames per pixel = ', spectrogram.samples_per_pixel
-    print "render spectrogram to: %s" %  image
-    spectrogram.render(image)
-
-
-
diff --git a/tests/api/test_pipe_waveform.py b/tests/api/test_pipe_waveform.py
deleted file mode 100644 (file)
index a028df5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-from timeside.core import *
-from timeside.api import *
-from timeside.decoder import *
-from timeside.grapher import *
-
-sample_dir = '../samples'
-img_dir = '../results/img'
-if not os.path.exists(img_dir):
-    os.makedirs(img_dir)
-
-test_dict = {'sweep.wav': 'waveform_wav.png',
-            'sweep.flac': 'waveform_flac.png',
-            'sweep.ogg': 'waveform_ogg.png',
-            'sweep.mp3': 'waveform_mp3.png',
-            }
-
-for source, image in test_dict.iteritems():
-    audio = os.path.join(os.path.dirname(__file__), sample_dir + os.sep + source)
-    image = img_dir + os.sep + image
-    print 'Test : decoder(%s) | waveform (%s)' % (source, image)
-    decoder  = FileDecoder(audio)
-    waveform = Waveform(width=1024, height=256, bg_color=(255,255,255), color_scheme='default')
-    (decoder | waveform).run()
-    print 'frames per pixel = ', waveform.samples_per_pixel
-    print "render waveform to: %s" %  image
-    waveform.render(image)
diff --git a/tests/api/test_spectrogram.py b/tests/api/test_spectrogram.py
new file mode 100644 (file)
index 0000000..a16874e
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+import os
+from timeside.core import *
+from timeside.api import *
+from timeside.decoder import *
+from timeside.grapher import *
+
+sample_dir = '../samples'
+img_dir = '../results/img'
+if not os.path.exists(img_dir):
+    os.mkdir(img_dir)
+
+test_dict = {'sweep.wav': 'spec_wav.png',
+            'sweep.flac': 'spec_flac.png',
+            'sweep.ogg': 'spec_ogg.png',
+            'sweep.mp3': 'spec_mp3.png',
+            }
+
+for source, image in test_dict.iteritems():
+    audio = os.path.join(os.path.dirname(__file__), sample_dir + os.sep + source)
+    image = img_dir + os.sep + image
+    print 'Test : decoder(%s) | waveform (%s)' % (source, image)
+    decoder  = FileDecoder(audio)
+    spectrogram = Spectrogram()
+    (decoder | spectrogram).run()
+    print 'frames per pixel = ', spectrogram.samples_per_pixel
+    print "render spectrogram to: %s" %  image
+    spectrogram.render(image)
+
+
+
diff --git a/tests/api/test_waveform.py b/tests/api/test_waveform.py
new file mode 100644 (file)
index 0000000..a028df5
--- /dev/null
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+
+import os
+from timeside.core import *
+from timeside.api import *
+from timeside.decoder import *
+from timeside.grapher import *
+
+sample_dir = '../samples'
+img_dir = '../results/img'
+if not os.path.exists(img_dir):
+    os.makedirs(img_dir)
+
+test_dict = {'sweep.wav': 'waveform_wav.png',
+            'sweep.flac': 'waveform_flac.png',
+            'sweep.ogg': 'waveform_ogg.png',
+            'sweep.mp3': 'waveform_mp3.png',
+            }
+
+for source, image in test_dict.iteritems():
+    audio = os.path.join(os.path.dirname(__file__), sample_dir + os.sep + source)
+    image = img_dir + os.sep + image
+    print 'Test : decoder(%s) | waveform (%s)' % (source, image)
+    decoder  = FileDecoder(audio)
+    waveform = Waveform(width=1024, height=256, bg_color=(255,255,255), color_scheme='default')
+    (decoder | waveform).run()
+    print 'frames per pixel = ', waveform.samples_per_pixel
+    print "render waveform to: %s" %  image
+    waveform.render(image)
diff --git a/timeside/decoder/utils.py b/timeside/decoder/utils.py
new file mode 100644 (file)
index 0000000..b806e1e
--- /dev/null
@@ -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
+