Jump to content
Gibson Brands Forums
Sign in to follow this  
Luis Serrano

Dj Controller Support

Recommended Posts

Since DD version 2.50 we are going to support Dj controllers via MIDI scripting only. We will post here always the latest official controllers supported. To update just download the zip file attached "script_files.zip" and unzip it inside the DD installation directory replacing the old "script_files" directory.

 

script_files.zip

 

DD installation directory is usually placed in:

"C:\Program Files (x86)\Stanton\Deckadance 2" for Windows

"/Library/Application Support/Stanton/Deckadance2" for Mac

 

Changelog:
---------

<April 26 2016>
   * [new] - Support for: Numark MixTrack 3 / Orbit / DJ2GO, Akai APC Mini, Stanton SCS.3M, M-Audio Xponent (Special thanks to Connor Moroney).

<December 13 2016>
   * [new] - Support for Novation Launchpad MK2.

<November 21 2016>
   * [new] - Support for Casio XW-DJ1.

<October 13 2016>
   * [fix] - Fixed sampler buttons bug for Stanton DJC.4.

<September 12 2016>
   * [new] - Support for Hercules DJC Instinct P8.
   * [new] - Added SNAPSHOT, LAYOUT and FUNCTION_PANEL commands to the engine.

<July 27 2016>
   * [new] - Support for Vestax VCM-100.
   * [new] - Support for Icon XDJ.

<May 25 2016>
   * [new] - Support for NI Maschine sampler pads.
   * [fix] - Fixed problem with Behringer CMD 4A decks B/D pitch bend led feedback.

<Jan 13 2016>
   * [fix] - Fixed problem with Behringer CMD 4A hot cues, jog scratch for decks A/C and headphone led button.
   * [chg] - Renamed some Hercules controllers.

<Nov 20 2015>
   * [new] - Support for M-Audio X-Session Pro.
   * [fix] - Fixed problem with Behringer CMD PL-1 loop size encoder.

Info
----

[new] = New Feature.
[imp] = Improvement.
[fix] = Bug fix.
[chg] = Change.
[kis] = Known issue.

Share this post


Link to post
Share on other sites

Hello all, I recently upgraded to the newest version of Deckadance and found that the Hercules RMX is no longer a supported controller. I have hacked together a midi script for it that works well for me (some of the functionality is different from previous versions of deckadance, I kind of tailored it to my own needs). I thought I would post it here in case anyone else is trying to use a Hercules RMX.

DJC Rmx.zip

Share this post


Link to post
Share on other sites

Since DD version 2.50 we are going to support Dj controllers via MIDI scripting only. We will post here always the latest official controllers supported. To update just download the zip file attached "script_files.zip" and unzip it inside the DD installation directory replacing the old "script_files" directory.

 

 

 

DD installation directory is usually placed in:

"C:\Program Files (x86)\Stanton\Deckadance 2" for Windows

"/Library/Application Support/Stanton/Deckadance2" for Mac

 

Changelog:
---------

<Jan 13 2016>
   * [fix] - Fixed problem with Behringer CMD 4A hot cues, jog scratch for decks A/C and headphone led button.
   * [chg] - Renamed some Hercules controllers.

<Nov 20 2015>
   * [new] - Support for M-Audio X-Session Pro.
   * [fix] - Fixed problem with Behringer CMD PL-1 loop size encoder.

Info
----

[new] = New Feature.
[imp] = Improvement.
[fix] = Bug fix.
[chg] = Change.
[kis] = Known issue.

Luis, Just so your aware, the crossfader in the x-session pro is currently programmed backwards.

Share this post


Link to post
Share on other sites
Guest EddyC1

I see that the Synq PCM-1 is no longer supported. Deckadance was bundled with the Synq PCM-1 when I bought the controller and this midi controller was supported in the previous versions of Deckadance. Is it possible to put this controller back in the midi controller preferences section.

 

Thx

 

Eddy

Share this post


Link to post
Share on other sites
Guest Joshua

I have the SCS3 system, and when Deckadance was with Image line it worked, is it possible to get support for that?

Share this post


Link to post
Share on other sites

Hi, just reading through the "midi learn" commands -- which one sets the BPM, to allow Deckadance to be the master for BPM with Roland AIRA products?

 

Also, FL Studio isn't showing Deckadance as a plug in, how do I access that feature?

 

Thanks!

 

- Patrick

Share this post


Link to post
Share on other sites

Actually, if I could figure out how to get a BPM out to midi, I could take it from there in terms of syncing live hardware. This is actually why I bought the product, since it's so easy syncing hardware with FL Studio, I figured this new version of their former product would be even easier. Any suggestions?

Share this post


Link to post
Share on other sites
Guest Melbourne

Since DD version 2.50 we are going to support Dj controllers via MIDI scripting only. We will post here always the latest official controllers supported. To update just download the zip file attached "script_files.zip" and unzip it inside the DD installation directory replacing the old "script_files" directory.

 

 

 

DD installation directory is usually placed in:

"C:\Program Files (x86)\Stanton\Deckadance 2" for Windows

"/Library/Application Support/Stanton/Deckadance2" for Mac

 

Changelog:
---------

<Jan 13 2016>
   * [fix] - Fixed problem with Behringer CMD 4A hot cues, jog scratch for decks A/C and headphone led button.
   * [chg] - Renamed some Hercules controllers.

<Nov 20 2015>
   * [new] - Support for M-Audio X-Session Pro.
   * [fix] - Fixed problem with Behringer CMD PL-1 loop size encoder.

Info
----

[new] = New Feature.
[imp] = Improvement.
[fix] = Bug fix.
[chg] = Change.
[kis] = Known issue.

Share this post


Link to post
Share on other sites
Guest Melbourne

Since DD version 2.50 we are going to support Dj controllers via MIDI scripting only. We will post here always the latest official controllers supported. To update just download the zip file attached "script_files.zip" and unzip it inside the DD installation directory replacing the old "script_files" directory.

 

 

 

DD installation directory is usually placed in:

"C:\Program Files (x86)\Stanton\Deckadance 2" for Windows

"/Library/Application Support/Stanton/Deckadance2" for Mac

 

Changelog:
---------

<Jan 13 2016>
   * [fix] - Fixed problem with Behringer CMD 4A hot cues, jog scratch for decks A/C and headphone led button.
   * [chg] - Renamed some Hercules controllers.

<Nov 20 2015>
   * [new] - Support for M-Audio X-Session Pro.
   * [fix] - Fixed problem with Behringer CMD PL-1 loop size encoder.

Info
----

[new] = New Feature.
[imp] = Improvement.
[fix] = Bug fix.
[chg] = Change.
[kis] = Known issue.

 

 

Sorry about the first blank post...I have 2 PL-1, 1 MM-1, 1 DC-1, 1 LC-1....This new midi scripting feature for the CMD LC-1 the Gross Beat controller only let you activate the buttons.. turn on each Gross Beat function for each desired button...but it won't turn it off like it did in version 2.43...In 2.43 you could turn on and off as you desire to ...now it's just a on button only no turn off of the selected gross beat as you want to. Also is it possible to program the output #2 knob on the CMD MM-1 as the volume nob for the sampler. Also smart knob do crash the program when activated on version 2.51 but not on version 2.43 I have replicate this more than once...

Share this post


Link to post
Share on other sites
Guest lyle g hodgetts

have you got any programs that support pioneer ddj-sx2 for deckdance cheers lyle price

Share this post


Link to post
Share on other sites

Hey Luis, do you know if it is possible to use two different midi controllers at once in Deckadance? I'd like to do 4 deck mixing, but controllers with four decks are rare, so I'd like to just add another two deck to my setup. I imagine I would have to tweak the midi-script of the second controller to control decks C&D, which is no problem.

Share this post


Link to post
Share on other sites

Hey Luis, do you know if it is possible to use two different midi controllers at once in Deckadance? I'd like to do 4 deck mixing, but controllers with four decks are rare, so I'd like to just add another two deck to my setup. I imagine I would have to tweak the midi-script of the second controller to control decks C&D, which is no problem.

Yes, you can use multiple controllers at the same time. If you go to Preferences->Midi Control you will see that there are 6 slots for MIDI scripts... what means that you can use 6 different controllers. In fact, you can use a lot more because you could combine different MIDI scripts into only one and use also the MIDI learning slot.

Share this post


Link to post
Share on other sites
Guest Helly

Hello! I like your products very much, but unfortunately there is no Pioneer we go 3 (or other series) support. Did I miss something? (sorry for my English :)

 

Thanks!

 

-Helly.

Share this post


Link to post
Share on other sites
Guest EddyC1

Hi Luis

 

I see that the Synq PCM-1 is no longer supported. Deckadance was bundled with the Synq PCM-1 when I bought the controller and this midi controller was supported in the previous versions of Deckadance. Is it possible to put this controller back in the midi controller preferences section?

 

Thx in advance.

 

Eddy

Share this post


Link to post
Share on other sites
Guest frankschubert75

Yes, a midi script for synq pcm 1 would be nice. He is right, it was bundled with deckadance. I can use it with midi learn, but how to map the jog wheel?

Share this post


Link to post
Share on other sites
Guest DJ MO

Hi Luis

 

I see that the Synq PCM-1 is no longer supported. Deckadance was bundled with the Synq PCM-1 when I bought the controller and this midi controller was supported in the previous versions of Deckadance. Is it possible to put this controller back in the midi controller preferences section?

 

Thx in advance.

 

Eddy

 

Hi Synq PCM-1 users! I just created a custom script for PCM-1 - external mixer mode. Feel free to use / modify it:)

 

 

//=============================================================================

// SYNQ-PCM.1

// MIDI script created: 27 May 2016

//=============================================================================

 

#include "dd_commands.h"

 

// globals

int CueDelA = 0;

int CueDelB = 0;

 

int SeekA = 0;

int SeekB = 0;

 

void OnMidiMessageReceived (const string &in name, int status, int data, int value)

{

// this callback is called when a midi message is received from a midi device

 

// stack

float value01 = value / 127.0;

float valueInc = (value < 0x40) ? -1.0 : 1.0;

float isDown = (value > 0) ? 1.0 : 0.0;

 

// NN's

if((status & 0xF0) == 0x90) {

 

if(status == 0x90 && data == 0x34) {if(value > 0) {CueDelA = 1; return;} else {CueDelA = 0; return;}}

if(status == 0x91 && data == 0x34) {if(value > 0) {CueDelB = 1; return;} else {CueDelB = 0; return;}}

 

if(status == 0x90 && data == 0x37) {if(value > 0) {SeekA = 1; return;} else {SeekA = 0; return;}}

if(status == 0x91 && data == 0x37) {if(value > 0) {SeekB = 1; return;} else {SeekB = 0; return;}}

 

if(status == 0x90 && data == 0x01) {if(value > 0) set(GROSSBEAT_PAD_A_1); return;}

if(status == 0x90 && data == 0x02) {if(value > 0) set(GROSSBEAT_PAD_A_2); return;}

if(status == 0x90 && data == 0x03) {if(value > 0) set(GROSSBEAT_PAD_A_3); return;}

if(status == 0x90 && data == 0x04) {if(value > 0) set(GROSSBEAT_PAD_A_4); return;}

if(status == 0x90 && data == 0x05) {if(value > 0) set(GROSSBEAT_PAD_A_5); return;}

if(status == 0x90 && data == 0x06) {if(value > 0) set(GROSSBEAT_PAD_A_6); return;}

if(status == 0x90 && data == 0x07) {if(value > 0) set(GROSSBEAT_PAD_A_7); return;}

if(status == 0x90 && data == 0x08) {if(value > 0) set(GROSSBEAT_PAD_A_8); return;}

if(status == 0x91 && data == 0x01) {if(value > 0) set(GROSSBEAT_PAD_B_1); return;}

if(status == 0x91 && data == 0x02) {if(value > 0) set(GROSSBEAT_PAD_B_2); return;}

if(status == 0x91 && data == 0x03) {if(value > 0) set(GROSSBEAT_PAD_B_3); return;}

if(status == 0x91 && data == 0x04) {if(value > 0) set(GROSSBEAT_PAD_B_4); return;}

if(status == 0x91 && data == 0x05) {if(value > 0) set(GROSSBEAT_PAD_B_5); return;}

if(status == 0x91 && data == 0x06) {if(value > 0) set(GROSSBEAT_PAD_B_6); return;}

if(status == 0x91 && data == 0x07) {if(value > 0) set(GROSSBEAT_PAD_B_7); return;}

if(status == 0x91 && data == 0x08) {if(value > 0) set(GROSSBEAT_PAD_B_8); return;}

 

if(status == 0x90 && data == 0x09 && value > 0) {if (CueDelA == 0) {set(HOT_CUE_1_A); return;} else {set(DELETE_HOT_CUE_1_A); return;}}

if(status == 0x90 && data == 0x0A && value > 0) {if (CueDelA == 0) {set(HOT_CUE_2_A); return;} else {set(DELETE_HOT_CUE_2_A); return;}}

if(status == 0x90 && data == 0x0B && value > 0) {if (CueDelA == 0) {set(HOT_CUE_3_A); return;} else {set(DELETE_HOT_CUE_3_A); return;}}

if(status == 0x90 && data == 0x0C && value > 0) {if (CueDelA == 0) {set(HOT_CUE_4_A); return;} else {set(DELETE_HOT_CUE_4_A); return;}}

if(status == 0x91 && data == 0x09 && value > 0) {if (CueDelB == 0) {set(HOT_CUE_1_B); return;} else {set(DELETE_HOT_CUE_1_B); return;}}

if(status == 0x91 && data == 0x0A && value > 0) {if (CueDelB == 0) {set(HOT_CUE_2_B); return;} else {set(DELETE_HOT_CUE_2_B); return;}}

if(status == 0x91 && data == 0x0B && value > 0) {if (CueDelB == 0) {set(HOT_CUE_3_B); return;} else {set(DELETE_HOT_CUE_3_B); return;}}

if(status == 0x91 && data == 0x0C && value > 0) {if (CueDelB == 0) {set(HOT_CUE_4_B); return;} else {set(DELETE_HOT_CUE_4_B); return;}}

 

if(status == 0x90 && data == 0x0E) {set(KEY_TUNING_A, 0.375); return;}

if(status == 0x90 && data == 0x0F) {set(KEY_TUNING_A, 0.417); return;}

if(status == 0x90 && data == 0x10) {set(KEY_TUNING_A, 0.458); return;}

if(status == 0x90 && data == 0x11) {set(KEY_TUNING_A, 0.500); return;}

if(status == 0x90 && data == 0x12) {set(KEY_TUNING_A, 0.542); return;}

if(status == 0x90 && data == 0x13) {set(KEY_TUNING_A, 0.583); return;}

if(status == 0x90 && data == 0x14) {set(KEY_TUNING_A, 0.625); return;}

if(status == 0x91 && data == 0x0E) {set(KEY_TUNING_B, 0.375); return;}

if(status == 0x91 && data == 0x0F) {set(KEY_TUNING_B, 0.417); return;}

if(status == 0x91 && data == 0x10) {set(KEY_TUNING_B, 0.458); return;}

if(status == 0x91 && data == 0x11) {set(KEY_TUNING_B, 0.500); return;}

if(status == 0x91 && data == 0x12) {set(KEY_TUNING_B, 0.542); return;}

if(status == 0x91 && data == 0x13) {set(KEY_TUNING_B, 0.583); return;}

if(status == 0x91 && data == 0x14) {set(KEY_TUNING_B, 0.625); return;}

 

if(status == 0x90 && data == 0x16) {if(value > 0) set(LOOP_A, 1 - get(LOOP_A)); return;}

if(status == 0x91 && data == 0x16) {if(value > 0) set(LOOP_B, 1 - get(LOOP_B)); return;}

 

if(status == 0x90 && data == 0x17 && value > 0) {if(get(DVS_INTERNAL_MODE_A) == 1) {set(DVS_RELATIVE_MODE_A, 1); return;} else {set

 

(DVS_INTERNAL_MODE_A, 1); return;}}

if(status == 0x91 && data == 0x17 && value > 0) {if(get(DVS_INTERNAL_MODE_B) == 1) {set(DVS_RELATIVE_MODE_B, 1); return;} else {set

 

(DVS_INTERNAL_MODE_B, 1); return;}}

 

if(status == 0x90 && data == 0x18) {if(value > 0) {set(LEAP_A, 1); return;} else {set(LEAP_A, 0); return;}}

if(status == 0x91 && data == 0x18) {if(value > 0) {set(LEAP_B, 1); return;} else {set(LEAP_B, 0); return;}}

 

if(status == 0x90 && data == 0x19) {set(CUE_STUTTER_A, isDown); return;}

if(status == 0x91 && data == 0x19) {set(CUE_STUTTER_B, isDown); return;}

 

if(status == 0x90 && data == 0x1A) {if(value > 0) set(PLAY_PAUSE_A); return;}

if(status == 0x91 && data == 0x1A) {if(value > 0) set(PLAY_PAUSE_B); return;}

 

if(status == 0x90 && data == 0x1B) {if(value > 0) set(EFFECT_ON_1_GROUP_A, 1 - get(EFFECT_ON_1_GROUP_A)); return;}

if(status == 0x90 && data == 0x1C) {if(value > 0) set(EFFECT_ON_2_GROUP_A, 1 - get(EFFECT_ON_2_GROUP_A)); return;}

if(status == 0x90 && data == 0x1D) {if(value > 0) set(EFFECT_ON_3_GROUP_A, 1 - get(EFFECT_ON_3_GROUP_A)); return;}

if(status == 0x91 && data == 0x1B) {if(value > 0) set(EFFECT_ON_1_GROUP_B, 1 - get(EFFECT_ON_1_GROUP_B)); return;}

if(status == 0x91 && data == 0x1C) {if(value > 0) set(EFFECT_ON_2_GROUP_B, 1 - get(EFFECT_ON_2_GROUP_B)); return;}

if(status == 0x91 && data == 0x1D) {if(value > 0) set(EFFECT_ON_3_GROUP_B, 1 - get(EFFECT_ON_3_GROUP_B)); return;}

 

if(status == 0x90 && data == 0x33) {if(value > 0) set(MASTER_A); return;}

if(status == 0x91 && data == 0x33) {if(value > 0) set(MASTER_B); return;}

 

if(status == 0x90 && data == 0x35) {if(value > 0) set(DOWNBEAT_A); return;}

if(status == 0x91 && data == 0x35) {if(value > 0) set(DOWNBEAT_B); return;}

 

if(status == 0x90 && data == 0x36) {if(value > 0) set(SYNC_LOCK_A, 1 - get(SYNC_LOCK_A)); return;}

if(status == 0x91 && data == 0x36) {if(value > 0) set(SYNC_LOCK_B, 1 - get(SYNC_LOCK_B)); return;}

 

if(status == 0x90 && data == 0x38) {if(value > 0 && get(SYNC_LOCK_A) > 0) {set(PHASE_SYNC_A); return;} else {set(SYNC_LOCK_A, 1); return;}}

if(status == 0x91 && data == 0x38) {if(value > 0 && get(SYNC_LOCK_B) > 0) {set(PHASE_SYNC_B); return;} else {set(SYNC_LOCK_B, 1); return;}}

 

if(status == 0x90 && data == 0x39) {if(value > 0) set(PITCH_RESET_A); return;}

if(status == 0x91 && data == 0x39) {if(value > 0) set(PITCH_RESET_B); return;}

 

if(status == 0x90 && data == 0x3B) {set(PITCH_BEND_NUDGE_MINUS_A, isDown); return;}

if(status == 0x90 && data == 0x3C) {set(PITCH_BEND_NUDGE_PLUS_A, isDown); return;}

if(status == 0x91 && data == 0x3B) {set(PITCH_BEND_NUDGE_MINUS_B, isDown); return;}

if(status == 0x91 && data == 0x3C) {set(PITCH_BEND_NUDGE_PLUS_B, isDown); return;}

 

if(status == 0x90 && data == 0x3D) {if(value > 0) set(PLAYLIST_LOAD_A); return;}

if(status == 0x91 && data == 0x3D) {if(value > 0) set(PLAYLIST_LOAD_B); return;}

 

if(status == 0x92 && data == 0x01) {if(value > 0) set(SNAP, 1 - get(SNAP)); return;}

 

}

 

// CC's

if((status & 0xF0) == 0xB0) {

 

if(status == 0xB0 && data == 0x09) {if(valueInc > 0) {set(FUNCTION_PANEL, get(FUNCTION_PANEL) + 1); return;} else {set(FUNCTION_PANEL, get

 

(FUNCTION_PANEL) - 1); return;}}

 

if(status == 0xB1 && data == 0x09) {if(valueInc > 0) {set(LAYOUT, get(LAYOUT) + 2); return;} else {set(LAYOUT, get(LAYOUT) - 2); return;}}

 

if(status == 0xB0 && data == 0x11) {if(valueInc > 0) {set(LOOP_MOVE_FORWARD_A); return;} else {set(LOOP_MOVE_BACKWARD_A); return;}}

if(status == 0xB1 && data == 0x11) {if(valueInc > 0) {set(LOOP_MOVE_FORWARD_B); return;} else {set(LOOP_MOVE_BACKWARD_B); return;}}

 

if(status == 0xB0 && data == 0x12) {set(PITCH_A, 1.0 - value01); return;}

if(status == 0xB1 && data == 0x12) {set(PITCH_B, 1.0 - value01); return;}

 

if(status == 0xB0 && data == 0x01) {set(LOOP_SIZE_A, value); return;}

if(status == 0xB1 && data == 0x01) {set(LOOP_SIZE_B, value); return;}

 

if(status == 0xB0 && data == 0x13) {set(EFFECT_PARAM_1_GROUP_A, value01); return;}

if(status == 0xB0 && data == 0x14) {set(EFFECT_PARAM_2_GROUP_A, value01); return;}

if(status == 0xB0 && data == 0x15) {set(EFFECT_PARAM_3_GROUP_A, value01); return;}

if(status == 0xB1 && data == 0x13) {set(EFFECT_PARAM_1_GROUP_B, value01); return;}

if(status == 0xB1 && data == 0x14) {set(EFFECT_PARAM_2_GROUP_B, value01); return;}

if(status == 0xB1 && data == 0x15) {set(EFFECT_PARAM_3_GROUP_B, value01); return;}

 

if(status == 0xB0 && data == 0x16) {set(FX_DRY_WET_GROUP_A, value01); return;}

if(status == 0xB1 && data == 0x16) {set(FX_DRY_WET_GROUP_B, value01); return;}

 

if(status == 0xB0 && data == 0x17) {set(JOG_A, value - 64.0, -0.01, 0.1); return;}

if(status == 0xB1 && data == 0x17) {set(JOG_B, value - 64.0, -0.01, 0.1); return;}

 

if(status == 0xB2 && data == 0x01) {set(PLAYLIST_SELECT, value); return;}

 

if(status == 0xB2 && data == 0x02) {set(FILTER_A, value01); return;}

if(status == 0xB2 && data == 0x03) {set(FILTER_B, value01); return;}

 

if(status == 0xB2 && data == 0x04) {set(MASTER_VOLUME, value01); return;}

 

if(status == 0xB2 && data == 0x05 && SeekA == 1) {set(SEEK_A, value01); return;}

if(status == 0xB2 && data == 0x05 && SeekB == 1) {set(SEEK_B, value01); return;}

 

}

}

 

void OnTimerCallback()

{

// this callback is called continunuosly by DD every 50 ms

 

// stack

int off = 0x00;

int on = 0x7F;

 

(get(BEAT_ID_B) == 1) ? sendMidiMessage(0x90, 0x01, on) : sendMidiMessage(0x90, 0x01, off);

(get(BEAT_ID_B) == 2) ? sendMidiMessage(0x90, 0x02, on) : sendMidiMessage(0x90, 0x02, off);

(get(BEAT_ID_B) == 3) ? sendMidiMessage(0x90, 0x03, on) : sendMidiMessage(0x90, 0x03, off);

(get(BEAT_ID_B) == 4) ? sendMidiMessage(0x90, 0x04, on) : sendMidiMessage(0x90, 0x04, off);

(get(BEAT_ID_A) == 1) ? sendMidiMessage(0x90, 0x05, on) : sendMidiMessage(0x90, 0x05, off);

(get(BEAT_ID_A) == 2) ? sendMidiMessage(0x90, 0x06, on) : sendMidiMessage(0x90, 0x06, off);

(get(BEAT_ID_A) == 3) ? sendMidiMessage(0x90, 0x07, on) : sendMidiMessage(0x90, 0x07, off);

(get(BEAT_ID_A) == 4) ? sendMidiMessage(0x90, 0x08, on) : sendMidiMessage(0x90, 0x08, off);

(get(BEAT_ID_A) == 1) ? sendMidiMessage(0x91, 0x01, on) : sendMidiMessage(0x91, 0x01, off);

(get(BEAT_ID_A) == 2) ? sendMidiMessage(0x91, 0x02, on) : sendMidiMessage(0x91, 0x02, off);

(get(BEAT_ID_A) == 3) ? sendMidiMessage(0x91, 0x03, on) : sendMidiMessage(0x91, 0x03, off);

(get(BEAT_ID_A) == 4) ? sendMidiMessage(0x91, 0x04, on) : sendMidiMessage(0x91, 0x04, off);

(get(BEAT_ID_B) == 1) ? sendMidiMessage(0x91, 0x05, on) : sendMidiMessage(0x91, 0x05, off);

(get(BEAT_ID_B) == 2) ? sendMidiMessage(0x91, 0x06, on) : sendMidiMessage(0x91, 0x06, off);

(get(BEAT_ID_B) == 3) ? sendMidiMessage(0x91, 0x07, on) : sendMidiMessage(0x91, 0x07, off);

(get(BEAT_ID_B) == 4) ? sendMidiMessage(0x91, 0x08, on) : sendMidiMessage(0x91, 0x08, off);

 

(get(HOT_CUE_1_A) > 0) ? sendMidiMessage(0x90, 0x09, on) : sendMidiMessage(0x90, 0x09, off);

(get(HOT_CUE_2_A) > 0) ? sendMidiMessage(0x90, 0x0A, on) : sendMidiMessage(0x90, 0x0A, off);

(get(HOT_CUE_3_A) > 0) ? sendMidiMessage(0x90, 0x0B, on) : sendMidiMessage(0x90, 0x0B, off);

(get(HOT_CUE_4_A) > 0) ? sendMidiMessage(0x90, 0x0C, on) : sendMidiMessage(0x90, 0x0C, off);

(get(HOT_CUE_1_B) > 0) ? sendMidiMessage(0x91, 0x09, on) : sendMidiMessage(0x91, 0x09, off);

(get(HOT_CUE_2_B) > 0) ? sendMidiMessage(0x91, 0x0A, on) : sendMidiMessage(0x91, 0x0A, off);

(get(HOT_CUE_3_B) > 0) ? sendMidiMessage(0x91, 0x0B, on) : sendMidiMessage(0x91, 0x0B, off);

(get(HOT_CUE_4_B) > 0) ? sendMidiMessage(0x91, 0x0C, on) : sendMidiMessage(0x91, 0x0C, off);

 

(get(KEY_TUNING_A) == 0.375) ? sendMidiMessage(0x90, 0x0E, on) : sendMidiMessage(0x90, 0x0E, off);

(get(KEY_TUNING_A) == 0.417) ? sendMidiMessage(0x90, 0x0F, on) : sendMidiMessage(0x90, 0x0F, off);

(get(KEY_TUNING_A) == 0.458) ? sendMidiMessage(0x90, 0x10, on) : sendMidiMessage(0x90, 0x10, off);

(get(KEY_TUNING_A) == 0.500) ? sendMidiMessage(0x90, 0x11, on) : sendMidiMessage(0x90, 0x11, off);

(get(KEY_TUNING_A) == 0.542) ? sendMidiMessage(0x90, 0x12, on) : sendMidiMessage(0x90, 0x12, off);

(get(KEY_TUNING_A) == 0.583) ? sendMidiMessage(0x90, 0x13, on) : sendMidiMessage(0x90, 0x13, off);

(get(KEY_TUNING_A) == 0.625) ? sendMidiMessage(0x90, 0x14, on) : sendMidiMessage(0x90, 0x14, off);

(get(KEY_TUNING_B) == 0.375) ? sendMidiMessage(0x91, 0x0E, on) : sendMidiMessage(0x91, 0x0E, off);

(get(KEY_TUNING_B) == 0.417) ? sendMidiMessage(0x91, 0x0F, on) : sendMidiMessage(0x91, 0x0F, off);

(get(KEY_TUNING_B) == 0.458) ? sendMidiMessage(0x91, 0x10, on) : sendMidiMessage(0x91, 0x10, off);

(get(KEY_TUNING_B) == 0.500) ? sendMidiMessage(0x91, 0x11, on) : sendMidiMessage(0x91, 0x11, off);

(get(KEY_TUNING_B) == 0.542) ? sendMidiMessage(0x91, 0x12, on) : sendMidiMessage(0x91, 0x12, off);

(get(KEY_TUNING_B) == 0.583) ? sendMidiMessage(0x91, 0x13, on) : sendMidiMessage(0x91, 0x13, off);

(get(KEY_TUNING_B) == 0.625) ? sendMidiMessage(0x91, 0x14, on) : sendMidiMessage(0x91, 0x14, off);

 

(get(LOOP_A) > 0) ? sendMidiMessage(0x90, 0x16, on) : sendMidiMessage(0x90, 0x16, off);

(get(LOOP_B) > 0) ? sendMidiMessage(0x91, 0x16, on) : sendMidiMessage(0x91, 0x16, off);

 

(get(DVS_INTERNAL_MODE_A) > 0) ? sendMidiMessage(0x90, 0x17, off) : sendMidiMessage(0x90, 0x17, on);

(get(DVS_INTERNAL_MODE_B) > 0) ? sendMidiMessage(0x91, 0x17, off) : sendMidiMessage(0x91, 0x17, on);

 

(get(CUE_A) > 0) ? sendMidiMessage(0x90, 0x19, on) : sendMidiMessage(0x90, 0x19, off);

(get(CUE_B) > 0) ? sendMidiMessage(0x91, 0x19, on) : sendMidiMessage(0x91, 0x19, off);

 

(get(PLAY_PAUSE_A) > 0) || (get(PLAY_PAUSE_A) == 0 && get(PLAY_B) == 1 && (get(BEAT_ID_B) == 1 || get(BEAT_ID_B) == 2)) ? sendMidiMessage(0x90, 0x1A,

 

on) : sendMidiMessage(0x90, 0x1A, off);

(get(PLAY_PAUSE_B) > 0) || (get(PLAY_PAUSE_B) == 0 && get(PLAY_A) == 1 && (get(BEAT_ID_A) == 1 || get(BEAT_ID_A) == 2)) ? sendMidiMessage(0x91, 0x1A,

 

on) : sendMidiMessage(0x91, 0x1A, off);

 

(get(TRACK_POSITION_A) < 0.11) ? sendMidiMessage(0x90, 0x2B, on) : sendMidiMessage(0x90, 0x2B, off);

(get(TRACK_POSITION_A) < 0.22) ? sendMidiMessage(0x90, 0x2C, on) : sendMidiMessage(0x90, 0x2C, off);

(get(TRACK_POSITION_A) < 0.33) ? sendMidiMessage(0x90, 0x2D, on) : sendMidiMessage(0x90, 0x2D, off);

(get(TRACK_POSITION_A) < 0.44) ? sendMidiMessage(0x90, 0x2E, on) : sendMidiMessage(0x90, 0x2E, off);

(get(TRACK_POSITION_A) < 0.56) ? sendMidiMessage(0x90, 0x2F, on) : sendMidiMessage(0x90, 0x2F, off);

(get(TRACK_POSITION_A) < 0.67) ? sendMidiMessage(0x90, 0x30, on) : sendMidiMessage(0x90, 0x30, off);

(get(TRACK_POSITION_A) < 0.78) ? sendMidiMessage(0x90, 0x31, on) : sendMidiMessage(0x90, 0x31, off);

(get(TRACK_POSITION_A) < 0.89) ? sendMidiMessage(0x90, 0x32, on) : sendMidiMessage(0x90, 0x32, off);

(get(TRACK_POSITION_B) < 0.11) ? sendMidiMessage(0x91, 0x2B, on) : sendMidiMessage(0x91, 0x2B, off);

(get(TRACK_POSITION_B) < 0.22) ? sendMidiMessage(0x91, 0x2C, on) : sendMidiMessage(0x91, 0x2C, off);

(get(TRACK_POSITION_B) < 0.33) ? sendMidiMessage(0x91, 0x2D, on) : sendMidiMessage(0x91, 0x2D, off);

(get(TRACK_POSITION_B) < 0.44) ? sendMidiMessage(0x91, 0x2E, on) : sendMidiMessage(0x91, 0x2E, off);

(get(TRACK_POSITION_B) < 0.56) ? sendMidiMessage(0x91, 0x2F, on) : sendMidiMessage(0x91, 0x2F, off);

(get(TRACK_POSITION_B) < 0.67) ? sendMidiMessage(0x91, 0x30, on) : sendMidiMessage(0x91, 0x30, off);

(get(TRACK_POSITION_B) < 0.78) ? sendMidiMessage(0x91, 0x31, on) : sendMidiMessage(0x91, 0x31, off);

(get(TRACK_POSITION_B) < 0.89) ? sendMidiMessage(0x91, 0x32, on) : sendMidiMessage(0x91, 0x32, off);

 

(get(MASTER_A) > 0) ? sendMidiMessage(0x90, 0x33, on) : sendMidiMessage(0x90, 0x33, off);

(get(MASTER_B) > 0) ? sendMidiMessage(0x91, 0x33, on) : sendMidiMessage(0x91, 0x33, off);

 

(get(SYNC_A) > 0) ? sendMidiMessage(0x90, 0x36, on) : sendMidiMessage(0x90, 0x36, off);

(get(SYNC_B) > 0) ? sendMidiMessage(0x91, 0x36, on) : sendMidiMessage(0x91, 0x36, off);

 

((get(PLAY_A) > 0) && (get(PLAY_B) > 0) && (get(MASTER_B) > 0)) ? sendMidiMessage(0x90, 0x38, on) : sendMidiMessage(0x90, 0x38, off);

((get(PLAY_A) > 0) && (get(PLAY_B) > 0) && (get(MASTER_A) > 0)) ? sendMidiMessage(0x91, 0x38, on) : sendMidiMessage(0x91, 0x38, off);

 

(get(PITCH_A) == 0.5) ? sendMidiMessage(0x90, 0x39, off) : sendMidiMessage(0x90, 0x39, on);

 

}

 

void OnStart()

{

// this callback is called by DD when the script is started

// not used

}

 

void OnStop()

{

// this callback is called by DD when the script is stopped

// not used

}

 

// EOF

Share this post


Link to post
Share on other sites
Guest Frank

=============================================================================

SYNQ-PCM.1

MIDI script created: 27 May 2016

=============================================================================

 

(This script should work for American Audio DP 2 and Omnitronic MMC 1, too.)

 

 

SAMPLER buttons (4x MODE & SAMPLE 1 ... 4) trigger GROSSBEAT 1 ... 8

 

LEDs 4x MODE show if 1st, 2nd, 3rd or 4th BEAT is playing on THE OTHER DECK

LEDs SAMPLE 1 ... 4 show if 1st, 2nd, 3rd or 4th BEAT is playing on THIS DECK

 

HOT CUE 1 ... 4 SET HOT CUE 1 ... 4

+ SCRATCH DELETE HOT CUE 1 ... 4

LEDs HOT CUE 1 ... 4 show which HOT CUEs (1 ... 4) are SET

 

<- / +> INCREASE / DECREASE KEY -/+ 1 semitone

LEDS inbetween show KEY (-3/-2/-1/ 0 /+1/+2/+3 semitones)

 

R.CUE LOOP IN starts & stops LOOP

LED shows if LOOP is playing

 

OUT EXIT activates & deactivates TIMECODE VINYL CONTROL, RELATIVE MODE

LED shows if TIMECODE VINYL CONTROL, RELATIVE MODE, is activated

 

RELOOP STUTTER plays LEAP as long as it's pressed

(use in combination with the 3rd encoder (SELECT) that changes leap size)

 

CUE CUE STUTTER

LED as usual

 

PLAY/PAUSE PLAY/PAUSE

LED in PAUSE MODE: FLASHES TO THE BEAT OF THE OTHER DECK

in PLAY MODE: shows that the deck is PLAYing

 

SHIFT "Shift button" for crossfader (to SEEK within the track on the deck on which SHIFT is pressed)

 

JOG WHEEL JOG WHEEL

in PAUSE MODE: JOG SCRATCH is activated

in PLAY MODE: SLOWER / FASTER

 

SCRATCH "Shift button" for HOT CUE 1 ... 4 (to delete HOT CUEs)

 

PFL SETS DOWNBEAT ("1" in the BEAT GRID)

 

EFF MASTER

JOG SEEK SYNC LOCK

LEDs EFF / JOG SEEK show MASTER / SYNC state

 

X-PARAMETER PUSH EFFECT 1 on / off

Y-PARAMETER PUSH 2

EFFECT PUSH 3

 

X-PARAMETER TWIST change LOOP (/ LEAP) SIZE

 

Y-PARAMETER TWIST deck A change FUNCTION PANEL

deck B DISPLAY MODE

 

EFFECT TWIST - / + 1 BEAT (to match 1st, 2nd, 3rd and 4th BEAT with the other deck)

(watch sampler buttons (4x MODE & SAMPLE 1 ... 4) to check: are the beats 1/2/3/4 on both decks matched?)

 

LEDs 1 ... 8 show TIME REMAINING (track)

 

SYNC PHASE SYNC

(watch sampler buttons (4x MODE & SAMPLE 1 ... 4) to check: are the beats on both decks in sync?)

LED shows if this button can be used for this deck now

 

PITCH LOCK PITCH = 0%

LED shows if PITCH is exactly 0%

 

PITCH ON ACTIVATES / DEACTIVATES PITCH

LED shows if PITCH is ACTIVATED

 

PITCH BEND - / + PITCH BEND - / +

 

CROSSFADER (+ SHIFT !) SEEK within the track on the deck on which SHIFT is pressed

 

LINE FADER EFFECTS VOLUME

 

ROTARY FADERS HIGH controls EFFECT 1

MID 2

LOW 3

 

TRACK SELECT TRACK SELECT

 

LOAD TO DECK LOAD TO DECK

 

CUE MIX FILTER deck A

CUE VOL B

 

MASTER MASTER VOLUME

Share this post


Link to post
Share on other sites
Guest EddyC1

Thanks for the custom script for PCM-1. Can someone help me with making a script file of this so i can put it in "/Library/Application Support/Stanton/Deckadance2" for Mac and use it.

 

Thx in advance

 

Eddy

Share this post


Link to post
Share on other sites
Guest frankschubert75

Hi Eddy! No problem. Just copy and paste the code into the text editor and save the file as SYNQ-PCM.1.c (c instead of txt) and put this file inside the user script folder within the midi script folder of deckadance. In this folder should also be the dd_commands.h file. Please note that the code is for deckadance version 2.6, where you can change the display mode. Perhaps you will want to change the mapping, especially if you want to use the controller without external mixer. If you need help, i could create a "for internal mixer" version with crossfader, line faders, eqs... Just tell me which functions should be implemented. Have fun with the script. Kind regards, Frank

Share this post


Link to post
Share on other sites
Guest frankschubert75

Hi Eddy! No problem. Just copy and paste the code into the text editor and save the file as SYNQ-PCM.1.c (c instead of txt) and put this file inside the user script folder within the midi script folder of deckadance. In this folder should also be the dd_commands.h file. Please note that the code is for deckadance version 2.6, where you can change the display mode. Perhaps you will want to change the mapping, especially if you want to use the controller without external mixer. If you need help, i could create a "for internal mixer" version with crossfader, line faders, eqs... Just tell me which functions should be implemented. Have fun with the script. Kind regards, Frank

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...