summaryrefslogtreecommitdiff
path: root/rotord/src/vampHost.cpp
diff options
context:
space:
mode:
authorComment <tim@gray.(none)>2013-12-08 10:55:03 +0000
committerComment <tim@gray.(none)>2013-12-08 10:55:03 +0000
commit1d05d2380bb4f1fd265aef55744f432af38b08aa (patch)
tree89c1c15497149951d4b99938ad932abde42eae14 /rotord/src/vampHost.cpp
parente04516069c71a5a1e32e6a5fbf0eb5b86dcfc5a2 (diff)
switched signals to double and random to uint16
Diffstat (limited to 'rotord/src/vampHost.cpp')
-rw-r--r--rotord/src/vampHost.cpp42
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;
}