A OSC based performance controller
I build this controller out of frustration that MIDI controllers are still using only 7 bit resolution. NOMIDI is a OSC based controller with 10 channels each 10bit (12 or 14 bit should be possible as well) resolution for the sliders and knobs. The controller is based on a Teensy 4.1 microcontroller including a high speed ethernet port to broadcast and receive OSC to and from different nodes in the network.
PLEAYSE NOTE: NOMIDI is OSC based in cannot be used in an "MIDI Environment". I can send/reicive only signals form OSC enabled Software and Hardware. e.g. MaxMSP, Supercollider, PureData, Processing, OpenFrameworks, monome norns, Abelton Live and many more.
- inputs:
- 10 x 2 knobs (potentiometer ALPS)
- 10 x 2 pushbuttons
- 10 x 1 slider (potentiometer 6mm ALPS)
- outputs:
- 10 x 1 seven-segment element (13,5mm)
- 10 x 1 white led (3mm)
- USB SlipSerial or
- Ethernet
For flashing the firmware on the Teensy board these software compnents are needed:
- Arduino IDE (Version 1.8.13) (download)
- Teensyduino (Version 1.53) (download)
- OSCBundle [install via package manager]
- Chrono [install via package manager]
- MUX74HC4067 [install via package manager]
- SevSeg ( Seven Segment Multiplexing Library ) [modefied version included in firmware sketch]
- NativeEthernet ( Teensy 4.1 ) [comes with teensyduino]
NOMIDI can communicate ether via Ethernet oder Serial (OSC over SLIPSerial). edit firmware/nomidi_firmware/config.h
#define USE_SLIP_SERIAL
#define USE_ETHERNET
static byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFC, 0x88}; // hardware addres of your device
static IPAddress myIP(10, 0, 0, 123); // ip address of the controller
static IPAddress serverIP(10, 0, 0, 3); // ip addres of your laptop
static int serverPort = 9013;
static int incommingPort = 10013;
Borad: Teensy 4.1
USB Type: USB Serial
CPU Speed: 600 Mhz
Potentiometer 1 (top row)
/nm/p0 [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095]
Potentiometer 0 (bottom row)
/nm/p1 [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095]
Button 1 (top row)
/nm/p1 [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1]
Fader
/nm/f [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095] [0-4095]
Button 0 (bottom row)
/nm/p0 [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1] [0/1]
LED (single)
/nm/setled <pos 0-9> <brightness 0-100>
7Segment (single segment)
/nm/set7set <pos 0-9> <character>
7Segment (all segments)
/nm/set7segall <character> <character> <character> <character> <character> <character> <character> <character> <character> <character>