summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/labeler.yml29
-rw-r--r--.github/workflows/labeler.yml24
-rw-r--r--.github/workflows/pre-commit.yml40
-rw-r--r--.github/workflows/stale.yml18
-rw-r--r--.pre-commit-config.yaml6
-rw-r--r--.travis.yml32
-rw-r--r--CHANGELOG.md10
-rw-r--r--CMakeLists.txt5
-rw-r--r--build/depends.py1
-rw-r--r--[-rwxr-xr-x]lib/kaitai/custom_decoder.h0
-rw-r--r--[-rwxr-xr-x]lib/kaitai/kaitaistream.cpp0
-rw-r--r--[-rwxr-xr-x]lib/kaitai/kaitaistream.h0
-rw-r--r--[-rwxr-xr-x]lib/kaitai/kaitaistruct.h0
-rw-r--r--res/controllers/Hercules_DJControl_Jogvision-scripts.js897
-rw-r--r--res/controllers/Hercules_DJControl_Jogvision.midi.xml100
-rw-r--r--res/controllers/Pioneer DDJ-200.midi.xml1100
-rw-r--r--res/controllers/Pioneer-DDJ-200-scripts.js59
-rw-r--r--src/controllers/controlpickermenu.cpp742
-rw-r--r--src/controllers/delegates/controldelegate.cpp2
-rw-r--r--src/controllers/dlgprefcontroller.cpp7
-rw-r--r--src/controllers/dlgprefcontrollersdlg.ui10
-rw-r--r--src/defs_urls.h2
-rw-r--r--src/dialog/dlgreplacecuecolor.cpp3
-rw-r--r--src/effects/builtin/autopaneffect.cpp2
-rw-r--r--src/effects/builtin/balanceeffect.cpp4
-rw-r--r--src/effects/builtin/balanceeffect.h2
-rw-r--r--src/effects/builtin/biquadfullkilleqeffect.h6
-rw-r--r--src/effects/builtin/bitcrushereffect.cpp2
-rw-r--r--src/effects/builtin/echoeffect.cpp2
-rw-r--r--src/effects/builtin/flangereffect.cpp7
-rw-r--r--src/effects/builtin/graphiceqeffect.h2
-rw-r--r--src/effects/builtin/linkwitzriley8eqeffect.h2
-rw-r--r--src/effects/builtin/loudnesscontoureffect.h2
-rw-r--r--src/effects/builtin/lvmixeqbase.h2
-rw-r--r--src/effects/builtin/metronomeclick.h2
-rw-r--r--src/effects/builtin/metronomeeffect.cpp16
-rw-r--r--src/effects/builtin/metronomeeffect.h2
-rw-r--r--src/effects/builtin/parametriceqeffect.h3
-rw-r--r--src/effects/builtin/phasereffect.cpp2
-rw-r--r--src/effects/builtin/threebandbiquadeqeffect.h2
-rw-r--r--src/effects/builtin/tremoloeffect.cpp2
-rw-r--r--src/engine/controls/bpmcontrol.cpp4
-rw-r--r--src/engine/controls/loopingcontrol.cpp6
-rw-r--r--src/engine/sync/internalclock.cpp9
-rw-r--r--src/engine/sync/internalclock.h1
-rw-r--r--src/library/trackcollectionmanager.cpp50
-rw-r--r--src/library/trackcollectionmanager.h26
-rw-r--r--src/mixer/basetrackplayer.cpp20
-rw-r--r--src/mixer/basetrackplayer.h2
-rw-r--r--src/mixer/samplerbank.cpp53
-rw-r--r--src/preferences/colorpaletteeditormodel.cpp3
-rw-r--r--src/preferences/dialog/dlgpreflibrary.cpp1
-rw-r--r--src/preferences/dialog/dlgpreflv2.cpp35
-rw-r--r--src/preferences/dialog/dlgpreflv2dlg.ui72
-rw-r--r--src/preferences/dialog/dlgprefsounddlg.ui2
-rw-r--r--src/soundio/sounddeviceportaudio.cpp55
-rw-r--r--src/soundio/sounddeviceportaudio.h32
-rw-r--r--src/sources/audiosource.cpp19
-rw-r--r--src/sources/audiosource.h6
-rw-r--r--src/sources/readaheadframebuffer.cpp477
-rw-r--r--src/sources/readaheadframebuffer.h177
-rw-r--r--src/sources/soundsourceffmpeg.cpp918
-rw-r--r--src/sources/soundsourceffmpeg.h18
-rw-r--r--src/sources/soundsourcem4a.cpp4
-rw-r--r--src/test/enginesynctest.cpp233
-rw-r--r--src/test/id3-test-data/cover-test-ffmpeg-aac.m4abin0 -> 440099 bytes
-rw-r--r--src/test/indexrange_test.cpp50
-rw-r--r--src/test/keyutilstest.cpp42
-rw-r--r--src/test/rescalertest.cpp8
-rw-r--r--src/test/soundproxy_test.cpp38
-rw-r--r--src/track/keyutils.cpp18
-rw-r--r--src/util/indexrange.cpp8
-rw-r--r--src/util/indexrange.h23
-rw-r--r--src/util/taskmonitor.cpp48
-rw-r--r--src/util/taskmonitor.h3
-rw-r--r--src/waveform/renderers/waveformmarkrange.cpp44
-rw-r--r--src/waveform/renderers/waveformrendererpreroll.cpp76
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.h8
-rw-r--r--src/waveform/waveformwidgetfactory.cpp4
-rw-r--r--src/widget/wsearchlineedit.cpp12
-rw-r--r--src/widget/wtrackmenu.cpp2
-rwxr-xr-xtools/audioplot.py8
-rwxr-xr-xtools/clang_format.py4
-rwxr-xr-xtools/serato_heartbeat.py8
84 files changed, 4063 insertions, 1713 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..0873de8f8d
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,24 @@
+# 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 }}"
+
+ # This works around bug https://github.com/actions/labeler/issues/104.
+ # The workaround was proposed here:
+ # https://github.com/wesnoth/wesnoth/commit/958c82d0867568057caaf58356502ec8c87d8366
+ sync-labels: ""
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
new file mode 100644
index 0000000000..e1f6e70933
--- /dev/null
+++ b/.github/workflows/pre-commit.yml
@@ -0,0 +1,40 @@
+name: pre-commit
+
+on:
+ push:
+ pull_request:
+
+jobs:
+ pre-commit:
+ name: Detecting code style issues
+ runs-on: ubuntu-latest
+ if: github.event_name == 'push'
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ - name: Install clang-format
+ run: sudo apt-get update && sudo apt-get install -y --no-install-recommends clang-format-10
+ - uses: pre-commit/action@v2.0.0
+ # There are too many files in the repo that have formatting issues. We'll
+ # disable these checks for now when pushing directly (but still run these
+ # on Pull Requests!).
+ env:
+ SKIP: end-of-file-fixer,trailing-whitespace,clang-format,eslint,no-commit-to-branch
+ pre-commit-pr:
+ name: Detecting code style issues
+ runs-on: ubuntu-latest
+ if: github.event_name == 'pull_request'
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - uses: actions/setup-python@v2
+ - name: Install clang-format
+ run: sudo apt-get update && sudo apt-get install -y --no-install-recommends clang-format-10
+ - uses: pre-commit/action@v2.0.0
+ env:
+ SKIP: no-commit-to-branch
+ with:
+ # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge
+ # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch
+ extra_args: --from-ref HEAD^1 --to-ref HEAD
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000000..c415950fbd
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,18 @@
+name: "Detect stale issues"
+on:
+ schedule:
+ - cron: "0 0 * * *"
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v3
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ stale-issue-message: "This issue is marked as stale because it has been open 90 days with no activity."
+ stale-issue-label: "stale"
+ stale-pr-message: "This PR is marked as stale because it has been open 90 days with no activity."
+ stale-pr-label: "stale"
+ days-before-stale: 90
+ days-before-close: -1
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 0c34075038..2371a7855b 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -45,7 +45,7 @@ default_language_version:
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v3.1.0
+ rev: v3.2.0
hooks:
- id: check-byte-order-marker
exclude: ^.*(\.cbproj|\.groupproj|\.props|\.sln|\.vcxproj|\.vcxproj.filters)$
@@ -73,7 +73,7 @@ repos:
entry: tools/codespell.py --ignore-file .codespellignore --ignore-regex "\\W(?:m_p*(?=[A-Z])|m_(?=\\w)|pp*(?=[A-Z])|k(?=[A-Z])|s_(?=\\w))" --files
exclude: ^(\.codespellignore|src/dialog/dlgabout\.cpp|.*\.(?:pot?|ts|wxl))$
- repo: https://github.com/pre-commit/mirrors-eslint
- rev: v7.2.0
+ rev: v7.11.0
hooks:
- id: eslint
args: [--fix, --report-unused-disable-directives]
@@ -98,7 +98,7 @@ repos:
- id: black
files: ^tools/.*$
- repo: https://gitlab.com/pycqa/flake8
- rev: '3.8.3'
+ rev: '3.8.4'
hooks:
- id: flake8
files: ^tools/.*$
diff --git a/.travis.yml b/.travis.yml
index 5e2bf502a1..f532f2b95d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,38 +25,6 @@ env:
jobs:
include:
- - name: pre-commit
- if: type != pull_request
- language: python
- python: 3.7
- # There are too many files in the repo that have formatting issues. We'll
- # disable these checks for now when pushing directly (but still run these
- # on Pull Requests!).
- env: SKIP=end-of-file-fixer,trailing-whitespace,clang-format,eslint
- cache:
- directories:
- - $HOME/.cache/pre-commit
- before_install:
- - pip install pre-commit==2.5.1
- script:
- - pre-commit run --all-files
- addons: []
-
- - name: pre-commit-pr
- if: type == pull_request
- language: python
- python: 3.7
- cache:
- directories:
- - $HOME/.cache/pre-commit
- before_install:
- - pip install pre-commit==2.5.1
- script:
- # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge
- # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch
- - pre-commit run --from-ref HEAD^1 --to-ref HEAD --show-diff-on-failure
- addons: []
-
- name: Ubuntu/gcc/SCons build
compiler: gcc
# Ubuntu Bionic build prerequisites
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b7feadd1a6..5427b9bc1f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -75,10 +75,12 @@
* Add controller mapping for Hercules DJControl Inpulse 200 [#2542](https://github.com/mixxxdj/mixxx/pull/2542)
* Add controller mapping for Hercules DJControl Jogvision [#2370](https://github.com/mixxxdj/mixxx/pull/2370)
-* Fix missing manual in deb package [lp:1889776] (https://bugs.launchpad.net/mixxx/+bug/1889776)
-* 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
-
+* Fix missing manual in deb package [lp:1889776](https://bugs.launchpad.net/mixxx/+bug/1889776)
+* Fix caching of duplicate tracks that reference the same file [#3027](https://github.com/mixxxdj/mixxx/pull/3027)
+* Fix loss of precision when dealing with floating-point sample positions while setting loop out position and seeking using vinyl control [#3126](https://github.com/mixxxdj/mixxx/pull/3126) [#3127](https://github.com/mixxxdj/mixxx/pull/3127)
+* Prevent moving a loop beyond track end [#3117](https://github.com/mixxxdj/mixxx/pull/3117) [lp:1799574](https://bugs.launchpad.net/mixxx/+bug/1799574)
+* Use 6 instead of only 4 compatible musical keys (major/minor) [#3205](https://github.com/mixxxdj/mixxx/pull/3205)
+* Fix possible memory corruption using JACK on Linux [#3160](https://github.com/mixxxdj/mixxx/pull/3160)
## [2.2.4](https://launchpad.net/mixxx/+milestone/2.2.4) (2020-06-27)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2201689a2d..06a76513c5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -701,6 +701,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/sources/audiosource.cpp
src/sources/audiosourcestereoproxy.cpp
src/sources/metadatasourcetaglib.cpp
+ src/sources/readaheadframebuffer.cpp
src/sources/soundsource.cpp
src/sources/soundsourceflac.cpp
src/sources/soundsourceoggvorbis.cpp
@@ -942,7 +943,7 @@ if(MSVC)
target_compile_options(mixxx-lib PUBLIC /W3)
endif()
else()
- target_compile_options(mixxx-lib PUBLIC -Wall -Wextra)
+ target_compile_options(mixxx-lib PUBLIC -Wall -Wextra -Wfloat-conversion)
if(WARNINGS_PEDANTIC)
target_compile_options(mixxx-lib PUBLIC -pedantic)
endif()
@@ -1531,7 +1532,7 @@ if(KEYFINDER)
set(KeyFinder_LIBRARY "lib/${CMAKE_STATIC_LIBRARY_PREFIX}keyfinder${CMAKE_STATIC_LIBRARY_SUFFIX}")
ExternalProject_Add(keyfinder
GIT_REPOSITORY https://github.com/ibsh/libKeyFinder.git
- GIT_TAG faa563f0898b3cbfbd2ed0696deebc8a9b0c9af6
+ GIT_TAG v2.2.2
GIT_SHALLOW TRUE
INSTALL_DIR "${KeyFinder_INSTALL_DIR}"
CMAKE_ARGS
diff --git a/build/depends.py b/build/depends.py
index bd90e058da..2bf003438d 100644
--- a/build/depends.py
+++ b/build/depends.py
@@ -948,6 +948,7 @@ class MixxxCore(Feature):
"src/sources/audiosource.cpp",
"src/sources/audiosourcestereoproxy.cpp",
"src/sources/metadatasourcetaglib.cpp",
+ "src/sources/readaheadframebuffer.cpp",
"src/sources/soundsource.cpp",
"src/sources/soundsourceproviderregistry.cpp",
"src/sources/soundsourceproxy.cpp",
diff --git a/lib/kaitai/custom_decoder.h b/lib/kaitai/custom_decoder.h
index 6da7f5fd23..6da7f5fd23 100755..100644
--- a/lib/kaitai/custom_decoder.h
+++ b/lib/kaitai/custom_decoder.h
diff --git a/lib/kaitai/kaitaistream.cpp b/lib/kaitai/kaitaistream.cpp
index 2a9f082e95..2a9f082e95 100755..100644
--- a/lib/kaitai/kaitaistream.cpp
+++ b/lib/kaitai/kaitaistream.cpp
diff --git a/lib/kaitai/kaitaistream.h b/lib/kaitai/kaitaistream.h
index 9592771db0..9592771db0 100755..100644
--- a/lib/kaitai/kaitaistream.h
+++ b/lib/kaitai/kaitaistream.h
diff --git a/lib/kaitai/kaitaistruct.h b/lib/kaitai/kaitaistruct.h
index f8b848fdd1..f8b848fdd1 100755..100644
--- a/lib/kaitai/kaitaistruct.h
+++ b/lib/kaitai/kaitaistruct.h
diff --git a/res/controllers/Hercules_DJControl_Jogvision-scripts.js b/res/controllers/Hercules_DJControl_Jogvision-scripts.js
index 76c9300601..b91aa32561 100644
--- a/res/controllers/Hercules_DJControl_Jogvision-scripts.js
+++ b/res/controllers/Hercules_DJControl_Jogvision-scripts.js
@@ -1,422 +1,531 @@
-// ****************************************************************************
// * Mixxx mapping script file for the Hercules DJControl Jogvision.
-// * Author: DJ Phatso, contributions by Kerrick Staley and David TV
-// * Version 1.16 (Jun 2020)
-// * Version 1.15 (Jun 2020)
-// * Version 1.14 (Jun 2020)
-// * Version 1.13 (May 2020)
-// * Version 1.11 (May 2020)
-// * Version 1.10 (May 2020)
-// * Version 1.9 (May 2020)
-// * Version 1.8 (May 2020)
-// * Version 1.6 (January 2020)
-// * Version 1.5 (January 2020)
-// * Version 1.4 (December 2019)
-// * Version 1.3 (November 2019)
-// * Version 1.2 (November 2019)
-// * Version 1.1 (March 2019)
+// * Author: DJ Phatso (contributions by Kerrick Staley, and fully rewritten, completed and enhanced by David TV)
// * Forum: https://www.mixxx.org/forums/viewtopic.php?f=7&t=12580
// * Wiki: https://www.mixxx.org/wiki/doku.php/hercules_dj_control_jogvision
-//
-// Changes to v1.16
-// - Added a "beatDetection" variable to use old school one (way better beat match, but no song position relative)
-//
-// Changes to v1.15
-// - Reset shift-"Loop ON", to do what Hercules wanted it to be: select FX2 for given channel. Now,
-// the loop creation is done with "MODE"+"Loop ON" combo (here, MODE key works like "SHIFT" key ;)
-//
-// Changes to v1.14
-// - Better beat_active matching
-//
-// Changes to v1.13
-// - Added "shift"+AIRFX to do a high pass (apart from the default low pass)
-// - Added shift+<multi FX> to set beatgrid at current play position
-//
-// Changes to v1.12
-// - Added "alternate" beat leds mode
-// - Changed "follow" beats led algorithm with a better/more elegant version
-//
-// Changes to v1.11
-// - Changed beats led algorithm to match song beats (forward and backward) and fix leads positions,
-// what allows backward led activation!! (didn't have that working previously)
-//
-// Changes to v1.10
-// - Changed jogwheel outer led movement based on playposition (much better!)
-// - Added a user variable to set or not some effects at ini
-// - Minor code convention corrections
-//
-// Changes to v1.9
-// - Added jogwheel outer led movement when scratch and back/forward spin
-//
-// Changes to v1.8
-// - Added normal, reverse, blink and follow modes for beat active led (see variable: beatActiveMode)
-//
-// Changes to v1.7
-// - Added back-spin (and forward-spin) effect on "vinyl" mode when jog wheel pushed from top
-//
-// Changes to v1.6
-// - Minor code-style changes (use camelCase, use "double quotes" and other if/else styles)
-//
-// Changes to v1.5
-// - Fixed regression not updating the VuMeters
-// - Fixed regression not updating the CUE/MIX buttons
-//
-// Changes to v1.4
-// - Code cleanup and standarization
-// - Added "orage" track led color (ala Serato) when play position is beyond the
-// part of the track, but before the "end of track" Mixxx signal
-//
-// Changes to v1.3
-// - Enabled the creation o