diff options
author | Be <be@mixxx.org> | 2020-09-29 14:22:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 14:22:57 -0500 |
commit | abc9d0aae1e67eacaabd6f90a414554067570ff0 (patch) | |
tree | 471a3a2a9a8eebdf3b889a06150f9dc894732fa8 | |
parent | 783f3a8f11f35b713bf4263245426f566b24599d (diff) | |
parent | ef2d53d8c8fe33176a787892c85de370f0584529 (diff) |
Merge pull request #2956 from Be-ing/rekordbox_beatmap
RekordboxFeature: always import beat data as a BeatMap
-rw-r--r-- | src/analyzer/analyzerbeats.cpp | 6 | ||||
-rw-r--r-- | src/analyzer/analyzerbeats.h | 1 | ||||
-rw-r--r-- | src/library/rekordbox/rekordboxconstants.h | 5 | ||||
-rw-r--r-- | src/library/rekordbox/rekordboxfeature.cpp | 27 | ||||
-rw-r--r-- | src/preferences/beatdetectionsettings.h | 3 | ||||
-rw-r--r-- | src/preferences/dialog/dlgprefbeats.cpp | 16 | ||||
-rw-r--r-- | src/preferences/dialog/dlgprefbeats.h | 2 | ||||
-rw-r--r-- | src/preferences/dialog/dlgprefbeatsdlg.ui | 9 |
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> |