// Signals mixing void OnAudioFilterRead(float[] data, int channels) { // Oscillators for (int i = 0; i < data.Length; i += channels) { foreach (Oscillator oscillator in oscillators) { data[i] += oscillator.GenerateSignal(lfoFreqSlider.value, lfoAmpSlider.value) * volumeSlider.value; } if (channels == 2) { data[i + 1] += data[i]; } } // Filters for (int i = 0; i < data.Length; i++) { dataCopy[i] = data[i]; } if (data[0] != 0 && lpCutoff.value != lpCutoff.minValue) { lpFilter.ExecuteFilter(ref data, channels, dataCopy, oldY, oldX); } if (data[0] != 0 && hpCutoff.value != hpCutoff.minValue) { hpFilter.ExecuteFilter(ref data, channels, dataCopy, oldY, oldX); } if (data[0] != 0 && bpCutoff.value != bpCutoff.minValue) { bpFilter.ExecuteFilter(ref data, channels, dataCopy, oldY, oldX); } oldY[0] = data[2044]; oldY[1] = data[2045]; oldY[2] = data[2046]; oldY[3] = data[2047]; oldX[0] = dataCopy[2044]; oldX[1] = dataCopy[2045]; oldX[2] = dataCopy[2046]; oldX[3] = dataCopy[2047]; // Needed to cutoff lfo timer++; }