/// <summary> /// Setup /// </summary> private void Setup() { if (m_sampleRate < 1.0f) { return; } m_dsp = new PitchDsp(m_sampleRate, kMinFreq, kMaxFreq, m_detectLevelThreshold); m_iirFilterLoLo = new IIRFilter { Proto = IIRFilter.ProtoType.Butterworth, Type = IIRFilter.FilterType.HP, Order = 5, FreqLow = 45.0f, SampleRate = (float)m_sampleRate }; m_iirFilterLoHi = new IIRFilter { Proto = IIRFilter.ProtoType.Butterworth, Type = IIRFilter.FilterType.LP, Order = 5, FreqHigh = 280.0f, SampleRate = (float)m_sampleRate }; m_iirFilterHiLo = new IIRFilter { Proto = IIRFilter.ProtoType.Butterworth, Type = IIRFilter.FilterType.HP, Order = 5, FreqLow = 45.0f, SampleRate = (float)m_sampleRate }; m_iirFilterHiHi = new IIRFilter { Proto = IIRFilter.ProtoType.Butterworth, Type = IIRFilter.FilterType.LP, Order = 5, FreqHigh = 1500.0f, SampleRate = (float)m_sampleRate }; m_detectOverlapSamples = (int)(kDetectOverlapSec * m_sampleRate); m_maxOverlapDiff = kMaxOctaveSecRate * kDetectOverlapSec; m_pitchBufSize = (int)(((1.0f / (float)kMinFreq) * 2.0f + ((kAvgCount - 1) * kAvgOffset)) * m_sampleRate) + 16; m_pitchBufLo = new float[m_pitchBufSize + m_detectOverlapSamples]; m_pitchBufHi = new float[m_pitchBufSize + m_detectOverlapSamples]; m_samplesPerPitchBlock = (int)Math.Round(m_sampleRate / m_pitchRecordsPerSecond); m_circularBufferLo = new CircularBuffer <float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); m_circularBufferHi = new CircularBuffer <float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); }
/// <summary> /// Setup /// </summary> private void Setup() { if (sampleRate < 1.0f) { return; } dsp = new PitchDsp(sampleRate, kMinFreq, kMaxFreq, detectLevelThreshold); iirFilterLoLo = new IIRFilter(); iirFilterLoLo.Proto = IIRFilter.ProtoType.Butterworth; iirFilterLoLo.Type = IIRFilter.FilterType.HP; iirFilterLoLo.Order = 5; iirFilterLoLo.FreqLow = 45.0f; iirFilterLoLo.SampleRate = (float)sampleRate; iirFilterLoHi = new IIRFilter(); iirFilterLoHi.Proto = IIRFilter.ProtoType.Butterworth; iirFilterLoHi.Type = IIRFilter.FilterType.LP; iirFilterLoHi.Order = 5; iirFilterLoHi.FreqHigh = 280.0f; iirFilterLoHi.SampleRate = (float)sampleRate; iirFilterHiLo = new IIRFilter(); iirFilterHiLo.Proto = IIRFilter.ProtoType.Butterworth; iirFilterHiLo.Type = IIRFilter.FilterType.HP; iirFilterHiLo.Order = 5; iirFilterHiLo.FreqLow = 45.0f; iirFilterHiLo.SampleRate = (float)sampleRate; iirFilterHiHi = new IIRFilter(); iirFilterHiHi.Proto = IIRFilter.ProtoType.Butterworth; iirFilterHiHi.Type = IIRFilter.FilterType.LP; iirFilterHiHi.Order = 5; iirFilterHiHi.FreqHigh = 1500.0f; iirFilterHiHi.SampleRate = (float)sampleRate; detectOverlapSamples = (int)(kDetectOverlapSec * sampleRate); maxOverlapDiff = kMaxOctaveSecRate * kDetectOverlapSec; pitchBufSize = (int)(((1.0f / (float)kMinFreq) * 2.0f + ((kAvgCount - 1) * kAvgOffset)) * sampleRate) + 16; pitchBufLo = new float[pitchBufSize + detectOverlapSamples]; pitchBufHi = new float[pitchBufSize + detectOverlapSamples]; samplesPerPitchBlock = (int)Math.Round(sampleRate / pitchRecordsPerSecond); circularBufferLo = new CircularBuffer <float>((int)(kCircularBufSaveTime * sampleRate + 0.5f) + 10000); circularBufferHi = new CircularBuffer <float>((int)(kCircularBufSaveTime * sampleRate + 0.5f) + 10000); }
/// <summary> /// Setup /// </summary> private void Setup() { if (m_sampleRate < 1.0f) return; m_dsp = new PitchDsp(m_sampleRate, kMinFreq, kMaxFreq, m_detectLevelThreshold); m_iirFilterLoLo = new IIRFilter(); m_iirFilterLoLo.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterLoLo.Type = IIRFilter.FilterType.HP; m_iirFilterLoLo.Order = 5; m_iirFilterLoLo.FreqLow = 45.0f; m_iirFilterLoLo.SampleRate = (float)m_sampleRate; m_iirFilterLoHi = new IIRFilter(); m_iirFilterLoHi.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterLoHi.Type = IIRFilter.FilterType.LP; m_iirFilterLoHi.Order = 5; m_iirFilterLoHi.FreqHigh = 280.0f; m_iirFilterLoHi.SampleRate = (float)m_sampleRate; m_iirFilterHiLo = new IIRFilter(); m_iirFilterHiLo.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterHiLo.Type = IIRFilter.FilterType.HP; m_iirFilterHiLo.Order = 5; m_iirFilterHiLo.FreqLow = 45.0f; m_iirFilterHiLo.SampleRate = (float)m_sampleRate; m_iirFilterHiHi = new IIRFilter(); m_iirFilterHiHi.Proto = IIRFilter.ProtoType.Butterworth; m_iirFilterHiHi.Type = IIRFilter.FilterType.LP; m_iirFilterHiHi.Order = 5; m_iirFilterHiHi.FreqHigh = 1500.0f; m_iirFilterHiHi.SampleRate = (float)m_sampleRate; m_detectOverlapSamples = (int)(kDetectOverlapSec * m_sampleRate); m_maxOverlapDiff = kMaxOctaveSecRate * kDetectOverlapSec; m_pitchBufSize = (int)(((1.0f / (float)kMinFreq) * 2.0f + ((kAvgCount - 1) * kAvgOffset)) * m_sampleRate) + 16; m_pitchBufLo = new float[m_pitchBufSize + m_detectOverlapSamples]; m_pitchBufHi = new float[m_pitchBufSize + m_detectOverlapSamples]; m_samplesPerPitchBlock = (int)Math.Round(m_sampleRate / m_pitchRecordsPerSecond); m_circularBufferLo = new CircularBuffer<float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); m_circularBufferHi = new CircularBuffer<float>((int)(kCircularBufSaveTime * m_sampleRate + 0.5f) + 10000); }