Don’t know if this is a bug, or my lack of understanding. But the way @harmfiltersize
and @percfiltersize
in fluid.bufhpss~
appears to be inconsistent.
The reference file says this of harmfiltersize
:
The size, in spectral frames, of the median filter for the harmonic component. Must be an odd number, >= 3.
And this of percfiltersize
:
The size, in spectral bins, of the median filter for the percussive component. Must be an odd number, >=3
So I don’t know if there’s a meaningful difference between “frames” and “bins” here, but the scale of time is kind of weird.
So take the example pasted below. I have a buffer of 50ms. If I run the default settings (@harmfiltersize 17
and @percfiltersize 31
(with default FFT settings)) I get nothing in the harmonic component. If I bring the @harmfiltersize
down to 11, I do get some results.
Where I get confused is that the “usable range” for @percfiltersize
is far wider. And the reference file (or help file, from what I could tell) fails to explain what, if any, relationship there is between these two parameters and/or how they interact.
I imagine that the FFT settings also have an impact here, although I can’t tell (again from the reference or help files) what the default FFT settings are. It shows the default everywhere as 1024 -1 -1
. (from some trial and error it looks like the default hop size is half the FFT size, but it should say that somewhere).
SO
- Why is the
@percfiltersize
so much bigger than the@harmfiltersize
? And/or do they operate on the same units (of time)? - What is the “formula” I am looking for here, to figure out the
filtersize
settings for my smallest possible (time) window? (hopsize(512) * bins(17) = 8704 samples here, which comes out to almost 200ms unless I’m mistaken) - Is there a general “best practice” when trying to HPSS-ify small buffers.
(as an aside, the reason why I’m operating on tiny buffers was due to the refactoring I discussed in this thread. I could conceivably clump a bunch of these tiny buffers together, than “bulk” HPSS them, as a way to potentially fake the solution. This approach would either add some more latency, as I wait for enough onsets to arrive before processing, or reprocessing the larger buffer each time a new onset arrives, sort of duplicating work)
----------begin_max5_patcher----------
3292.3oc0cszjqhaEdc2+Jn7xb6wkdfjfr5ljESRpjJKlTUpTSMUWXa4tYtX
vEO5GYpo+sG8.vfMXjwH2b6E1zBIz47cdnijNV7a2e2hUIuwyV37Gc9Ym6t6
2t+t6TEIK3tx++tE6BdacTPlpZKVmraGONewC56kyeKWUNZoylDdlSbRtinN
6Kx4U0YeP95mCie5wT95bce45CWBdvw0S9IF.TeQWBb9kx1DWrKLNhmq5TXY
gaShy2Frl2rLQESJxqpInrzvMJhJY0u9CDzhFMOK7+oZNV1kGJNNXmp3E+Ud
zK77v0AKj272u+d4GObkXSXrSJOHJL+cm7mCybdMoHZiyJty9hnH9FmsoI6b
BhcBhdM38LQcWmjtQ.XN+8+1+1YUw1s7zpmYTXr3tEwpGLpe.F5hjXpm2RxC
NHHSAv3g.3AASWuwfKqJxyShOi5.UQr9X4mH2pOuDZE1AsBNzioB4aNO8Qdb
vpHdSlS+LxeeOWSJKVED+zBmeYDrYL+UQ+dhzO2YkCbPlGhUeQgJAF5x3dzo
bO1awY4vGjpk4SJit2IaXgLjRqzEub9rCoL1sW9LK7o3fnE0cfhlDlRZFqjy
D1+gQ7W3oYgBUzC8wcKB1uuQw20nIR33WSTOHuGpKJLVWDrtnT9KgUsGTWZP
p.YxEvRQp1myazJdP9XR1vSiKBUOIcgBASIIoDAReUY6KcCpjTU29.ViUFQL
eEh6QTHOABNf1BQ7SQIq+FeSShaQxddbX79TdlvOVP9Qz9hM7sAEQ4O1zSJD
sry6W4ntyaV6u8OkFJDQUU4ozvMIwRhnkjPVbU2IbsQTbEoIynpQbv9NZrPI
Q.K8byLASVjsJHUJnJ8LfptYdRRT6aU2tH917xauOLN9HTLOYe+2LM7omOSa
WkHt4ty8rU2I6whX8ceTnSj+XVvKsQ67fnnR6z1O92BhC2EjKFjSKBPf5ap8
N9b15zjnnV7q9Nuzwc1HzwWyeMbS9ypNpoxfn5g6qThVTKk2D9DOKucY4AOk
0tjr720fdihJVUZC+XNe29HAWztBshlooAaSOZsJ+bd1Z6cacT35u8Qya00v
tdZKNkAmK7Xeb85mqeecm3uC0jD52mWUcTt1K8hL8fxe3CG3R2A.El1iOQGx
GZXPAcwfBXNAJYur8CGOHPZLPFBaf5vcPJmZd3gAGbufia2fCx2Dv4gyd0MS
eRfYvAfLWW1RhuuOiBz+gnBSNWcHtDKncQOK9sMJIH+lAPewwULaoQgPLh0r
+fvYDDkFDuQLeJw3ZiBlPpIixrghD779tODO9swPC.FxTCiUSGAV5512FXBd
VYcAVxLDSziwi8rAlP9dzbpBXPL6Y.wlMFPhIf8Mg1hOTD.jyOHTab.NPwLr
TWaFRg.54mQACCUzKEpPmOjnaFNstH8E9GFBH5gu0CkO1nfP8fGPCiBpw5+L
Oh2AJFYRONk7C4eL4xEYu3cXrYkKYHdv.d5FhnZsIWa.QdeO5gtaXBZu.dX9
emEvimmqZLLW6EvCycdYcszTLgYu.dXyv.dvCZNUALP6EvCiN2B3QDuSc3ND
c3NTpg.kud0wHLKDuC086n3cJAjxU8wJw6PIyx3c9vv0Cih0Kjp+waG1TrdN
34zpEFmDlwMDVpVXYpEVXY57ZgkkCWOzHSHWzRFoNXXqrzVn4TjdFMcAwzII
1cBBnY1DDHCOAgRPgBs1TBPeWtnMU.CDasXXPymXX9hi2RS8oP04lDzFHB96
QUkZjwl5Jtyq3cwHJTDoKvwEBbHxfcIJSFmxU5iXzVeBKyrInA9c7uXHCMOB
78KBvBBLCOnMx9uodIhmOK4PokEDXHpfsmcEz61hJsx3udG6gParhBmj1eSP
LsvilYZuoA3foBn80VxcVYjZB0uAbMsSA.dduuyrYJpmDjmdxyLlMrZlUoUh
dkEb7LyaR4doPcsvZK3MGWZg0uuNhanRid0EbsgmVxMWkQ2IlkCVdt5Dtu5y
w37.zSbHMofpLguY14ope7F9aMRs0IA.TD8P7uNBLhorO3h8UXhqyqEgNjvq
xeG.8joiJtWd+tgtrjhz0UzUIk6zFI1vyxCiqS+2e9vnCxJZjj6hIBfgTAFX
Sp.YHUPsIQfMUfPrIU3ZJUbJlkjtQml8nOYRi0Oog+jIMu9IM5mKogb6mzb+
jIMZ+jF4ykzvmwLf84RZryfZvOYRyueRCXGRiXptlUGngNKFzkYJUfsIU3YJ
U3aSpv2T8BjEoBjogAgf1jJLNjPI4BsEUXZvXd1DJvWhZAyVTgwCPZUrfbIX
A0VTgotNQLahEl55DYyfzQl55DYSG3xefQNHSl0jMoBrwtNsIQflCSikbItu
sEQPMEJP1bXcJdNHPnl5+lZSuETS0KTflsFVmY7bCrIVvLFKrY.3LSGKiYUp
vzwxX1L5Bl2kHQbsEUX5z.X1L5BSgBq5svzAQr4LQfvKY15cqTbXQyUGo.8r
p4GNQJJ1Dl7SpyEhG+m73hCKNe0IXQ2z9pm1FFEsNIJIsQEZTi6VTsg.Kz05
gF2ptc+rCXIx2EB8DL9RLDyj+pTEWItfPTtkOocvpF5Rb8AHY0coHlKQckGB
Svxq.czTzg9D.808Dv2C3puRTDTzmG2zf3mJOqLXGNvGzB3zj8Io0GbHKw9s
ZWQdxSoAaBK24i5k34f75vochdG6E07zSBB4N.IDDgMeFcotUKT+GEqCrgfr
lYNir7Bv01RSuZYnGCP77zW44h6so0RSJQzYx5Sk+wzWoeZ2Dg4CMgyV3gOv
Ex7UrhOwkoHMOWjOSwnDZKa8f0qEO7VsGiD53JPzshGkVFxxNhyZKGbYDHV0
GHernqUWQf.ZGMjGw2cb+x7D3nVX.fdd5qDj.BcZ6yDOf0RXq8S.I5LEACoL
j1hzC.ftm9.japspsOFFKOCh30ZSXeDjpo8JScT2pDsNWyDdI+W64wN+TPbl
yOw2EtJIZSqsg1BFceKKJbCO8+HOsiL03qAhoxQrVeXY5cWvazFGmRC6mneh
UlmfCnHqMmqkmrRuCFqJn5kpOtMfyQaztwRRg0mXLHjeSiUodqKAdqH8c7rr
fm321w.Z3IuxK7oWMfmblmb76G57pta5rYDc6oEepk5kqQbbZybAZyJ5sQrV
BzE6eKzj0o+zeNpf2LeSNOk20XnPF0UGTPMS3KKBdCYhzjWiuJt3.sSp8ofu
wbwe48fqiI.HQTP5A.XXLR6Y.AgP7siI9wTN+J4BkT.K+SGeiLz0aGC7e4QQ
IudUbfmHVPl12JzCp7GQDRFR2gU03vHDIqH.3YaFsX2Jd5OJhZ6pXSo4APot
QDAdPTbLr4XBVkIR0ADJ4hQEjkAzeeg+ScoTreo0EqbZGB4q+MwN6.eaWoWe
buOfAApp6ico.+xIcwfjIi6KeFUOfExCjxMOpO7MeLHOOMbUQtdwWZvnW1gD
4SQIqBhJOBHqA2NNCIu+vRJLQGgyvkNqS4A4bm.m7v32cDSpYvy51xefK9LK
d7ViucGu0uJDoaSR28wYYbcBmyzeo+EdP68vblTVn9PttlL2ySWWjkE9R8YH
dabf1AN.58b.V+6o6gydQTXl56wcfHeIHC.cMHyyAo6RhCWaLtTe5ONewEk0
g9TCarvR4BGaLn38IBJCdZnWd33CQnI87Pu9j16S97PeaTQ3lkBA3y6yx9v4
qZYmS4WesRC2o9hudvcfyodFNC.pOpwcQjwbViiOEA8G7HUuVEYRQLsx9GWD
yiz+r5DC6OFluiCTdCLYlbUkJF+Xudmgs0tW88mHtl8Iv052+Ce3z1oVutNK
8Y5M.KiM98lvvGn9SuDtz5m.Flc80uGA.nIRDCsoHVF4aQ3YXJl9zPR+h5Pd
RVLMuVDP8xTGdeHHos5fJ1FFkKeaGHhezhrIDp+oNOY7I9R3So+yt4SUca+i
pRy1Gug0kL+oI9UqrZomMotQRbbB9ZbG4snwl.a6NZHNBOE8jKvjdxaB5o1+
zp5om7mfNBci5mwwOZs8id+lH6hidulbz6zjSeelz+6xjieOlnVWfiR.CMqN
PhWbzhjTBDcr+LUqnP2IYwXRvhQlbEiLwJ5dKX5e6W5YqWpV0iGtu+0vo852
zTuqiDlX7Bfi2Xrws8TiLoHFWBQLYBgpooNtjeX7I9vnR5gqIgGtpjc3pSzA
iSxgq1f3zjYnaCCCRfgqlVZs8m8YeZTxILtDS3R2N2Iggaj7ACh7lkvASBY0
JwBlZekWbBDLxjGXjdlmXmkSjVUaqCyjhMSF.CztFJA.tZMqS2n+topwt49S
EA1bS7MlBMZi6mHJr4FzaLAZzlxOQDXqMe2bJbfMbehHt1artwTmQal942H8
qmANYCyMl7MZSxuZB7jMC2fAxMdKfGwlee0Lzoax8zg3cwUFso1WFWomXbOu
kMu+2u++C5NTxSC
-----------end_max5_patcher-----------