Many thanks to everyone who has shared experiences with Knobbler with me through the years, in the form of bug reports and anecdotes. I made Knobbler for myself, but it's been so fun to share it with so many people all around the world.
Huge thanks to each person below. Without your input, Knobbler wouldn't have been nearly what it is today.
This app was built using the excellent Expo framework. As a 30-year veteran of web development, it was a very familiar environment and I was up and running with "Hello, World!" running on my iPad in less than an hour.
On the networking side, I made use of a fork-of-a-fork-of-a-fork of an OSC library. At its core, I am using a fork of SwiftOSC, and my own fork of the expo-osc wrapper for it.
On the Max for Live side, it's just my usual Docker Devcontainer / Typescript environment to manage the various facets of Knobbler -- Knobbler, Bluhand, Navigation, Mixer, Shortcut Buttons, and Toolbar Buttons. There's a nifty JS-based routing layer in there too.
The OSC communication in Max is handled by good old [udpsend]
and [udpreceive]
. It's almost like they wanted us to build stuff like this :)