summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2020-10-23 15:43:00 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2020-10-23 15:43:00 +0200
commit9f2e7e1c4b0d8881b7ec48eec05c40a570874294 (patch)
tree798c7dd239b6f9ce5469478d8b697efa1cf37949
parentd1d7345e7589e2ab691238db4806685d54e0fdc8 (diff)
parent6f2ad031233101ce0ea84df8b6552dccfe3ca8e6 (diff)
Merge remote-tracking branch 'upstream/2.2' into alsartfix
-rw-r--r--.github/labeler.yml29
-rw-r--r--.github/workflows/labeler.yml19
-rw-r--r--CHANGELOG7
-rw-r--r--res/controllers/Pioneer DDJ-200.midi.xml1100
-rw-r--r--res/controllers/Pioneer-DDJ-200-scripts.js59
-rw-r--r--src/test/keyutilstest.cpp42
-rw-r--r--src/test/rescalertest.cpp8
-rw-r--r--src/track/keyutils.cpp18
8 files changed, 1245 insertions, 37 deletions
diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 0000000000..ec18214138
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,29 @@
+build:
+- default.nix
+- CMakeLists.txt
+- build/**
+- cmake/**
+
+code quality:
+- src/test/**
+- .clang-format
+- .codespell
+- .eslint*
+- .flake8
+- .pre-commit-config.yaml
+- pyproject.toml
+
+controllers:
+- res/controllers/**
+
+library:
+- src/library/**
+
+skins:
+- res/skins/**
+
+ui:
+- src/**.ui
+- src/dialog/**
+- src/preferences/**
+- src/widget/**
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
new file mode 100644
index 0000000000..14bb21cd21
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,19 @@
+# This workflow will triage pull requests and apply a label based on the
+# paths that are modified in the pull request.
+#
+# To use this workflow, you will need to set up a .github/labeler.yml
+# file with configuration. For more information, see:
+# https://github.com/actions/labeler
+
+name: "Pull Request Labeler"
+on:
+- pull_request_target
+
+jobs:
+ triage:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/labeler@main
+ with:
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/CHANGELOG b/CHANGELOG
index 704a9d8f3f..93fc56e0b2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,7 +6,8 @@
* Fix caching of duplicate tracks that reference the same file #3027
* Fix loss of precision when dealing with floating-point sample
positions while setting loop out position and seeking using vinyl control #3126 #3127
-* prevent moving a loop beyond track end #3117 lp:1799574
+* Prevent moving a loop beyond track end #3117 lp:1799574
+* Use 6 instead of only 4 compatible musical keys (major/minor) #3205
* Fix possible memory corruption using JACK on Linux
==== 2.2.4 2020-05-10 ====
@@ -141,7 +142,7 @@ Miscellaneous
* Improve search bar timing. lp:1635087
* Fix quoted search sentence. lp:1784141
* Fix loading a track formerly not existing. lp:1800395
-* Fix imporing m3u files with blank lines. lp:1806271
+* Fix importing m3u files with blank lines. lp:1806271
* Fix position in sampler overview waveforms. lp:1744170
* Don't reset rate slider, syncing a track without a beatgrid. lp:1783020
* Clean up iTunes track context menu. lp:1800335
@@ -182,7 +183,7 @@ Here is a quick summary of what is new in Mixxx 2.1.2:
* Fix artifacts using more than 32 samplers lp1779559
* store No EQ and Filter persistently lp1780479
* Pad unreadable samples with silence on cache miss lp1777480
-* Fixing painting of preview coloumn for Qt5 builds lp1776555
+* Fix painting of preview column for Qt5 builds lp1776555
* LateNight: Fix play button right click lp1781829
* LateNight: Added missing sort up/down buttons
* Fix sampler play button tooltips lp1779468
diff --git a/res/controllers/Pioneer DDJ-200.midi.xml b/res/controllers/Pioneer DDJ-200.midi.xml
new file mode 100644
index 0000000000..f8f79c6215
--- /dev/null
+++ b/res/controllers/Pioneer DDJ-200.midi.xml
@@ -0,0 +1,1100 @@
+<?xml version='1.0' encoding='utf-8'?>
+<MixxxControllerPreset schemaVersion="1" mixxxVersion="2.0.0+">
+ <info>
+ <name>Pioneer DDJ-200</name>
+ <author>Dan Giddins, Frank.Breitling at gmx.de</author>
+ <description>2-deck USB and Bluetooth MIDI controller.</description>
+ <forum>https://mixxx.discourse.group/t/pioneer-ddj-200-mapping/18259</forum>
+ <manual>pioneer_ddj_200</manual>
+ </info>
+ <controller id="DDJ-200">
+ <scriptfiles>
+ <file functionprefix="DDJ200" filename="Pioneer-DDJ-200-scripts.js"/>
+ </scriptfiles>
+ <controls>
+ <control>
+ <group>[Channel2]</group>
+ <key>sync_enabled</key>
+ <description>Deck 2: Tap to sync tempo (and phase with quantize enabled), hold to enable permanent sync</description>
+ <status>0x91</status>
+ <midino>0x58</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>sync_enabled</key>
+ <description>Deck 1: Tap to sync tempo (and phase with quantize enabled), hold to enable permanent sync</description>
+ <status>0x90</status>
+ <midino>0x58</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Master]</group>
+ <key>crossfader</key>
+ <description>Master crossfader</description>
+ <status>0xB6</status>
+ <midino>0x3F</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>DDJ200.seek</key>
+ <description>Deck 2: Seek</description>
+ <status>0xB1</status>
+ <midino>0x29</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>DDJ200.seek</key>
+ <description>Deck 1: Seek</description>
+ <status>0xB0</status>
+ <midino>0x29</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[AutoDJ]</group>
+ <key>enabled</key>
+ <description>Toggle Auto DJ On/Off</description>
+ <status>0x96</status>
+ <midino>0x59</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[AutoDJ]</group>
+ <key>fade_now</key>
+ <description>Trigger the transition to the next track</description>
+ <status>0x96</status>
+ <midino>0x5A</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>DDJ200.touch</key>
+ <description>Deck 2: Touch</description>
+ <status>0x91</status>
+ <midino>0x36</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>DDJ200.touch</key>
+ <description>Deck 1: Touch</description>
+ <status>0x90</status>
+ <midino>0x36</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter2</key>
+ <description>Deck 2: Adjust Mid EQ</description>
+ <status>0xB1</status>
+ <midino>0x2B</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter2</key>
+ <description>Deck 1: Adjust Mid EQ</description>
+ <status>0xB0</status>
+ <midino>0x2B</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter3</key>
+ <description>Deck 2: Adjust High EQ</description>
+ <status>0xB1</status>
+ <midino>0x07</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter3</key>
+ <description>Deck 1: Adjust High EQ</description>
+ <status>0xB0</status>
+ <midino>0x07</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>bpm_tap</key>
+ <description>Deck 2: BPM tap button</description>
+ <status>0x91</status>
+ <midino>0x60</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[QuickEffectRack1_[Channel2]]</group>
+ <key>super1</key>
+ <description>Quick Effect: Quick Effect Super Knob (control linked effect parameters)</description>
+ <status>0xB6</status>
+ <midino>0x18</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>bpm_tap</key>
+ <description>Deck 1: BPM tap button</description>
+ <status>0x90</status>
+ <midino>0x60</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>volume</key>
+ <description>Deck 2: Volume Fader</description>
+ <status>0xB1</status>
+ <midino>0x33</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>volume</key>
+ <description>Deck 1: Volume Fader</description>
+ <status>0xB0</status>
+ <midino>0x33</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>cue_gotoandstop</key>
+ <description>Deck 2: Go to cue point and stop</description>
+ <status>0x91</status>
+ <midino>0x48</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>cue_gotoandstop</key>
+ <description>Deck 1: Go to cue point and stop</description>
+ <status>0x90</status>
+ <midino>0x48</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter1</key>
+ <description>Deck 2: Adjust Low EQ</description>
+ <status>0xB1</status>
+ <midino>0x2F</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter1</key>
+ <description>Deck 1: Adjust Low EQ</description>
+ <status>0xB0</status>
+ <midino>0x2F</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>play</key>
+ <description>Deck 2: Play button</description>
+ <status>0x91</status>
+ <midino>0x0B</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>rate</key>
+ <description>Deck 2: Playback speed control</description>
+ <status>0xB1</status>
+ <midino>0x20</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>play</key>
+ <description>Deck 1: Play button</description>
+ <status>0x90</status>
+ <midino>0x0B</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>rate</key>
+ <description>Deck 1: Playback speed control</description>
+ <status>0xB0</status>
+ <midino>0x20</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>cue_default</key>
+ <description>Deck 2: Cue button</description>
+ <status>0x91</status>
+ <midino>0x0C</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>cue_default</key>
+ <description>Deck 1: Cue button</description>
+ <status>0x90</status>
+ <midino>0x0C</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[QuickEffectRack1_[Channel1]]</group>
+ <key>super1</key>
+ <description>Quick Effect: Quick Effect Super Knob (control linked effect parameters)</description>
+ <status>0xB6</status>
+ <midino>0x37</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>DDJ200.jog</key>
+ <description>Deck 2: Jog</description>
+ <status>0xB1</status>
+ <midino>0x21</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>DDJ200.jog</key>
+ <description>Deck 1: Jog</description>
+ <status>0xB0</status>
+ <midino>0x21</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>DDJ200.scratch</key>
+ <description>Deck 2: Scratch</description>
+ <status>0xB1</status>
+ <midino>0x22</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>DDJ200.scratch</key>
+ <description>Deck 1: Scratch</description>
+ <status>0xB0</status>
+ <midino>0x22</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Master]</group>
+ <key>crossfader</key>
+ <description>Master crossfader</description>
+ <status>0xB6</status>
+ <midino>0x1F</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Master]</group>
+ <key>DDJ200.headmix</key>
+ <description>Headphones master button as headMix knob</description>
+ <status>0x96</status>
+ <midino>0x63</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>pfl</key>
+ <description>Deck 2: Headphone listen (pfl) button</description>
+ <status>0x91</status>
+ <midino>0x54</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>pfl</key>
+ <description>Deck 1: Headphone listen (pfl) button</description>
+ <status>0x90</status>
+ <midino>0x54</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter2</key>
+ <description>Deck 2: Adjust Mid EQ</description>
+ <status>0xB1</status>
+ <midino>0x0B</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter2</key>
+ <description>Deck 1: Adjust Mid EQ</description>
+ <status>0xB0</status>
+ <midino>0x0B</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_1_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 1</description>
+ <status>0x97</status>
+ <midino>0x00</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_2_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 2</description>
+ <status>0x97</status>
+ <midino>0x01</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_1_activate</key>
+ <description>Deck 2: Set, preview from of jump to hotcue 1</description>
+ <status>0x99</status>
+ <midino>0x00</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_1_clear</key>
+ <description>Deck 1: Clear hotcue 1</description>
+ <status>0x98</status>
+ <midino>0x00</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_3_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 3</description>
+ <status>0x97</status>
+ <midino>0x02</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_1_clear</key>
+ <description>Deck 2: Clear hotcue 1</description>
+ <status>0x9A</status>
+ <midino>0x00</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter3</key>
+ <description>Deck 2: Adjust High EQ</description>
+ <status>0xB1</status>
+ <midino>0x27</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_2_activate</key>
+ <description>Deck 2: Set, preview from of jump to hotcue 2</description>
+ <status>0x99</status>
+ <midino>0x01</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter3</key>
+ <description>Deck 1: Adjust High EQ</description>
+ <status>0xB0</status>
+ <midino>0x27</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_2_clear</key>
+ <description>Deck 1: Clear hotcue 2</description>
+ <status>0x98</status>
+ <midino>0x01</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>volume</key>
+ <description>Deck 2: Volume Fader</description>
+ <status>0xB1</status>
+ <midino>0x13</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_4_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 4</description>
+ <status>0x97</status>
+ <midino>0x03</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>volume</key>
+ <description>Deck 1: Volume Fader</description>
+ <status>0xB0</status>
+ <midino>0x13</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_2_clear</key>
+ <description>Deck 2: Clear hotcue 2</description>
+ <status>0x9A</status>
+ <midino>0x01</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[QuickEffectRack1_[Channel2]]</group>
+ <key>super1</key>
+ <description>Quick Effect: Quick Effect Super Knob (control linked effect parameters)</description>
+ <status>0xB6</status>
+ <midino>0x38</midino>
+ <options>
+ <fourteen-bit-lsb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_3_activate</key>
+ <description>Deck 2: Set, preview from of jump to hotcue 3</description>
+ <status>0x99</status>
+ <midino>0x02</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_3_clear</key>
+ <description>Deck 1: Clear hotcue 3</description>
+ <status>0x98</status>
+ <midino>0x02</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_5_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 5</description>
+ <status>0x97</status>
+ <midino>0x04</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_3_clear</key>
+ <description>Deck 2: Clear hotcue 3</description>
+ <status>0x9A</status>
+ <midino>0x02</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel2]_Effect1]</group>
+ <key>parameter1</key>
+ <description>Deck 2: Adjust Low EQ</description>
+ <status>0xB1</status>
+ <midino>0x0F</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_4_activate</key>
+ <description>Deck 2: Set, preview from of jump to hotcue 4</description>
+ <status>0x99</status>
+ <midino>0x03</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[EqualizerRack1_[Channel1]_Effect1]</group>
+ <key>parameter1</key>
+ <description>Deck 1: Adjust Low EQ</description>
+ <status>0xB0</status>
+ <midino>0x0F</midino>
+ <options>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_4_clear</key>
+ <description>Deck 1: Clear hotcue 4</description>
+ <status>0x98</status>
+ <midino>0x03</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_6_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 6</description>
+ <status>0x97</status>
+ <midino>0x05</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_4_clear</key>
+ <description>Deck 2: Clear hotcue 4</description>
+ <status>0x9A</status>
+ <midino>0x03</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>rate</key>
+ <description>Deck 2: Playback speed control</description>
+ <status>0xB1</status>
+ <midino>0x00</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_5_activate</key>
+ <description>Deck 2: Set, preview from of jump to hotcue 5</description>
+ <status>0x99</status>
+ <midino>0x04</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>rate</key>
+ <description>Deck 1: Playback speed control</description>
+ <status>0xB0</status>
+ <midino>0x00</midino>
+ <options>
+ <soft-takeover/>
+ <fourteen-bit-msb/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_5_clear</key>
+ <description>Deck 1: Clear hotcue 5</description>
+ <status>0x98</status>
+ <midino>0x04</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>hotcue_7_activate</key>
+ <description>Deck 1: Set, preview from or jump to hotcue 7</description>
+ <status>0x97</status>
+ <midino>0x06</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel2]</group>
+ <key>hotcue_5_clear</key>
+ <description>Deck 2: Clear hotcue 5</description>
+ <status>0x9A</status>
+ <midino>0x04</midino>
+ <options>
+ <normal/>
+ </options>
+ </control>
+ <control>
+ <group>[QuickEffectRack1_[Channel1]]</group>
+ <key>super1</key>
+ <description>Quick Effect: Quick Effect Super Knob (control linked effect parameters)</description>
+