]> git.parisson.com Git - telemeta.git/commitdiff
Add some visualizers
authoryomguy <>
Thu, 21 Aug 2008 15:14:07 +0000 (15:14 +0000)
committeryomguy <>
Thu, 21 Aug 2008 15:14:07 +0000 (15:14 +0000)
telemeta/visualization/spectrogram4.py [new file with mode: 0644]
telemeta/visualization/waveform4.py [new file with mode: 0644]

diff --git a/telemeta/visualization/spectrogram4.py b/telemeta/visualization/spectrogram4.py
new file mode 100644 (file)
index 0000000..f92cd33
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2008 Parisson SARL
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://svn.parisson.org/telemeta/TelemetaLicense.
+#
+# Author: Guillaume Pellerin <pellerin@parisson.com>
+
+from telemeta.core import *
+from telemeta.visualization.api import IMediaItemVisualizer
+from django.conf import settings
+from tempfile import NamedTemporaryFile
+from telemeta.visualization.wav2png import *
+
+class SpectrogramVisualizer3(Component):
+    """Spectrogram visualization driver (python style)"""
+
+    implements(IMediaItemVisualizer)
+
+    def get_id(self):
+        return "spectrogram4"
+
+    def get_name(self):
+        return "Spectrogram (audiolab large)"
+    
+    def render(self, media_item, options=None):
+        """Generator that streams the spectrogram as a PNG image with a python method"""
+
+        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        pngFile_w = NamedTemporaryFile(suffix='.png')
+        pngFile_s = NamedTemporaryFile(suffix='.png')
+        image_width = 1800
+        image_height = 300
+        fft_size = 2048
+        args = (wav_file, pngFile_w.name, pngFile_s.name, image_width, image_height, fft_size)
+        create_png(*args)
+
+        buffer = pngFile_s.read(0xFFFF)
+        while buffer:
+            yield buffer
+            buffer = pngFile_s.read(0xFFFF)
+
+        pngFile_w.close()
+        pngFile_s.close()
diff --git a/telemeta/visualization/waveform4.py b/telemeta/visualization/waveform4.py
new file mode 100644 (file)
index 0000000..07ff6de
--- /dev/null
@@ -0,0 +1,46 @@
+# Copyright (C) 2008 Parisson SARL
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://svn.parisson.org/telemeta/TelemetaLicense.
+#
+# Author: Guillaume Pellerin <pellerin@parisson.com>
+
+from telemeta.core import *
+from telemeta.visualization.api import IMediaItemVisualizer
+from django.conf import settings
+from tempfile import NamedTemporaryFile
+from telemeta.visualization.wav2png import *
+
+class WaveFormVisualizer(Component):
+    """WaveForm visualization driver (python style)"""
+
+    implements(IMediaItemVisualizer)
+
+    def get_id(self):
+        return "waveform4"
+
+    def get_name(self):
+        return "Waveform (audiolab large)"
+    
+    def render(self, media_item, options=None):
+        """Generator that streams the waveform as a PNG image with a python method"""
+
+        wav_file = settings.MEDIA_ROOT + '/' + media_item.file
+        pngFile_w = NamedTemporaryFile(suffix='.png')
+        pngFile_s = NamedTemporaryFile(suffix='.png')
+        image_width = 1800
+        image_height = 300
+        fft_size = 2048
+        args = (wav_file, pngFile_w.name, pngFile_s.name, image_width, image_height, fft_size)
+        create_png(*args)
+
+        buffer = pngFile_w.read(0xFFFF)
+        while buffer:
+            yield buffer
+            buffer = pngFile_w.read(0xFFFF)
+
+        pngFile_w.close()
+        pngFile_s.close()
+