31 lines
730 B
C++
31 lines
730 B
C++
#include "ptDyWa.h"
|
|
#include "../Helper.h"
|
|
|
|
|
|
PtDyWa::PtDyWa(unsigned step){
|
|
_Step = step;
|
|
dywapitch_inittracking(&_State);
|
|
_VolTreshold = 0.01f;
|
|
_LastMaxVol = 0.f;
|
|
}
|
|
|
|
void PtDyWa::SetVolumeThreshold(float threshold){
|
|
_VolTreshold = threshold;
|
|
}
|
|
|
|
double PtDyWa::FindNote(float* maxVolume){
|
|
double AnaylsisBuf[_SampleCt];
|
|
size_t size = _AnalysisBuf.size();
|
|
if(size > _SampleCt)
|
|
_AnalysisBuf.pop(size - _SampleCt);
|
|
if(!_AnalysisBuf.read(AnaylsisBuf, AnaylsisBuf + _SampleCt)){
|
|
*maxVolume = _LastMaxVol * 0.85f;
|
|
return -1;
|
|
}
|
|
_AnalysisBuf.pop(_Step);
|
|
double pitch = dywapitch_computepitch(&_State, AnaylsisBuf, 0, _SampleCt, maxVolume, _VolTreshold);
|
|
if(pitch == 0.0)
|
|
return -1;
|
|
else
|
|
return FreqToNote(pitch);
|
|
} |