The idea behind it was to create a control surface capable of managing multiple environments from a single device: DAWs, generic MIDI devices, and eventually a dedicated Gig Performer profile via OSC.
The controller includes:
- 4 Absolute encoders
- 5 Faders
- 8 RGB buttons
- 16 Global buttons per profile
- 1 Encoder (settings / jog)
- 1 Mode button
- 1 Bank button
- 4 independent MIDI ports
- OSC over WiFi support
- 4 logical banks
- Multiple operating profiles (DAW, MIDI1, MIDI2, MIDI3 and GP)
Profiles and banks can also be switched via MIDI CC messages, allowing mode changes to be automated directly from rackspaces
RGB LED colors are also fully customizable through OSC messages, allowing dynamic visual feedback depending on context or state.
The controller architecture is split into two independent modules.
The main firmware runs on a Teensy 4.1 using the Control Surface framework for MIDI processing, banking, and hardware management.
OSC communication runs on an ESP32 module over WiFi. Both systems communicate through a custom serial protocol that acts as a bridge between OSC and the controller engine.
Specs
- MIDI + OSC (WiFi)
- Display 2.8" TFT (ILI9341)
- 4 independent profiles stored in non-volatile memory (EEPROM)
- Flexible MIDI routing: each control can be independently assigned to any of the 4 MIDI ports
- OSC integration designed for Gig Performer (not general-purpose OSC)
- Bankable control system ( BANK 1..4)
- Supports Mackie Control for generic DAW
- ESP32 embedded web interface for network configuration:
- Static / DHCP IP setup
- OSC server configuration
- Firmware update via OTA
Each profile supports up to 4 banks.
Each bank contains:
- 4 encoders
- 4 faders
- 4 buttons
Total Bankable Controls (per profile)
- 16 encoders
- 16 faders
- 16 buttons
Global Controls (non-bankable)
In addition to bankable controls, each profile also provides:
- 16 fully configurable global buttons
GP integration
MIDI Surface 4 includes dedicated OSC integration for Gig Performer, with a set of predefined actions designed for live navigation and performance control.
- View switching
- Setlist and song navigation
- Rackspace and variation selection
- Song part control
- BPM read
- Snapshot operations
- Transport-related staatus
- Refresh and synchronization commands
Rackspace view
Song view
Setlist view
Songlist view
Midi view
Supported Action Categories
Views
- Panel View
- Wiring View
- Setlist View
Navigation
- Next / Previous Rackspace
- Next / Previous Variation
- Next / Previous Song
- Next / Previous Part
Direct Selection/Command
- Select Setlist
- Select Song
- Switch to Rackspace
- Switch to Part
- Tuner View
- Global Rackspace visibility control
- Play
Each profile can be independently configured and customized, allowing the controller to behave as a completely different control surface depending on the workflow.
Configurable parameters include:
-
MIDI message type:
- Note
- Control Change (CC)
- Program Change (PC/MSB/LSB)
- Mackie Control
- Custom Actions
-
MIDI channel assignment
-
MIDI address / controller number
-
Velocity
-
MIDI port routing
-
Profile-specific behavior
Custom Actions are also available for Gig Performer through OSC integration.
Currently implemented GP actions include:
- Go to Rackspace
- Go to Song
- Next Variation
- Previous Variation
- Next Song Part
- Previous Song Part
- Open Panel View
- Open Global Rackspace
- Open Wiring View
- Record
Hardware
- Teensy 4.1
- ESP32-WROOM32
- MCP23017 (I/O expansion)
- PCA9685 (LED driver)
- 2.8" TFT (ILI9341)
I spent several months experimenting, starting with breadboard prototypes, selecting components, and eventually designing and producing a custom PCB. The hardware design, PCB, and enclosure were developed using EasyEDA and manufactured through JLCPCB.


















