Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/2.5' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
daschuer committed Aug 1, 2024
2 parents 9b31059 + 22be583 commit a65bc0b
Show file tree
Hide file tree
Showing 20 changed files with 236 additions and 99 deletions.
38 changes: 32 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
* Waveforms: Allshader RGB, Filtered and Stacked Waveforms using textures for waveform data
[#13151](https://github.com/mixxxdj/mixxx/pull/13151)
[#12641](https://github.com/mixxxdj/mixxx/issues/12641)
* Allow changing the waveform overview type without reloading the skin
[#13273](https://github.com/mixxxdj/mixxx/pull/13273)

### Skins / Interface

Expand Down Expand Up @@ -116,6 +118,9 @@
* Effect Meta knob: Draw arc from default meta position
[#12638](https://github.com/mixxxdj/mixxx/pull/12638)
[#12634](https://github.com/mixxxdj/mixxx/issues/12634)
* Show newly added effects, read/write HiddenEffects
[#13326](https://github.com/mixxxdj/mixxx/pull/13326)
[#11343](https://github.com/mixxxdj/mixxx/issues/11343)

### Library

Expand All @@ -124,6 +129,7 @@
* Playlists: move tracks with Alt + Up/Down/PageUp/PageDown/Home/End
[#13092](https://github.com/mixxxdj/mixxx/pull/13092)
[#10826](https://github.com/mixxxdj/mixxx/issues/10826)
[#13098](https://github.com/mixxxdj/mixxx/pull/13098)
* Search: Add special BPM filters
[#12072](https://github.com/mixxxdj/mixxx/pull/12072)
[#8191](https://github.com/mixxxdj/mixxx/issues/8191)
Expand Down Expand Up @@ -162,10 +168,10 @@
* Track menu: add star rating
[#12700](https://github.com/mixxxdj/mixxx/pull/12700)
[#10652](https://github.com/mixxxdj/mixxx/issues/10652)
* Playlists: move tracks with Alt + Up/Down/PageUp/PageDown/Home/End
[#13092](https://github.com/mixxxdj/mixxx/pull/13092)
[#10826](https://github.com/mixxxdj/mixxx/issues/10826)
* Track menu: Show Properties in Missing and Hidden view [#13426](https://github.com/mixxxdj/mixxx/pull/13426)
* Library control: make use of WLibrary::getCurrentTrackTableView() [#13335](https://github.com/mixxxdj/mixxx/pull/13335)
* Optimize Library scrolling in BPMDelegate::paintItem [#13358](https://github.com/mixxxdj/mixxx/pull/13358)
* Library: fix font reset in multiline comment editor [#13448](https://github.com/mixxxdj/mixxx/pull/13448)

### Preferences

Expand All @@ -180,6 +186,7 @@

### Controller Mappings

* Numark Scratch: Add controller settings [#13404](https://github.com/mixxxdj/mixxx/pull/13404)
* Pioneer DDJ-FLX4: Mapping improvements [#12842](https://github.com/mixxxdj/mixxx/pull/12842)
* Traktor S4 MK3: Add setting definition for [#12995](https://github.com/mixxxdj/mixxx/pull/12995)
* Traktor S4 MK3: Software mixer support and default pad layout customisation [#13059](https://github.com/mixxxdj/mixxx/pull/13059)
Expand Down Expand Up @@ -256,7 +263,8 @@
* Introduce wrapper for non const iterators for erase and insert [#12201](https://github.com/mixxxdj/mixxx/pull/12201)
* Fix Qt6/QML build [#12255](https://github.com/mixxxdj/mixxx/pull/12255)
* Fix track color background with Qt6 [#12380](https://github.com/mixxxdj/mixxx/pull/12380)
* multi-line delegate: fix bg color, Qt6 on Linux [#12478](https://github.com/mixxxdj/mixxx/pull/12478)
* multi-line delegate: fix bg color, Qt6 on Linux
[#12478](https://github.com/mixxxdj/mixxx/pull/12478)
* Revert "BaseTrackPlayer: Remove references to WaveformWidgetRenderer when using Qt6" [#12342](https://github.com/mixxxdj/mixxx/pull/12342)
* Fix: Replace deprecated `qAsConst` with `std::as_const` [#13028](https://github.com/mixxxdj/mixxx/pull/13028)
* Fix Drag'n'drop: avoid unintended drag on hover (WTrackProperty, WCoverArt etc.)
Expand All @@ -275,7 +283,13 @@
* SoundManager: Use correct PortAudio backend on iOS [#12716](https://github.com/mixxxdj/mixxx/pull/12716)
* DesktopHelper: Add openUrl abstraction to support iOS [#12698](https://github.com/mixxxdj/mixxx/pull/12698)
* iOS packaging: Add Info.plist, launch screen and app icon [#12676](https://github.com/mixxxdj/mixxx/pull/12676)
* CmdlineArgs: Move config directory to a user-accessible location on iOS [#12688](https://github.com/mixxxdj/mixxx/pull/12688)
* CmdlineArgs: Move config directory to a user-accessible location on iOS
[#12688](https://github.com/mixxxdj/mixxx/pull/12688)
* CMakeLists: Work around Qt shader bug with Xcode
[#13379](https://github.com/mixxxdj/mixxx/pull/13379)
[#13378](https://github.com/mixxxdj/mixxx/issues/13378)
* AudioUnitManager: Disable unavailable in-process instantiation on iOS
[#13383](https://github.com/mixxxdj/mixxx/pull/13383)

### Experimental WebAssembly support

Expand All @@ -300,6 +314,10 @@
* README: Recommend running buildenvs over sourcing them on Linux [#13071](https://github.com/mixxxdj/mixxx/pull/13071)
* FindSndFile: Link mpg123 in static builds [#13087](https://github.com/mixxxdj/mixxx/pull/13087)
* macOS packaging: Enable app sandbox in ad-hoc-packaged (i.e. non-notarized) bundles too [#12101](https://github.com/mixxxdj/mixxx/pull/12101)
* Drop support for macOS versions earlier than 11
* Drop support for Windows versions earlier than Windows 10 build 1809
* Drop support for Ubuntu versions earlier than 22.04
* Require a C++20 compiler

### Misc Refactorings

Expand Down Expand Up @@ -344,6 +362,8 @@
* Code Style: Add branches around single line blocks. [#13097](https://github.com/mixxxdj/mixxx/pull/13097)
* Add missing member in copy ctor [#13229](https://github.com/mixxxdj/mixxx/pull/13229)
* Refactor/preferences enums [#12798](https://github.com/mixxxdj/mixxx/pull/12798)
* localDateTimeFromUtc: Make argument a const reference and initialize QDateTime at construction [#13359](https://github.com/mixxxdj/mixxx/pull/13359)
* use enum class for waveform overview type [#13370](https://github.com/mixxxdj/mixxx/pull/13370)
* Update to latest vcpkg dependencies
[#11649](https://github.com/mixxxdj/mixxx/pull/11649)
[#12512](https://github.com/mixxxdj/mixxx/pull/12512)
Expand Down Expand Up @@ -398,7 +418,9 @@
[#13196](https://github.com/mixxxdj/mixxx/pull/13196)
[#13134](https://github.com/mixxxdj/mixxx/issues/13134)
* Numark PartyMix: Fix EQ (script binding) display name [#13255](https://github.com/mixxxdj/mixxx/pull/13255)
* Numark Scratch: Add initial mapping [#4834](https://github.com/mixxxdj/mixxx/pull/4834)
* Numark Scratch: Add initial mapping
[#4834](https://github.com/mixxxdj/mixxx/pull/4834)
[#13375](https://github.com/mixxxdj/mixxx/pull/13375)
* Sony SIXAXIS: Fix mapping [#13319](https://github.com/mixxxdj/mixxx/pull/13319)

### Fixes
Expand Down Expand Up @@ -432,6 +454,10 @@
* Hardware preferences: Fix UX when applying config with missing/busy devices
[#13312](https://github.com/mixxxdj/mixxx/pull/13312)
* Fix minor 64 bit CPU performance issue [#13355](https://github.com/mixxxdj/mixxx/pull/13355)
* Fix clicks at loop-out when looping into lead-in [#13294](https://github.com/mixxxdj/mixxx/pull/13294)
* Fix wrong pitch value on startup, caused by `components.Pot`
[#11814](https://github.com/mixxxdj/mixxx/issues/11814)
[#13463](https://github.com/mixxxdj/mixxx/pull/13463)

## [2.4.1](https://github.com/mixxxdj/mixxx/milestone/41?closed=1) (2024-05-08)

Expand Down
7 changes: 7 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2554,6 +2554,13 @@ add_library(rekordbox_metadata STATIC EXCLUDE_FROM_ALL
target_include_directories(rekordbox_metadata SYSTEM PUBLIC lib/rekordbox-metadata)
target_link_libraries(mixxx-lib PRIVATE rekordbox_metadata)

#silence "enumeration values not handled in switch" in generated code
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(rekordbox_metadata PRIVATE -Wno-switch)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
target_compile_options(rekordbox_metadata PRIVATE /w44063)
endif()

# Kaitai for reading Rekordbox libraries
add_library(Kaitai STATIC EXCLUDE_FROM_ALL
lib/kaitai/kaitai/kaitaistream.cpp
Expand Down
63 changes: 43 additions & 20 deletions res/controllers/Midi_for_light-scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ midi_for_light.init = function(id) { // called when the MIDI device is opened &
midi_for_light.directory_mode = false;
midi_for_light.deck_current = 0;
midi_for_light.crossfader_block = false;
midi_for_light.crossfader_change_block_timer = [-1, -1];
midi_for_light.crossfader_change_block_timer = undefined;
midi_for_light.volumebeat = false;
midi_for_light.volumeBeatBlockStatus = false;
midi_for_light.volumeBeatBlock_timer = [-1, -1];
midi_for_light.vu_meter_timer = [-1, -1];
midi_for_light.volumebeat_on_delay_timer = [-1, -1];
midi_for_light.volumeBeatBlock_timer = undefined;
midi_for_light.vu_meter_timer = undefined;
midi_for_light.volumebeat_on_delay_timer = undefined;

engine.connectControl("[Master]", "crossfader", "midi_for_light.crossfaderChange");

Expand All @@ -102,26 +102,32 @@ midi_for_light.init = function(id) { // called when the MIDI device is opened &
};

midi_for_light.shutdown = function(id) { // called when the MIDI device is closed
engine.stopTimer(midi_for_light.deck_beat_watchdog_timer[0]);
engine.stopTimer(midi_for_light.deck_beat_watchdog_timer[1]);
engine.stopTimer(midi_for_light.deck_beat_watchdog_timer[2]);
engine.stopTimer(midi_for_light.deck_beat_watchdog_timer[3]);
engine.stopTimer(midi_for_light.vu_meter_timer);
engine.stopTimer(midi_for_light.volumeBeatBlock_timer);
engine.stopTimer(midi_for_light.crossfader_change_block_timer);
engine.stopTimer(midi_for_light.volumebeat_on_delay_timer);
for (let i = 0; i <= 3; i++) {
if (deck_beat_watchdog_timer[i]) {
engine.stopTimer(deck_beat_watchdog_timer[i]);
}
}
for (const timer of ["vu_meter_timer", "volumeBeatBlock_timer", "crossfader_change_block_timer", "volumebeat_on_delay_timer"]) {
if (midi_for_light[timer]) {
engine.stopTimer(midi_for_light[timer]);
midi_for_light[timer] = undefined;
}
}
};

midi_for_light.deckButtonPlay = function(value, group, control) { // called when click a play button
var deck = parseInt(group.substring(8, 9)) - 1;

if (value == 1) { // deck play on
if (deck_beat_watchdog_timer[deck]) {
engine.stopTimer(deck_beat_watchdog_timer[deck]);
}

if (value === 1) { // deck play on
beat_watchdog[deck] = false;
deck_beat_watchdog_timer[deck] = engine.beginTimer(beat_watchdog_time, () => { midi_for_light.deckBeatWatchdog(deck); });
} else { // deck play stop
engine.stopTimer(deck_beat_watchdog_timer[deck]);
beat_watchdog[deck] = true;
deck_beat_watchdog_timer[deck] = undefined;
}

if (midi_for_light.volumebeat === true) {
Expand All @@ -133,7 +139,10 @@ midi_for_light.deckButtonPlay = function(value, group, control) { // called when
};

midi_for_light.deckBeatWatchdog = function(deck) { // if current deck beat lost without reason, search a new current deck
engine.stopTimer(deck_beat_watchdog_timer[deck]);
if (deck_beat_watchdog_timer[deck]) {
engine.stopTimer(deck_beat_watchdog_timer[deck]);
deck_beat_watchdog_timer[deck] = undefined;
}
beat_watchdog[deck] = true;
if (midi_for_light.volumebeat === false) midi_for_light.crossfaderChange();
};
Expand Down Expand Up @@ -421,14 +430,20 @@ midi_for_light.deckVolumeChange = function(value, group, control) { // deck volu
};

midi_for_light.volumeBeatBlock = function() { // prevent deck change for one second
engine.stopTimer(midi_for_light.volumeBeatBlock_timer);
if (midi_for_light.volumeBeatBlock_timer) {
engine.stopTimer(midi_for_light.volumeBeatBlock_timer);
midi_for_light.volumeBeatBlock_timer = undefined;
}
midi_for_light.volumeBeatBlockStatus = false;
midi.sendShortMsg(0x8F + midi_channel, 0x30, 0x0); // note C on with value 0
midi.sendShortMsg(0x7F + midi_channel, 0x30, 0x0); // note C off with value 0
};

midi_for_light.volumeBeatOnDelay = function() { // allow deck change with volume after 3 second fader do nothing
engine.stopTimer(midi_for_light.volumebeat_on_delay_timer);
if (midi_for_light.volumebeat_on_delay_timer) {
engine.stopTimer(midi_for_light.volumebeat_on_delay_timer);
midi_for_light.volumebeat_on_delay_timer = undefined;
}
midi_for_light.volumebeat = true;
};

Expand All @@ -438,7 +453,10 @@ midi_for_light.crossfaderChange = function() { // crossfader chenge, check deck

// check changing to "deck change by volume" method
midi_for_light.volumebeat = false;
engine.stopTimer(midi_for_light.volumebeat_on_delay_timer);
if (midi_for_light.volumebeat_on_delay_timer) {
engine.stopTimer(midi_for_light.volumebeat_on_delay_timer);
midi_for_light.volumebeat_on_delay_timer = undefined;
}
if (engine.getValue("[Master]", "crossfader") > -0.25) { // crossfader more than 25% left;
if (engine.getValue("[Master]", "crossfader") < 0.25) { // crossfader more then 25% right;
midi_for_light.volumebeat_on_delay_timer = engine.beginTimer(3000, midi_for_light.volumeBeatOnDelay);
Expand Down Expand Up @@ -468,7 +486,10 @@ midi_for_light.crossfaderChange = function() { // crossfader chenge, check deck
};

midi_for_light.crossfaderChangeBlock = function() { // prevent deck change for one second
engine.stopTimer(midi_for_light.crossfader_change_block_timer);
if (midi_for_light.crossfader_change_block_timer) {
engine.stopTimer(midi_for_light.crossfader_change_block_timer);
midi_for_light.crossfader_change_block_timer = undefined;
}
midi_for_light.crossfader_block = false;
midi.sendShortMsg(0x8F + midi_channel, 0x30, 0x0); // note C on with value 0
midi.sendShortMsg(0x7F + midi_channel, 0x30, 0x0); // note C off with value 0
Expand Down Expand Up @@ -506,7 +527,9 @@ midi_for_light.deckBeatOutputToMidi = function(value, group, control) { // send
var deck_bpm = parseInt(engine.getValue(group, "bpm")) - 50;

// reset deck beat watchdog
engine.stopTimer(deck_beat_watchdog_timer[deck]);
if (deck_beat_watchdog_timer[deck]) {
engine.stopTimer(deck_beat_watchdog_timer[deck]);
}
beat_watchdog[deck] = false;
deck_beat_watchdog_timer[deck] = engine.beginTimer(beat_watchdog_time, () => { midi_for_light.deckBeatWatchdog(deck); });

Expand Down
Loading

0 comments on commit a65bc0b

Please sign in to comment.