Jeff Kirkwood - Don’t Take Defaults as the Standard
Jeff Kirkwood is a producer, live performer, and controller specialist from Fairfield, Iowa - a small town of about 10,000 people - with musical roots reaching back to Chicago, where house music and imported UK records shaped his earliest identity. He was deeply into drum and bass and jungle when nobody else in his town was, digging through the small section at Record Collector in Iowa City for anything that said “Jungle” - eventually discovering Suburban Base, Metalheadz, and Goldie. He saved up and spent $10 on imported records while his friends paid $5 for domestic ones, because he was a junglist.
He and his friends started a youth club called The Beatbox in a basement under a gift card shop, where they would breakdance and DJ. His friend got funding from Iowa, and it grew - a computer lab, a boxing school, a big club room. They rented bars, did basement and house parties, and even rented the ballroom of a Best Western at 16. Jeff got into playing live on his computer, bringing his desktop and pressing play on Fast Tracker or Buzz Tracker.
Over the years he got into hardware - Moog Rogue, Juno 106, Jupiter, DX7, TX7, ESQ1, Octatrack, Monomachine - and still has the legacy ones. He built stands out of wood and a desk with sliders, a “topper” that fits against the wall and stays compact. He is really into the ergonomics of synth control - very personal, requiring lots of iteration.
Odo Sendaidokai - Jürgen Moßgraber - Jeffrey Kirkwood
IT Background
Jeff’s background is in user interface design and programming. He worked on the game Saints Row at Deep Silver Volition. He did the UI - drew all the bitmaps, painted little drug paraphernalia you’d have to select with your D-pad. When he got there, all the UI was hard-coded in C++.
Now he really likes making tools for artists - they just need to be a little bit better than what they currently have, and they say, “Oh my God, that just saved me hours.” He is thinking about that with /CTRL - it’s gonna change the speed of iteration and getting to something usable.
Mapping more than 128 Parameters - Move to Bitwig-Studio
One of the main reasons Jeff moved to Bitwig: they allow mapping more than 128 parameters. He was stuck in Ableton Python world, found Moss’s tutorials, did Hello World, and went deep into the Bitwig API. He learned to program again - he already knew Java from Flash and ECMA script - and it was cool to wake that part of his brain for something with more purpose. He could turn on a light on his MIDI controller, change its color, change knob speed, reassign knobs - stuff people can’t do without programming.
Richie Hawtin posted on his Loop talk asking if anybody knows how. Jeff was in bed doom scrolling at 7 AM, said “Yeah, I know how to do that,” DMed Richie, and suddenly was talking to his hero.
/CTRL - build dynamic behavior, not static mappings
Odo Sendaidokai - Jürgen Moßgraber - Jeffrey Kirkwood
Jeff has been working on /CTRL (Slash Control) - a modular controller for Bitwig Studio. It puts a layer between Bitwig and tons of controllers, allowing you to use all as one. Normally you have one controller of eight, but you need 16. You can add any other controller and configure it simply.
The project started because his friend Cap needed a control surface - just OSC, but custom: two separate track banks, different remotes on different channels. Jeff hard coded it and thought it sucked that Cap would have this one controller just for his setup, with no reconfiguration. So he JSONified it - build all those things with JSON elements. He programmed drivers for Akai APC Mini MK2, Launchpad Mini MK3, MIDI Fighter Twister - each with different SysEx implementations. Novation gets a shout out for the best protocol publications, but each Launchpad has a different implementation.
In /CTRL, you create Bitwig API objects - like a track bank - and it creates endpoints for control. You navigate the TrackBank and add sub-components: volume, sends, pan. Then mapping. You set up a layer, run macros, stack layers.
The person using this software should never need to think about SysEx. The controller has to be in the library. Jeff is building up his controller library. He wants to work with more people. He wonders if he could do one remotely - possible but hard.
AI can get you places far pretty fast, but …
Jeff says AI can help with tech info, but you still have to verify it. It can do quite a bit of research. It can even implement the driver - he’s had it do it, but it’s never 100%. It gets to about 80%, and he spends most time on the last 20% fixing stuff. It usually makes poor architectural decisions.
The AI still makes mistakes in the Bitwig extension format even though they have all the data - how things should be marked, when things should be observed, what data should look like, what a flush statement is. If you don’t catch that stuff, you ...