Skip to content

Instantly share code, notes, and snippets.

@nariakiiwatani
Created December 2, 2014 08:06
Show Gist options
  • Save nariakiiwatani/c6e1205271cc76410605 to your computer and use it in GitHub Desktop.
Save nariakiiwatani/c6e1205271cc76410605 to your computer and use it in GitHub Desktop.
#pragma once
#include "ofUtils.h"
class SimpleFrequencyDetector : public vector<float>
{
public:
SimpleFrequencyDetector():buffer_size_(0) {
timestamp_ = ofGetElapsedTimef();
}
void setBufferSize(int max) {
if(max > 0) {
reserve(max);
}
buffer_size_ = max;
}
void mark() {
float prev = timestamp_;
timestamp_ = ofGetElapsedTimef();
while(buffer_size_ > 0 && size() >= buffer_size_) {
erase(begin());
}
push_back(timestamp_-prev);
}
float getFrequency(float duration) {
int count = 0;
float marked = 0;
for(reverse_iterator it = rbegin(); it != rend(); ++it) {
marked += *it;
++count;
if(marked > duration) {
break;
}
}
if(marked == 0) {
return 0;
}
return count/marked;
}
private:
int buffer_size_;
float timestamp_;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment