Hush
Layer ambient recordings, synthesized noise, tones, and binaural beats on your iPhone or iPad—complete with custom presets, your own imported audio files, and a sleep timer that gently fades out.
iOS ·
Building a background mix
Hush lets you layer up to six simultaneous sounds on your iPhone or iPad, each with its own volume slider. You can start with brown noise, layer steady rain on top, and tuck morning birdsong quietly into the background. Start from a built-in scene or tweak sliders live, then save your own preset for later.
Audio comes from two sources working side by side. White, pink, brown, and gray noise—along with speech masking, tones, and binaural beats—are synthesized in real time as the audio engine runs. Rain, fire, cafés, and nature sounds are real audio recordings, either bundled with the app or imported from your files. Everything runs into a central mixer and passes through a peak limiter so heavy multi-layer mixes don’t clip.
To keep loops seamless, Hush decodes recordings into stereo RAM buffers matched to your output device’s sample rate and, when enabled, applies a short crossfade between the end and start of the loop. A memory cache keeps those prepared loops ready for reuse. Everything runs locally on-device, plays in the background, and can mix underneath your music or podcasts. If you set a sleep timer, the whole mix gently fades out over the final ten seconds.
Importing audio and saving presets
You can bring in your own audio files through the standard iOS Files picker. Hush reads the file using the picker’s temporary access, copies it straight into the app’s local storage, and plays that copy from then on—so moving or deleting the original won’t break your presets later.
We use SwiftData to store your presets and metadata for imported files (names, categories, and loop settings), referencing sounds by ID rather than fragile file paths. Your last active mix and the timer’s end date sit in UserDefaults. Imported sounds get backed up as part of your normal device backup, but Hush doesn’t sync your sound library between devices. Timer completion notifications are optional.
File limits and headphone checks
Imported audio files can be up to 50 MB and anywhere from one second to ten minutes long, with a separate memory budget for decoded audio. Hush checks that AVFoundation can read the file and verifies its channel, sample-rate, and frame-count metadata, both on import and again before decoding for playback.
Because binaural beats need a separate frequency in each ear to work, turning them on without headphones shows a quick warning (though it won’t stop you from playing them). If your headphones disconnect mid-session while binaural beats are playing and no suitable route remains, Hush pauses and asks you to reconnect before you press play again.
Missing files and audio interruptions
If an imported file ever goes missing or becomes unreadable, Hush doesn’t fail the whole preset—it simply skips the broken track and plays the rest of your mix. On launch, the app scans your library and flags any missing files so you can either delete them or relink them to a new file. Relinking validates the replacement and keeps the sound’s ID, so presets that use that sound don’t break, and it clears the cached buffer so the next play uses the new audio.
When a phone call or alarm interrupts playback, Hush pauses, rebuilds the audio graph cleanly, and resumes only if it was playing before the interruption and iOS gives the green light. Output configuration changes rebuild the graph too, and if the engine can’t start, Hush reports an error.
And if the local SwiftData store ever fails to open, Hush tries to drop back to a temporary in-memory store and warns that presets and imports won’t load or persist during that session; if the fallback works, all the built-in sounds keep working. The timer restores from its saved end date, so reopening the app doesn’t start the countdown over.