00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "Mono2Stereo.h"
00021
00022 using std::ostringstream;
00023 using namespace Marsyas;
00024
00025 Mono2Stereo::Mono2Stereo(mrs_string name):MarSystem("Mono2Stereo", name)
00026 {
00027
00028
00029
00030
00031
00032
00033
00034 addControls();
00035 }
00036
00037 Mono2Stereo::Mono2Stereo(const Mono2Stereo& a) : MarSystem(a)
00038 {
00039 }
00040
00041 Mono2Stereo::~Mono2Stereo()
00042 {
00043 }
00044
00045 MarSystem*
00046 Mono2Stereo::clone() const
00047 {
00048 return new Mono2Stereo(*this);
00049 }
00050
00051 void
00052 Mono2Stereo::addControls()
00053 {
00054 }
00055
00056 void
00057 Mono2Stereo::myUpdate(MarControlPtr sender)
00058 {
00059 (void) sender;
00060 setctrl("mrs_natural/onSamples", getctrl("mrs_natural/onSamples"));
00061
00062 mrs_natural inObservations = getctrl("mrs_natural/inObservations")->to<mrs_natural>();
00063
00064 if (inObservations == 1)
00065 {
00066 setctrl("mrs_natural/onObservations", 2);
00067 mrs_string inObsNames = getctrl("mrs_string/inObsNames")->to<mrs_string>();
00068 inObsNames += ",";
00069 inObsNames += inObsNames;
00070 setctrl("mrs_string/onObsNames", inObsNames);
00071 }
00072 else
00073 {
00074 setctrl("mrs_natural/onObservations", inObservations);
00075 setctrl("mrs_string/onObsNames", getctrl("mrs_string/inObsNames"));
00076 }
00077 setctrl("mrs_real/osrate", getctrl("mrs_real/israte"));
00078
00079
00080
00081
00082 }
00083
00084
00085 void
00086 Mono2Stereo::myProcess(realvec& in, realvec& out)
00087 {
00088 mrs_natural t,o;
00089 if (inObservations_ != 1)
00090 {
00091 for (o=0; o < inObservations_; o++)
00092 {
00093 for (t = 0; t < inSamples_; t++)
00094 {
00095 out(o,t) = in(o,t);
00096 }
00097 }
00098 }
00099
00100 else
00101 {
00102 for (o=0; o < onObservations_; o++)
00103 for (t = 0; t < inSamples_; t++)
00104 {
00105 out(o,t) = in(0,t);
00106 }
00107
00108 }
00109
00110
00111 }
00112
00113
00114
00115
00116
00117
00118
00119