Skip to content

Instantly share code, notes, and snippets.

@kybr
Created February 21, 2018 16:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kybr/c4eabde954f603beaa6d71f95fcf9079 to your computer and use it in GitHub Desktop.
Save kybr/c4eabde954f603beaa6d71f95fcf9079 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <vector>
using namespace std;
struct Grain {
vector<float> data;
unsigned size;
void setGrain(unsigned start, unsigned end, vector<float>& sound,
vector<float>& window) {
size = end - start;
data.resize(size);
for (auto e : window)
cout << "setGrain(..., vector<float>& window) // " << e << endl;
for (unsigned i = start; i < end; i++) {
data[i] = sound[i] * window[i];
// cout << "setGrain(..., vector<float>& window) // " << window[i] <<
// endl;
}
rms = calcRMS();
zcr = calcZCR();
}
float rms, zcr;
float calcRMS() { return 0; }
float calcZCR() { return 0; }
};
vector<Grain> grains;
void setCloud(unsigned grain_size, vector<float>& audio_sample,
vector<float>& window) {
unsigned num_grains = (int)(audio_sample.size() / grain_size);
grains.resize(num_grains);
for (unsigned i = 0; i + grain_size < audio_sample.size(); i += grain_size) {
Grain grain;
for (auto e : window)
cout << "setCloud(..., vector<float>& window) // " << e << endl;
grain.setGrain(i, i + grain_size, audio_sample, window);
grains.push_back(grain);
}
}
int main() {
vector<float> soundClip, windowFunction;
soundClip.resize(10001, 1);
windowFunction.resize(1000, 0.5);
setCloud(1000, soundClip, windowFunction);
}
// OUTPUT
//
//
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setCloud(..., vector<float>& window) // 0.5
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
// setGrain(..., vector<float>& window) // 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment