summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2023-05-07 17:28:47 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2023-05-07 17:28:47 +0200
commit9273a4a40f4b74285823cff2a0b725bc3539aadb (patch)
tree3adbf7cc00fdee5eec7719cebee2bc6866769838
parent767573ae6feceb3dabacb1dd6f74f70d879d7020 (diff)
parent47b056f0b3fca82cba6e99a50daa6ecedfc542d7 (diff)
Merge remote-tracking branch 'upstream/2.3' into 2.4
-rw-r--r--CHANGELOG.md52
-rw-r--r--packaging/debian/changelog6
-rw-r--r--res/linux/org.mixxx.Mixxx.metainfo.xml88
-rw-r--r--src/analyzer/analyzersilence.cpp2
-rw-r--r--src/test/analyserwaveformtest.cpp56
-rw-r--r--src/test/reference_buffers/AnalyzerWaveformsTestbin0 -> 485 bytes
-rw-r--r--src/widget/wtrackmenu.cpp4
7 files changed, 202 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2ea9281f69..d8d6b7f21c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -880,6 +880,58 @@
* Tango: Remove VU peak indicators from stacked layout. This fixes a visual regression in Mixxx 2.3.4.
[#11430](https://github.com/mixxxdj/mixxx/pull/11430)
[#11362](https://github.com/mixxxdj/mixxx/issues/11362)
+* Hercules P32: Allow optional using pregain instead of dry/wet knob
+ [#3538](https://github.com/mixxxdj/mixxx/pull/3538)
+* Improve Color Picker dialog
+ [#11439](https://github.com/mixxxdj/mixxx/pull/11439)
+* Fix blank Waveform overview after changing Skin with a track loaded
+ [#11453](https://github.com/mixxxdj/mixxx/pull/11453)
+* Linux: Log a warning when the audio thread is not scheduled with real-time policy
+ [#11472](https://github.com/mixxxdj/mixxx/pull/11472)
+ [#11465](https://github.com/mixxxdj/mixxx/issues/11465)
+* Auto DJ: Fixes stop due to tracks with changed length
+ [#11479](https://github.com/mixxxdj/mixxx/pull/11479)
+ [#11492](https://github.com/mixxxdj/mixxx/pull/11492)
+ [#11448](https://github.com/mixxxdj/mixxx/issues/11448)
+ * Auto DJ: Fix Auto DJ indicator state when controlling it via shortcut (SHIFT+F12)
+ [#11494](https://github.com/mixxxdj/mixxx/issues/11494)
+ [#11495](https://github.com/mixxxdj/mixxx/pull/11495)
+* Fix building with Clang 15/16
+ [#11490](https://github.com/mixxxdj/mixxx/pull/11490)
+ [#11485](https://github.com/mixxxdj/mixxx/pull/11485)
+* Fix EQ and waveforms analysis when compiling with GCC 13
+ [#11501](https://github.com/mixxxdj/mixxx/pull/11501)
+ [#11483](https://github.com/mixxxdj/mixxx/issues/11483)
+ [#11502](https://github.com/mixxxdj/mixxx/pull/11502)
+ [#11480](https://github.com/mixxxdj/mixxx/pull/11480)
+ [#11488](https://github.com/mixxxdj/mixxx/pull/11488)
+* Numark Mixtrack Pro FX: Fix sound output via WDM-KS on Windows
+ [#11393](https://github.com/mixxxdj/mixxx/issues/11393)
+* Fix crash on startup caused by faulty ASIO driver like FlexASIO 1.4 or Music Maker
+ [#11426](https://github.com/mixxxdj/mixxx/issues/11426)
+ [#10081](https://github.com/mixxxdj/mixxx/issues/10081)
+* Windows: Show a loopback device that allows to mix in system sound
+ [#11427](https://github.com/mixxxdj/mixxx/issues/11427)
+ [#11451](https://github.com/mixxxdj/mixxx/issues/11451)
+* Fix sorting via column header in external library features
+ [#11491](https://github.com/mixxxdj/mixxx/issues/11491)
+ [#11499](https://github.com/mixxxdj/mixxx/pull/11499)
+* Fix wrong waveform background color on recent Linux distributions like Fedora 37
+ [#11164](https://github.com/mixxxdj/mixxx/issues/11164)
+ [#11523](https://github.com/mixxxdj/mixxx/pull/11523)
+* Serato Metadata: Don't import empty (black) cue points
+ [#11534](https://github.com/mixxxdj/mixxx/pull/11534)
+ [#11530](https://github.com/mixxxdj/mixxx/issues/11530)
+ [#11467](https://github.com/mixxxdj/mixxx/pull/11467)
+ [#11466](https://github.com/mixxxdj/mixxx/pull/11466)
+ [#11283](https://github.com/mixxxdj/mixxx/issues/11283)
+* Track context menu: Immediately adopt new position when resetting cues
+ [#11482](https://github.com/mixxxdj/mixxx/pull/11482)
+* Windows: Fix possible crash with faulty mp3 files
+ [#11535](https://github.com/mixxxdj/mixxx/pull/11535)
+ [#11531](https://github.com/mixxxdj/mixxx/issues/11531)
+ [#11528](https://github.com/mixxxdj/mixxx/pull/11528)
+ [#11521](https://github.com/mixxxdj/mixxx/issues/11521)
## [2.3.4](https://launchpad.net/mixxx/+milestone/2.3.4) (2023-03-03)
diff --git a/packaging/debian/changelog b/packaging/debian/changelog
index 133591df69..3ac10cd950 100644
--- a/packaging/debian/changelog
+++ b/packaging/debian/changelog
@@ -1,3 +1,9 @@
+mixxx (2.3.4-1~bionic) bionic; urgency=medium
+
+ * Build of 2.3.4
+
+ -- RJ Skerry-Ryan <rryan@mixxx.org> Fri, 03 Mar 2023 15:00:16 +0000
+
mixxx (2.3.3-1~bionic) bionic; urgency=medium
* Build of 2.3.3
diff --git a/res/linux/org.mixxx.Mixxx.metainfo.xml b/res/linux/org.mixxx.Mixxx.metainfo.xml
index be867e9fcb..cfd0bc706c 100644
--- a/res/linux/org.mixxx.Mixxx.metainfo.xml
+++ b/res/linux/org.mixxx.Mixxx.metainfo.xml
@@ -96,7 +96,7 @@
Do not edit it manually.
-->
<releases>
- <release version="2.4.0" type="development" date="2023-04-03" timestamp="1680480478">
+ <release version="2.4.0" type="development" date="2023-05-05" timestamp="1683306291">
<description>
<p>
Cover Art
@@ -1529,7 +1529,7 @@
</ul>
</description>
</release>
- <release version="2.3.5" type="development" date="2023-04-03" timestamp="1680480478">
+ <release version="2.3.5" type="development" date="2023-05-05" timestamp="1683306291">
<description>
<ul>
<li>
@@ -1588,6 +1588,90 @@
#11430
#11362
</li>
+ <li>
+ Hercules P32: Allow optional using pregain instead of dry/wet knob
+ #3538
+ </li>
+ <li>
+ Improve Color Picker dialog
+ #11439
+ </li>
+ <li>
+ Fix blank Waveform overview after changing Skin with a track loaded
+ #11453
+ </li>
+ <li>
+ Linux: Log a warning when the audio thread is not scheduled with real-time policy
+ #11472
+ #11465
+ </li>
+ <li>
+ Auto DJ: Fixes stop due to tracks with changed length
+ #11479
+ #11492
+ #11448
+ </li>
+ <li>
+ Auto DJ: Fix Auto DJ indicator state when controlling it via shortcut (SHIFT+F12)
+ #11494
+ #11495
+ </li>
+ <li>
+ Fix building with Clang 15/16
+ #11490
+ #11485
+ </li>
+ <li>
+ Fix EQ and waveforms analysis when compiling with GCC 13
+ #11501
+ #11483
+ #11502
+ #11480
+ #11488
+ </li>
+ <li>
+ Numark Mixtrack Pro FX: Fix sound output via WDM-KS on Windows
+ #11393
+ </li>
+ <li>
+ Fix crash on startup caused by faulty ASIO driver like FlexASIO 1.4 or Music Maker
+ #11426
+ #10081
+ </li>
+ <li>
+ Windows: Show a loopback device that allows to mix in system sound
+ #11427
+ #11451
+ </li>
+ <li>
+ Fix sorting via column header in external library features
+ #11491
+ #11499
+ </li>
+ <li>
+ Fix wrong waveform background color on recent Linux distributions like Fedora 37
+ #11164
+ #11523
+ </li>
+ <li>
+ Serato Metadata: Don't import empty (black) cue points
+ #11534
+ #11530
+ #11467
+ #11466
+ #11283
+ </li>
+ <li>
+ Track context menu: Immediately adopt new position when resetting cues
+ #11482
+ </li>
+ <li>
+ Windows: Fix possible crash with faulty mp3 files
+ #11535
+ #11531
+ #11528
+ #11521
+ </li>
</ul>
</description>
</release>
diff --git a/src/analyzer/analyzersilence.cpp b/src/analyzer/analyzersilence.cpp
index 5e57053633..c93820b91e 100644
--- a/src/analyzer/analyzersilence.cpp
+++ b/src/analyzer/analyzersilence.cpp
@@ -132,7 +132,7 @@ void AnalyzerSilence::storeResults(TrackPointer pTrack) {
pN60dBSound->setStartAndEndPosition(firstSoundPosition, lastSoundPosition);
}
- setupMainAndIntroCue(pTrack.get(), firstSoundPosition, m_pConfig.get());
+ setupMainAndIntroCue(pTrack.get(), firstSoundPosition, m_pConfig.data());
setupOutroCue(pTrack.get(), lastSoundPosition);
}
diff --git a/src/test/analyserwaveformtest.cpp b/src/test/analyserwaveformtest.cpp
index ad6a4ad2a8..91be1adc39 100644
--- a/src/test/analyserwaveformtest.cpp
+++ b/src/test/analyserwaveformtest.cpp
@@ -11,10 +11,11 @@
namespace {
-constexpr std::size_t kBigBufSize = 1024 * 1024; // Megabyte
+constexpr std::size_t kBigBufSize = 2 * 1920; // Matches the WaveformSummary
constexpr std::size_t kCanarySize = 1024 * 4;
constexpr float kMagicFloat = 1234.567890f;
constexpr float kCanaryFloat = 0.0f;
+const QString kReferenceBuffersPath = QStringLiteral("/src/test/reference_buffers/");
class AnalyzerWaveformTest : public MixxxTest {
protected:
@@ -45,6 +46,49 @@ class AnalyzerWaveformTest : public MixxxTest {
}
}
+ void assertWaveformReference(
+ ConstWaveformPointer pWaveform,
+ const QString& reference_title) {
+ pWaveform->dump();
+
+ QFile f(QDir::currentPath() + kReferenceBuffersPath + reference_title);
+ bool pass = true;
+ // If the file is not there, we will fail and write out the .actual
+ // reference file.
+ QByteArray actual = pWaveform->toByteArray();
+ QByteArray reference;
+
+ ASSERT_TRUE(f.open(QFile::ReadOnly));
+ reference = f.readAll();
+
+ if (actual.size() == reference.size()) {
+ for (int i = 0; i < actual.size(); ++i) {
+ if (actual[i] != reference[i]) {
+ qDebug() << "#" << i << QString::number(actual[i], 16)
+ << QString::number(reference[i], 16);
+ pass = false;
+ }
+ }
+ } else {
+ qDebug() << "##" << actual.size() << reference.size();
+ pass = false;
+ }
+
+ // Fail if either we didn't pass, or the comparison file was empty.
+ if (!pass) {
+ QString fname_actual = reference_title + ".actual";
+ qWarning() << "Buffer does not match" << reference_title
+ << ", actual buffer written to "
+ << "reference_buffers/" + fname_actual;
+ QFile actualFile(QDir::currentPath() + kReferenceBuffersPath + fname_actual);
+ ASSERT_TRUE(actualFile.open(QFile::WriteOnly));
+ actualFile.write(actual);
+ actualFile.close();
+ EXPECT_TRUE(false);
+ }
+ f.close();
+ }
+
void TearDown() override {
}
@@ -70,6 +114,16 @@ TEST_F(AnalyzerWaveformTest, canary) {
for (; i < 2 * kCanarySize + kBigBufSize; i++) {
EXPECT_FLOAT_EQ(m_canaryBigBuf[i], kCanaryFloat);
}
+
+ // Small reference, compare bitwise
+ assertWaveformReference(m_pTrack->getWaveform(), "AnalyzerWaveformsTest");
+
+ // The summary is always big, so we check only the metadata
+ ConstWaveformPointer pWaveformSummary = m_pTrack->getWaveformSummary();
+ ASSERT_NE(pWaveformSummary, nullptr);
+ EXPECT_EQ(pWaveformSummary->getDataSize(), 3842);
+ EXPECT_EQ(pWaveformSummary->getCompletion(), 3842);
+ EXPECT_DOUBLE_EQ(pWaveformSummary->getAudioVisualRatio(), 1.0);
}
} // namespace
diff --git a/src/test/reference_buffers/AnalyzerWaveformsTest b/src/test/reference_buffers/AnalyzerWaveformsTest
new file mode 100644
index 0000000000..7b38eebe47
--- /dev/null
+++ b/src/test/reference_buffers/AnalyzerWaveformsTest
Binary files differ
diff --git a/src/widget/wtrackmenu.cpp b/src/widget/wtrackmenu.cpp
index 35aa937f49..d4bc7877bd 100644
--- a/src/widget/wtrackmenu.cpp
+++ b/src/widget/wtrackmenu.cpp
@@ -1701,7 +1701,7 @@ class ResetMainCueTrackPointerOperation : public mixxx::TrackPointerOperation {
if (pN60dBSound) {
mixxx::audio::FramePos firstSound = pN60dBSound->getPosition();
if (firstSound.isValid()) {
- AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.get());
+ AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.data());
}
}
}
@@ -1723,7 +1723,7 @@ class ResetIntroTrackPointerOperation : public mixxx::TrackPointerOperation {
if (pN60dBSound) {
mixxx::audio::FramePos firstSound = pN60dBSound->getPosition();
if (firstSound.isValid()) {
- AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.get());
+ AnalyzerSilence::setupMainAndIntroCue(pTrack.get(), firstSound, m_pConfig.data());
}
}
}