From 9a4dd8c05991519d1f9e2a0659e913d74513968e Mon Sep 17 00:00:00 2001 From: Andreas Zecher Date: Sun, 7 Jun 2026 17:13:32 +0200 Subject: [PATCH] Connect unused RhythmDescriptors sources in EssentiaBpmDetector Newer Essentia requires every streaming source to be connected to a sink. RhythmDescriptors exposes many outputs beyond bpm/confidence, and leaving them dangling raised "beats_position is not connected to any sink", causing EssentiaBpmDetector.detect to fail and silently fall back to PercivalBpmDetector. Connect the unused sources to None so the higher-quality detector runs again. Co-Authored-By: Claude Opus 4.8 --- lib/wavesync/essentia_bpm_detector.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/wavesync/essentia_bpm_detector.rb b/lib/wavesync/essentia_bpm_detector.rb index c567f7f..2e76b0d 100644 --- a/lib/wavesync/essentia_bpm_detector.rb +++ b/lib/wavesync/essentia_bpm_detector.rb @@ -15,6 +15,16 @@ class EssentiaBpmDetector loader.audio >> rhythm.signal rhythm.bpm >> (pool, 'bpm') rhythm.confidence >> (pool, 'confidence') + rhythm.beats_position >> None + rhythm.bpm_estimates >> None + rhythm.bpm_intervals >> None + rhythm.first_peak_bpm >> None + rhythm.first_peak_spread >> None + rhythm.first_peak_weight >> None + rhythm.second_peak_bpm >> None + rhythm.second_peak_spread >> None + rhythm.second_peak_weight >> None + rhythm.histogram >> None essentia.run(loader) print(json.dumps({'bpm': round(float(pool['bpm'])), 'confidence': round(float(pool['confidence']), 2)})) PYTHON