00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "AbsMax.h"
00021
00022 using std::ostringstream;
00023 using namespace Marsyas;
00024
00025 AbsMax::AbsMax(mrs_string name): MarSystem("AbsMax",name)
00026 {
00027 }
00028
00029 AbsMax::~AbsMax()
00030 {
00031 }
00032
00033 MarSystem*
00034 AbsMax::clone() const
00035 {
00036 return new AbsMax(*this);
00037 }
00038
00039 void
00040 AbsMax::myUpdate(MarControlPtr sender)
00041 {
00042
00043
00044 MarSystem::myUpdate(sender);
00045
00046
00047 setControl("mrs_natural/onSamples", (mrs_natural)1);
00048 setControl("mrs_real/osrate",
00049 getControl("mrs_real/israte")->to<mrs_real>() / getControl("mrs_natural/inSamples")->to<mrs_natural>()
00050 );
00051
00052 mrs_string inObsNames = ctrl_inObsNames_->to<mrs_string>();
00053 ctrl_onObsNames_->setValue(obsNamesAddPrefix(inObsNames, "AbsMax_"), NOUPDATE);
00054 }
00055
00056 void
00057 AbsMax::myProcess(realvec& in, realvec& out)
00058 {
00059 mrs_natural o,t;
00060 for (o=0; o < inObservations_; ++o)
00061 {
00062 max_ = 0.0;
00063 for (t=0; t < inSamples_; ++t)
00064 {
00065 if (fabs(in(o,t)) > max_)
00066 {
00067 max_ = fabs(in(o,t));
00068 }
00069 }
00070 out(o,0) = max_;
00071 }
00072 }