summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2020-09-29 14:22:57 -0500
committerGitHub <noreply@github.com>2020-09-29 14:22:57 -0500
commitabc9d0aae1e67eacaabd6f90a414554067570ff0 (patch)
tree471a3a2a9a8eebdf3b889a06150f9dc894732fa8
parent783f3a8f11f35b713bf4263245426f566b24599d (diff)
parentef2d53d8c8fe33176a787892c85de370f0584529 (diff)
Merge pull request #2956 from Be-ing/rekordbox_beatmap
RekordboxFeature: always import beat data as a BeatMap
-rw-r--r--src/analyzer/analyzerbeats.cpp6
-rw-r--r--src/analyzer/analyzerbeats.h1
-rw-r--r--src/library/rekordbox/rekordboxconstants.h5
-rw-r--r--src/library/rekordbox/rekordboxfeature.cpp27
-rw-r--r--src/preferences/beatdetectionsettings.h3
-rw-r--r--src/preferences/dialog/dlgprefbeats.cpp16
-rw-r--r--src/preferences/dialog/dlgprefbeats.h2
-rw-r--r--src/preferences/dialog/dlgprefbeatsdlg.ui9
8 files changed, 54 insertions, 15 deletions
diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp
index cdbdbf5012..953e7af77f 100644
--- a/src/analyzer/analyzerbeats.cpp
+++ b/src/analyzer/analyzerbeats.cpp
@@ -8,6 +8,7 @@
#include "analyzer/constants.h"
#include "analyzer/plugins/analyzerqueenmarybeats.h"
#include "analyzer/plugins/analyzersoundtouchbeats.h"
+#include "library/rekordbox/rekordboxconstants.h"
#include "track/beatfactory.h"
#include "track/beatmap.h"
#include "track/beatutils.h"
@@ -32,6 +33,7 @@ AnalyzerBeats::AnalyzerBeats(UserSettingsPointer pConfig, bool enforceBpmDetecti
: m_bpmSettings(pConfig),
m_enforceBpmDetection(enforceBpmDetection),
m_bPreferencesReanalyzeOldBpm(false),
+ m_bPreferencesReanalyzeImported(false),
m_bPreferencesFixedTempo(true),
m_bPreferencesOffsetCorrection(false),
m_bPreferencesFastAnalysis(false),
@@ -67,6 +69,7 @@ bool AnalyzerBeats::initialize(TrackPointer tio, int sampleRate, int totalSample
m_bPreferencesFixedTempo = m_bpmSettings.getFixedTempoAssumption();
m_bPreferencesOffsetCorrection = m_bpmSettings.getFixedTempoOffsetCorrection();
m_bPreferencesReanalyzeOldBpm = m_bpmSettings.getReanalyzeWhenSettingsChange();
+ m_bPreferencesReanalyzeImported = m_bpmSettings.getReanalyzeImported();
m_bPreferencesFastAnalysis = m_bpmSettings.getFastAnalysis();
if (availablePlugins().size() > 0) {
@@ -180,6 +183,9 @@ bool AnalyzerBeats::shouldAnalyze(TrackPointer tio) const {
iMinBpm,
iMaxBpm,
extraVersionInfo);
+ if (subVersion == mixxx::rekordboxconstants::beatsSubversion) {
+ return m_bPreferencesReanalyzeImported;
+ }
if (version == newVersion && subVersion == newSubVersion) {
// If the version and settings have not changed then if the world is
// sane, re-analyzing will do nothing.
diff --git a/src/analyzer/analyzerbeats.h b/src/analyzer/analyzerbeats.h
index 5dbb9a7f5f..01b9098f28 100644
--- a/src/analyzer/analyzerbeats.h
+++ b/src/analyzer/analyzerbeats.h
@@ -42,6 +42,7 @@ class AnalyzerBeats : public Analyzer {
const bool m_enforceBpmDetection;
QString m_pluginId;
bool m_bPreferencesReanalyzeOldBpm;
+ bool m_bPreferencesReanalyzeImported;
bool m_bPreferencesFixedTempo;
bool m_bPreferencesOffsetCorrection;
bool m_bPreferencesFastAnalysis;
diff --git a/src/library/rekordbox/rekordboxconstants.h b/src/library/rekordbox/rekordboxconstants.h
new file mode 100644
index 0000000000..13a93d29a7
--- /dev/null
+++ b/src/library/rekordbox/rekordboxconstants.h
@@ -0,0 +1,5 @@
+namespace mixxx {
+namespace rekordboxconstants {
+const QString beatsSubversion = QStringLiteral("Rekordbox USB drive");
+}
+} // namespace mixxx
diff --git a/src/library/rekordbox/rekordboxfeature.cpp b/src/library/rekordbox/rekordboxfeature.cpp
index 8b3dd12610..93622bc425 100644
--- a/src/library/rekordbox/rekordboxfeature.cpp
+++ b/src/library/rekordbox/rekordboxfeature.cpp
@@ -1,31 +1,35 @@
// rekordboxfeature.cpp
// Created 05/24/2019 by Evan Dekker
+#include "library/rekordbox/rekordboxfeature.h"
+
+#include <mp3guessenc.h>
+
#include <QMap>
#include <QMessageBox>
#include <QSettings>
#include <QStandardPaths>
#include <QtDebug>
-#include "library/rekordbox/rekordbox_anlz.h"
-#include "library/rekordbox/rekordbox_pdb.h"
-#include "library/rekordbox/rekordboxfeature.h"
-
-#include <mp3guessenc.h>
-
+#include "engine/engine.h"
#include "library/dao/trackschema.h"
#include "library/library.h"
#include "library/queryutil.h"
+#include "library/rekordbox/rekordbox_anlz.h"
+#include "library/rekordbox/rekordbox_pdb.h"
+#include "library/rekordbox/rekordboxconstants.h"
#include "library/trackcollection.h"
#include "library/trackcollectionmanager.h"
#include "library/treeitem.h"
-#include "track/beatfactory.h"
+#include "track/beatmap.h"
#include "track/cue.h"
#include "track/keyfactory.h"
#include "util/color/color.h"
#include "util/db/dbconnectionpooled.h"
#include "util/db/dbconnectionpooler.h"
-
+#include "util/file.h"
+#include "util/sandbox.h"
+#include "waveform/waveform.h"
#include "widget/wlibrary.h"
#include "widget/wlibrarytextbrowser.h"
@@ -851,10 +855,9 @@ void readAnalyze(TrackPointer track, double sampleRate, int timingOffset, bool i
QHash<QString, QString> extraVersionInfo;
- mixxx::BeatsPointer pBeats = BeatFactory::makePreferredBeats(
- *track, beats, extraVersionInfo, false, false, sampleRate, 0, 0, 0);
-
- track->setBeats(pBeats);
+ auto pBeats = new mixxx::BeatMap(*track, sampleRate, beats);
+ pBeats->setSubVersion(mixxx::rekordboxconstants::beatsSubversion);
+ track->setBeats(mixxx::BeatsPointer(pBeats));
} break;
case rekordbox_anlz_t::SECTION_TAGS_CUES: {
if (ignoreCues) {
diff --git a/src/preferences/beatdetectionsettings.h b/src/preferences/beatdetectionsettings.h
index ea78c08238..1731f2158a 100644
--- a/src/preferences/beatdetectionsettings.h
+++ b/src/preferences/beatdetectionsettings.h
@@ -17,6 +17,7 @@
#define BPM_FIXED_TEMPO_ASSUMPTION "BeatDetectionFixedTempoAssumption"
#define BPM_FIXED_TEMPO_OFFSET_CORRECTION "FixedTempoOffsetCorrection"
#define BPM_REANALYZE_WHEN_SETTINGS_CHANGE "ReanalyzeWhenSettingsChange"
+#define BPM_REANALYZE_IMPORTED "ReanalyzeImported"
#define BPM_FAST_ANALYSIS_ENABLED "FastAnalysisEnabled"
#define BPM_RANGE_START "BPMRangeStart"
@@ -42,6 +43,8 @@ class BeatDetectionSettings {
DEFINE_PREFERENCE_HELPERS(ReanalyzeWhenSettingsChange, bool,
BPM_CONFIG_KEY, BPM_REANALYZE_WHEN_SETTINGS_CHANGE, false);
+ DEFINE_PREFERENCE_HELPERS(ReanalyzeImported, bool, BPM_CONFIG_KEY, BPM_REANALYZE_WHEN_SETTINGS_CHANGE, false);
+
DEFINE_PREFERENCE_HELPERS(FastAnalysis, bool,
BPM_CONFIG_KEY, BPM_FAST_ANALYSIS_ENABLED, false);
diff --git a/src/preferences/dialog/dlgprefbeats.cpp b/src/preferences/dialog/dlgprefbeats.cpp
index 9e16fdc54b..7bd813047f 100644
--- a/src/preferences/dialog/dlgprefbeats.cpp
+++ b/src/preferences/dialog/dlgprefbeats.cpp
@@ -4,7 +4,7 @@
#include "control/controlobject.h"
#include "defs_urls.h"
-DlgPrefBeats::DlgPrefBeats(QWidget *parent, UserSettingsPointer pConfig)
+DlgPrefBeats::DlgPrefBeats(QWidget* parent, UserSettingsPointer pConfig)
: DlgPreferencePage(parent),
m_bpmSettings(pConfig),
m_minBpm(m_bpmSettings.getBpmRangeStartDefault()),
@@ -13,7 +13,8 @@ DlgPrefBeats::DlgPrefBeats(QWidget *parent, UserSettingsPointer pConfig)
m_bfixedtempoEnabled(m_bpmSettings.getFixedTempoAssumptionDefault()),
m_boffsetEnabled(m_bpmSettings.getFixedTempoOffsetCorrectionDefault()),
m_FastAnalysisEnabled(m_bpmSettings.getFastAnalysisDefault()),
- m_bReanalyze(m_bpmSettings.getReanalyzeWhenSettingsChangeDefault()) {
+ m_bReanalyze(m_bpmSettings.getReanalyzeWhenSettingsChangeDefault()),
+ m_bReanalyzeImported(m_bpmSettings.getReanalyzeImportedDefault()) {
setupUi(this);
m_availablePlugins = AnalyzerBeats::availablePlugins();
@@ -43,6 +44,10 @@ DlgPrefBeats::DlgPrefBeats(QWidget *parent, UserSettingsPointer pConfig)
connect(bReanalyse,SIGNAL(stateChanged(int)),
this, SLOT(slotReanalyzeChanged(int)));
+ connect(bReanalyzeImported,
+ &QCheckBox::stateChanged,
+ this,
+ &DlgPrefBeats::slotReanalyzeImportedChanged);
}
DlgPrefBeats::~DlgPrefBeats() {
@@ -125,6 +130,7 @@ void DlgPrefBeats::slotUpdate() {
txtMaxBpm->setEnabled(m_banalyzerEnabled && m_bfixedtempoEnabled);
txtMinBpm->setEnabled(m_banalyzerEnabled && m_bfixedtempoEnabled);
bReanalyse->setEnabled(m_banalyzerEnabled);
+ bReanalyzeImported->setEnabled(m_bReanalyzeImported);
if (!m_banalyzerEnabled) {
return;
@@ -165,6 +171,11 @@ void DlgPrefBeats::slotReanalyzeChanged(int value) {
slotUpdate();
}
+void DlgPrefBeats::slotReanalyzeImportedChanged(int value) {
+ m_bReanalyzeImported = static_cast<bool>(value);
+ slotUpdate();
+}
+
void DlgPrefBeats::fastAnalysisEnabled(int i) {
m_FastAnalysisEnabled = static_cast<bool>(i);
slotUpdate();
@@ -176,6 +187,7 @@ void DlgPrefBeats::slotApply() {
m_bpmSettings.setFixedTempoAssumption(m_bfixedtempoEnabled);
m_bpmSettings.setFixedTempoOffsetCorrection(m_boffsetEnabled);
m_bpmSettings.setReanalyzeWhenSettingsChange(m_bReanalyze);
+ m_bpmSettings.setReanalyzeImported(m_bReanalyzeImported);
m_bpmSettings.setFastAnalysis(m_FastAnalysisEnabled);
m_bpmSettings.setBpmRangeStart(m_minBpm);
m_bpmSettings.setBpmRangeEnd(m_maxBpm);
diff --git a/src/preferences/dialog/dlgprefbeats.h b/src/preferences/dialog/dlgprefbeats.h
index 2e09913297..97bce34366 100644
--- a/src/preferences/dialog/dlgprefbeats.h
+++ b/src/preferences/dialog/dlgprefbeats.h
@@ -38,6 +38,7 @@ class DlgPrefBeats : public DlgPreferencePage, public Ui::DlgBeatsDlg {
void minBpmRangeChanged(int value);
void maxBpmRangeChanged(int value);
void slotReanalyzeChanged(int value);
+ void slotReanalyzeImportedChanged(int value);
private:
void loadSettings();
@@ -52,6 +53,7 @@ class DlgPrefBeats : public DlgPreferencePage, public Ui::DlgBeatsDlg {
bool m_boffsetEnabled;
bool m_FastAnalysisEnabled;
bool m_bReanalyze;
+ bool m_bReanalyzeImported;
};
#endif // DLGPREFBEATS_H
diff --git a/src/preferences/dialog/dlgprefbeatsdlg.ui b/src/preferences/dialog/dlgprefbeatsdlg.ui
index 3bbdde2910..b25f597215 100644
--- a/src/preferences/dialog/dlgprefbeatsdlg.ui
+++ b/src/preferences/dialog/dlgprefbeatsdlg.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>537</width>
+ <width>564</width>
<height>400</height>
</rect>
</property>
@@ -149,6 +149,13 @@ by analyzing the beats to discard outliers.</string>
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="bReanalyzeImported">
+ <property name="text">
+ <string>Re-analyze beatgrids imported from other DJ software</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>