diff options
author | Joerg Mueller <nexyon@gmail.com> | 2010-08-02 02:33:50 +0400 |
---|---|---|
committer | Joerg Mueller <nexyon@gmail.com> | 2010-08-02 02:33:50 +0400 |
commit | 52ef66da4d785414e7ae5a60dd44a01727514169 (patch) | |
tree | cb9a26f84277abae1a4f47ef6f445a4ef0466587 /intern/audaspace/FX/AUD_AccumulatorFactory.cpp | |
parent | 5c9cf81cf98c99e52064b0cd45be3b2eaba9e40c (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.cpp | 25 |
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); } |