00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "ShiftOutput.h"
00020
00021 using namespace std;
00022 using namespace Marsyas;
00023
00024 ShiftOutput::ShiftOutput(mrs_string name):MarSystem("ShiftOutput",name)
00025 {
00026 addControls();
00027 }
00028
00029 ShiftOutput::ShiftOutput(const ShiftOutput& a):MarSystem(a)
00030 {
00031 ctrl_Interpolation_ = getctrl("mrs_natural/Interpolation");
00032 }
00033
00034 ShiftOutput::~ShiftOutput()
00035 {
00036 }
00037
00038 MarSystem*
00039 ShiftOutput::clone() const
00040 {
00041 return new ShiftOutput(*this);
00042 }
00043
00044 void
00045 ShiftOutput::addControls()
00046 {
00047 addctrl("mrs_natural/Interpolation", (mrs_natural)MRS_DEFAULT_SLICE_NSAMPLES / 2, ctrl_Interpolation_);
00048 setctrlState("mrs_natural/Interpolation", true);
00049 }
00050
00051 void
00052 ShiftOutput::myUpdate(MarControlPtr sender)
00053 {
00054 (void) sender;
00055
00056 interp_ = ctrl_Interpolation_->to<mrs_natural>();
00057
00058 ctrl_onSamples_->setValue(ctrl_Interpolation_, NOUPDATE);
00059 ctrl_onObservations_->setValue(ctrl_inObservations_, NOUPDATE);
00060 ctrl_osrate_->setValue(ctrl_israte_, NOUPDATE);
00061 ctrl_onObsNames_->setValue(ctrl_inObsNames_, NOUPDATE);
00062 }
00063
00064 void
00065 ShiftOutput::myProcess(realvec& in, realvec& out)
00066 {
00067 mrs_natural t,o;
00068
00069 if(interp_ > inSamples_)
00070 out.setval(0.0);
00071
00072 for(o=0; o< inObservations_; ++o)
00073 for (t = 0; t < min(inSamples_,interp_); t++)
00074 out(o,t) = in(o,t);
00075 }
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085