Why is nobody making a small midi controller - knobs, keys - that is usb HOST?

MPC Live?

1 Like

I just remembered that the Organelle M can be a USB host as well as controller. Just 4 knobs but has 25 button keys. Lots of sound mangling / FX features as well.

1 Like

I prefer TRS MIDI.

1 Like

I think I saw a superbooth video looking at the ESI X-Synth which is being developed for release later this year. It might fit the bill. It’s got velocity sensitive keys, poly after touch, a few knobs, midi and audio in and out, battery powered, and unless I’ve imagined it, it was usb-c and had host capability. I cant find the video that confirms the last bit, so maybe I did imagine it.

Oh also, doesn’t look like anyone has mentioned this yet: if cost doesn’t rule it out, the OP-1 Field fits the bill. I find it a pretty great portable MIDI controller and audio interface for my iPad or Digitakt, or Aria J-6, etc.

To answer the original “why?”, because USB is the plug you use to communicate with a computer. There is no way around this. If you’re using USB, there must be a computer at one end of it that we call the “host”.

So for a controller to be a host, it has to have a computer in it. Unless the controller is already essentially a computer (like the MPC), it’s expensive to add a computer just for managing USB.

Doubly so because music gear already has its own plug for communicating with other, non-computer gear called MIDI. So the complexity and expense of pretending like you’re a computer just so other gear can use the computer cable to connect to you instead of the music gear cable they were designed to use is often not worth it.

4 Likes

There are tiny modules implementing USB host controllers, like VDIP1 from FTDI. I wouldn’t call that a computer.

Maybe I’m missing it, but that only packages the UART, right? You’d still need to manage device IDs, MIDI connections/enumeration, packet fixups for broken devices, virtual cables, and all the other “set up a virtual MIDI port” stuff that has to happen above the driver and below any existing MIDI subsystem. Which, I think, would require some sort of microcontroller?

To look at it another way, single-purpose ports like MIDI or audio don’t have to do any special logic or negotiation because there’s only one type of data that ever flows over them. But USB is general purpose. Literally anything (audio, MIDI, keyboard, mouse, phone sync, self-warming coffee mugs with rainbow LEDs…) can run over it. So the host needs to negotiate what types of services are available and how they’ll be addressed. To do that, it needs something that can run a program. And that requires some sort of computer.

Microcontroller, yes - but I assume you’d have that anyway (for processing MIDI), and there’s also one embedded on the module, so it can “encapsulate USB device classes” according to the data sheet. I have not worked with stuff like this for ages, but the other side - USB device - was quite easy to integrate already 20 years ago with FTDI USB/serial chips. If you have specific use cases like USB MIDI, an MCU should be sufficient.

So for a controller to be a host, it has to have a computer in it. Unless the controller is already essentially a computer (like the MPC), it’s expensive to add a computer just for managing USB.

Is it really though? What’s needed to do this simple sole task? More computing power than say a 20-dollar smartwatch? I doubt it.

It’s not power it’s that USB hosting is immensely complex and not something you can drop into most microcontrollers. Over half of the linux kernel code is host side drivers. Moving up to a processor that can just run linux is wildly more cost efficient than attempting to develop a usb host on a microcontroller

The closest open source options are the deluge and the teensy, but both of them have trouble with any remotely non-standard usb midi devices (which is lots of them)

1 Like

Examples of small, not super cheap MCU that can handle midi host tasks with programming examples.

Pi pico

GitHub - rppicomidi/usb_midi_host: An application level TinyUSB USB MIDI Host driver for the RP2040

ESP32

GitHub - touchgadget/esp32-usb-host-demos: ESP32S2 Arduino USB host printer, MIDI, and keyboard demos

1 Like

I’m still amazed that there is no USB host keyboard or knobs box.

I know you can buy extra boxes and their power supplies and cables etc but that’s obviously a bore.