本文整理汇总了C++中MarSystem::getctrl方法的典型用法代码示例。如果您正苦于以下问题:C++ MarSystem::getctrl方法的具体用法?C++ MarSystem::getctrl怎么用?C++ MarSystem::getctrl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MarSystem
的用法示例。
在下文中一共展示了MarSystem::getctrl方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
void
toy_with_spectral_single(mrs_string sfname)
{
MarSystemManager mng;
MarSystem *net = mng.create("Series", "net");
net->addMarSystem(mng.create("SoundFileSource", "src"));
net->addMarSystem(mng.create("ShiftInput", "si"));
net->addMarSystem(mng.create("Windowing", "win"));
net->addMarSystem(mng.create("Spectrum", "spec"));
net->addMarSystem(mng.create("PowerSpectrum", "pspec"));
net->updControl("SoundFileSource/src/mrs_string/filename", sfname);
net->updControl("mrs_natural/inSamples", 1024);
net->updControl("ShiftInput/si/mrs_natural/winSize", 1024);
net->updControl("Windowing/win/mrs_string/type", "Hanning");
MarSystem *fan = mng.create("Fanout", "fan");
net->addMarSystem(fan);
fan->addMarSystem(mng.create("SpectralFlatnessAllBands", "sfab"));
while ( net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>() )
{
net->tick();
mrs_realvec v = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
for (mrs_natural i = 0; i<v.getSize(); ++i)
{
printf("%.5g\t", v(i));
}
cout<<endl;
}
delete net;
}
示例2: newMidiInfo
void newMidiInfo()
{
/*
This function describes using the MidiInput object and MarControlPointers
to read midi controls in a loop. The disadvantage of this approach is that
MidiINput will only return the last midi value between buffers. Change the
buffer size you would like more precision and throughput for midi messages.
*/
MarSystemManager mng;
MarSystem* series = mng.create("Series", "series");
series->addMarSystem(mng.create("AudioSource","src"));
series->addMarSystem(mng.create("MidiInput","midiin"));
series->updctrl("mrs_real/israte", 44100.0);
series->updctrl("mrs_real/osrate", 44100.0);
// to change how often marsyas grabs messages change the buffersize
series->updctrl("AudioSource/src/mrs_natural/bufferSize", 64);
series->updctrl("AudioSource/src/mrs_bool/initAudio",true);
series->updctrl("MidiInput/midiin/mrs_bool/initmidi",true);
MarControlPtr b1 = series->getctrl("MidiInput/midiin/mrs_natural/byte1");
MarControlPtr b2 = series->getctrl("MidiInput/midiin/mrs_natural/byte2");
MarControlPtr b3 = series->getctrl("MidiInput/midiin/mrs_natural/byte3");
while(1)
{
const mrs_natural& byte1 = b1->to<mrs_natural>();
const mrs_natural& byte2 = b2->to<mrs_natural>();
const mrs_natural& byte3 = b3->to<mrs_natural>();
std::cout << "Byte 1: " << byte1 << " Byte 2: " << byte2 << " Byte 3: " << byte3 << endl;
series->tick();
}
}
示例3: while
// please keep this at the end of all the toy_with_ functions.
// to use, copy this and paste it above, then modify as needed
void
toy_with_null(mrs_string sfname)
{
MarSystemManager mng;
MarSystem *net = mng.create("Series", "net");
net->addMarSystem(mng.create("SoundFileSource", "src"));
net->addMarSystem(mng.create("ShiftInput", "si"));
// you probably want to add more here
net->addMarSystem(mng.create("Spectrum", "spec"));
net->addMarSystem(mng.create("PowerSpectrum", "pspec"));
net->addMarSystem(mng.create("Spectrum2Chroma", "s2c"));
net->addMarSystem(mng.create("PlotSink", "ps"));
net->updControl("SoundFileSource/src/mrs_string/filename", sfname);
net->updControl("mrs_natural/inSamples", 512);
net->updControl("mrs_natural/inSamples", 1024);
net->updControl("ShiftInput/si/mrs_natural/winSize", 512);
while ( net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>() )
{
net->tick();
#if 0
mrs_realvec v = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
for (mrs_natural i = 0; i<v.getSize(); ++i)
{
printf("%.5g\t", v(i));
}
cout<<endl;
#endif
}
delete net;
}
示例4: sfplayFile
// Play soundfile given by sfName, msys contains the playback
// network of MarSystem objects
void sfplayFile(MarSystem& msys, mrs_natural offset, mrs_natural duration,
mrs_real start, mrs_real length, mrs_real gain, mrs_real repetitions, string sfName )
{
msys.updctrl("SoundFileSource/src/mrs_string/filename", sfName);
mrs_natural nChannels = msys.getctrl("SoundFileSource/src/mrs_natural/nChannels")->to<mrs_natural>();
mrs_real srate = msys.getctrl("SoundFileSource/src/mrs_real/israte")->to<mrs_real>();
// playback offset & duration
offset = (mrs_natural) (start * srate * nChannels);
duration = (mrs_natural) (length * srate * nChannels);
// udpate controls
msys.updctrl("mrs_natural/inSamples", MRS_DEFAULT_SLICE_NSAMPLES);
msys.updctrl("Gain/gt/mrs_real/gain", gain);
msys.updctrl("SoundFileSource/src/mrs_natural/pos", offset);
mrs_natural wc=0;
mrs_natural samplesPlayed = 0;
mrs_natural onSamples = msys.getctrl("mrs_natural/onSamples")->to<mrs_natural>();
// mrs_natural repeatId = 1;
while (msys.getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>())
{
msys.tick();
wc ++;
samplesPlayed += onSamples;
}
cerr << "Played " << wc << " slices of " << onSamples << " samples" << endl;
}
示例5: fabs
mrs_real
TranscriberExtract::getNormalizingGain(const std::string audioFilename)
{
mrs_real maxVal = 0.0;
MarSystem* pnet = mng.create("Series", "pnet");
addFileSource(pnet, audioFilename);
// forces Marsyas to write to processedData
pnet->addMarSystem(mng.create("Gain", "null"));
while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() )
{
pnet->tick();
const realvec& processedData =
pnet->getctrl("SoundFileSource/src/mrs_realvec/processedData")->to<mrs_realvec>();
for (mrs_natural i=0; i< processedData.getSize(); ++i)
{
mrs_real val = fabs(processedData(i));
if (val > maxVal)
maxVal = val;
}
}
delete pnet;
return 1.0/maxVal;
}
示例6: run
// thread code
void* run(void * arg)
{
thread_data* data = (thread_data*) arg;
MarSystemManager mng;
NetworkTCPSource* src = new NetworkTCPSource("src");
MarSystem* featureNetwork = mng.create("Series", "featureNetwork");
featureNetwork->addMarSystem(src);
featureNetwork->addMarSystem(mng.create("AudioSink", "sink"));
// featureNetwork->addMarSystem(mng.create("PlotSink", "psink"));
featureNetwork->updctrl("NetworkTCPSource/src/mrs_natural/dataPort", data->dataPort);
featureNetwork->updctrl("NetworkTCPSource/src/mrs_natural/controlsPort", data->controlsPort);
featureNetwork->linkctrl("mrs_bool/hasData", "NetworkTCPSource/src/mrs_bool/hasData");
src->refresh();
mrs_natural wc = 0;
mrs_real* controls = 0;
mrs_natural onSamples = featureNetwork->getctrl("mrs_natural/onSamples")->to<mrs_natural>();
// start the network
while ( featureNetwork->getctrl("mrs_bool/hasData")->to<mrs_bool>() ) {
try {
controls = featureNetwork->recvControls();
if ( controls != 0 ) {
// get some reference controls, so if they have changed we update them
mrs_natural inSamples = featureNetwork->getctrl("mrs_natural/inSamples")->to<mrs_natural>();
mrs_natural inObservations = featureNetwork->getctrl("mrs_natural/inObservations")->to<mrs_natural>();
mrs_real israte = featureNetwork->getctrl("mrs_real/israte")->to<mrs_real>();
if ( (mrs_natural)controls[1] != inSamples || (mrs_natural)controls[2] != inObservations
|| controls[3] != israte ) {
featureNetwork->updctrl("mrs_natural/inSamples", (mrs_natural)controls[1]);
featureNetwork->updctrl("mrs_natural/inObservations", (mrs_natural)controls[2]);
featureNetwork->updctrl("mrs_real/israte", controls[3]);
}
}
featureNetwork->tick(); // everything happens here
} catch ( SocketException e ) {
cerr << "Played " << wc << " slices of " << onSamples << " samples" << endl;
pthread_exit(NULL);
}
wc++;
}
cout << "played - " << wc << " slices of " << onSamples << " samples" << endl;
pthread_exit( NULL );
}
示例7: harmonics
// ********************** start toys **********
void
toy_with_harmonicStrength(mrs_string sfname)
{
MarSystemManager mng;
MarSystem *net = mng.create("Series", "net");
net->addMarSystem(mng.create("SoundFileSource", "src"));
net->addMarSystem(mng.create("ShiftInput", "si"));
net->addMarSystem(mng.create("Windowing", "win"));
net->addMarSystem(mng.create("Spectrum", "spec"));
net->addMarSystem(mng.create("PowerSpectrum", "pspec"));
net->addMarSystem(mng.create("HarmonicStrength", "harm"));
net->updControl("SoundFileSource/src/mrs_string/filename", sfname);
net->updControl("mrs_natural/inSamples", 512);
net->updControl("ShiftInput/si/mrs_natural/winSize", 1024);
net->updControl("Windowing/win/mrs_string/type", "Hanning");
mrs_natural num_harmonics = 30;
realvec harmonics(num_harmonics);
/*
cout<<"---------------------------"<<endl;
cout<<"Relative harmonic strengths"<<endl;
for (mrs_natural h = 0; h<num_harmonics; ++h)
{
if (h==num_harmonics-1)
{
cout<<"0.5"<<"\t";
harmonics(h) = 0.5;
}
else
{
cout<<h<<"\t";
harmonics(h) = h+1;
}
}
cout<<endl;
*/
//net->updControl("HarmonicStrength/harm/mrs_realvec/harmonics", harmonics);
net->updControl("HarmonicStrength/harm/mrs_natural/harmonicsSize", num_harmonics);
net->updControl("HarmonicStrength/harm/mrs_real/harmonicsWidth", 0.0);
net->updControl("HarmonicStrength/harm/mrs_natural/type", 1);
net->updControl("HarmonicStrength/harm/mrs_real/base_frequency", 200.0);
// typical value for piano strings
net->updControl("HarmonicStrength/harm/mrs_real/inharmonicity_B", 2e-5);
while ( net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>() )
{
net->tick();
mrs_realvec v = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
for (mrs_natural h = 0; h<num_harmonics; ++h)
{
//printf("%.2f\t", v(h));
printf("%.8g\t", v(h));
}
cout<<endl;
}
delete net;
}
示例8: execute
bool MslCommandRun::execute()
{
MarSystem* msys;
if ( workingSet.find(name) != workingSet.end() ) {
msys = (MarSystem *)workingSet[name];
} else {
cout << "Cannot find MarSystem: " << name << endl;
return false;
}
mrs_natural wc=0;
mrs_natural samplesPlayed = 0;
mrs_natural onSamples = msys->getctrl("mrs_natural/onSamples")->to<mrs_natural>();
mrs_real* controls = 0;
while (true) {
try {
controls = msys->recvControls();
if ( controls != 0 ) {
// get some reference controls, so if they have changed we update them
mrs_natural inSamples = msys->getctrl("mrs_natural/inSamples")->to<mrs_natural>();
mrs_natural inObservations = msys->getctrl("mrs_natural/inObservations")->to<mrs_natural>();
mrs_real israte = msys->getctrl("mrs_real/israte")->to<mrs_real>();
if ( (mrs_natural)controls[1] != inSamples || (mrs_natural)controls[2] != inObservations
|| controls[3] != israte ) {
msys->updctrl("mrs_natural/inSamples",(mrs_natural) controls[1]);
msys->updctrl("mrs_natural/inObservations", (mrs_natural)controls[2]);
msys->updctrl("mrs_real/israte", controls[3]);
}
}
msys->tick();
}
catch( SocketException e ) {
cout << "Played " << wc << " slices of " << onSamples << " samples" << endl;
exit(1);
}
wc ++;
if ( !msys->getctrl("mrs_bool/hasData")->isTrue() ) {
break;
}
samplesPlayed += onSamples;
} // while
cout << "Played " << wc << " slices of " << onSamples << " samples" << endl;
return true;
}
示例9: getFileLengthForWaveform
int getFileLengthForWaveform(string inFileName, int windowSize_, double& min, double& max) {
MarSystemManager mng;
// A series to contain everything
MarSystem* net = mng.create("Series", "net");
// The sound file
net->addMarSystem(mng.create("SoundFileSource", "src"));
net->addMarSystem(mng.create("Stereo2Mono", "s2m"));
net->addMarSystem(mng.create("ShiftInput", "si"));
net->updControl("SoundFileSource/src/mrs_string/filename", inFileName);
mrs_real srate = net->getControl("SoundFileSource/src/mrs_real/osrate")->to<mrs_real>();
if ((position_ == 0) && (start_ != 0.0))
position_ = (mrs_natural) (srate * start_);
if ((ticks_ == -1) && (length_ != -1.0))
ticks_ = (mrs_natural) ((length_ * srate) / windowSize_);
net->updControl("SoundFileSource/src/mrs_natural/pos", position_);
net->updControl("SoundFileSource/src/mrs_natural/inSamples", hopSize_);
net->updControl("ShiftInput/si/mrs_natural/winSize", windowSize_);
// Compute the AbsMax of this window
net->addMarSystem(mng.create("AbsMax","absmax"));
realvec processedData;
int length = 0;
while (net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>()
&& (ticks_ == -1 || length < ticks_)) {
net->tick();
length++;
processedData = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
if (processedData(0) < min)
min = processedData(0);
if (processedData(0) > max)
max = processedData(0);
}
delete net;
if (verboseopt_) {
cout << "length=" << length << endl;
cout << "max=" << max << endl;
cout << "min=" << min << endl;
}
return length;
}
示例10: value
void
distance_matrix()
{
if (!wekafname_Set()) return;
cout << "Distance matrix calculation using " << wekafname_ << endl;
wekafname_ = inputdir_ + wekafname_;
MarSystemManager mng;
MarSystem* net = mng.create("Series", "net");
MarSystem* wsrc = mng.create("WekaSource", "wsrc");
net->addMarSystem(wsrc);
//!!!: mode control
net->updControl("WekaSource/wsrc/mrs_string/validationMode", "OutputInstancePair");
net->updControl("WekaSource/wsrc/mrs_bool/normMaxMin", true);
net->updControl("WekaSource/wsrc/mrs_string/filename", wekafname_);
MarSystem* dmatrix = mng.create("SelfSimilarityMatrix", "dmatrix");
dmatrix->addMarSystem(mng.create("Metric", "dmetric"));
dmatrix->updControl("Metric/dmetric/mrs_string/metric", "euclideanDistance");
//!!!: lmartins: normalization can only be applied when we have all feature vectors in memory...
//... which is what we are trying to avoid here (having big realvecs in memory)...
//dmatrix->updControl("mrs_string/normalize", "MinMax");
net->addMarSystem(dmatrix);
//!!!: mode control
net->updControl("SelfSimilarityMatrix/dmatrix/mrs_natural/mode", 1); //FIXME: replace use of enum for strings?
//link controls between WekaSource and SelfSimilarityMatrix
net->linkControl("SelfSimilarityMatrix/dmatrix/mrs_natural/nInstances",
"WekaSource/wsrc/mrs_natural/nInstances");
net->linkControl("WekaSource/wsrc/mrs_realvec/instanceIndexes",
"SelfSimilarityMatrix/dmatrix/mrs_realvec/instanceIndexes");
ofstream oss;
oss.open(distancematrix_.c_str());
oss << "Marsyas-kea distance matrix" << endl;
while(!net->getctrl("SelfSimilarityMatrix/dmatrix/mrs_bool/done")->to<bool>())
{
const mrs_realvec& idxs = net->getctrl("SelfSimilarityMatrix/dmatrix/mrs_realvec/instanceIndexes")->to<mrs_realvec>();
oss << "(" << mrs_natural(idxs(0)) << "," << mrs_natural(idxs(1)) << ") = ";
net->tick();
const mrs_realvec& value = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
oss << value(0) << endl;
}
oss << endl;
}
示例11: addFileSource
void
TranscriberExtract::getAllFromAudio(const std::string audioFilename, realvec&
pitchList, realvec& ampList,
realvec& boundaries)
{
MarSystem* pitchSink = mng.create("RealvecSink", "pitchSink");
MarSystem* ampSink = mng.create("RealvecSink", "ampSink");
MarSystem* pnet = mng.create("Series", "pnet");
mrs_real srate = addFileSource(pnet, audioFilename);
// TODO: double the number of observations?
// pnet->updControl("SoundFileSource/src/mrs_natural/inSamples",256);
// pnet->addMarSystem(mng.create("ShiftInput", "shift"));
// pnet->updControl("ShiftInput/shift/mrs_natural/winSize",512);
MarSystem* fanout = mng.create("Fanout", "fanout");
fanout->addMarSystem(makePitchNet(srate, 100.0, pitchSink));
fanout->addMarSystem(makeAmplitudeNet(ampSink));
pnet->addMarSystem(fanout);
while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() )
pnet->tick();
pitchList = getPitchesFromRealvecSink(pitchSink, srate);
ampList = getAmpsFromRealvecSink(ampSink);
boundaries.create(2);
boundaries(0) = 0;
boundaries(1) = pitchList.getSize();
delete pnet;
}
示例12: getNormalizingGain
realvec
TranscriberExtract::getAmpsFromAudio(const std::string audioFilename)
{
mrs_real normalize = getNormalizingGain(audioFilename);
MarSystem* pnet = mng.create("Series", "pnet");
mrs_real srate;
srate = addFileSource(pnet, audioFilename);
pnet->addMarSystem(mng.create("Gain", "normalizing"));
pnet->updControl("Gain/normalizing/mrs_real/gain",normalize);
MarSystem* rvSink = mng.create("RealvecSink", "rvSink");
pnet->addMarSystem(makeAmplitudeNet(rvSink));
while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() )
pnet->tick();
realvec rmsList = getAmpsFromRealvecSink(rvSink);
delete pnet;
// normalize RMS
rmsList -= rmsList.minval();
mrs_real maxRms = rmsList.maxval();
if (maxRms != 0)
rmsList /= maxRms;
return rmsList;
}
示例13: processedData
// Variation that outputs RMS and Flux
void
output_rmsflux(string inFileName)
{
MarSystemManager mng;
MarSystem* net = mng.create("Series", "net");
net->addMarSystem(mng.create("SoundFileSource", "src"));
net->addMarSystem(mng.create("Stereo2Mono", "s2m"));
// A fanout that will do both RMS and Flux calculations
MarSystem* fanout = mng.create("Fanout","fanout");
net->addMarSystem(fanout);
// The branch to do the RMS
MarSystem* rms_series = mng.create("Series","rms_series");
rms_series->addMarSystem(mng.create("Rms", "rms"));
fanout->addMarSystem(rms_series);
// The branch to do the Flux
MarSystem* flux_series = mng.create("Series","flux_series");
flux_series->addMarSystem(mng.create("ShiftInput", "si"));
flux_series->addMarSystem(mng.create("Windowing", "win"));
flux_series->addMarSystem(mng.create("Spectrum","spk"));
flux_series->addMarSystem(mng.create("PowerSpectrum", "pspk"));
flux_series->addMarSystem(mng.create("Flux", "flux"));
fanout->addMarSystem(flux_series);
// Update the controls with required values
net->updControl("SoundFileSource/src/mrs_string/filename", inFileName);
realvec processedData;
float time = 0;
mrs_natural samples_per_tick = net->getControl("SoundFileSource/src/mrs_natural/onSamples")->to<mrs_natural>();
mrs_real rate = net->getControl("SoundFileSource/src/mrs_real/osrate")->to<mrs_real>();
mrs_real sec_per_tick = samples_per_tick / rate;
while (net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<mrs_bool>()) {
net->tick();
processedData = net->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
cout << time << "," << processedData(0,0) << "," << processedData(1,0) << endl;
time += sec_per_tick;
}
delete net;
}
示例14: while
int
isClose(string infile1, string infile2)
{
MarSystemManager mng;
MarSystem* pnet = mng.create("Series", "pnet");
MarSystem* invnet = mng.create("Series", "invnet");
invnet->addMarSystem(mng.create("SoundFileSource", "src2"));
invnet->updControl("SoundFileSource/src2/mrs_string/filename", infile2);
invnet->addMarSystem(mng.create("Negative", "neg"));
MarSystem* fanout = mng.create("Fanout", "fanout");
fanout->addMarSystem(mng.create("SoundFileSource", "src1"));
fanout->updControl("SoundFileSource/src1/mrs_string/filename", infile1);
fanout->addMarSystem(invnet);
pnet->addMarSystem(fanout);
pnet->addMarSystem(mng.create("Sum", "sum"));
pnet->linkControl("mrs_bool/hasData",
"Fanout/fanout/SoundFileSource/src1/mrs_bool/hasData");
mrs_natural i;
mrs_natural samples =
pnet->getctrl("mrs_natural/inSamples")->to<mrs_natural>();
while ( pnet->getctrl("mrs_bool/hasData")->to<mrs_bool>() )
{
pnet->tick();
const realvec& processedData =
pnet->getctrl("mrs_realvec/processedData")->to<mrs_realvec>();
for (i=0; i<samples; ++i)
{
// useful for tweaking CLOSE_ENOUGH
//cout<<processedData(i)<<" ";
if ( abs(processedData(i)) > CLOSE_ENOUGH )
{
delete pnet;
return(1);
}
}
}
delete pnet;
return 0;
}
示例15: record
void record(mrs_real length, mrs_real gain, string filename)
{
MarSystemManager mng;
MarSystem* recordNet = mng.create("Series", "recordNet");
MarSystem* asrc = mng.create("AudioSource", "asrc");
MarSystem* dest = mng.create("SoundFileSink", "dest");
recordNet->addMarSystem(asrc);
recordNet->addMarSystem(dest);
recordNet->updControl("mrs_natural/inSamples", 4096);
recordNet->updControl("mrs_real/israte", sropt);
recordNet->updControl("AudioSource/asrc/mrs_natural/nChannels", copt);
recordNet->updControl("AudioSource/asrc/mrs_real/gain", gain);
// Ready to initialize audio device
recordNet->updControl("AudioSource/asrc/mrs_bool/initAudio", true);
recordNet->updControl("SoundFileSink/dest/mrs_string/filename", filename);
mrs_real srate = recordNet->getctrl("mrs_real/israte")->to<mrs_real>();
mrs_natural nChannels = recordNet->getctrl("AudioSource/asrc/mrs_natural/nChannels")->to<mrs_natural>();
cout << "AudioSource srate = " << srate << endl;
cout << "AudioSource nChannels = " << nChannels << endl;
mrs_natural inSamples = recordNet->getctrl("mrs_natural/inSamples")->to<mrs_natural>();
mrs_natural iterations = (mrs_natural)((srate * length) / inSamples);
cout << "Iterations = " << iterations << endl;
for (mrs_natural t = 0; t < iterations; t++)
{
recordNet->tick();
}
}