Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Mueller <nexyon@gmail.com>2010-08-02 02:33:50 +0400
committerJoerg Mueller <nexyon@gmail.com>2010-08-02 02:33:50 +0400
commit52ef66da4d785414e7ae5a60dd44a01727514169 (patch)
treecb9a26f84277abae1a4f47ef6f445a4ef0466587 /intern/audaspace/FX/AUD_AccumulatorFactory.cpp
parent5c9cf81cf98c99e52064b0cd45be3b2eaba9e40c (diff)
Audaspace:
* Created awesome filter classes :) * Made all filter effects use the filter classes instead of having the same implementation everywhere. * Added a Python API for LTI IIR filters. * Fixed a warning in creator.c that was introduced when adding game autoplay.
Diffstat (limited to 'intern/audaspace/FX/AUD_AccumulatorFactory.cpp')
-rw-r--r--intern/audaspace/FX/AUD_AccumulatorFactory.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
index 6e9130d174b..0c51e5241e4 100644
--- a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
+++ b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
@@ -24,7 +24,27 @@
*/
#include "AUD_AccumulatorFactory.h"
-#include "AUD_AccumulatorReader.h"
+#include "AUD_CallbackIIRFilterReader.h"
+
+sample_t accumulatorFilterAdditive(AUD_CallbackIIRFilterReader* reader, void* useless)
+{
+ float in = reader->x(0);
+ float lastin = reader->x(-1);
+ float out = reader->y(-1) + in - lastin;
+ if(in > lastin)
+ out += in - lastin;
+ return out;
+}
+
+sample_t accumulatorFilter(AUD_CallbackIIRFilterReader* reader, void* useless)
+{
+ float in = reader->x(0);
+ float lastin = reader->x(-1);
+ float out = reader->y(-1);
+ if(in > lastin)
+ out += in - lastin;
+ return out;
+}
AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_IFactory* factory,
bool additive) :
@@ -35,5 +55,6 @@ AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_IFactory* factory,
AUD_IReader* AUD_AccumulatorFactory::createReader() const
{
- return new AUD_AccumulatorReader(getReader(), m_additive);
+ return new AUD_CallbackIIRFilterReader(getReader(), 2, 2,
+ m_additive ? accumulatorFilterAdditive : accumulatorFilter);
}