private IEnumerator _AnalyseClip(AudioClip clip) { _clip = clip; _sampleRate = (int)sampleRate; _spectrumSamples = (int)(_clip.frequency * _clip.length / _sampleRate); _lastSpectrum = new float[_sampleRate / 2 + 1]; _thresholdWindowSize = thresholdRadius * 2 + 1; _fft = new FFT(_sampleRate, _clip.frequency); //if(subBandFrequencies.Length > 1) { _fft.CustomAverages(subBands.ToArray()); // _fft.CustomAverages(subBandFrequencies); // subBands = subBandFrequencies.Length - 1; } // else if(subBands > 1) // _fft.LogAverages(subBands.Count); if (storeSpectrumData) { _spectrumData = new List <float[]>(_spectrumSamples); } _subBandWidth = _sampleRate / (subBands.Count * 2); _spectralFlux = new List <List <float> >(subBands.Count); _beats = new List <List <float> >(subBands.Count); _nextBeatVals = new List <float>(subBands.Count); for (int i = 0; i < subBands.Count; i++) { _spectralFlux.Add(new List <float>(_spectrumSamples)); _beats.Add(new List <float>(_spectrumSamples)); _nextBeatVals.Add(0); } _bpmCurve = new List <float>(_spectrumSamples); _summedSpectrum = new List <int>(_spectrumSamples); yield return(StartCoroutine(_GetSpectrumData())); }
private IEnumerator _AnalyseClip(AudioClip clip) { _clip = clip; _sampleRate = (int)sampleRate; _spectrumSamples = (int)(_clip.frequency * _clip.length / _sampleRate); _lastSpectrum = new float[_sampleRate / 2 + 1]; _thresholdWindowSize = thresholdRadius * 2 + 1; _fft = new FFT(_sampleRate, _clip.frequency); //if(subBandFrequencies.Length > 1) { _fft.CustomAverages( subBands.ToArray() ); // _fft.CustomAverages(subBandFrequencies); // subBands = subBandFrequencies.Length - 1; } // else if(subBands > 1) // _fft.LogAverages(subBands.Count); if(storeSpectrumData) _spectrumData = new List<float[]>(_spectrumSamples); _subBandWidth = _sampleRate / (subBands.Count * 2); _spectralFlux = new List< List <float> >(subBands.Count); _beats = new List<List <float>>(subBands.Count); _nextBeatVals = new List<float>(subBands.Count); for(int i = 0 ; i < subBands.Count ; i++) { _spectralFlux.Add( new List<float>(_spectrumSamples) ); _beats.Add( new List<float>(_spectrumSamples) ); _nextBeatVals.Add(0); } _bpmCurve = new List<float>(_spectrumSamples); _summedSpectrum = new List<int>(_spectrumSamples); yield return StartCoroutine(_GetSpectrumData()); }