Skip to content

rlfbckr/nomidi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOMIDI

A OSC based performance controller

NOMIDI Assembled

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.

Control elements

  • 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)

Interface / Connection

  • USB SlipSerial or
  • Ethernet

PCB (Printed circuit board)

NOMIDI PCB

Software

For flashing the firmware on the Teensy board these software compnents are needed:

Required Arduino libraries

  • 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]

Bill of Materials

BOM

Firmware configuration

NOMIDI can communicate ether via Ethernet oder Serial (OSC over SLIPSerial). edit firmware/nomidi_firmware/config.h

Use Serial ( OSC over SLIP Serial) for communication:

#define USE_SLIP_SERIAL

Use Ethernet ( OSC over UDP) for communication:

#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;

Teensy Settings

Borad:      Teensy 4.1
USB Type:   USB Serial
CPU Speed:  600 Mhz

OSC messages

NOMDI -> software

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]

software -> NOMIDI

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>