Atoo
Set up a Behringer WING for tonight's show from your own house rules, write it to the desk, and prove every value landed.
The problem
Forty inputs to patch, name, colour, gain, high-pass, send to monitors and put in DCAs, by hand, at 4pm with doors at 7. You do it the same way every show, from memory. Then the horn section turns up at 6pm, and four channels have to go onto a desk that already has a mix on it. And when something is wrong, the desk does not say so: forty screens each look fine, and the vocal still is not in the PA.
What it does
- You write two files. An input list (what is plugged in tonight) and your conventions (how you always set up a desk, in plain English).
- A model drafts the whole setup as a plan you can read: every channel, patch, colour, bus, send and DCA, each with its reason.
- Code checks the draft against the desk's real limits and your conventions before anything can be written. A stereo pair that starts on an even socket, or a patch to a socket the desk does not have, stops it. Anything the model chose that you did not state is announced.
- It writes the plan to the desk and reads every value back, so what did not land is named, not discovered at soundcheck. First, a preview reads the desk and draws it as the plan will leave it, strip by strip, with every change outlined; nothing is written until you arm it. Every write is journalled and can be undone.
- During the show, it watches the desk against your own rules: the DI that got repatched, the DCA pulled to the floor.
A late change is one line, "trumpet, sax and trombone on LCL 21-23, Band DCA", and moves nothing that is already in use.
It runs on your laptop, in your browser or from the command line. A build needs your own AI API key: Atoo is built and tested on Claude, and local models have not worked well so far. The model builds the show plan, before the show; local code applies it to the desk, with every write logged and undoable.
Why not what you already use?
| You do it now by... | What that cannot do |
|---|---|
| building it by hand, on the desk or in WING Edit | check itself, or be reused for a different band |
| copying last month's show file | adapt to a band with a different shape; it carries the old layout |
| the desk's channel presets and libraries | set up the show around the strips: patch, busses, sends, DCAs |
| typing a spreadsheet input list into the desk | confirm that the desk now matches the spreadsheet |
Why Atoo? makes the comparison in full, including where the existing ways are better.
Try it in two minutes, with no desk
You need a web browser, and on a Mac or Linux two commands. Nothing else: no desk and no API key to look around. Install uv, which brings the Python that Atoo needs:
curl -LsSf https://astral.sh/uv/install.sh | sh
Then, in a new terminal window:
uv tool install --python 3.12 "atoo[ui]"
uv tool update-shell; exec zsh # in bash, open a new terminal window instead
Then:
atoo ui
Installing Atoo has each step, with how to tell it is already done, and Homebrew with pipx if you use them. To run it from a clone instead, see Installing from a checkout. A real build also needs your own AI API key (Setting up an AI provider).
a2 is the same command as atoo, shorter to type (a2 ui).
Your browser opens on an empty show at http://127.0.0.1:8420; on a
machine with no display, atoo ui prints that address and you open it
yourself. Press Try the Demo show. A
five-piece band with backing tracks opens on a simulated WING Compact: look through
Build, Apply and Watch. On Apply, press Preview to see
the simulated desk drawn as the plan would leave it; on Watch, press
Start watching to see faults come and go. Nothing is written
anywhere.
Then patch the horn section in, still with no desk and no key. The change and the simulated desk are files in the repository, so run it in a clone:
git clone https://github.com/corourke/Atoo.git
cd Atoo
atoo patch --show starter/demo-show --change-set docs/user/demo/demo-show/horns.change-set.json --state atoo/web/demo_states/before.json
Three horns land on free strips with their presets, on a new Horns bus
with a compressor, and nothing else on the desk is touched
(The 6pm change). The review counts
4 added: the three channels and the bus. Its notes that bus 8 was judged
free from the plan alone, and its reconcile.not-checked warning, say what
this offline run could not check, because no desk and no input list were
read. Neither blocks the change.
Consoles
The Behringer WING Compact, the full-size WING and the WING Rack. No other console is supported.
Read next
- The user guide: installing, writing an input list and conventions, building, applying and watching, in the browser or from the command line.
- Questions a careful engineer asks: is it AI slop, will it touch my desk mid-show, what it costs, what if it goes wrong.
- Where Atoo needs work: what is not built, or not yet proven on a real desk.
Licence
AGPL-3.0 (AGPL-3.0-or-later). For use in a closed or
commercial product, a commercial licence is available by agreement:
contact Act4Audio.
Metadata
Release files for atoo 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| atoo-0.2.3.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| atoo-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.5 MB
Release files / atoo-0.2.3.tar.gz
| Download URL | atoo-0.2.3.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2599e20bfe24bef119196be1aadc4b205086b2484b102e8bb9ab9f8bed629fcb
|
|
BLAKE2b-256 checksum How to use checksums |
64864a76cfae48be84a8e5bf58c92bc2fff48ce95d1dc8ee055ef79be34b8a7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / atoo-0.2.3-py3-none-any.whl
| Download URL | atoo-0.2.3-py3-none-any.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3644fc8dbe0c6ea054321bcd4e077f012f2fc693c81add492197031545bdfc76
|
|
BLAKE2b-256 checksum How to use checksums |
fac01586b8d471abb82a1b00dd65851b82e46eac76e7e9c0e7f1615c0f24f86d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|