public void Process(float[] data) { for (int i = 0, length = data.Length; i < length; i += 2) { float left = 0; float right = 0; for (int j = firstActiveVoice; j != -1; j = voices[j].next) { float envelopeGain = voices[j].envelope.gain; voices[j].envelope.AdvanceTime(sampleRateRecip); float value = envelopeGain * (float)Math.Sin(voices[j].time * voices[j].freq * Table.Pi2); left += value * voices[j].gainLeft; right += value * voices[j].gainRight; voices[j].time += sampleRateRecip; } data[i] = left; data[i + 1] = right; #if MIDIF_DEBUG_VISUALIZER WaveVisualizer.Push(0, left); #endif } Panic(); }
public void Process(float[] buffer) { #if MIDIF_DEBUG_VISUALIZER WaveVisualizer.Clear(0); WaveVisualizer.Clear(1); WaveVisualizer.Clear(2); WaveVisualizer.Clear(3); WaveVisualizer.Clear(5); #endif try { for (int j = firstActiveVoice; j != -1; j = voices[j].next) { voices[j].Process(buffer); #if MIDIF_DEBUG_VISUALIZER WaveVisualizer.SetI(0, 0); WaveVisualizer.SetI(1, 0); WaveVisualizer.SetI(2, 0); WaveVisualizer.SetI(3, 0); WaveVisualizer.SetI(5, 0); #endif } } catch (System.Exception e) { UnityEngine.Debug.LogError(e); Reset(); return; } #if MIDIF_DEBUG_VISUALIZER for (int i = 0, length = buffer.Length; i < length; i += 2) { WaveVisualizer.Push(4, buffer[i]); } #endif // Panic(); }