From 4f63a82fa0a952349956f461720bc40412393a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Tue, 8 Jun 2021 22:06:57 +0200 Subject: [PATCH 01/18] Added an help text to debian and macos_buildenv --- tools/debian_buildenv.sh | 13 ++++++++++++- tools/macos_buildenv.sh | 8 ++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/tools/debian_buildenv.sh b/tools/debian_buildenv.sh index 7705bd10194..8fc6d08f6a8 100755 --- a/tools/debian_buildenv.sh +++ b/tools/debian_buildenv.sh @@ -3,12 +3,14 @@ # shellcheck disable=SC1091 set -o pipefail +CALL=$0 COMMAND=$1 shift case "$COMMAND" in name) - echo "No build environment needed for Ubuntu, please install dependencies using apt." >&2 + echo "No build environment name required for Debian based distros." >&2 + echo "This script installs the build dependencies via apt using the \"setup\" option." >&2 ;; setup) @@ -85,4 +87,13 @@ case "$COMMAND" in qt5keychain-dev \ qtscript5-dev \ "${PACKAGES_EXTRA[@]}" + ;; + *) + echo "Usage: $CALL [options]" + echo "" + echo "options:" + echo " help Displays this help." + echo " name Displays the name of the required build envirnment." + echo " setup Installes the build environment." + ;; esac diff --git a/tools/macos_buildenv.sh b/tools/macos_buildenv.sh index 41553136397..7ed88ce808e 100755 --- a/tools/macos_buildenv.sh +++ b/tools/macos_buildenv.sh @@ -123,4 +123,12 @@ case "$COMMAND" in echo_exported_variables fi ;; + *) + echo "Usage: source macos_buildenv.sh [options]" + echo "" + echo "options:" + echo " help Displays this help." + echo " name Displays the name of the required build envirnment." + echo " setup Installes the build environment." + ;; esac From 27d8d15bce1227e0b8319a75cd4b0f1cc718aaf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 10 Jun 2021 00:37:54 +0200 Subject: [PATCH 02/18] remove redundant shift call --- tools/debian_buildenv.sh | 8 ++------ tools/macos_buildenv.sh | 5 +---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/tools/debian_buildenv.sh b/tools/debian_buildenv.sh index 8fc6d08f6a8..48f7e890edd 100755 --- a/tools/debian_buildenv.sh +++ b/tools/debian_buildenv.sh @@ -3,11 +3,7 @@ # shellcheck disable=SC1091 set -o pipefail -CALL=$0 -COMMAND=$1 -shift - -case "$COMMAND" in +case "$1" in name) echo "No build environment name required for Debian based distros." >&2 echo "This script installs the build dependencies via apt using the \"setup\" option." >&2 @@ -89,7 +85,7 @@ case "$COMMAND" in "${PACKAGES_EXTRA[@]}" ;; *) - echo "Usage: $CALL [options]" + echo "Usage: $0 [options]" echo "" echo "options:" echo " help Displays this help." diff --git a/tools/macos_buildenv.sh b/tools/macos_buildenv.sh index 7ed88ce808e..9dd172d93e9 100755 --- a/tools/macos_buildenv.sh +++ b/tools/macos_buildenv.sh @@ -8,9 +8,6 @@ if [ -z "${GITHUB_ENV}" ] && ! $(return 0 2>/dev/null); then exit 1 fi -COMMAND=$1 -shift 1 - realpath() { OLDPWD="${PWD}" cd "$1" || exit 1 @@ -28,7 +25,7 @@ read -r -d'\n' BUILDENV_NAME BUILDENV_SHA256 < "${MIXXX_ROOT}/packaging/macos/bu [ -z "$BUILDENV_BASEPATH" ] && BUILDENV_BASEPATH="${MIXXX_ROOT}/buildenv" -case "$COMMAND" in +case "$1" in name) if [ -n "${GITHUB_ENV}" ]; then echo "BUILDENV_NAME=$BUILDENV_NAME" >> "${GITHUB_ENV}" From bd44d4281073587c5c81243f1aa68d2dc28a42e2 Mon Sep 17 00:00:00 2001 From: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com> Date: Thu, 10 Jun 2021 18:59:47 +0200 Subject: [PATCH 03/18] update 2.3 Changelog --- CHANGELOG.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4ae67665ab..def120436d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ * Add hotcue color find-and-replace tool [#2547](https://github.com/mixxxdj/mixxx/pull/2547) ### Importing From Other DJ Software ### -* Import cue points, track colors, and playlists from Serato file tags & database [#2480](https://github.com/mixxxdj/mixxx/pull/2480) [#2526](https://github.com/mixxxdj/mixxx/pull/2526) [#2499](https://github.com/mixxxdj/mixxx/pull/2499) [#2495](https://github.com/mixxxdj/mixxx/pull/2495) [#2673](https://github.com/mixxxdj/mixxx/pull/2673) +* Import cue points, track colors, and playlists from Serato file tags & database [#2480](https://github.com/mixxxdj/mixxx/pull/2480) [#2526](https://github.com/mixxxdj/mixxx/pull/2526) [#2499](https://github.com/mixxxdj/mixxx/pull/2499) [#2495](https://github.com/mixxxdj/mixxx/pull/2495) [#2673](https://github.com/mixxxdj/mixxx/pull/2673) [#3885](https://github.com/mixxxdj/mixxx/pull/3885) * Note: Mixxx does not yet support multiple loops per track. We are [working on this for Mixxx 2.4](https://github.com/mixxxdj/mixxx/pull/2194). In Mixxx 2.3, if you import a track with multiple loops from Serato, Mixxx will use the first loop cue as the single loop Mixxx currently supports. The imported loops are still stored in Mixxx's database and are treated as hotcues in Mixxx 2.3. If you do not delete these hotcues, they will be usable as loops in Mixxx 2.4. Serato keeps loops and hotcues in separate lists, but Mixxx does not, so loops from Serato are imported starting as hotcue 9. * Import cue points, track colors, and playlists from Rekordbox USB drives [#2119](https://github.com/mixxxdj/mixxx/pull/2119) [#2555](https://github.com/mixxxdj/mixxx/pull/2555) [#2543](https://github.com/mixxxdj/mixxx/pull/2543) [#2779](https://github.com/mixxxdj/mixxx/pull/2779) * Note: The first Rekordbox memory cue is imported for the main cue button in Mixxx and the remaining Rekordbox memory cues are imported as Mixxx hotcues, starting with the next hotcue number after the last hotcue from Rekordbox. @@ -39,6 +39,9 @@ * AutoDJ: Make "enable" shortcut work after startup [#3242](https://github.com/mixxxdj/mixxx/pull/3242) * Add rate range indicator [#3693](https://github.com/mixxxdj/mixxx/pull/3693) * Allow menubar to be styled [#3372](https://github.com/mixxxdj/mixxx/pull/3372) [#3788](https://github.com/mixxxdj/mixxx/pull/3788) +* Add Donate button to About dialog [#3838](https://github.com/mixxxdj/mixxx/pull/3838) [#3846](https://github.com/mixxxdj/mixxx/pull/3846) +* Add Scrollable Skin Widget [#3890](https://github.com/mixxxdj/mixxx/pull/3890) +* Fix minor visual issues in Skins [#3958](https://github.com/mixxxdj/mixxx/pull/3958/) [#3954](https://github.com/mixxxdj/mixxx/pull/3954/) [#3941](https://github.com/mixxxdj/mixxx/pull/3941/) [#3938](https://github.com/mixxxdj/mixxx/pull/3938/) [#3936](https://github.com/mixxxdj/mixxx/pull/3936/) [#3886](https://github.com/mixxxdj/mixxx/pull/3886/) [#3927](https://github.com/mixxxdj/mixxx/pull/3927/) [#3844](https://github.com/mixxxdj/mixxx/pull/3844/) [#3933](https://github.com/mixxxdj/mixxx/pull/3933/) [#3835](https://github.com/mixxxdj/mixxx/pull/3835/) [#3902](https://github.com/mixxxdj/mixxx/pull/3902) [#3931](https://github.com/mixxxdj/mixxx/pull/3931) ### Music Feature Analysis ### * Multithreaded analysis for much faster batch analysis on multicore CPUs [#1624](https://github.com/mixxxdj/mixxx/pull/1624) [#2142](https://github.com/mixxxdj/mixxx/pull/2142) [lp:1641153](https://bugs.launchpad.net/mixxx/+bug/1641153) @@ -46,6 +49,7 @@ * Note: Users who have not manually corrected keys are advised to clear all keys in their library by pressing Ctrl + A in the library, right clicking, going to Reset -> Key, then reanalyzing their library. This will freeze the GUI while Mixxx clears the keys; this is a known problem that we will not be able to fix for 2.3. Wait until it is finished and you will be able to reanalyze tracks for better key detection results. * Remove VAMP plugin support and use Queen Mary DSP library directly. vamp-plugin-sdk and vamp-hostsdk are no longer required dependencies. [#926](https://github.com/mixxxdj/mixxx/pull/926) * Improvements BPM detection on non-const beatgrids [#3626](https://github.com/mixxxdj/mixxx/pull/3626) +* Fix const beatgrid placement [#3965](https://github.com/mixxxdj/mixxx/pull/3965) [#3973](https://github.com/mixxxdj/mixxx/pull/3973) ### Music Library ### * Add support for searching for empty fields (for example `crate:""`) [lp:1788086](https://bugs.launchpad.net/mixxx/+bug/1788086) @@ -58,6 +62,10 @@ * Fix caching of duplicate tracks that reference the same file [#3027](https://github.com/mixxxdj/mixxx/pull/3027) * Use 6 instead of only 4 compatible musical keys (major/minor) [#3205](https://github.com/mixxxdj/mixxx/pull/3205) * Fix possible crash when trying to refocus the tracks table while another Mixxx window has focus [#3201](https://github.com/mixxxdj/mixxx/pull/3201) +* Don't create new tags in file when exporting metadata to it [#3898](https://github.com/mixxxdj/mixxx/pull/3898) +* Fix playlist files beginning with non-english characters not being loaded: [#3916](https://github.com/mixxxdj/mixxx/pull/3916) +* Enable sorting in "Hidden Tracks" and "Missing Tracks" views [#3828](https://github.com/mixxxdj/mixxx/pull/3828) [lp:1828555](https://bugs.launchpad.net/mixxx/+bug/1828555/) [lp:1924616](https://bugs.launchpad.net/mixxx/+bug/1924616/) +* fix Track table being empty after start: "[#3935](https://github.com/mixxxdj/mixxx/pull/3935/) [lp:1930546](https://bugs.launchpad.net/mixxx/+bug/1930546/) [lp:1924843](https://bugs.launchpad.net/mixxx/+bug/1924843/)" ### Audio Codecs ### * Add FFmpeg audio decoder, bringing support for ALAC files [#1356](https://github.com/mixxxdj/mixxx/pull/1356) @@ -71,6 +79,7 @@ * Fix possible memory corruption using JACK on Linux [#3160](https://github.com/mixxxdj/mixxx/pull/3160) * Fix changing of vinyl lead-in time [lp:1915483](https://bugs.launchpad.net/mixxx/+bug/1915483) [#3781](https://github.com/mixxxdj/mixxx/pull/3781) * Fix tempo change of non-const beatgrid track on audible deck when cueing another track [#3772](https://github.com/mixxxdj/mixxx/pull/3772) +* Fix crash when changing effect unit routing [#3882](https://github.com/mixxxdj/mixxx/pull/3882) [lp:1775497](https://bugs.launchpad.net/mixxx/+bug/1775497) ### Controllers ### * Improve workflow for configuring controller mappings and editing mappings [#2569](https://github.com/mixxxdj/mixxx/pull/2569) [#3278](https://github.com/mixxxdj/mixxx/pull/3278) [#3667](https://github.com/mixxxdj/mixxx/pull/3667) @@ -83,11 +92,11 @@ * Add controller mapping for Numark iDJ Live II [#2818](https://github.com/mixxxdj/mixxx/pull/2818) * 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) -* Add controller mapping for Pioneer DDJ-200 [#3185](https://github.com/mixxxdj/mixxx/pull/3185) [#3193](https://github.com/mixxxdj/mixxx/pull/3193) [#3479](https://github.com/mixxxdj/mixxx/pull/3742) +* Add controller mapping for Pioneer DDJ-200 [#3185](https://github.com/mixxxdj/mixxx/pull/3185) [#3193](https://github.com/mixxxdj/mixxx/pull/3193) [#3479](https://github.com/mixxxdj/mixxx/pull/3742) [#3793](https://github.com/mixxxdj/mixxx/pull/3793) [#3949](https://github.com/mixxxdj/mixxx/pull/3949) * Add controller mapping for Pioneer DDJ-400 [#3479](https://github.com/mixxxdj/mixxx/pull/3479) * Add controller mapping for ION Discover DJ Pro [#2893](https://github.com/mixxxdj/mixxx/pull/2893) * Add controller mapping for Native Instrument Traktor Kontrol S3 [#3031](https://github.com/mixxxdj/mixxx/pull/3031) -* Add controller mapping for Behringer BCR2000 [#3342](https://github.com/mixxxdj/mixxx/pull/3342) +* Add controller mapping for Behringer BCR2000 [#3342](https://github.com/mixxxdj/mixxx/pull/3342) [#3943](https://github.com/mixxxdj/mixxx/pull/3943) * Add controller mapping for Behringer DDM4000 [#3542](https://github.com/mixxxdj/mixxx/pull/3542) * Update controller mapping for Allen & Heath Xone K2 to add intro/outro cues [#2236](https://github.com/mixxxdj/mixxx/pull/2236) * Update controller mapping for Hercules P32 for more accurate headmix control [#3537](https://github.com/mixxxdj/mixxx/pull/3537) @@ -105,6 +114,9 @@ * Don't trash user configuration if an error occurs when writing [#3192](https://github.com/mixxxdj/mixxx/pull/3192) * Enable CUE sheet recording by default [#3374](https://github.com/mixxxdj/mixxx/pull/3374) * And countless other small fixes and improvements (too many to list them all!) +* Fix crash when right double clicking GLSL waveforms [#3904](https://github.com/mixxxdj/mixxx/pull/3904) +* Derive Mixxx version from `git describe` [#3824](https://github.com/mixxxdj/mixxx/pull/3824) [#3841](https://github.com/mixxxdj/mixxx/pull/3841) [#3848](https://github.com/mixxxdj/mixxx/pull/3848) +* Improve tapping the bpm of a deck [#3790](https://github.com/mixxxdj/mixxx/pull/3790) [lp:1882776](https://bugs.launchpad.net/mixxx/+bug/1882776) ## [2.2.4](https://launchpad.net/mixxx/+milestone/2.2.4) (2020-06-27) From 89e5e258b08853ac3e55d3a1f746e8d2e5e93252 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Thu, 10 Jun 2021 20:15:04 +0200 Subject: [PATCH 04/18] mention cloning from samplers --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index def120436d9..ab0a1a2b5db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ * Use intro & outro cues in AutoDJ transitions [#2103](https://github.com/mixxxdj/mixxx/pull/2103) ### Deck cloning ### -* Add deck cloning (also known as "instant doubles" in other DJ software) by dragging and dropping between decks [#1892](https://github.com/mixxxdj/mixxx/pull/1892) +* Add deck cloning (also known as "instant doubles" in other DJ software) by dragging and dropping between decks [#1892](https://github.com/mixxxdj/mixxx/pull/1892) and samplers [#3200](https://github.com/mixxxdj/mixxx/pull/3200) * Clone decks by double pressing the load button on a controller (with option to disable this) [#2024](https://github.com/mixxxdj/mixxx/pull/2024) [#2042](https://github.com/mixxxdj/mixxx/pull/2042) ### Skins & GUI ### From 2dfea513058fd5f0eb4e106675230fae6729cb62 Mon Sep 17 00:00:00 2001 From: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com> Date: Thu, 10 Jun 2021 20:22:48 +0200 Subject: [PATCH 05/18] Apply suggestions from code review Co-authored-by: Jan Holthuis --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab0a1a2b5db..053c9d02719 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,9 +63,9 @@ * Use 6 instead of only 4 compatible musical keys (major/minor) [#3205](https://github.com/mixxxdj/mixxx/pull/3205) * Fix possible crash when trying to refocus the tracks table while another Mixxx window has focus [#3201](https://github.com/mixxxdj/mixxx/pull/3201) * Don't create new tags in file when exporting metadata to it [#3898](https://github.com/mixxxdj/mixxx/pull/3898) -* Fix playlist files beginning with non-english characters not being loaded: [#3916](https://github.com/mixxxdj/mixxx/pull/3916) +* Fix playlist files beginning with non-english characters not being loaded [#3916](https://github.com/mixxxdj/mixxx/pull/3916) * Enable sorting in "Hidden Tracks" and "Missing Tracks" views [#3828](https://github.com/mixxxdj/mixxx/pull/3828) [lp:1828555](https://bugs.launchpad.net/mixxx/+bug/1828555/) [lp:1924616](https://bugs.launchpad.net/mixxx/+bug/1924616/) -* fix Track table being empty after start: "[#3935](https://github.com/mixxxdj/mixxx/pull/3935/) [lp:1930546](https://bugs.launchpad.net/mixxx/+bug/1930546/) [lp:1924843](https://bugs.launchpad.net/mixxx/+bug/1924843/)" +* Fix track table being empty after start [#3935](https://github.com/mixxxdj/mixxx/pull/3935/) [lp:1930546](https://bugs.launchpad.net/mixxx/+bug/1930546/) [lp:1924843](https://bugs.launchpad.net/mixxx/+bug/1924843/) ### Audio Codecs ### * Add FFmpeg audio decoder, bringing support for ALAC files [#1356](https://github.com/mixxxdj/mixxx/pull/1356) @@ -114,7 +114,7 @@ * Don't trash user configuration if an error occurs when writing [#3192](https://github.com/mixxxdj/mixxx/pull/3192) * Enable CUE sheet recording by default [#3374](https://github.com/mixxxdj/mixxx/pull/3374) * And countless other small fixes and improvements (too many to list them all!) -* Fix crash when right double clicking GLSL waveforms [#3904](https://github.com/mixxxdj/mixxx/pull/3904) +* Fix crash when double clicking GLSL waveforms with right mouse button [#3904](https://github.com/mixxxdj/mixxx/pull/3904) * Derive Mixxx version from `git describe` [#3824](https://github.com/mixxxdj/mixxx/pull/3824) [#3841](https://github.com/mixxxdj/mixxx/pull/3841) [#3848](https://github.com/mixxxdj/mixxx/pull/3848) * Improve tapping the bpm of a deck [#3790](https://github.com/mixxxdj/mixxx/pull/3790) [lp:1882776](https://bugs.launchpad.net/mixxx/+bug/1882776) From a427f074f97f43f7c93c8464ed1184c8e1bd7e3d Mon Sep 17 00:00:00 2001 From: ronso0 Date: Thu, 10 Jun 2021 20:24:05 +0200 Subject: [PATCH 06/18] track info on double click --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 053c9d02719..19fdb3885c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ ### Skins & GUI ### * Aesthetically revamped LateNight skin [#2298](https://github.com/mixxxdj/mixxx/pull/2298) [#2342](https://github.com/mixxxdj/mixxx/pull/2342) * Right click overview waveform to show time remaining until that point [#2238](https://github.com/mixxxdj/mixxx/pull/2238) +* Show track info dialog when double clicking track labels in decks [#2990](https://github.com/mixxxdj/mixxx/pull/2990) * Show track context menu when right clicking text in decks [#2612](https://github.com/mixxxdj/mixxx/pull/2612) [#2675](https://github.com/mixxxdj/mixxx/pull/2675) [#2684](https://github.com/mixxxdj/mixxx/pull/2684) [#2696](https://github.com/mixxxdj/mixxx/pull/2696) * Add laptop battery widget to skins [#2283](https://github.com/mixxxdj/mixxx/pull/2283) [#2277](https://github.com/mixxxdj/mixxx/pull/2277) [#2250](https://github.com/mixxxdj/mixxx/pull/2250) [#2228](https://github.com/mixxxdj/mixxx/pull/2228) [#2221](https://github.com/mixxxdj/mixxx/pull/2221) [#2163](https://github.com/mixxxdj/mixxx/pull/2163) [#2160](https://github.com/mixxxdj/mixxx/pull/2160) [#2147](https://github.com/mixxxdj/mixxx/pull/2147) [#2281](https://github.com/mixxxdj/mixxx/pull/2281) [#2319](https://github.com/mixxxdj/mixxx/pull/2319) [#2287](https://github.com/mixxxdj/mixxx/pull/2287) * Show when passthrough mode is active on overview waveforms [#2575](https://github.com/mixxxdj/mixxx/pull/2575) [#2616](https://github.com/mixxxdj/mixxx/pull/2616) From ee0420dd8c10569047ed0aaa968638ba20fec002 Mon Sep 17 00:00:00 2001 From: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com> Date: Thu, 10 Jun 2021 20:34:39 +0200 Subject: [PATCH 07/18] Changelog: add note on microphone ducking strength control Co-authored-by: ronso0 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19fdb3885c9..fabaaf452f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,7 @@ * Fix changing of vinyl lead-in time [lp:1915483](https://bugs.launchpad.net/mixxx/+bug/1915483) [#3781](https://github.com/mixxxdj/mixxx/pull/3781) * Fix tempo change of non-const beatgrid track on audible deck when cueing another track [#3772](https://github.com/mixxxdj/mixxx/pull/3772) * Fix crash when changing effect unit routing [#3882](https://github.com/mixxxdj/mixxx/pull/3882) [lp:1775497](https://bugs.launchpad.net/mixxx/+bug/1775497) +* Make microphone ducking use strength knob the same way in automatic & manual mode [#2750](https://github.com/mixxxdj/mixxx/pull/2750) ### Controllers ### * Improve workflow for configuring controller mappings and editing mappings [#2569](https://github.com/mixxxdj/mixxx/pull/2569) [#3278](https://github.com/mixxxdj/mixxx/pull/3278) [#3667](https://github.com/mixxxdj/mixxx/pull/3667) From 038e7d10b46cb4d8b54ee9da094ac1a83b7fb141 Mon Sep 17 00:00:00 2001 From: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com> Date: Fri, 11 Jun 2021 11:12:35 +0200 Subject: [PATCH 08/18] CHANGELOG: add HE-AAC encoding feature --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fabaaf452f1..2da1aed2e6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ * Include LAME MP3 encoder with Mixxx now that the MP3 patent has expired [lp:1294128](https://bugs.launchpad.net/mixxx/+bug/1294128) [buildserver:#37](https://github.com/mixxxdj/buildserver/pull/37) [buildserver:9e8bcee](https://github.com/mixxxdj/buildserver/commit/9e8bcee771731920ae82f3e076d43f0fb51e5027) * Add Opus streaming and recording support. [lp:1338413](https://bugs.launchpad.net/mixxx/+bug/1338413) * Remove support for SoundSource plugins because the code was not well-maintained and could lead to crashes [lp:1792747](https://bugs.launchpad.net/mixxx/+bug/1792747) +* Add HE-AAC encoding capabilities for recording and broadcasting [#3615](https://github.com/mixxxdj/mixxx/pull/3615) ### Audio Engine ### * 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) From 56c50961e903075a3af7789afe34f1fec72c5465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 13 Jun 2021 23:36:09 +0200 Subject: [PATCH 09/18] Revert extra if condition to add a default option and don't use not working and redundant braces. --- CMakeLists.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a03f7c83b2..b107a1e2a2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2271,13 +2271,7 @@ find_package(MP4) find_package(MP4v2) # It is enabled by default on Linux only, because other targets have other # solutions. It requires MP4 or MP4v2. -# Note, we use if() here, because the following line does not work with cmake 3.16.3 -# default_option(FAAD "FAAD AAC audio file decoder support" "UNIX;NOT APPLE;(MP4_FOUND OR MP4v2_FOUND)") -if (UNIX AND NOT APPLE AND (MP4_FOUND OR MP4v2_FOUND)) - option(FAAD "FAAD AAC audio file decoder support" ON) -else() - option(FAAD "FAAD AAC audio file decoder support" OFF) -endif() +default_option(FAAD "FAAD AAC audio file decoder support" "UNIX;NOT APPLE;MP4_FOUND OR MP4v2_FOUND") if(FAAD) if(NOT MP4_FOUND AND NOT MP4v2_FOUND) message(FATAL_ERROR "FAAD AAC audio support requires libmp4 or libmp4v2 with development headers.") From 2f6ef97e6432e7109a57b899ebf778d32159627c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sun, 13 Jun 2021 23:38:11 +0200 Subject: [PATCH 10/18] Allow parentheses in default_option() depends string --- cmake/modules/DefaultOption.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/modules/DefaultOption.cmake b/cmake/modules/DefaultOption.cmake index c9c0b6d134e..160cafc2420 100644 --- a/cmake/modules/DefaultOption.cmake +++ b/cmake/modules/DefaultOption.cmake @@ -33,7 +33,10 @@ set a default and the value may be overridden by the user. macro(DEFAULT_OPTION option doc depends) set(${option}_DEFAULT_ON 1) foreach(d ${depends}) - string(REGEX REPLACE " +" ";" DEFAULT_OPTION_DEP "${d}") + # if() takes the condition as a list of arguments. Parentheses need to be separated as well. + string(REPLACE "(" " ( " DEFAULT_OPTION_DEP "${d}") + string(REPLACE ")" " ) " DEFAULT_OPTION_DEP "${DEFAULT_OPTION_DEP}") + string(REGEX REPLACE " +" ";" DEFAULT_OPTION_DEP "${DEFAULT_OPTION_DEP}") if(${DEFAULT_OPTION_DEP}) else() set(${option}_DEFAULT_ON 0) From fe49c1d9e4a53bfa617f1eaf0b79c00631cda650 Mon Sep 17 00:00:00 2001 From: Alexander Horner <33007665+alexhorner@users.noreply.github.com> Date: Tue, 15 Jun 2021 07:56:54 +0100 Subject: [PATCH 11/18] Add AAC to dynamic metadata statement --- src/engine/sidechain/shoutconnection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/sidechain/shoutconnection.cpp b/src/engine/sidechain/shoutconnection.cpp index d819cb29540..a60aace0cf0 100644 --- a/src/engine/sidechain/shoutconnection.cpp +++ b/src/engine/sidechain/shoutconnection.cpp @@ -809,9 +809,9 @@ void ShoutConnection::updateMetaData() { */ - // If we use either MP3 streaming or OGG streaming with dynamic update of + // If we use either MP3 streaming, AAC streaming or OGG streaming with dynamic update of // metadata being enabled, we want dynamic metadata changes - if (!m_custom_metadata && (m_format_is_mp3 || m_ogg_dynamic_update)) { + if (!m_custom_metadata && (m_format_is_mp3 || m_format_is_aac || m_ogg_dynamic_update)) { if (m_pMetaData != nullptr) { QString artist = m_pMetaData->getArtist(); From 6ede09e054bfd6e5a87970559647d516fecdd1ac Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Tue, 15 Jun 2021 12:54:29 +0200 Subject: [PATCH 12/18] SoundSourceM4A: Fix armv7hl build on gcc 11.1 --- src/sources/soundsourcem4a.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/sources/soundsourcem4a.cpp b/src/sources/soundsourcem4a.cpp index a1a1c2adbcc..0578ef1f66e 100644 --- a/src/sources/soundsourcem4a.cpp +++ b/src/sources/soundsourcem4a.cpp @@ -759,19 +759,19 @@ ReadableSampleFrames SoundSourceM4A::readSampleFramesClamped( pDecodeBuffer); // verify the in/out parameter // Verify the decoded sample data for consistency - VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getChannelCount() == - decFrameInfo.channels) { + const auto channelCount = mixxx::audio::ChannelCount(decFrameInfo.channels); + VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getChannelCount() == channelCount) { kLogger.critical() << "Corrupt or unsupported AAC file:" << "Unexpected number of channels" - << decFrameInfo.channels << "<>" + << channelCount << "<>" << getSignalInfo().getChannelCount(); break; // abort } - VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getSampleRate() == - SINT(decFrameInfo.samplerate)) { + const auto sampleRate = mixxx::audio::SampleRate(decFrameInfo.samplerate); + VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getSampleRate() == sampleRate) { kLogger.critical() << "Corrupt or unsupported AAC file:" - << "Unexpected sample rate" << decFrameInfo.samplerate + << "Unexpected sample rate" << sampleRate << "<>" << getSignalInfo().getSampleRate(); break; // abort } From bb4a1a5dd4c5dbafb1f6a4c635426570c73a5ba5 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Tue, 15 Jun 2021 12:57:53 +0200 Subject: [PATCH 13/18] SoundSourceM4A: Reduce log level for corrupt files Errors are not critical unless Mixxx might crash. Errors in input data should never be critical and must be handled. --- src/sources/soundsourcem4a.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sources/soundsourcem4a.cpp b/src/sources/soundsourcem4a.cpp index 0578ef1f66e..ca3b5ec7c55 100644 --- a/src/sources/soundsourcem4a.cpp +++ b/src/sources/soundsourcem4a.cpp @@ -761,15 +761,15 @@ ReadableSampleFrames SoundSourceM4A::readSampleFramesClamped( // Verify the decoded sample data for consistency const auto channelCount = mixxx::audio::ChannelCount(decFrameInfo.channels); VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getChannelCount() == channelCount) { - kLogger.critical() << "Corrupt or unsupported AAC file:" - << "Unexpected number of channels" - << channelCount << "<>" - << getSignalInfo().getChannelCount(); + kLogger.warning() << "Corrupt or unsupported AAC file:" + << "Unexpected number of channels" + << channelCount << "<>" + << getSignalInfo().getChannelCount(); break; // abort } const auto sampleRate = mixxx::audio::SampleRate(decFrameInfo.samplerate); VERIFY_OR_DEBUG_ASSERT(getSignalInfo().getSampleRate() == sampleRate) { - kLogger.critical() + kLogger.warning() << "Corrupt or unsupported AAC file:" << "Unexpected sample rate" << sampleRate << "<>" << getSignalInfo().getSampleRate(); From 6c775d01912b781e917960a129cc05fc07f8a438 Mon Sep 17 00:00:00 2001 From: Alexander Horner <33007665+alexhorner@users.noreply.github.com> Date: Tue, 15 Jun 2021 12:38:04 +0100 Subject: [PATCH 14/18] Precommit check fixes --- src/engine/sidechain/shoutconnection.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/engine/sidechain/shoutconnection.cpp b/src/engine/sidechain/shoutconnection.cpp index a60aace0cf0..5116235f8df 100644 --- a/src/engine/sidechain/shoutconnection.cpp +++ b/src/engine/sidechain/shoutconnection.cpp @@ -808,7 +808,6 @@ void ShoutConnection::updateMetaData() { * To conclude: Only write OGG metadata one time, i.e., if static metadata is used. */ - // If we use either MP3 streaming, AAC streaming or OGG streaming with dynamic update of // metadata being enabled, we want dynamic metadata changes if (!m_custom_metadata && (m_format_is_mp3 || m_format_is_aac || m_ogg_dynamic_update)) { From 9415f92a7c8f63e6216fdf559ea398662438fb33 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Tue, 15 Jun 2021 17:56:35 +0200 Subject: [PATCH 15/18] Broadcasting: fix wrapping arund pushbutton values --- src/broadcast/broadcastmanager.cpp | 4 ++-- src/broadcast/broadcastmanager.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/broadcast/broadcastmanager.cpp b/src/broadcast/broadcastmanager.cpp index 39e4a10847a..6fa80519a4e 100644 --- a/src/broadcast/broadcastmanager.cpp +++ b/src/broadcast/broadcastmanager.cpp @@ -92,8 +92,7 @@ void BroadcastManager::slotControlEnabled(double v) { // Wrap around manually . // Wrapping around in WPushbutton does not work // since the status button has 4 states, but this CO is bool - m_pBroadcastEnabled->set(0.0); - emit broadcastEnabled(false); + v = 0.0; } if (v > 0.0) { @@ -116,6 +115,7 @@ void BroadcastManager::slotControlEnabled(double v) { slotProfilesChanged(); } else { + m_pBroadcastEnabled->set(false); m_pStatusCO->forceSet(STATUSCO_UNCONNECTED); QList profiles = m_pBroadcastSettings->profiles(); for(BroadcastProfilePtr profile : profiles) { diff --git a/src/broadcast/broadcastmanager.h b/src/broadcast/broadcastmanager.h index 75479e3bf69..8a68d16efae 100644 --- a/src/broadcast/broadcastmanager.h +++ b/src/broadcast/broadcastmanager.h @@ -15,10 +15,10 @@ class BroadcastManager : public QObject { public: enum StatusCOStates { STATUSCO_UNCONNECTED = 0, // IDLE state, no error - STATUSCO_CONNECTING = 1, // 30 s max - STATUSCO_CONNECTED = 2, // On Air - STATUSCO_FAILURE = 3, // Happens when all connection fails - STATUSCO_WARNING = 4 + STATUSCO_CONNECTING = 1, // 30 s max + STATUSCO_CONNECTED = 2, // On Air + STATUSCO_FAILURE = 3, // Happens when all connection fail + STATUSCO_WARNING = 4 // Happens when at least one but not all fail }; BroadcastManager(SettingsManager* pSettingsManager, From e76ddd6600343f40f2f1c5edb529d85cec620811 Mon Sep 17 00:00:00 2001 From: ronso0 Date: Tue, 15 Jun 2021 18:10:52 +0200 Subject: [PATCH 16/18] Skins: fix some Broadcasting styles --- res/skins/Deere/icon/ic_broadcast_4_32px.svg | 3 +++ res/skins/Deere/tool_bar.xml | 1 + res/skins/LateNight/style_classic.qss | 12 +++++++++--- res/skins/LateNight/style_palemoon.qss | 8 ++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 res/skins/Deere/icon/ic_broadcast_4_32px.svg diff --git a/res/skins/Deere/icon/ic_broadcast_4_32px.svg b/res/skins/Deere/icon/ic_broadcast_4_32px.svg new file mode 100644 index 00000000000..78965e1488d --- /dev/null +++ b/res/skins/Deere/icon/ic_broadcast_4_32px.svg @@ -0,0 +1,3 @@ + + + diff --git a/res/skins/Deere/tool_bar.xml b/res/skins/Deere/tool_bar.xml index c2208283f7c..c3edd2dd0fb 100644 --- a/res/skins/Deere/tool_bar.xml +++ b/res/skins/Deere/tool_bar.xml @@ -342,6 +342,7 @@ icon/ic_broadcast_1_32px.svg icon/ic_broadcast_2_32px.svg icon/ic_broadcast_3_32px.svg + icon/ic_broadcast_4_32px.svg [Shoutcast],enabled [Shoutcast],status diff --git a/res/skins/LateNight/style_classic.qss b/res/skins/LateNight/style_classic.qss index 3a4e3f4f089..b4692eee7fb 100644 --- a/res/skins/LateNight/style_classic.qss +++ b/res/skins/LateNight/style_classic.qss @@ -1181,7 +1181,10 @@ WBeatSpinBox, #spinBoxTransition, #FxAssignButtons WPushButton[displayValue="1"], #GuiToggleButton[displayValue="1"], #GuiToggleButton[displayValue="2"], -#BroadcastButton[displayValue="1"], /* connecting: yellow */ +#BroadcastButton[displayValue="1"], +#BroadcastButton[displayValue="2"], +#BroadcastButton[displayValue="3"], +#BroadcastButton[displayValue="4"], #RecDuration[highlight="1"], #RecDuration[highlight="2"], #SkinSettingsToggle[displayValue="1"], @@ -1274,6 +1277,7 @@ WPushButton#FxAssignButton1[displayValue="1"], #BroadcastButton[displayValue="1"], #BroadcastButton[displayValue="2"], #BroadcastButton[displayValue="3"], +#BroadcastButton[displayValue="4"], #SkinSettingsToggle[displayValue="1"], #LibraryFeatureControls QPushButton:pressed, QPushButton#pushButtonAutoDJ:checked, @@ -1441,7 +1445,8 @@ QPushButton#pushButtonRepeatPlaylist:checked { background-color: #888; } -#BroadcastButton[displayValue="3"] { +#BroadcastButton[displayValue="3"], +#BroadcastButton[displayValue="4"] { /* pink */ background-color: #f856e7; } @@ -1876,7 +1881,8 @@ WPushButton#SamplerExpand[displayValue="0"], } #BroadcastButton[displayValue="1"], #BroadcastButton[displayValue="2"], - #BroadcastButton[displayValue="3"] { + #BroadcastButton[displayValue="3"], + #BroadcastButton[displayValue="4"] { image: url(skin:/classic/buttons/btn__broadcast_on.svg) no-repeat left top; } diff --git a/res/skins/LateNight/style_palemoon.qss b/res/skins/LateNight/style_palemoon.qss index d0cb1fb5752..ab769a6b66d 100644 --- a/res/skins/LateNight/style_palemoon.qss +++ b/res/skins/LateNight/style_palemoon.qss @@ -1371,6 +1371,7 @@ WEffectSelector QAbstractScrollArea, #BroadcastButton[displayValue="1"], /* connecting */ #BroadcastButton[displayValue="2"], /* broadcasting */ #BroadcastButton[displayValue="3"], /* failure */ +#BroadcastButton[displayValue="4"], /* warning */ #RecDuration[highlight="1"], /* initializing */ #RecDuration[highlight="2"], /* recording */ #SkinSettingsToggle[displayValue="1"], @@ -1457,6 +1458,7 @@ WEffectSelector:!editable, #BroadcastButton[displayValue="1"], #BroadcastButton[displayValue="2"], #BroadcastButton[displayValue="3"], + #BroadcastButton[displayValue="4"], #SkinSettingsToggle[displayValue="1"], #LibraryFeatureControls QPushButton:pressed QPushButton#pushButtonAutoDJ:checked, @@ -1636,6 +1638,7 @@ WPushButton#Reverse[pressed="true"], #MicDucking[value="2"], #VinylButton[displayValue="1"], #PassthroughButton[displayValue="1"], +#BroadcastButton[displayValue="4"], /* warning */ QPushButton#pushButtonAutoDJ:checked, QPushButton#pushButtonAnalyze:checked { background-color: #b24c12; @@ -1772,7 +1775,7 @@ WPushButton#FxSuperLinkInvertButton[displayValue="0"] { /* Yellow */ #RecFeedback[displayValue="1"], /* initialize recording */ -#BroadcastButton[displayValue="1"] /* connecting */ { +#BroadcastButton[displayValue="1"] { /* connecting */ background-color: #d09300; } @@ -2320,7 +2323,8 @@ WPushButton#PlayDeck[value="0"] { } #BroadcastButton[displayValue="1"], #BroadcastButton[displayValue="2"], - #BroadcastButton[displayValue="3"] { + #BroadcastButton[displayValue="3"], + #BroadcastButton[displayValue="4"] { image: url(skin:/palemoon/buttons/btn__broadcast_on.svg) no-repeat left top; } From 6bae4a9a8716b649067a68257a055920545c55b3 Mon Sep 17 00:00:00 2001 From: Uwe Klotz Date: Wed, 16 Jun 2021 09:24:36 +0200 Subject: [PATCH 17/18] SoundSourceMp3: Fix armv7hl build on gcc 11.1 --- src/sources/soundsourcemp3.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sources/soundsourcemp3.cpp b/src/sources/soundsourcemp3.cpp index 1cee11d94de..844c2d6fd47 100644 --- a/src/sources/soundsourcemp3.cpp +++ b/src/sources/soundsourcemp3.cpp @@ -684,7 +684,8 @@ ReadableSampleFrames SoundSourceMp3::readSampleFramesClamped( DEBUG_ASSERT(isStreamValid(m_madStream)); #ifndef QT_NO_DEBUG_OUTPUT - const SINT madFrameChannelCount = MAD_NCHANNELS(&m_madFrame.header); + const auto madFrameChannelCount = + mixxx::audio::ChannelCount{MAD_NCHANNELS(&m_madFrame.header)}; if (madFrameChannelCount != getSignalInfo().getChannelCount()) { kLogger.warning() << "MP3 frame header with mismatching number of channels" << madFrameChannelCount << "<>" << getSignalInfo().getChannelCount() @@ -696,7 +697,8 @@ ReadableSampleFrames SoundSourceMp3::readSampleFramesClamped( // Once decoded the frame is synthesized to PCM samples mad_synth_frame(&m_madSynth, &m_madFrame); #ifndef QT_NO_DEBUG_OUTPUT - const SINT madSynthSampleRate = m_madSynth.pcm.samplerate; + const auto madSynthSampleRate = + mixxx::audio::SampleRate{m_madSynth.pcm.samplerate}; if (madSynthSampleRate != getSignalInfo().getSampleRate()) { kLogger.warning() << "Reading MP3 data with different sample rate" << madSynthSampleRate << "<>" << getSignalInfo().getSampleRate() From 09f6df740694d07b2e7d520621827dc05aeb74ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 16 Jun 2021 23:24:58 +0200 Subject: [PATCH 18/18] Added Alexander Horner to the contributor list in the about box. Thank you very much. --- src/dialog/dlgabout.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dialog/dlgabout.cpp b/src/dialog/dlgabout.cpp index 83ee693f483..e8434e1f667 100644 --- a/src/dialog/dlgabout.cpp +++ b/src/dialog/dlgabout.cpp @@ -106,7 +106,8 @@ DlgAbout::DlgAbout(QWidget* parent) : QDialog(parent), Ui::DlgAboutDlg() { << "Waylon Robertson" << "Al Hadebe" << "Javier Vilarroig" - << "Pino Toscano"; + << "Pino Toscano" + << "Alexander Horner"; QStringList specialThanks; specialThanks