# ReverbProcessor > Stateful Schroeder/Freeverb reverb processor that persists delay line state between audio frames, producing smooth reverb tails across packet boundaries. `gg.lode.amplifierapi.util.ReverbProcessor` --- ## Signature ```java public class ReverbProcessor ``` --- ## Constructor ```java public ReverbProcessor() ``` Creates a new processor with zeroed delay line buffers (~23 KB memory). Each player should have their own instance. --- ## Methods ### process ```java public float[] process(float[] in, float roomSize, float wetMix) ``` Processes a mono float audio frame with reverb. State carries across calls so reverb tails decay smoothly between packets. | Parameter | Type | Description | |---|---|---| | `in` | `float[]` | Mono 32-bit PCM, range +/-1.0f. | | `roomSize` | `float` | 0 to 1 — decay length (0.7 = medium hall). | | `wetMix` | `float` | 0 to 1 — how much reverb to blend in. | **Returns:** `float[]` — Processed buffer, same length as input. --- ### reset ```java public void reset() ``` Zeros all delay line state. Call on player reset or cleanup. --- ## Thread Safety Not thread-safe by design. VoiceManager guarantees single-threaded access per player via per-player executors. --- ## Related Pages - [[SoundUtil]] — Contains the deprecated stateless `applyReverb()` method - [[AudioUtil]] — PCM format conversion (`shortToFloat` / `floatToShort`) - [[IVoicePlayer]] — Player reverb settings (`getReverbIntensity`, `getReverbRoomSize`)