Fall back on AnalyserBPM if AnalyserBeats fails to load VAMP plugin

Bug #999336 reported by RJ Skerry-Ryan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Critical
Max Linke

Bug Description

Now that beat detection can possibly fail due to plugin issues we have to fall back on AnalyserBPM if the VAMP plugin is not present. This will be required for the app-store at least since we may not provide the QM plugin with the app store.

RJ Skerry-Ryan (rryan)
Changed in mixxx:
status: New → Confirmed
importance: Undecided → Critical
milestone: none → 1.11.0
Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

The only problem with this is that we'll still be getting complaints about how the BPM detection sucks. Some will have great experiences, others not so. This means we still need to try to improve AnalyzerBPM.

Revision history for this message
Max Linke (max-linke) wrote :

This patch checks if the vamp-plugin can be loaded. Falls back to AnalyserBPM if this is not the case

Changed in mixxx:
assignee: nobody → Max Linke (max-linke)
Revision history for this message
Daniel Schürmann (daschuer) wrote :

Hi Max,

thank you for the patch. It looks good to me.
Please add a debug message that is falls back to old analyzer when it is the case.

Further we should reflect this state in the preference GUI.
I think currently all settings are grayed out, but some are needed for the old analyzer as well.

Kind regards
Daniel

Changed in mixxx:
status: Confirmed → In Progress
Revision history for this message
Max Linke (max-linke) wrote :

thanks for your comments.

I've seen that we have completely other preferences for the old analyser(dlgPrefBpm) and the vamp-plugin(DlgPrefBeats).
Which one is loaded depends on preprocessor directives. Should I load the old one in case the vamp-plugin could not be loaded?

What is the best way to inform the user that the plugin can't be loaded. Just a warning message each time mixxx is started or also a warning in the BPMDetection preferences?

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Hm, good point about the dialog. I think for consistency we should keep the new-style dialog and delete the old dialog. We should make the legacy analyser an option in the algorithm dropdown box.

Revision history for this message
Max Linke (max-linke) wrote :

should the dialog then show different options depending on the choosen analyser? So that we kind of combine the old and new dialog?

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

I think we should keep only the new dialog and just grey out the constant and offset detection box. The other options (re-analyse, fast-detection, min/max bpm).

Now that I think about it, this is from before we had much experience with VAMP and I was worried we would have plugin loading issues. Now that we've had very few reports of this I think the main driver here is the case where we can't provide the QM plugin. If you look at the plugin definition in vamp-plugins/libmain.cpp, the old analyser is already built into the plugin and you can just uncomment the line to define it in the plugin manifest.

Maybe this bug is unnecessary and we should really just be figuring out how to represent whether offset-detection and fixed-tempo features are available with your selected plugin.

Revision history for this message
Max Linke (max-linke) wrote :

I commented out the three lines in libmain.cpp. Mixxx then crashes with the following message

./mixxx: symbol lookup error: /home/kain88/Documents/FOSS/Mixxx-Dev/beta/1.11/mixxx/lin64_build/vamp-plugins/libmixxxminimal.so: undefined symbol: _ZN17MixxxBpmDetectionC1Ef

Revision history for this message
Max Linke (max-linke) wrote :

I activated the soundtouch bpm detection.

With this patch the soundtouch analyser is shown if qm is not found. The problem ist that when I tried to analyse
a song with the st-analyser mixxx crashes

./mixxx: symbol lookup error: /home/kain88/Documents/FOSS/Mixxx-Dev/beta/1.11/mixxx/lin64_build/vamp-plugins/libmixxxminimal.so: undefined symbol: _ZN10soundtouch9BPMDetectC1Eii

I guess that there is an error in building libmixxxminimal.so but I can't find it in the SConscript

Revision history for this message
Max Linke (max-linke) wrote :

I just found that in mixxxbpmdetection.cpp we do ' #include "BPMDetect.h" '. I can't find that file I think that is the reason for the lookup error

the problem is in line
http://bazaar.launchpad.net/~mixxxdevelopers/mixxx/release-1.11.x/view/head:/mixxx/vamp-plugins/plugins/MixxxBpmDetection.cpp#L205

Revision history for this message
Max Linke (max-linke) wrote :

This patch will use QM as default but will fallback to ST in case it is not found. All this happens in dlgprefbeats.
thanks to rryan's help scons now builds libmixxxminimal correct with ST.

I can also grayout some options if this is wanted but from what I can see they are all specific to both analysers or just to analyserbeats.*

Revision history for this message
Max Linke (max-linke) wrote :

this patch would remove the old analyser completely(hope I found it all) from mixxx and only leave the port in vamp-plugins.

Revision history for this message
Max Linke (max-linke) wrote :

also grays out constant and offset detection box.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Great! Looks good, please commit.

Max Linke (max-linke)
Changed in mixxx:
status: In Progress → Fix Committed
RJ Skerry-Ryan (rryan)
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/6440

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.