Scroll back to the top

Alles mesh synthesizer & the AMY additive C library

The Alles PCB

For the past couple of years, I’ve been working on a new kind of music synthesizer with the help of some friends. It’s at the point now where it’s ready for others to try out. “Alles” (named for the Alles Machine, by Hal Alles) is a multi-speaker wireless mesh synthesizer. You can have dozens of Alles speakers, each with their own individual synthesizer unit, speaker and battery. The speakers wirelessly form a mesh (using UDP multicast over Wi-Fi) and can all communicate with each other. They can all play in perfect sync with one another, or play different messages on their own. You can address them individually or in groups from a host computer, using a programming language like Python or a music environment like Max/MSP. You can build immersive many-channel sound or music installations with Alles. They’re also just really fun.

Alles interest list

Sign up here to get an email or two when I have more information about Alles PCBs & enclosures.

Alles in the wild

One of the challenges with Alles was how to get a many-oscillator high quality synthesizer running on a low-power microcontroller with low memory and CPU power. Alles speakers are meant to run on battery for a long time, and also sound good and be able to make interesting sounds. To accomplish this, myself and friend DAn Ellis got together to build a synthesizer engine called AMY, for Additive Music synthesizer librarY (with a nod to the Atari AMY of course.) An instance of AMY powers each Alles speaker, but on its own it’s a very capable low-footprint synth library for any sort of use. AMY can be ported to almost anything: small microcontrollers, the web, phones, older computers, audio plugins, etc. It’s got no dependencies, can scale from dozens to thousands of oscillators running at once depending on RAM and CPU, has very accurate band-limited oscillators, filters, a very good FM synthesizer, a partial synthesizer, PCM samples, and much more. You can even try out AMY on the web, right now. Think of all those neat sounds over dozens of speakers in a space.

Alles PCBs installed in the speaker shells

Alles started life as a distributed partial synthesizer, modeled after the early partial synthesizers Bell Labs Digital Synthesizer, Atari AMY, or the Crumar GDS. Alles can play long-evolving combinations of oscillator tones, each partial coming from a different speaker in a space. A single Alles speaker supports up to 64 oscillators and 32 biquad filters, with 3 breakpoint modulators with 5 points per oscillator. And by bridging the late-70s partial synthesis style with late-90s sinewave modeling approaches, we’ve been able to ship Alles with a partial analysis front end powered by Loris. This allows you to analyze any audio file automatically and generate Alles partial breakpoint commands in real time, so you don’t have to model tones on your own. The analysis / synthesis front end is vastly customizable to make all sorts of interesting tones.

A mixed audio file played back on a single Alles speaker, using only 8 sine waves

Alles supports frequency modulation as well as additive synthesis, using 9 oscillators to generate a 6-operator tone with modulation based on the DX7. Dan and I spent a lot of time tuning the envelopes and amplitude curves of Alles to be able to generate precise DX7 sounds from any DX7 patch. We provide conversion tools in our Python fm front-end, and we ship Alles with 1024 patches from the default DX7 patch bank. You can try them out on the web example of AMY, and each hardware Alles speaker can play up to 7 different FM tones in polyphony.

Both Alles and AMY are open source and ready to use right now. If you want to build your own Alles, head over to the DIY section. If you want to get your own Alles PCB or complete speaker, read on for more details. You can also run an Alles speaker node on your computer.. The computer speaker nodes act just like a hardware speaker and communicate over the same mesh. The computer Alles will stay in sync with other speakers or computers on the same Wi-Fi network.

Ben Lacker with an Alles-powered sound bath for his bedroom

The Alles speakers are built using a speaker shell + battery enclosure from an older Bluetooth speaker line. We’ve been able to acquire a sizeable amount of the shells, and the Alles PCB we’ve developed (working with the great Blinkinlabs) fit right into the shell. But you don’t need to use the speaker shell at all – any speaker and LiPo battery can be wired to the Alles PCB. The Alles PCBs feature a battery charger, main processor / wifi chip (based on the ESP32) and 4 buttons. The firmware loaded onto the PCB supports over the air updating, if a new version of the synth becomes available and you’re on a WiFi network with internet access.

A custom Alles (using the PCB but his own speaker and power) by Douglas Repetto

The Alles mesh is created using UDP multicast over WiFi. In most cases, you’ll use a computer as your “composition source”, by writing Python or using a music environment like Max/MSP. See our getting started page for more details. The latency and reliability of this connection varies widely based on your router and physical factors. For performance purposes, I highly recommend investing in an “Alles-only” closed WiFi network with a dedicated router that has only Alles speakers (either computer or speaker) as clients. Read more about timing, latency, and reliability in an Alles mesh.

Showing Alles desktop in sync with the hardware speakers

Are you interested in an Alles PCB or complete speaker? Or 10? I’m not precisely sure how yet to get Alles into the hands of thousands. I think it’s best if I start by collecting interest here. If enough people are interested, I can fund a larger run and let you know how to purchase them. I don’t have pricing locked down yet. If you can’t wait for me to pull together an order, please do check out the DIY instructions, if you have even a low amount of soldering / electronics skills you should be able to make your own prototypes. The real PCB is far more efficient and reliable if you’re going to get many.

I’ve been having a very nice time working on Alles and making music and sound with Alles (and AMY) over the past couple of years. It’d be great if I found a community of people who want to help make music for them and perform with them, or help work on the underlying code, or integrate Alles into other music enviroments. I can imagine it could be a great platform for learning about music and synthesis as well. Do let me know what you think and how you fare with Alles. I welcome issue requests on GitHub for any problems, and my email for any other thoughts.

Alles interest list

Sign up here to get an email or two when I have more information about Alles PCBs & enclosures.

Slightly detuned FM pads in sync from my studio in Quadra