Exemplo n.º 1
0
    void OnAudioFilterRead(float[] data, int channels)
    {
        for (int i = 0; i < data.Length; i += channels)
        {
            envelope.Update();

            float sample      = (float)(envelope.GetLevel() * oscillator.Tick());
            float downSampled = downSample.Tick(sample);

            float delayedSample = 0f;
            for (int j = 0; j < NUM_DELAYS; j++)
            {
                delayedSample += delays[j].Tick(downSampled) * Mathf.Pow(0.5f, (j + 1));
            }

            float finalSample = downSampled + delayedSample;

            if (clean)
            {
                finalSample = sample;
            }

            data[i] = finalSample;
            if (channels == 2)
            {
                data[i + 1] = data[i];
            }
        }
    }