Developers
Developer SDK
VirtualDJ offers a high level of customization. In addition of a long list of internal options, you can create your own interface or add some new features to VirtualDJ thanks to a SDK (Software Development Kit) defined for the following part of the software:
/!\ All the XML files listed below use UTF-8 encoding
Skins
This section is dedicated to the creation or modification of a skin. A skin is a .zip file containing mainly the following files:
To create a modification of the default skin, simply open VirtualDJ, go to the Interface config page, select the default skin and click 'edit this skin' at the top right to extract the skin for you to start editing. A full guide can be found here.
The skin must be copied in the following folders:
[PC][Mac].\Documents\VirtualDJ\Skins\
Translations
This section is dedicated to the creation or modification of a translation. Translations in VirtualDJ are composed of .xml files:
The translation must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Languages\
Controllers
A controller in VirtualDJ is defined by two XML files, a "definition" file and a "mapping" file.
The definition file gives a human-readable name to every MIDI code or HID zone.
The Mapping file associates each name of the definition file with an action in VDJscript.
Many controllers already have a definition file embedded inside VirtualDJ.
If you have a controller that is not recognized natively by VirtualDJ, or if you are a manufacturer working on a new controller, it is very easy to create a new definition file for this controller.
More information about each part:
Controller MIDI definition
Controller HID definition
Controller Mapping
The definition file must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Devices\
The Mapping file must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Mappers\
Effects / Plugins
Plugins in VirtualDJ are .dll (or .bundle on Mac) files that extend the functions of the software.
In order to create a plugin, you will have to use a compiler that let you create .dll or .bundle files.
On Windows, you can use the free Microsoft Visual Studio Express/Community. On Mac, you can use the free XCode.
Plugins in VirtualDJ look a lot like COM objects, so any languages that can create COM objects can create a plugin for VirtualDJ (Visual Basic, C#, etc).
Still, we highly recommend to use C++, since that's the native language of the header files, and that's also the language in which you'll find all the help on the forums here.
Once you are ready to start creating your plugins, you'll need to download and include the header files that define the basic plugin structure.
You have 4 main categories of plugins:
You need to make your own plugin derive from the interface class IVdjPluginXXXX.
Then you should implement the DllGetClassObject() function to return a new instance of your plugin's class (derived from the IVdjPluginXXXX class).
List of GUID used for VirtualDJ plugins
The plugin must be copied in the following folders:
[PC] .\Documents\VirtualDJ\Plugins\{Sub-Folder} for VirtualDJ - 32bit (dll in 32bit)
[PC] .\Documents\VirtualDJ\Plugins64\{Sub-Folder} for VirtualDJ - 64bit (dll in 64bit)
[Mac] ./Documents/VirtualDJ/Plugins64/{Sub-Folder} for VirtualDJ - 64bit (bundle in 64bit)
[Mac Arm/Apple Silicon] ./Documents/VirtualDJ/PluginsArm/{Sub-Folder} for VirtualDJ - ARM 64bit (bundle in 64bit)
where {Sub-Folder} depends on the nature of your plugin
Plugin SDK v8 - VirtualDJ 8 What's new?
Examples of source code:
Database
This section is dedicated to the reading of the database outside VirtualDJ. Database in VirtualDJ are composed of .xml files:
Database structure
/!\ No technical support will be provided in case of a database modification outside VirtualDJ.
Wiki HOME
VirtualDJ offers a high level of customization. In addition of a long list of internal options, you can create your own interface or add some new features to VirtualDJ thanks to a SDK (Software Development Kit) defined for the following part of the software:
- Skins
- Translations
- Controllers
- Effects / Plugins
- Database
/!\ All the XML files listed below use UTF-8 encoding
Skins
This section is dedicated to the creation or modification of a skin. A skin is a .zip file containing mainly the following files:
- the_name_of_your_skin.png (other picture formats are available)
- the_name_of_your_skin.xml
To create a modification of the default skin, simply open VirtualDJ, go to the Interface config page, select the default skin and click 'edit this skin' at the top right to extract the skin for you to start editing. A full guide can be found here.
The skin must be copied in the following folders:
[PC][Mac].\Documents\VirtualDJ\Skins\
Translations
This section is dedicated to the creation or modification of a translation. Translations in VirtualDJ are composed of .xml files:
- the_name_of_your_language.xml
The translation must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Languages\
Controllers
A controller in VirtualDJ is defined by two XML files, a "definition" file and a "mapping" file.
The definition file gives a human-readable name to every MIDI code or HID zone.
The Mapping file associates each name of the definition file with an action in VDJscript.
Many controllers already have a definition file embedded inside VirtualDJ.
If you have a controller that is not recognized natively by VirtualDJ, or if you are a manufacturer working on a new controller, it is very easy to create a new definition file for this controller.
More information about each part:
Controller MIDI definition
Controller HID definition
Controller Mapping
The definition file must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Devices\
The Mapping file must be copied in the following folders:
[PC][Mac] .\Documents\VirtualDJ\Mappers\
Effects / Plugins
Plugins in VirtualDJ are .dll (or .bundle on Mac) files that extend the functions of the software.
In order to create a plugin, you will have to use a compiler that let you create .dll or .bundle files.
On Windows, you can use the free Microsoft Visual Studio Express/Community. On Mac, you can use the free XCode.
Plugins in VirtualDJ look a lot like COM objects, so any languages that can create COM objects can create a plugin for VirtualDJ (Visual Basic, C#, etc).
Still, we highly recommend to use C++, since that's the native language of the header files, and that's also the language in which you'll find all the help on the forums here.
Once you are ready to start creating your plugins, you'll need to download and include the header files that define the basic plugin structure.
You have 4 main categories of plugins:
- General plugins: Plugins that are loaded on startup and perform actions on their own.
- Dsp plugins: Audio effects that interact with the sound.
- VideoEffect plugins: Video effects that add some special effect to the video output.
- VideoTransition plugins: Video effects that define a new way to crossfade from one video to another.
You need to make your own plugin derive from the interface class IVdjPluginXXXX.
Then you should implement the DllGetClassObject() function to return a new instance of your plugin's class (derived from the IVdjPluginXXXX class).
List of GUID used for VirtualDJ plugins
The plugin must be copied in the following folders:
[PC] .\Documents\VirtualDJ\Plugins\{Sub-Folder} for VirtualDJ - 32bit (dll in 32bit)
[PC] .\Documents\VirtualDJ\Plugins64\{Sub-Folder} for VirtualDJ - 64bit (dll in 64bit)
[Mac] ./Documents/VirtualDJ/Plugins64/{Sub-Folder} for VirtualDJ - 64bit (bundle in 64bit)
[Mac Arm/Apple Silicon] ./Documents/VirtualDJ/PluginsArm/{Sub-Folder} for VirtualDJ - ARM 64bit (bundle in 64bit)
where {Sub-Folder} depends on the nature of your plugin
Plugin SDK v8 - VirtualDJ 8 What's new?
- VirtualDJ8_SDK_20211003.zip (header files for all types of plug-ins)
- vdjPlugin8.h (basic common base-class for all plugins)
- vdjDsp8.h (base classes for all Dsp plugins)
- vdjVideo8.h (base classes for all Video plugins) (How To)
- vdjOnlineSource.h (base classes for all Online Source plugins)
Examples of source code:
- Basic plugin (with default interface)
- Basic plugin (with skin interface)
- Audio plugin (DSP) - Example 1 / Audio plugin (DSP) - Example 2
- Audio plugin (Buffer DSP)
- Video FX plugin
- Video Transition plugin
- Online Source plugin
Database
This section is dedicated to the reading of the database outside VirtualDJ. Database in VirtualDJ are composed of .xml files:
- "database.xml" since VirtualDJ v8.0
- "VirtualDJ Database v6.xml" before VirtualDJ v8.0
Database structure
/!\ No technical support will be provided in case of a database modification outside VirtualDJ.