00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "Differentiator.h"
00020
00021 using std::ostringstream;
00022 using namespace Marsyas;
00023
00024 Differentiator::Differentiator(mrs_string name):MarSystem("Differentiator", name)
00025 {
00026 }
00027
00028 Differentiator::Differentiator(const Differentiator& a) : MarSystem(a)
00029 {
00030 }
00031
00032
00033 Differentiator::~Differentiator()
00034 {
00035 }
00036
00037 MarSystem*
00038 Differentiator::clone() const
00039 {
00040 return new Differentiator(*this);
00041 }
00042
00043 void
00044 Differentiator::myUpdate(MarControlPtr sender)
00045 {
00046 MRSDIAG("Differentiator.cpp - Differentiator:myUpdate");
00047
00048
00049
00050 MarSystem::myUpdate(sender);
00051
00052
00053 buffer_.stretch(inObservations_);
00054 buffer_.setval(0);
00055 }
00056
00057 void
00058 Differentiator::myProcess(realvec& in, realvec& out)
00059 {
00060 mrs_natural t,o;
00061 for (o=0; o < inObservations_; o++)
00062 {
00063
00064
00065 out(o,0) = in(o,0) - buffer_(o);
00066
00067 for (t = 1; t < inSamples_; t++)
00068 {
00069 out(o, t) = in(o, t) - in(o, t-1);
00070 }
00071
00072 buffer_(o) = in(o, inSamples_-1);
00073 }
00074 }