From 8aa0ef87aecc9f5343d668f34002611bc2e0bdb2 Mon Sep 17 00:00:00 2001 From: yomguy <> Date: Wed, 31 Dec 2008 17:29:04 +0000 Subject: [PATCH] add Mean DC shift analyzer, fix duration analysis, cleanup --- telemeta/analysis/__init__.py | 1 + telemeta/analysis/dc.py | 31 +++++++++++++++++++++++++++++++ telemeta/analysis/duration.py | 2 +- telemeta/analysis/mean_level.py | 1 - 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 telemeta/analysis/dc.py diff --git a/telemeta/analysis/__init__.py b/telemeta/analysis/__init__.py index 748879ee..080b2749 100644 --- a/telemeta/analysis/__init__.py +++ b/telemeta/analysis/__init__.py @@ -8,5 +8,6 @@ from telemeta.analysis.samplerate import * from telemeta.analysis.duration import * from telemeta.analysis.max_level import * from telemeta.analysis.mean_level import * +from telemeta.analysis.dc import * diff --git a/telemeta/analysis/dc.py b/telemeta/analysis/dc.py new file mode 100644 index 00000000..9f3c083c --- /dev/null +++ b/telemeta/analysis/dc.py @@ -0,0 +1,31 @@ +# 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 + +from telemeta.analysis.core import * +from telemeta.analysis.api import IMediaItemAnalyzer +import numpy + +class MeanDCShiftAnalyser(AudioProcessor): + """Media item analyzer driver interface""" + + implements(IMediaItemAnalyzer) + + def get_id(self): + return "dc" + + def get_name(self): + return "Mean DC shift" + + def get_unit(self): + return "%" + + def render(self, media_item, options=None): + self.pre_process(media_item) + samples = self.get_mono_samples() + return numpy.round(100*numpy.mean(samples),4) diff --git a/telemeta/analysis/duration.py b/telemeta/analysis/duration.py index a215b78a..41c1eb89 100644 --- a/telemeta/analysis/duration.py +++ b/telemeta/analysis/duration.py @@ -28,5 +28,5 @@ class DurationAnalyzer(AudioProcessor): def render(self, media_item, options=None): self.pre_process(media_item) - media_time = numpy.round(float(self.frames)/(float(self.samplerate)*float(self.channels)),0) + media_time = numpy.round(float(self.frames)/float(self.samplerate),0) return datetime.timedelta(0,media_time) diff --git a/telemeta/analysis/mean_level.py b/telemeta/analysis/mean_level.py index 630080d9..aeb5e16d 100644 --- a/telemeta/analysis/mean_level.py +++ b/telemeta/analysis/mean_level.py @@ -28,5 +28,4 @@ class MeanLevelAnalyser(AudioProcessor): def render(self, media_item, options=None): self.pre_process(media_item) samples = self.get_mono_samples() - size = numpy.size(samples) return numpy.round(20*numpy.log10(numpy.mean(numpy.sqrt(numpy.square(samples)))),2) -- 2.39.5