hedgehog/hardware/ HomePage
For me, a HedgeHog is an input device, with knobs, buttons, leds, and so on, which is as dumb as possible: it tells the computer what buttons are pressed, and so on, like a typical USB keyboard and mouse, but unlike typical MIDI control surfaces which internally translate events to MIDI notes and CCs, and often (such as when the device has endless rotary encoders) it is not possible to recover this information (see NotAHedgeHog).
My view is that the computer is far better equipped to decide meanings for hardware events than firmware in the device.
I built a simple proof-of-concept (HuphreyTheHedgehog) a while back, made of an Arduino and a few push-rotary-encoders. Basically the Arduino is a microcontroller, a usb-serial chip and some I/O. The device communicates to the computer via the usb-serial connection, using a simple protocol that is sufficient to tell the computer about what has happened. I came up with a simple 7-bit protocol using bit-7 to indicate control messages. A byte with bit-7 set (that is, between 0x80 and 0xFF) is a control byte, and a byte without bit-7 set (that is, between 0x00 and 0x7F) is a data byte. The byte 0xFF is used to signal the end of a message, and 0x80..0xFE indicates the message type. So for example, 0x80 signifies raw data, 0x81 signifies button presses, 0x82 signifies absolute controller movements (e.g. sliders and pots), 0x83 indicates relative (e.g. endless rotaries), and there is ample space for other messages. There is no need for the degree of prescribed meaning we see in e.g. MIDI.
Existing hardware
Novation Nocturn
The NovationNocturn is ideal except for one annoying thing: it can only be used as a generic MIDI device under Linux. Under Windows or Mac, it only works with Novation's discontinued Automap software. So to use them, I use either a Linux laptop or a Raspberry Pi, which receives events from the device, and sends cc events to switch the leds on and off (and adjust the encoder rings), and talks via OSC over the network using software I tend to write in Python. By using dlls and so libraries loaded by ctypes, you can basically do anything.
The annoying thing about the Nocturn is that, behind the scenes, it (I think) communicates with the computer by sending raw MIDI data (specifically MidiCc events), and would otherwise be class compliant, but requires a proprietary driver under Windows and Macos which means it only works with their discontinued Automap software.
As I said, under Linux, it works like a typical MIDI device, so to make use of them, I use a Linux laptop or a pi as a hub.
Generally, the idea is that the hubs form a HedgehogFamily.