summaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authorronso0 <ronso0@mixxx.org>2021-01-11 00:08:57 +0100
committerronso0 <ronso0@mixxx.org>2021-01-11 00:08:57 +0100
commit59fa3138113bc690c36e762c72c4a54a0e19b349 (patch)
tree09f1a8a7a05c042b6c28432a822607a7388a5ec3 /res
parent2de8ce0bce506fa19ac6596e591ec56939008139 (diff)
parente79f2273d5229416f28101d5cea6b5c4d0e8df04 (diff)
Merge remote-tracking branch 'mixxx/2.3' into pref-icon-color
# Conflicts: # res/mixxx.qrc # src/preferences/dialog/dlgpreferencepage.h # src/preferences/dialog/dlgpreferences.cpp
Diffstat (limited to 'res')
-rw-r--r--res/controllers/Hercules P32 DJ.midi.xml72
-rw-r--r--res/controllers/Hercules-P32-scripts.js259
-rw-r--r--res/skins/Deere/effect_parameter_knob.xml10
-rw-r--r--res/skins/Deere/style.qss2
-rw-r--r--res/skins/LateNight/decks/preview_deck.xml8
-rw-r--r--res/skins/LateNight/library.xml8
-rw-r--r--res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg3
-rw-r--r--res/skins/LateNight/palemoon/style/lib_bg.pngbin555 -> 0 bytes
-rw-r--r--res/skins/LateNight/samplers/samplers_16decks.xml32
-rw-r--r--res/skins/LateNight/samplers/samplers_8decks.xml16
-rw-r--r--res/skins/LateNight/style_classic.qss48
-rw-r--r--res/skins/LateNight/style_palemoon.qss102
12 files changed, 353 insertions, 207 deletions
diff --git a/res/controllers/Hercules P32 DJ.midi.xml b/res/controllers/Hercules P32 DJ.midi.xml
index bfda4b015a..0f528f3fe5 100644
--- a/res/controllers/Hercules P32 DJ.midi.xml
+++ b/res/controllers/Hercules P32 DJ.midi.xml
@@ -708,6 +708,42 @@
<script-binding/>
</options>
</control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.leftDeck.syncKey.input</key>
+ <status>0x91</status>
+ <midino>0x53</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.leftDeck.pitchUp.input</key>
+ <status>0x91</status>
+ <midino>0x4F</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.leftDeck.pitchDown.input</key>
+ <status>0x91</status>
+ <midino>0x4B</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.leftDeck.resetKey.input</key>
+ <status>0x91</status>
+ <midino>0x47</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
<control>
<group>[Channel1]</group>
<key>P32.leftDeck.enableEffectUnitButtons[0].input</key>
@@ -2284,6 +2320,42 @@
<script-binding/>
</options>
</control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.rightDeck.syncKey.input</key>
+ <status>0x92</status>
+ <midino>0x53</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.rightDeck.pitchUp.input</key>
+ <status>0x92</status>
+ <midino>0x4F</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.rightDeck.pitchDown.input</key>
+ <status>0x92</status>
+ <midino>0x4B</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
+ <control>
+ <group>[Channel1]</group>
+ <key>P32.rightDeck.resetKey.input</key>
+ <status>0x92</status>
+ <midino>0x47</midino>
+ <options>
+ <script-binding/>
+ </options>
+ </control>
<control>
<group>[Channel1]</group>
<key>P32.rightDeck.enableEffectUnitButtons[0].input</key>
diff --git a/res/controllers/Hercules-P32-scripts.js b/res/controllers/Hercules-P32-scripts.js
index 264380a74a..01165c03ee 100644
--- a/res/controllers/Hercules-P32-scripts.js
+++ b/res/controllers/Hercules-P32-scripts.js
@@ -40,23 +40,23 @@ var toggleEffectUnitsWithDecks = false;
**/
var P32 = {};
-P32.init = function () {
+P32.init = function() {
components.Component.prototype.shiftOffset = 3;
components.Component.prototype.shiftChannel = true;
components.Button.prototype.sendShifted = true;
- if (engine.getValue('[Master]', 'num_samplers') < 32) {
- engine.setValue('[Master]', 'num_samplers', 32);
+ if (engine.getValue("[Master]", "num_samplers") < 32) {
+ engine.setValue("[Master]", "num_samplers", 32);
}
- P32.leftDeck = new P32.Deck([1,3], 1);
- P32.rightDeck = new P32.Deck([2,4], 2);
+ P32.leftDeck = new P32.Deck([1, 3], 1);
+ P32.rightDeck = new P32.Deck([2, 4], 2);
// tell controller to send MIDI messages with positions of faders and knobs
midi.sendShortMsg(0xB0, 0x7F, 0x7F);
};
-P32.shutdown = function () {
+P32.shutdown = function() {
for (var channel = 0; channel <= 5; channel++) {
for (var button = 1; button <= 0x63; button++) {
midi.sendShortMsg(0x90 + channel, button, 0);
@@ -74,7 +74,7 @@ P32.padColors = {
off: 0
};
-P32.PadNumToMIDIControl = function (PadNum, layer) {
+P32.PadNumToMIDIControl = function(PadNum, layer) {
// The MIDI control numbers for the pad grid are numbered bottom to top, so
// this returns the MIDI control numbers for the pads numbered top to bottom
// layer argument is the 0-indexed pad mode, from bottom (sampler) to top (hotcue)
@@ -83,31 +83,31 @@ P32.PadNumToMIDIControl = function (PadNum, layer) {
return 0x24 + 16 * layer + midiRow*4 + PadNum%4;
};
-P32.browseEncoder = function (channel, control, value, status, group) {
+P32.browseEncoder = function(_channel, _control, value, _status, _group) {
if (value > 64) {
- engine.setValue('[Playlist]', 'SelectPrevTrack', 1);
+ engine.setValue("[Playlist]", "SelectPrevTrack", 1);
} else {
- engine.setValue('[Playlist]', 'SelectNextTrack', 1);
+ engine.setValue("[Playlist]", "SelectNextTrack", 1);
}
};
-P32.headMixEncoder = function (channel, control, value, status, group) {
+P32.headMixEncoder = function(_channel, _control, value, _status, _group) {
var direction = (value > 64) ? -1 : 1;
- engine.setValue('[Master]', 'headMix', engine.getValue('[Master]', 'headMix') + (0.25 * direction));
+ engine.setValue("[Master]", "headMix", engine.getValue("[Master]", "headMix") + (0.25 * direction));
};
P32.recordButton = new components.Button({
midi: [0x90, 0x02],
- group: '[Recording]',
- inKey: 'toggle_recording',
- outKey: 'status',
+ group: "[Recording]",
+ inKey: "toggle_recording",
+ outKey: "status",
sendShifted: false,
});
P32.slipButton = new components.Button({
midi: [0x90, 0x03],
pressedToToggleDeck: false,
- input: function (channel, control, value, status, group) {
+ input: function(_channel, _control, value, _status, _group) {
if (P32.leftDeck.isShifted && value === 127) {
// PFL button is controlling effect unit assignment to headphones while
// shift is pressed, so switch it back to controlling PFL so
@@ -133,39 +133,39 @@ P32.slipButton = new components.Button({
this.pressedToToggleDeck = false;
} else {
for (var i = 1; i <= 4; i++) {
- script.toggleControl('[Channel' + i + ']', 'slip_enabled');
+ script.toggleControl("[Channel" + i + "]", "slip_enabled");
}
}
}
},
- connect: function () {
+ connect: function() {
for (var d = 1; d <= 4; d++) {
this.connections.push(
- engine.connectControl('[Channel' + d + ']', 'slip_enabled', this.output)
+ engine.connectControl("[Channel" + d + "]", "slip_enabled", this.output)
);
}
},
- output: function (value, group, control) {
+ output: function(_value, _group, _control) {
var slipEnabledOnAnyDeck = false;
for (var d = 1; d <= 4; d++) {
- if (engine.getValue('[Channel' + d + ']', 'slip_enabled')) {
+ if (engine.getValue("[Channel" + d + "]", "slip_enabled")) {
slipEnabledOnAnyDeck = true;
break;
}
}
this.send(slipEnabledOnAnyDeck ? this.on : this.off);
},
- key: 'slip_enabled',
+ key: "slip_enabled",
sendShifted: false,
group: null // hack to get Component constructor to call this.connect()
});
-P32.Deck = function (deckNumbers, channel) {
+P32.Deck = function(deckNumbers, channel) {
components.Deck.call(this, deckNumbers);
var theDeck = this;
- this.shiftButton = function (channel, control, value, status, group) {
+ this.shiftButton = function(_channel, _control, value, _status, _group) {
if (value === 127) {
this.shift();
} else {
@@ -175,11 +175,11 @@ P32.Deck = function (deckNumbers, channel) {
this.loadTrack = new components.Button({
midi: [0x90 + channel, 0x0F],
- unshift: function () {
- this.inKey = 'LoadSelectedTrack';
+ unshift: function() {
+ this.inKey = "LoadSelectedTrack";
},
- shift: function () {
- this.inKey = 'eject';
+ shift: function() {
+ this.inKey = "eject";
},
});
@@ -187,52 +187,52 @@ P32.Deck = function (deckNumbers, channel) {
this.loopEncoder = new components.Encoder({
// NOTE: these are the MIDI bytes for the digit LEDs, not input from the encoder.
midi: [0xB0 + channel, 0x1B],
- unshift: function () {
- this.input = function (channel, control, value, status, group) {
- var loopSize = engine.getValue(this.group, 'beatloop_size');
+ unshift: function() {
+ this.input = function(_channel, _control, value, _status, _group) {
+ var loopSize = engine.getValue(this.group, "beatloop_size");
if (loopEnabledDot) {
if (value > 64 && loopSize > 2) { // turn left
// Unfortunately, there is no way to show 1 with a dot on the
// loop size LED.
- engine.setValue(this.group, 'beatloop_size', loopSize / 2);
+ engine.setValue(this.group, "beatloop_size", loopSize / 2);
} else if (value < 64 && loopSize < 32) { // turn right
// Mixxx supports loops longer than 32 beats, but there is no way
// to show 64 with a dot on the loop size LED.
- engine.setValue(this.group, 'beatloop_size', loopSize * 2);
+ engine.setValue(this.group, "beatloop_size", loopSize * 2);
}
} else {
if (value > 64 && loopSize > 1/32) { // turn left
- engine.setValue(this.group, 'beatloop_size', loopSize / 2);
+ engine.setValue(this.group, "beatloop_size", loopSize / 2);
} else if (value < 64) { // turn right
if (clampLoopAndBeatJumpSize) {
if (loopSize * 2 <= 64) {
- engine.setValue(this.group, 'beatloop_size', loopSize * 2);
+ engine.setValue(this.group, "beatloop_size", loopSize * 2);
}
} else {
- engine.setValue(this.group, 'beatloop_size', loopSize * 2);
+ engine.setValue(this.group, "beatloop_size", loopSize * 2);
}
}
}
};
},
- shift: function () {
- this.input = function (channel, control, value, status, group) {
- var direction = (value > 64) ? 'backward' : 'forward';
- script.triggerControl(this.group, 'beatjump_1_' + direction);
+ shift: function() {
+ this.input = function(_channel, _control, value, _status, _group) {
+ var direction = (value > 64) ? "backward" : "forward";
+ script.triggerControl(this.group, "beatjump_1_" + direction);
};
},
- connect: function () {
- this.connections[0] = engine.connectControl(this.group, 'beatloop_size', this.output);
+ connect: function() {
+ this.connections[0] = engine.connectControl(this.group, "beatloop_size", this.output);
if (loopEnabledDot) {
- this.connections[1] = engine.connectControl(this.group, 'loop_enabled', this.output);
+ this.connections[1] = engine.connectControl(this.group, "loop_enabled", this.output);
}
},
- output: function (value, group, control) {
- var loopSize = engine.getValue(this.group, 'beatloop_size');
+ output: function(_value, _group, _control) {
+ var loopSize = engine.getValue(this.group, "beatloop_size");
var loopSizeLogBase2 = Math.log(loopSize) / Math.log(2);
// test if loopSizeLogBase2 is an integer
if (Math.floor(loopSizeLogBase2) === loopSizeLogBase2) {
- if (loopEnabledDot && engine.getValue(this.group, 'loop_enabled') === 1) {
+ if (loopEnabledDot && engine.getValue(this.group, "loop_enabled") === 1) {
this.send(5 - loopSizeLogBase2);
} else {
this.send(5 + loopSizeLogBase2);
@@ -244,54 +244,54 @@ P32.Deck = function (deckNumbers, channel) {
});
this.loopEncoderPress = new components.Button({
- unshift: function () {
+ unshift: function() {
// Make sure the shifted Controls don't get stuck with a value of 1
// if the shift button is released before the encoder button.
- if (engine.getValue(this.group, 'reloop_andstop') !== 0) {
- engine.setValue(this.group, 'reloop_andstop', 0);
+ if (engine.getValue(this.group, "reloop_andstop") !== 0) {
+ engine.setValue(this.group, "reloop_andstop", 0);
}
- if (engine.getValue(this.group, 'reloop_toggle') !== 0) {
- engine.setValue(this.group, 'reloop_toggle', 0);
+ if (engine.getValue(this.group, "reloop_toggle") !== 0) {
+ engine.setValue(this.group, "reloop_toggle", 0);
}
- this.input = function (channel, control, value, status, group) {
+ this.input = function(_channel, _control, value, _status, _group) {
if (value) {
- if (engine.getValue(this.group, 'loop_enabled') === 1) {
- engine.setValue(this.group, 'reloop_toggle', 1);
+ if (engine.getValue(this.group, "loop_enabled") === 1) {
+ engine.setValue(this.group, "reloop_toggle", 1);
} else {
- engine.setValue(this.group, 'beatloop_activate', 1);
+ engine.setValue(this.group, "beatloop_activate", 1);
}
} else {
- if (engine.getValue(this.group, 'reloop_toggle') !== 1) {
- engine.setValue(this.group, 'reloop_toggle', 0);
- } else if (engine.getValue(this.group, 'beatloop_activate') !== 0) {
- engine.setValue(this.group, 'beatloop_activate', 0);
+ if (engine.getValue(this.group, "reloop_toggle") !== 1) {
+ engine.setValue(this.group, "reloop_toggle", 0);
+ } else if (engine.getValue(this.group, "beatloop_activate") !== 0) {
+ engine.setValue(this.group, "beatloop_activate", 0);
}
}
};
},
- shift: function () {
+ shift: function() {
// Make sure the unshifted Controls don't get stuck with a value of 1
// if the shift button is pressed before releasing the encoder button.
- if (engine.getValue(this.group, 'reloop_toggle') !== 0) {
- engine.setValue(this.group, 'reloop_toggle', 0);
+ if (engine.getValue(this.group, "reloop_toggle") !== 0) {
+ engine.setValue(this.group, "reloop_toggle", 0);
}
- if (engine.getValue(this.group, 'beatloop_activate') !== 0) {
- engine.setValue(this.group, 'beatloop_activate', 0);
+ if (engine.getValue(this.group, "beatloop_activate") !== 0) {
+ engine.setValue(this.group, "beatloop_activate", 0);
}
- this.input = function (channel, control, value, status, group) {
- if (engine.getValue(this.group, 'loop_enabled') === 1) {
- engine.setValue(this.group, 'reloop_andstop', value / 127);
+ this.input = function(_channel, _control, value, _status, _group) {
+ if (engine.getValue(this.group, "loop_enabled") === 1) {
+ engine.setValue(this.group, "reloop_andstop", value / 127);
} else {
- engine.setValue(this.group, 'reloop_toggle', value / 127);
+ engine.setValue(this.group, "reloop_toggle", value / 127);
}
};
},
});
- this.showBeatjumpSize = function () {
- var beatjumpSize = engine.getValue(this.currentDeck, 'beatjump_size');
+ this.showBeatjumpSize = function() {
+ var beatjumpSize = engine.getValue(this.currentDeck, "beatjump_size");
var beatjumpSizeLogBase2 = Math.log(beatjumpSize) / Math.log(2);
// test if beatjumpSizeLogBase2 is an integer
if (Math.floor(beatjumpSizeLogBase2) === beatjumpSizeLogBase2) {
@@ -303,16 +303,16 @@ P32.Deck = function (deckNumbers, channel) {
};
this.tempoAndBeatjumpEncoder = new components.Encoder({
- unshift: function () {
- this.input = function (channel, control, value, status, group) {
+ unshift: function() {
+ this.input = function(_channel, _control, value, _status, _group) {
var direction = (value > 64) ? -1 : 1;
- engine.setValue(this.group, 'rate',
- engine.getValue(this.group, 'rate') + (0.01 * direction));
+ engine.setValue(this.group, "rate",
+ engine.getValue(this.group, "rate") + (0.01 * direction));
};
},
- shift: function () {
- this.input = function (channel, control, value, status, group) {
- var beatJumpSize = engine.getValue(this.group, 'beatjump_size');
+ shift: function() {
+ this.input = function(_channel, _control, value, _status, _group) {
+ var beatJumpSize = engine.getValue(this.group, "beatjump_size");
if (theDeck.beatJumpEncoderPressed) {
if (value > 64 && beatJumpSize > 1/32) { // turn left
beatJumpSize /= 2;
@@ -322,27 +322,27 @@ P32.Deck = function (deckNumbers, channel) {
}
beatJumpSize *= 2;
}
- engine.setValue(this.group, 'beatjump_size', beatJumpSize);
+ engine.setValue(this.group, "beatjump_size", beatJumpSize);
theDeck.showBeatjumpSize();
} else {
- var direction = (value > 64) ? 'backward' : 'forward';
- script.triggerControl(this.group, 'beatjump_' + direction);
+ var direction = (value > 64) ? "backward" : "forward";
+ script.triggerControl(this.group, "beatjump_" + direction);
}
};
},
});
this.tempoAndBeatjumpEncoderPress = new components.Button({
- unshift: function () {
+ unshift: function() {
theDeck.loopEncoder.trigger();
- this.input = function (channel, control, value, status, group) {
+ this.input = function(_channel, _control, value, _status, _group) {
if (value === 127) {
- engine.setValue(this.group, 'rate', 0);
+ engine.setValue(this.group, "rate", 0);
}
};
},
- shift: function () {
- this.input = function (channel, control, value, status, group) {
+ shift: function() {
+ this.input = function(_channel, _control, value, _status, _group) {
if (value === 127) {
theDeck.beatJumpEncoderPressed = true;
theDeck.showBeatjumpSize();
@@ -355,12 +355,12 @@ P32.Deck = function (deckNumbers, channel) {
});
if (mirroredEncoders) {
- if (channel == 1) { // left deck
+ if (channel === 1) { // left deck
this.leftEncoder = this.loopEncoder;
this.leftEncoderPress = this.loopEncoderPress;
this.rightEncoder = this.tempoAndBeatjumpEncoder;
this.rightEncoderPress = this.tempoAndBeatjumpEncoderPress;
- } else if (channel == 2) { // right deck
+ } else if (channel === 2) { // right deck
this.leftEncoder = this.tempoAndBeatjumpEncoder;
this.leftEncoderPress = this.tempoAndBeatjumpEncoderPress;
this.rightEncoder = this.loopEncoder;
@@ -390,8 +390,10 @@ P32.Deck = function (deckNumbers, channel) {
this.samplerButton = [];
for (var i = 1; i <= 16; i++) {
this.hotcueButton[i] = new components.HotcueButton({
- midi: [0x90 + channel,
- P32.PadNumToMIDIControl(i, 3)],
+ midi: [
+ 0x90 + channel,
+ P32.PadNumToMIDIControl(i, 3)
+ ],
number: i,
on: P32.padColors.red
});
@@ -409,9 +411,10 @@ P32.Deck = function (deckNumbers, channel) {
looping: P32.padColors.purple,
});
if (samplerCrossfaderAssign) {
- engine.setValue('[Sampler' + samplerNumber + ']',
- 'orientation',
- (channel === 1) ? 0 : 2
+ engine.setValue(
+ "[Sampler" + samplerNumber + "]",
+ "orientation",
+ (channel === 1) ? 0 : 2
);
}
}
@@ -419,51 +422,76 @@ P32.Deck = function (deckNumbers, channel) {
// LOOP layer
this.loopIn = new components.Button({
midi: [0x90 + channel, 0x50],
- key: 'loop_in',
+ key: "loop_in",
on: P32.padColors.red,
off: P32.padColors.purple,
});
this.loopOut = new components.Button({
midi: [0x90 + channel, 0x51],
- key: 'loop_out',
+ key: "loop_out",
on: P32.padColors.red,
off: P32.padColors.purple,
});
this.reloop = new components.Button({
midi: [0x90 + channel, 0x52],
- unshift: function () {
- this.inKey = 'reloop_toggle';
+ unshift: function() {
+ this.inKey = "reloop_toggle";
},
- shift: function () {
- this.inKey = 'reloop_andstop';
+ shift: function() {
+ this.inKey = "reloop_andstop";
},
on: P32.padColors.red,
off: P32.padColors.blue,
- outKey: 'loop_enabled',
+ outKey: "loop_enabled",
});
this.tempSlow = new components.Button({
midi: [0x90 + channel, 0x44],
- key: 'rate_temp_down',
+ key: "rate_temp_down",
on: P32.padColors.red,
off: P32.padColors.purple,
});
this.tempFast = new components.Button({
midi: [0x90 + channel, 0x45],
- key: 'rate_temp_up',
+ key: "rate_temp_up",
on: P32.padColors.red,
off: P32.padColors.purple,
});
this.alignBeats = new components.Button({
midi: [0x90 + channel, 0x46],
- key: 'beats_translate_curpos',
+ key: "beats_translate_curpos",
on: P32.padColors.red,
off: P32.padColors.blue,
});
+ this.syncKey = new components.Button({
+ midi: [0x90 + channel, 0x53],
+ key: "sync_key",
+ on: P32.padColors.blue,
+ off: P32.padColors.red,
+ });
+ this.pitchUp = new components.Button({
+ midi: [0x90 + channel, 0x4F],
+ key: "pitch_up",
+ on: P32.padColors.purple,
+ off: P32.padColors.red,
+ });
+ this.pitchDown = new components.Button({
+ midi: [0x90 + channel, 0x4B],
+ key: "pitch_down",
+ on: P32.padColors.purple,
+ off: P32.padColors.red,
+ });
+ this.resetKey = new components.Button({
+ midi: [0x90 + channel, 0x47],
+ key: "reset_key",
+ on: P32.padColors.blue,
+ off: P32.padColors.red,
+ });
+
// SLICER layer
this.enableEffectUnitButtons = [0x40, 0x41, 0x3C, 0x3D].map(
- function (midiByte, index) {
+ function(midiByte, index) {
return new components.EffectAssignmentButton({
midi: [0x90 + channel, midiByte],
effectUnit: index + 1,
@@ -471,8 +499,9 @@ P32.Deck = function (deckNumbers, channel) {
on: P32.padColors.blue,
off: P32.padColors.red,
});
- }
- , this);
+ },
+ this
+ );
// ============================= TRANSPORT ==================================
this.sync = new components.SyncButton([0x90 + channel, 0x08]);
@@ -484,8 +513,8 @@ P32.Deck = function (deckNumbers, channel) {
for (var k = 1; k <= 3; k++) {
this.eqKnob[k] = new components.Pot({
midi: [0xB0 + channel, 0x02 + k],
- group: '[EqualizerRack1_' + this.currentDeck + '_Effect1]',
- inKey: 'parameter' + k,
+ group: "[EqualizerRack1_" + this.currentDeck + "_Effect1]",
+ inKey: "parameter" + k,
});
}
@@ -493,23 +522,23 @@ P32.Deck = function (deckNumbers, channel) {
midi: [0x90 + channel, 0x10],
sendShifted: false,
type: components.Button.prototype.types.toggle,
- unshift: function () {
+ unshift: function() {
this.group = theDeck.currentDeck;
- this.inKey = 'pfl';
+ this.inKey = "pfl";
},
- outKey: 'pfl',
- shift: function () {
- this.group = '[EffectRack1_EffectUnit' + theDeck.effectUnit.currentUnitNumber + ']';
- this.inKey = 'group_[Headphone]_enable';
+ outKey: "pfl",
+ shift: function() {
+ this.group = "[EffectRack1_EffectUnit" + theDeck.effectUnit.currentUnitNumber + "]";
+ this.inKey = "group_[Headphone]_enable";
},
});
this.volume = new components.Pot({
midi: [0xB0 + channel, 0x01],
- inKey: 'volume',
+ inKey: "volume",
});
- this.reconnectComponents(function (component) {
+ this.reconnectComponents(function(component) {
if (component.group === undefined) {
component.group = this.currentDeck;
}
diff --git a/res/skins/Deere/effect_parameter_knob.xml b/res/skins/Deere/effect_parameter_knob.xml
index d5406098f2..2ca30c5585 100644
--- a/res/skins/Deere/effect_parameter_knob.xml
+++ b/res/skins/Deere/effect_parameter_knob.xml
@@ -48,14 +48,14 @@
<WidgetGroup>
<ObjectName>EffectSlotParameterLinkButtonsContainer</ObjectName>
<Layout>horizontal</Layout>
- <Size>-1,6f</Size>
+ <Size>-1,8f</Size>
<Children>
<Template src="skin:left_2state_button.xml">
<!-- Button has no text/images, qss only -->
<SetVariable name="TooltipId">EffectSlot_parameter_inversion</SetVariable>
<SetVariable name="ObjectName">EffectSlotParameterLinkInversionButton</SetVariable>
- <SetVariable name="MinimumSize">6,4</SetVariable>
- <SetVariable name="MaximumSize">10,4</SetVariable>
+ <SetVariable name="MinimumSize">6,6</SetVariable>
+ <SetVariable name="MaximumSize">10,6</SetVariable>
<SetVariable name="SizePolicy">me,f</SetVariable>
<SetVariable name="left_connection_control">[EffectRack<Variable name="EffectRack"/>_EffectUnit<Variable name="EffectUnit"/>_Effect<Variable name="Effect"/>],parameter<Variable name="EffectParameter"/>_link_inverse</SetVariable>
</Template>
@@ -64,8 +64,8 @@
<!-- Button has no text/images, qss only -->
<SetVariable name="TooltipId">EffectSlot_parameter_link_type</SetVariable>
<SetVariable name="ObjectName">EffectSlotParameterLinkTypeButton</SetVariable>
- <SetVariable name="MinimumSize">30,4</SetVariable>
- <SetVariable name="MaximumSize">46,4</SetVariable>
+ <SetVariable name="MinimumSize">30,6</SetVariable>
+ <SetVariable name="MaximumSize">46,6</SetVariable>
<SetVariable name="SizePolicy">me,f</SetVariable>
<SetVariable name="left_connection_control">[EffectRack<Variable name="EffectRack"/>_EffectUnit<Variable name="EffectUnit"/>_Effect<Variable name="Effect"/>],parameter<Variable name="EffectParameter"/>_link_type</SetVariable>
</Template>
diff --git a/res/skins/Deere/style.qss b/res/skins/Deere/style.qss
index e3a59a7c5e..bdb2a4e772 100644
--- a/res/skins/Deere/style.qss
+++ b/res/skins/Deere/style.qss
@@ -1876,10 +1876,12 @@ do not highlight either state. */
#EffectSlotParameterLinkInversionButton[value="1"] {
background-color: #b90505;
+ border: 1px solid #b90505;
}
#EffectSlotParameterLinkInversionButton[value="1"]:hover {
background-color: #e80808;
+ border: 1px solid #FF0808;
}
/* Special case "hide/show" button
diff --git a/res/skins/LateNight/decks/preview_deck.xml b/res/skins/LateNight/decks/preview_deck.xml
index 719f1ab6c2..d009b717f2 100644
--- a/res/skins/LateNight/decks/preview_deck.xml
+++ b/res/skins/LateNight/decks/preview_deck.xml
@@ -4,7 +4,7 @@
<!-- This wrapper makes the PreviewDeck borders work correctly -->
<WidgetGroup>
- <Layout>vertical</Layout>
+ <Layout>horizontal</Layout>
<SizePolicy>me,max</SizePolicy>
<Children>
@@ -165,6 +165,12 @@
</Children>
</WidgetGroup><!-- PreviewDeck -->
+ <WidgetGroup>
+ <ObjectName>PreviewDeckRightSpacer</ObjectName>
+ <Layout>horizontal</Layout>
+ <Children/>
+ </WidgetGroup>
+
</Children>
<Connection>
<ConfigKey>[PreviewDeck],show_previewdeck</ConfigKey>
diff --git a/res/skins/LateNight/library.xml b/res/skins/LateNight/library.xml
index 7311eff790..6cb0e50ba9 100644
--- a/res/skins/LateNight/library.xml
+++ b/res/skins/LateNight/library.xml
@@ -28,6 +28,8 @@
<MinimumSize>100,</MinimumSize>
<Children>
+ <Template src="skin:/decks/preview_deck.xml"/>
+
<!--Search Input Field + Library Expand toggle -->
<WidgetGroup>
<ObjectName></ObjectName>
@@ -69,7 +71,11 @@
</Children>
</WidgetGroup><!-- SearchLineBox -->
- <Template src="skin:/decks/preview_deck.xml"/>
+ <WidgetGroup>
+ <ObjectName>SearchTreeSpacer</ObjectName>
+ <Layout>horizontal</Layout>
+ <Children/>
+ </WidgetGroup>
<Splitter>
<ObjectName>SidebarCoverSplitter</ObjectName>
diff --git a/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg
new file mode 100644
index 0000000000..8c1e80dac7
--- /dev/null
+++ b/res/skins/LateNight/palemoon/buttons/btn__lib_checkmark_grey.svg
@@ -0,0 +1,3 @@
+<svg width="10" height="10" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <path d="m2.0001 6.0001 2 2 4-5.9999" fill="none" stroke="#666" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</svg>
diff --git a/res/skins/LateNight/palemoon/style/lib_bg.png b/res/skins/LateNight/palemoon/style/lib_bg.png
deleted file mode 100644
index 8d66380880..0000000000
--- a/res/skins/LateNight/palemoon/style/lib_bg.png
+++ /dev/null
Binary files differ
diff --git a/res/skins/LateNight/samplers/samplers_16decks.xml b/res/skins/LateNight/samplers/samplers_16decks.xml
index 66387f2911..04bf1ecad1 100644
--- a/res/skins/LateNight/samplers/samplers_16decks.xml
+++ b/res/skins/LateNight/samplers/samplers_16decks.xml
@@ -26,19 +26,19 @@
<SizePolicy>min,min</SizePolicy>
<Children>
- <Template src="skin:sampler_mini.xml">
+ <Template src="skin:/samplers/sampler_mini.xml">
<SetVariable name="SamplerNum">9</SetVariable>
</Template>
- <Template src="skin:sampler_mini.xml">
+ <Template src="skin:/samplers/sampler_mini.xml">
<SetVariable name="SamplerNum">10</SetVariable>
</Template>
- <Template src="skin:sampler_mini.xml">
+ <Template src="skin:/samplers/sampler_mini.xml">
<SetVariable name="SamplerNum">11</SetVariable>
</Template>
- <Template src="skin:sampler_mini.xml">
+ <Template src="skin:/samplers/sampler_mini.xml">
<SetVariable name="SamplerNum">12</SetVariable>
</Template>
@@ -46,19 +46,19 @@
<ObjectName>Samplers_Expander_9-16_Singleton</ObjectName>
<