build the mapping before you buy the hardware
I'm playing a festival at the end of September, and I wanted to do it as a hybrid set instead of just playing CDJs — djay Pro running four decks, Ableton running a bed of loops underneath, both locked together over Ableton Link.
That plan needed a controller I don't own. Four decks of EQ, filter, volume and stem control is more knobs than anything in my studio, and the obvious move was to spend a couple hundred dollars on used gear and hope it felt right under my hands.
Then something clicked. A controller is really two things: the knobs, and the mapping. The knobs cost money. The mapping costs days. But they don't have to happen in that order.
the prototype
So I built the surface on an iPad first, in TouchOSC. 132 controls, four vertical channel strips, laid out like the hardware I was considering. Wired to the laptop over USB rather than wi-fi, since Link is already using the network and I didn't want to debug jitter I'd created myself.
Three nights of mixing on glass told me more than any review could. Which controls I actually reach for. Whether vertical channel strips beat a grid of knobs. Which third of the surface I never touched once.
the part nobody mentions
Partway through, the mapping stopped working. Controls I'd assigned first went dead, and everything started reading as the same message.
Turns out a .tosc file is just zlib-compressed XML. Decompress it and every control is a node with a position and a MIDI block, which means the whole surface is scriptable and the bug is sitting right there in the open. TouchOSC declares where each byte of the MIDI message comes from, and on the default template the CC number comes from the control's index instead of the field you typed into. All 132 controls were sending an identical message. djay was learning them all to the same thing, so every new assignment quietly overwrote the last one.
I fixed it in a script instead of by hand: unique CC per control, one MIDI channel per deck, all 132 renamed, no collisions. Then the same trick on djay's own mapping file, which is an Apple property list. Map one deck by hand, generate the other three.
what it cost
An evening, and an iPad that was already sitting on the desk.
What I got back is a mapping that's finished weeks before the hardware exists. And if I do end up buying the controller, making the prototype send its factory MIDI chart means the mapping moves over to the metal untouched. The other outcome is that I don't buy it at all… which I'd also take.
The full write-up — file format, the MIDI budget math, a worked four-deck map and the scripts — is in the Lab: Rig Prototyping.