From c64ba3178f14a8c1b3793bd24c8eefa80192eb43 Mon Sep 17 00:00:00 2001 From: grizeldi Date: Sun, 18 Feb 2024 19:01:59 +0100 Subject: [PATCH 1/3] Pioneer DDJ-FLX4: Added a keep alive timer which prevents the controller from entering BT pairing mode while connected --- res/controllers/Pioneer-DDJ-FLX4-script.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/res/controllers/Pioneer-DDJ-FLX4-script.js b/res/controllers/Pioneer-DDJ-FLX4-script.js index 53d8543d2f6..8165687b8f6 100644 --- a/res/controllers/Pioneer-DDJ-FLX4-script.js +++ b/res/controllers/Pioneer-DDJ-FLX4-script.js @@ -169,6 +169,11 @@ PioneerDDJFLX4.lights = { // Store timer IDs PioneerDDJFLX4.timers = {}; +// Keep alive timer +PioneerDDJFLX4.sendKeepAlive = function() { + midi.sendSysexMsg([0xF0, 0x00, 0x40, 0x05, 0x00, 0x00, 0x04, 0x05, 0x00, 0x50, 0x02, 0xf7], 12); +}; + // Jog wheel constants PioneerDDJFLX4.vinylMode = true; PioneerDDJFLX4.alpha = 1.0/8; @@ -265,8 +270,10 @@ PioneerDDJFLX4.init = function() { } engine.makeConnection("[EffectRack1_EffectUnit1]", "focused_effect", PioneerDDJFLX4.toggleFxLight); + PioneerDDJFLX4.keepAliveTimer = engine.beginTimer(200, PioneerDDJFLX4.sendKeepAlive); + // query the controller for current control positions on startup - midi.sendSysexMsg([0xF0, 0x00, 0x40, 0x05, 0x00, 0x00, 0x02, 0x06, 0x00, 0x03, 0x01, 0xf7], 12); + PioneerDDJFLX4.sendKeepAlive(); // the query seems to double as a keep alive message }; // @@ -807,4 +814,7 @@ PioneerDDJFLX4.shutdown = function() { // stop any flashing lights PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.beatFx, false); PioneerDDJFLX4.toggleLight(PioneerDDJFLX4.lights.shiftBeatFx, false); + + // stop the keepalive timer + engine.stopTimer(PioneerDDJFLX4.keepAliveTimer); }; From 6bbaa0b9e4a3338e7b852b9175464b68884e0489 Mon Sep 17 00:00:00 2001 From: grizeldi Date: Sun, 18 Feb 2024 19:47:22 +0100 Subject: [PATCH 2/3] Pioneer DDJ-FLX4: Removed headphone gain mapping, as it's done in hardware --- res/controllers/Pioneer-DDJ-FLX4.midi.xml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/res/controllers/Pioneer-DDJ-FLX4.midi.xml b/res/controllers/Pioneer-DDJ-FLX4.midi.xml index c022a68c7bd..1e99c3d0cbd 100644 --- a/res/controllers/Pioneer-DDJ-FLX4.midi.xml +++ b/res/controllers/Pioneer-DDJ-FLX4.midi.xml @@ -930,27 +930,6 @@ - - - HEADPHONES LEVEL - rotate - Headphone gain - [Master] - headGain - 0xB6 - 0x2D - - - - - - HEADPHONES LEVEL - rotate - Headphone gain - [Master] - headGain - 0xB6 - 0x0D - - - - From 860576b37d8c27afe544111e107a9013eea8c9fa Mon Sep 17 00:00:00 2001 From: grizeldi Date: Sun, 18 Feb 2024 22:05:04 +0100 Subject: [PATCH 3/3] Pioneer DDJ-FLX4: Added reverse engineering notice --- res/controllers/Pioneer-DDJ-FLX4-script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/controllers/Pioneer-DDJ-FLX4-script.js b/res/controllers/Pioneer-DDJ-FLX4-script.js index 8165687b8f6..3514f52421e 100644 --- a/res/controllers/Pioneer-DDJ-FLX4-script.js +++ b/res/controllers/Pioneer-DDJ-FLX4-script.js @@ -171,7 +171,7 @@ PioneerDDJFLX4.timers = {}; // Keep alive timer PioneerDDJFLX4.sendKeepAlive = function() { - midi.sendSysexMsg([0xF0, 0x00, 0x40, 0x05, 0x00, 0x00, 0x04, 0x05, 0x00, 0x50, 0x02, 0xf7], 12); + midi.sendSysexMsg([0xF0, 0x00, 0x40, 0x05, 0x00, 0x00, 0x04, 0x05, 0x00, 0x50, 0x02, 0xf7], 12); // This was reverse engineered with Wireshark }; // Jog wheel constants