From 9b2c9fa2a15456f4ec418837d07095657761491e Mon Sep 17 00:00:00 2001 From: yomguy Date: Sun, 29 Aug 2010 22:43:04 +0000 Subject: [PATCH] add dc and men_level analyzers, fix max_level --- timeside/analyzer/__init__.py | 7 ++++--- timeside/analyzer/dc.py | 4 ++-- timeside/analyzer/duration.py | 8 +++++++- timeside/analyzer/max_level.py | 13 ++++++------- timeside/analyzer/mean_level.py | 9 ++++----- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/timeside/analyzer/__init__.py b/timeside/analyzer/__init__.py index 6259160..19db5e3 100644 --- a/timeside/analyzer/__init__.py +++ b/timeside/analyzer/__init__.py @@ -1,8 +1,9 @@ -# -*- coding: utf-8 -*- + # -*- coding: utf-8 -*- from core import * + from duration import * from max_level import * +from mean_level import * +from dc import * -#from timeside.analyzer.mean_level import * -#from timeside.analyzer.dc import * diff --git a/timeside/analyzer/dc.py b/timeside/analyzer/dc.py index e92cfd5..d293d76 100644 --- a/timeside/analyzer/dc.py +++ b/timeside/analyzer/dc.py @@ -19,11 +19,11 @@ # Author: Guillaume Pellerin +from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter from timeside.analyzer.core import * from timeside.api import IValueAnalyzer import numpy - class MeanDCShift(Processor): implements(IValueAnalyzer) @@ -51,7 +51,7 @@ class MeanDCShift(Processor): return "%s %s" % (str(self.value), unit()) def process(self, frames, eod=False): - self.value = numpy.round(100*numpy.mean(samples),4) + self.value = numpy.round(100*numpy.mean(frames),3) return frames, eod def result(self): diff --git a/timeside/analyzer/duration.py b/timeside/analyzer/duration.py index 7c2269c..47aa59e 100644 --- a/timeside/analyzer/duration.py +++ b/timeside/analyzer/duration.py @@ -49,7 +49,13 @@ class Duration(Processor): @interfacedoc def unit(): return "seconds" + + def __str__(self): + return "%s %s" % (str(self.value), unit()) + def process(self, frames, eod=False): + return frames, eod + def result(self): return self.input_nframes / float(self.input_samplerate) - \ No newline at end of file + diff --git a/timeside/analyzer/max_level.py b/timeside/analyzer/max_level.py index 9ecc323..58ea322 100644 --- a/timeside/analyzer/max_level.py +++ b/timeside/analyzer/max_level.py @@ -23,6 +23,7 @@ from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter from timeside.analyzer.core import * from timeside.api import IValueAnalyzer +import numpy class MaxLevel(Processor): @@ -31,7 +32,7 @@ class MaxLevel(Processor): @interfacedoc def setup(self, channels=None, samplerate=None, nframes=None): super(MaxLevel, self).setup(channels, samplerate, nframes) - self.max_value = 0 + self.value = 0 @staticmethod @interfacedoc @@ -46,17 +47,15 @@ class MaxLevel(Processor): @staticmethod @interfacedoc def unit(): - # power? amplitude? - return "" + return "dB" def process(self, frames, eod=False): - max = frames.max() - if max > self.max_value: + max = round(20*numpy.log(frames.max()), 3) + if max > self.value: self.max_value = max - return frames, eod def result(self): - return self.max_value + return self.value diff --git a/timeside/analyzer/mean_level.py b/timeside/analyzer/mean_level.py index 8b68324..9d114f0 100644 --- a/timeside/analyzer/mean_level.py +++ b/timeside/analyzer/mean_level.py @@ -19,6 +19,7 @@ # Author: Guillaume Pellerin +from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter from timeside.analyzer.core import * from timeside.api import IValueAnalyzer import numpy @@ -51,12 +52,10 @@ class MeanLevel(Processor): return "%s %s" % (str(self.value), unit()) def process(self, frames, eod=False): - max = numpy.round(20*numpy.log10(numpy.mean(numpy.sqrt(numpy.square(frames.max())))), 2) - if max > self.value: - self.value = max - + value = numpy.round(20*numpy.log10(numpy.mean(numpy.sqrt(numpy.square(frames)))), 3) + if value > self.value: + self.value = value return frames, eod def result(self): return self.value - -- 2.39.5