jersmi wrote:See if this version makes any sense. Major changes -- test!
This version uses two ways to create stability:
1. Set to require 4 taps to generate BPM. (4 taps seems to work better to create stable bpm. Can change this in tapCounter group).
2. If a pause is detected causing bpm to go out of range, holds last 'stable' bpm and waits for 2 taps to continue. "Padding" adds msecs to allow for taps close to desired bpm.
Also new: "taps2bpm" group averages current + up to last 4 taps.
There's also an "out of range" toggle setup in place to switch to "auto bpm", untested.
Cool, the extra tolerances make it much more stable however is still susceptible to swings when the beat jumps way out.
To reproduce, setup a MIDI step sequencer with any note on the 4/4 beat. Plug this straight into the taptempo group, set the ranges to say 110 low and 140 high. Hit play on step seq and it correctly locks at 120 (default for me). Then change the tempo in the step seq to 160. I assume taptempo is seeing the BPM speed up (but still in range) then works out it's heading out of range and stops at the last value that it thought was in range.
This is behavior is what often happens with audio analysers that lose the tempo lock for a little bit. Ideally taptempo would stay at 120 until it was confident the tempo really has shifted to the new value. To support this we would not have the output tempo updated until the last x BPM samples were the same.
To do this, would it be best to change the taps2bpm group, so instead of giving an average, it outputs the last known round(BPM) that was stable for 4 samples?