Dave Addey Elaborates On Plug-In Controller Support For DJ-1800 Version 3.1
Ask, and you shall receive…
We queried Dave Addey about his unique plug-in support for hardware controllers in the recent update of his DJ-1800.
Here’s the lowdown:
Before v3.1, the only way for us to add support for a new controller was for us to code it into the application itself. This was a pain, as it meant that we had to tie our controller support to the release of new versions.
We have also found that DJ-1800 isn’t just used by DJs. It’s also used by recording studios, TV production companies, radio stations, events companies, theatres, performing arts organisations, and many others, as a rock-solid way to play multiple tracks and samples in any environment that
requires reliability and flexibility. As a result, we get requests to support many more devices than just the mainstream DJ controllers.
So, for v3.1, we’ve re-written our controller support from the ground up, to make it much more flexible. Individual controllers are now supported via plug-ins. As part of the change, we have created plug-ins for many of the major DJ controllers from Denon, Numark, M-Audio, Hercules etc. – a full list is available for review.
The new approach also enables us to update these plug-ins with bug fixes and new features at any time. We can also support new controllers at any time – for example, we are currently working on new a plug-in for the Hercules Rmx…which should be available in the next few weeks.
However, we didn’t want to limit our users to only using the controllers we have here at DJ-1800 HQ. So, we’ve made the whole plug-in API public. You can download the API from the plug-in page mentioned above. This zip file contains full documentation and walkthroughs for plug-in creation, as well as template plug-ins for MIDI and Keyboard devices. It shows users how to create their own plug-ins, and enables them to to share their plug-ins with other users if they wish. (For example, our M-Audio X-Session Pro plug-in was created by Jakob Schlyter, one of our beta
testers.) We also provide a separate section of our support forums, for plug-in creation support and sharing
Plug-ins can be created for any of the following:
» MIDI devices
» Human Interface Device (HID) devices
» Devices which have their own custom drivers as an external library
Users can also edit the existing plug-ins if they don’t like how they work. For example, they can change the default keyboard shortcuts by creating their own user-defined keyboard plug-in. This is particularly useful when using DJ-1800 in bespoke audio environments.
We had considered taking a “MIDI Learn” route for controller support in v3.1, but we kept finding that MIDI Learn just didn’t give enough control over how a MIDI device maps on to DJ-1800’s controls. (We also found that not all controllers are MIDI controllers.) For example, MIDI Learn didn’t give a flexible way to make a button’s state affect a slider’s action. The API approach gives complete control to plug-in creators, providing them with a powerful scripting language and enabling them to create flexible, programmatic plug-ins for their controllers. For example, you can implement a custom “kill” button, combining an EQ twister with a nearby button on the controller, by storing the value of the twister when the kill button is pressed, and reinstating it in the correct position when the button is released. All of this can be achieved using a simple-to-learn scripting
language, with nothing more than the plug-in API and a text editor.
We have also found this approach to be much more powerful than the “configuration file” approach used by other DJ applications. For example, with the API approach we have been able to create a plug-in for the Frontier Design TranzPort…turning it into a wireless remote control for DJ-1800 with a custom two-line LCD display showing the current CD Player’s state.
Plug-ins can trigger many different actions in DJ-1800 – for example:
» Pressing any of the buttons on any of DJ-1800’s CD Players
» Pressing any of the buttons on the internal mixer
» Changing the values of faders and twisters on the internal mixer
» Moving the jog and shuttle wheels
» Changing which track is loaded in a CD Player
» Moving the crossfader
» Changing the “current” CD Player
Plug-ins can retrieve information from DJ-1800, such as:
» Which CD Player is the “current” CD Player
» Whether the internal mixer / crossfader are being used
» The current positions of faders and twisters
Plug-ins can register to receive notifications when events happen, and can
respond to those events, such as:
» When a Play or Cue LED needs to be set
» When the current time value has changed for a CD Player
» When various faders and twisters have been moved
Plug-ins can specify their own preferences, and the values of these preferences can be changed by the user in the Controllers preferences window. A full list of all of these options can be found in the documentation included with the plug-in API.
More information on Dave Addey’s DJ-1800 mixing software.