HIDvsMIDI


HID vs MIDI

Most of the DJ controllers on the market today can be sorted in two categories: MIDI controllers and HID controllers.
Some controllers even provide both interfaces.
But what exactly is the difference between MIDI and HID, and when to use which?

MIDI
The MIDI interface is the old legacy interface, that was developed many years ago to let digital musical instruments communicate together.
It's based on short "messages" that usually represent a button pressed or released, or the movement of a slider.
MIDI is still used by some manufacturer because some competitor DJ software are still not compatible with HID.
But, the main problem with MIDI, is that it cannot track fast movements, and therefore is very ill-adapted for controllers with jog-wheels.
Windows MIDI stack has a built-in speed limit, and will likely crash if it receives MIDI messages too fast.
On Windows VISTA, it will crash much faster than on Windows XP, which requires manufacturers who still want to implement MIDI for their jog-wheel controllers, to implement different settings for latency depending on the operating system, and hope that it will be enough not to crash for the majority of users.

HID
HID (Human Interface Device), is a sub-protocol of the USB protocol, that is used by devices whose function is to let the humans interact with the computer. Mouse, keyboard, joystick, are examples of HID devices.
The HID protocol defines a memory block of an arbitrary length, where each bit or group of bits can represent a button, a slider or a jogwheel. The device writes in this memory according to the state of its elements, and the computer reads the memory block whenever something changes.
The conceptual difference between HID and MIDI is that HID is a "pull" model, where the software application will require data whenever it is ready to process them, whereas MIDI is a "push" model, where the controller will force-feed the application with data whether it's ready to process it or not.
This results in a better latency in HID, and allow the controller to have fast-moving elements like jog-wheel, without risking to crash the operating system.
It also let the controllers implement more extensive LCD displays with lines of text etc, and let the application use it, without the usual MIDI bandwidth problems.

Both protocols are natively supported by all versions of Windows or MacOS, and don't require any specific driver to install.


So, to summarize, the MIDI interface is an old protocol, that can still be safely used for simple controllers that have only buttons, sliders and LEDs, but is ill-advised for controllers with jog-wheels or LCD displays.
And the HID interface is a newer protocol, better suited for more complicated controllers, but that might not be compatible with older DJ software (but is compatible with VirtualDJ of course).


See also:
Implementing new controllers in VirtualDJ 6



Go Back

Wiki HOME

Site map
(C)opyright Atomix Productions 2014

Software
Hardware
ContentUnlimited
Goodies
VirtualDJ Pro versione completa
VirtualDJ Pro Basic
VirtualDJ Broadcaster
VirtualDJ Home GRATIS
VirtualDJ LE
Comparazione
Numark CUE
VirtualVinyl
VirtualDJ iRemote
AtomixMP3
eJay DJMixStation
DJ-Box
PerchŔ Virtualdj?
Vdj per Video DJ (Vdj)
Vdj per i DJ Scratcher
Vdj per i Club DJ
Vdj per DJ Mobili
What's new
Caratteristiche
Screenshots
VirtualDJ Home GRATIS
Manuali Utente
Plugins
Aggiornamento Software
Materiale Promozionale
SDK svilupatori
Timecode CD
Skins
Effetti
Controllers
Linguaggi
Samples audio
Sfondi per Desktop
Tools
Forums
Rete Utenti
Wiki e Manuali
Radio
Rivista
Social Web
Creare un nuovo utente
Atomix Productions
Informativa sulla privacy
VIP DJs
Richieste
Controlla le tue richieste
Wiki e Manuali