diff options
Diffstat (limited to 'rotord/src/vampHost.cpp')
| -rw-r--r-- | rotord/src/vampHost.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/rotord/src/vampHost.cpp b/rotord/src/vampHost.cpp index e2b1e63..3f18473 100644 --- a/rotord/src/vampHost.cpp +++ b/rotord/src/vampHost.cpp @@ -58,7 +58,7 @@ void vampHost::printFeatures(int frame, int sr, int output, -void vampHost::rotorGetFeatures(int frame, int sr, int output,Plugin::FeatureSet features, vector<float>& out, float& progress) +void vampHost::rotorGetFeatures(int frame, int sr, int output,Plugin::FeatureSet features, vector<double>& out, double& progress) { if (features[output].size()) { cout << "." << features[output].size(); @@ -84,7 +84,7 @@ void vampHost::rotorGetFeatures(int frame, int sr, int output,Plugin::FeatureSet -void vampHost::getTimestamps(int output,Plugin::FeatureSet features, vector<float>& out){ +void vampHost::getTimestamps(int output,Plugin::FeatureSet features, vector<double>& out){ /* vamp-simple-host qm-vamp-plugins:qm-tempotracker 01.wav @@ -118,14 +118,14 @@ void vampHost::getTimestamps(int output,Plugin::FeatureSet features, vector<floa 1 sec = 10^9 nanosec actually maybe this would be the way to go for rotor- avoiding rounding errors etc - for now - ideally will get a float representation + for now - ideally will get a double representation - features[output][i].values is a vector of floats + a description + features[output][i].values is a vector of doubles + a description WE DON'T CARE ABOUT ANYTHING <.01 seconds static long realTime2Frame(const RealTime &r, unsigned int sampleRate); - get a vector of floats out, using frames, presuming data has a timestamp + get a vector of doubles out, using frames, presuming data has a timestamp this is crashing with "Aborted (core dumped)" @@ -140,7 +140,7 @@ void vampHost::getTimestamps(int output,Plugin::FeatureSet features, vector<floa //}_ //else { for (unsigned int i = 0; i < features[output].size(); ++i) { - out.push_back( ((float)RealTime::realTime2Frame(features[output][i].timestamp, 1000))*.001f); + out.push_back( ((double)RealTime::realTime2Frame(features[output][i].timestamp, 1000))*.001f); cout << "feature found.\n"; } //} @@ -160,10 +160,10 @@ bool vampHost::Analyser::init(const string &soname,const string &id,const int &_ //libsndfile returns -1..1 for fp data bytes=(bits>>3); stride=channels*bytes; - scale=(1.0f/pow(2.0f,bits)); + scale=(1.0/pow(2.0,bits)); features.clear(); //in case of reuse - features[0.0f]=feature(); + features[0.0]=feature(); loader = PluginLoader::getInstance(); key = loader->composePluginKey(soname, id); @@ -307,7 +307,7 @@ void vampHost::Analyser::process_frame(uint8_t *data,int samples_in_frame){ //unsigned int this_val=0; // this_val+=data[(sample*stride)+(i*bytes)+j]<<((1-j)*8); //} - //plugbuf[i][in_block]=((float)((int16_t)this_val))*scale; + //plugbuf[i][in_block]=((double)((int16_t)this_val))*scale; plugbuf[i][in_block]=((float)_data[sample])*scale; } in_block++; @@ -323,14 +323,14 @@ void vampHost::Analyser::process_frame(uint8_t *data,int samples_in_frame){ Plugin::FeatureSet feat=plugin->process(plugbuf, rt); - float t; + double t; for (unsigned int i = 0; i < feat[outputNo].size(); ++i) { feature f; f.number=featureNo; f.values=feat[outputNo][i].values; //fix for plugins that don't set timestamp properly - t=((float)feat[outputNo][i].timestamp.sec)+(((float)feat[outputNo][i].timestamp.nsec)*.000000001); + t=((double)feat[outputNo][i].timestamp.sec)+(((double)feat[outputNo][i].timestamp.nsec)*.000000001); if (t<.01) t=((rt.sec)+(rt.nsec)*.000000001); features[t]=f; featureNo++; @@ -356,7 +356,7 @@ void vampHost::Analyser::cleanup(){ //process final block while(in_block<blockSize) { for (int i=0;i<channels;i++) { - plugbuf[i][in_block]=0.0f; + plugbuf[i][in_block]=0.0; } in_block++; } @@ -369,7 +369,7 @@ void vampHost::Analyser::cleanup(){ feature f; f.number=featureNo; f.values=feat[outputNo][i].values; - features[((float)feat[outputNo][i].timestamp.sec)+(((float)feat[outputNo][i].timestamp.nsec)*.000000001)]=f; + features[((double)feat[outputNo][i].timestamp.sec)+(((double)feat[outputNo][i].timestamp.nsec)*.000000001)]=f; featureNo++; } @@ -379,7 +379,7 @@ void vampHost::Analyser::cleanup(){ feature f; f.number=featureNo; f.values=feat[outputNo][i].values; - features[((float)feat[outputNo][i].timestamp.sec)+(((float)feat[outputNo][i].timestamp.nsec)*.000000001)]=f; + features[((double)feat[outputNo][i].timestamp.sec)+(((double)feat[outputNo][i].timestamp.nsec)*.000000001)]=f; featureNo++; } @@ -387,7 +387,7 @@ void vampHost::Analyser::cleanup(){ //feature f; //f.number=featureNo; //f.values={0}; - //features[((float)rt.sec)+(((float)rt.nsec)*.000000001f)]=f; + //features[((double)rt.sec)+(((double)rt.nsec)*.000000001f)]=f; //cerr<<plugin->getIdentifier()<<" found "<<(features.size()-1)<<" features"<<endl; //deal with left over data? @@ -397,20 +397,20 @@ void vampHost::Analyser::cleanup(){ delete[] plugbuf; delete plugin; } -float vampHost::Analyser::get_value(const float &time) { +double vampHost::Analyser::get_value(const double &time) { if (features.size()) { auto i=features.upper_bound(time); //the first element in the container whose key is considered to go after k if (i!=features.end()){ - float uk=i->first; - float v1,v2; - v1=v2=0.0f; + double uk=i->first; + double v1,v2; + v1=v2=0.0; if (i->second.values.size()) v2=i->second.values[0]; i--; - float lk=i->first; + double lk=i->first; if (i->second.values.size()) v1=i->second.values[0]; return ((((time-lk)/(uk-lk))*(v2-v1))+v1); } } - return 0.0f; + return 0.0; } |
