Skip to content
Surroundify

Self-hosted · Multichannel · No account

Put the wind behind you.

Surroundify turns the computer wired to your speakers into a spatial audio player you drive from any phone in the house. Pick a soundscape and each of its layers goes to the speakers you chose, at the level and the position you chose.

A forest where the stream is to your left. A room that sounds like rain outside every window.

Install it

npx @loicortola/surroundify install

Needs Node.js 20 or newer and ffmpeg. Runs on macOS, Linux and Windows.

Room · Living room5.0 · drag a source
FLCFRSLSRYouWindStreamBirds
WindOutput · dB rel.
FL−15
C−9
FR−10
SL−12
SR0

Drag a source. The five channels below it re-balance from where you put it.

First five minutes

Three things, then it plays.

The room is the whole setup, and you describe it once. Everything after that is choosing what to hear in it.

  1. 01

    Choose the output

    Every sound card, HDMI output and connected Bluetooth speaker the machine can see is listed. Pick one — a six-output USB interface, a receiver, or the two speakers already there.

  2. 02

    Say where the speakers are

    Draw the room and drag each output channel to where the speaker actually stands. This is what gives “behind you” and “to your left” a meaning for the rest of the session.

  3. 03

    Place the sounds

    Pick a soundscape and move its layers around the room. Nothing is permanent until you save it as a mix profile — your version of that soundscape, recallable by name.

What it does

A player built around where things are.

Not a playlist with a surround switch. Every layer of a soundscape has a position, a level, and a speaker set worked out from both.

A position, not a channel

Each layer of a soundscape gets a place in the room and a level of its own.

Whatever you already own

Built-in output, a USB interface with eight outputs, an HDMI receiver, a Bluetooth speaker.

Preset Studio

Build your own soundscape from your own files, and balance it on the real speakers.

The remote is your phone

Any phone, tablet or laptop on the network drives it. Nothing to install on them.

A real name, on your network only

Claim something like salon.apps.surroundify.co and get a real certificate, automatically.

It stays in the house

No cloud, no telemetry, no account needed. Your rooms and audio never leave the machine.

All features

What you need

Probably what you already have.

There is no supported-hardware list. If the machine can play through it, Surroundify can send to it.

  • A computer that stays on

    A Mac mini, a Linux box, a Raspberry Pi 4 or better, a Windows PC. It does the playing; your phone is only the remote.

  • A sound output

    Anything the machine can already play through: its built-in output, a USB audio interface with six or eight outputs, an HDMI receiver, a Bluetooth speaker.

  • Node.js 20+ and ffmpeg

    Both come from your system's package manager. Surroundify decodes audio with ffmpeg and cannot ship it.

Install

Two commands on the machine with the speakers.

The first puts it there. The second makes it start on its own and stay running.

npx @loicortola/surroundify install
npx @loicortola/surroundify service install

The second command waits for the player to come up and prints the address it is serving on. Open http://localhost:7171 on that machine, or its .local name from your phone.

Per-platform instructions

Before you ask

The three that come up most.

I only have two speakers. Is there any point?
Yes, though a smaller one. With two outputs you get placement across a stereo image rather than around you, and the room view still governs the balance between layers. The reason to start there is that you can hear what the tool does before buying an interface for it.
Does anything leave my network?
Your audio and your rooms, never. Two things reach the internet, both optional and both started by you: claiming an HTTPS name orders a certificate from a public authority, and binding the player to a Surroundify account tells the site the machine exists. Neither carries anything you have made or played.
What does binding a server to an account actually do?
It records, on the website, that a machine is yours: its name, its platform, the player's version, and when it last checked in. That is the whole of it. The site cannot reach into the machine — it is behind your router — and the player sends nothing about your rooms, mixes or audio. Binding is optional, either end can undo it, and a bound player behaves exactly like an unbound one.
All questions