# 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`)