Features
Everything a panel does beyond showing patterns is a feature: a piece of firmware that attaches to the core without the core knowing it is there. A firmware on the shelf is a composition of them. One row each; open a row for what it needs, which firmware carries it, and a reel of it running.
The panel itselfevery firmwareFour knobs, a pattern library, a console on your network: the base.
Patterns turned by four encoders; a console over Wi-Fi for the library, the knobs, networks, status and updates; patterns as small .pfm files dropped on the panel from the community site or the Pattern Lab, no rebuild. Switching firmware is one click and keeps everything.
- Needs
- A panel, nothing more.
- Where
- In every firmware — this is the default image.
Changing patterns from the knobs, the web console, and a pattern uploaded from the community site landing on the panel. Open on Instagram On-board microphonein AudioA microphone on the panel; four bands of the room move the knobs.
A small PDM microphone on two DevKit pins; the panel does the FFT itself and four bands become four lanes that move the knobs. The Mic page on the console shapes each lane with a box, a curve and a lookup table, live.
- Needs
- A PDM microphone soldered to the DevKit — the part and the pins are in the audio guide
- Where
- In the Audio firmware.
The microphone is in this reel, with the browser extension; it is the sound reel for all three. Open on Instagram Browser or phone audioin AudioSound analysed in a browser tab or on a phone, streamed to the panel.
A browser extension listens to a tab or the microphone, a small Android app listens on a phone, and either streams four lanes to the panel over a WebSocket. Nothing to solder.
- Needs
- A computer or an Android phone on the same network
- Where
- In the Audio firmware.
The browser extension is in this reel, with the microphone; it is the sound reel for all three. Open on Instagram OSCin AudioMax, TouchDesigner, Ableton: the knobs as OSC addresses, both ways.
The four knobs as OSC addresses over UDP, in both directions, so the panel becomes one more thing on the patch bay. Ableton Live reaches it through the Max for Live bridge in the repository.
- Needs
- Software that speaks OSC on the same network
- Where
- In the Audio firmware.
The sound reel — OSC into a DAW is not in it. It works the same way as what is; it just was not worth a second reel. Open on Instagram MIDIin AudioThe panel as a MIDI port: a DAW drives it and hears the knobs back.
RTP-MIDI over Wi-Fi: the panel appears by name in macOS Audio MIDI Setup or Windows rtpMIDI, and then in any DAW. CC 20–23 hold a knob, CC 24–27 nudge it, notes 60–63 press the buttons, a program change picks a pattern; the encoders go out as CC 24–27. The same feature can also be the DevKit's USB port as a class-compliant MIDI device, in a firmware built for it — data only; the panel is still powered from its screw terminal.
- Needs
- A DAW or anything that speaks MIDI; rtpMIDI on Windows for the network route
- Where
- Over Wi-Fi: in the Audio firmware. Over USB: the midi composition in the tree, built with build.sh midi — not on the shelf.
Ableton Live driving the panel, and the panel's knobs mapped back into Live, over the network. Open on Instagram Clockrecipe onlyHours and minutes cut out of the running pattern, in seven faces.
Seven open-licensed faces, upright or wide, the digits either cut from the pattern or solid over it; time zones with their summer-time rule; a console page whose preview draws the same pixels the panel does and sends every change as you make it.
- Needs
- A panel, nothing more.
- Where
- Joining the Performance firmware. Until then a recipe in the tree, firmware/bundles/clock — build it with build.sh clock.
The clock, in a few of its faces, over a running pattern. Open on Instagram MQTTin PerformanceEvery knob and pattern as a topic; one panel can mirror another.
Home automation writes the knobs, dashboards read them, and one panel can mirror another over the broker. The absolute 0–1000 bus the Director also uses.
- Needs
- A broker on the network
- Where
- In the Performance firmware.
A panel driven from a broker, and mirroring another. Open on Instagram Sequences and Directorin PerformanceCue tables played on a wall clock, written in the Lab's Director.
A show is a cue table — patterns, knob moves and eased ramps at their times — written in the Pattern Lab's Director and dropped on the panel as a .pfs file. Pause banks the clock; resume picks it back up.
- Needs
- A panel, nothing more.
- Where
- In the Performance firmware.
No reel of this one yet.
Weatherin PerformanceOpenWeatherMap readings as a lane: a pattern that follows the sky.
Readings from OpenWeatherMap become a lane, with a small clock in the corner. A page on the console holds the key and the place.
- Needs
- An OpenWeatherMap key
- Where
- In the Performance firmware.
No reel of this one yet.
Wi-Fi setup over Bluetoothdid not workA phone handing over Wi-Fi without a cable. Tried; it never worked.
Improv-BLE. The phone never listed the panel, and linking the Bluetooth stack costs internal RAM every pattern would rather have. Left in the tree where it stopped, so nobody starts it twice without knowing why; the source says what was measured.
- Needs
- A panel, nothing more.
- Where
- Not in any firmware, and not planned.
No reel of this one yet.
How a feature reaches your panel
The tag on the row says which of three ways. Some of it is the core, in every firmware. Most of it is in a firmware on the shelf, and installing one is a click that keeps your patterns and settings. The rest is in the tree with a recipe: two files naming the features, and one command to build it.
Making one
A feature is a directory and a descriptor of hooks; it adds files and edits none of the core’s, so it takes every core update without a fight. A pull request into features/ gets it compiled by CI against every firmware and a row here; a feature kept in your own repository can be listed the same way, pointing there. The guide is FEATURE_GUIDE.md, and telling me about it works too.