Frequently asked questions
Short answers. Each one links to more detail.
What is Pepper.SFX?
Pepper.SFX is audio middleware for Unity. You author sounds as assets (events, containers, buses, states and parameters) and play them from code with one call, such as footstepEvent.Post(gameObject, transform.position). Its code is in the AudioSystem namespace. See Features for what it covers.
Which Unity versions does Pepper.SFX support?
Unity 6000.0.48f1 or newer. Package Manager will install it on older 6000.0 versions, but those aren't supported. The automated tests pass on 6000.0.48f1 and 6000.3.19f1. The experimental generated engines need Unity 6000.3 or later.
What is the difference between the free and full versions?
The free version is compiled DLLs, installed as a package from GitHub. The full version is the complete source, with every editor window, multiplayer, Addressables loading and the example scripts; it is coming soon to the Unity Asset Store but isn't out yet. The windows left out of the free version are the Mixer, Audio Profiler, EQ Spectrum Visualizer, Loading Validator, Sound Builder (Advanced) and Engine Builder, and the experimental generated engines are full only too. See how to get it.
Can I move from the free version to the full version without losing my work?
Yes. The two versions can't be in the same project, and swapping the free DLLs for source would break every script reference to them. A separate upgrade tool, released together with the full version, rewrites those references once, so your events, containers, buses, scenes and prefabs carry over. Back up your project before you run it.
Which platforms does Pepper.SFX run on?
Pepper.SFX is C# on top of Unity's own audio, so it runs wherever Unity's audio does: Windows, macOS, Linux, mobile, Meta Quest and consoles. There are two exceptions. Convolution reverb works only on 64-bit Windows (x64), and Web builds play sound without occlusion muffling or reverb, because Unity's Web audio has no mixer effects. See Build Compatibility.
Does Pepper.SFX replace Unity's audio system?
No. It plays through Unity's own audio: every sound is played by a pooled AudioSource, and buses route to your AudioMixer groups. Pepper decides what plays, at what level and pitch, and through which bus; Unity mixes it and sends it to the speakers. Your settings in Project Settings > Audio still apply.
Will my existing AudioSources keep working?
Yes. Pepper.SFX keeps its own pool of AudioSources and doesn't change yours, so you can move a project over one sound at a time. Both share Unity's voice limits (Project Settings > Audio), and Pepper warns at startup if its own limits are higher than Unity's.
Does Pepper.SFX support multiplayer?
Yes, in the full version: a networked sound sends a small message saying which event to play and where, never audio, and each machine plays it locally. FishNet v4 is tested, on one PC and on two over a real network. Netcode for GameObjects 2.x has had light testing only, and NGO 1.x and FishNet v3 aren't supported. See Multiplayer.
Does it work in split-screen games?
Yes. Register each player's camera as a listening point with AudioManager.Instance.AddListeningPoint(cameraTransform) and set the Audio Manager's Spatial Mode to Pepper. Pepper then pans and attenuates 3D sounds from every listening point, weighted by each point's Weight and Pan Width. In that mode spatializer (HRTF) plugins aren't used and stereo clips are balanced rather than placed, so give 3D sounds mono clips (more in Spatial audio and listeners).
Can I use Pepper.SFX on a dedicated server?
Yes. Set AudioManager.Inert = true at boot, before any Audio Manager starts. Every post then returns an already-finished handle without allocating or logging, and an Audio Manager that starts builds no voices or per-frame work. The server can run the same scenes and prefabs as the clients.
How does Pepper.SFX perform?
Sounds play from a pool of AudioSources made when the Audio Manager starts, so playing a sound doesn't create GameObjects. By default 32 voices are heard at once and up to 64 more are tracked as virtual: silent, keeping their place, and brought back when they matter again. Parameter writes allocate nothing after their first use. The Voice Pool Debug and Live View windows show what is playing and why; see Voices and performance.
Can Pepper.SFX play car engines?
Yes. A Blend Container with Regions and Pitch Follow keeps loops recorded at different RPMs in tune at every RPM, and in the full version the Engine Builder window builds a whole engine from your loops. Each car posts its engine on its own Audio Emitter, so every car follows its own RPM. See Vehicle engines.
How do I get started?
Add an Audio Manager component to a GameObject in your first scene, then open Window > Audio System > Sound Builder (Simple) to make a bus, a container and an event from your clips. Drag the event into a field on your script and call Post on it. The Quick Start walks through it.
Where is the documentation?
On this site, under Docs: a Quick Start, a cookbook of recipes, the full manual and the API reference. Problems we already know about are listed under Known issues.
How do I report a bug?
Email amir.pepper.work@gmail.com with your Unity version, your platform, whether you use the free or full version, the steps that cause the problem, and any console errors. Check Known issues first, in case it's already listed. Other ways to get in touch are on the Contact page.
Didn’t find it? Search the docs or ask me.