Alles mesh synthesizer & the AMY additive C library
The Alles PCB
Join the shore pine sound systems' Discord, where you can chat about Tulip, Alles and AMY!
Check out Floyd Steinberg’s great video on Alles!
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.
You can now buy an Alles PCB from Blinkinlabs!
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 to 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
If you want an Alles to use with your own speaker and battery, you can purchase an Alles PCB with screw connectors already attached. This lets you hook up any speaker and battery to Alles with no soldering. Alles can be powered over micro-USB with or without a battery, and if a battery is present the USB cable will charge the battery.
If you want the small circular speakers shown on this page and videos, they are easy to get. Here’s a link to them on Alibaba: the round A60s – the square-shaped A70s also work! You then can buy an Alles PCB from us with no terminals for speaker and battery – the connections for the shell solder directly to the board. It takes me about 3 minutes to assemble the Alles PCB inside the A60 or A70 speaker. To do it this way, you only need a wire stripper, a small screwdriver and a soldering iron.
We have a small amount of PCBs available for this first run. Depending on how this sale goes, how excited newcomers get about your Alles creations, and the vagaries of the “supply chain”, we will prepare for a much larger run next. Please share your creations and send us any feedback you’ve got.
IMPORTANT: Alles is sold on a “best effort” community support basis. We will send you working PCBs with the latest Alles firmware loaded on them. Anything that happens after that is up to the community to help with. Alles requires a little bit of computer and networking know-how to get going. We’ve made it as easy as possible, we hope, but we know we have more work to do before this is ready for a very wide audience. Please use GitHub issues for anything you’re having trouble with and we’ll do our best to help you figure it out.
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? You can now buy Alles PCBs from Blinkinlabs!
You can also 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 GitHub repository
- AMY GitHub repository
- Alles getting started tutorial
- Web demo of AMY’s capabilities (works on phone, but better on desktop)
- Buy the Alles PCB with shipping to the US
- Buy the Alles PCB with shipping outside of the US
- shore pine sound systems’ Discord, where you can chat about Tulip, Alles and AMY!
Slightly detuned FM pads in sync from my studio in Quadra