Example #1
0
    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());
    }