So at the moment I’m working on some stuff with a melodica, and I’m having a really hard time with all of the onset detection algorithms (ampslice works, but is erratic, onset isn’t much better, and novelty has a weird issue (more below)).
Ideally I’d want to have an onset detected when a new pitch is detected. As far as I can tell, this is only explicitly available in fluid.noveltyslice~
with the pitch algorithm (@algorithm 3
)).
Sadly there’s some fluid.noveltyfeature~
plumbing that normalizes pitch/confidence in a way that is inseparable (as outlined in this thread).
Specifically this bit:
I initially thought about bumping that thread to see if @weefuzzy had a chance to:
But as a broader concept, I figured it was worth making a ‘best practice’ inquiry.
For context, here’s a bit of the kind of audio I’m working with:
shortexample.wav.zip (1.5 MB)
There’s a few moments with large amplitude changes corresponding with notes, but there’s a kind of weird offset in the audio that corresponds with those moments which often makes the amplitude differential go down when an onset happens, rather than up.
But short of an updated fluid.noveltyfeature~
, what would be a good way to determine onsets with changes in pitch?
And/or is there a reason that there isn’t a pitch-based algorithm available on fluid.onsetslice~
/fluid.onsetfeature~
?
Lastly, while wrapping up this post, I was reminded of the Hz algorithm, which I posted about here. I’ve not tested that out yet, nor messed with any pre-processing of the melodica signal either, which would probably help.