Fluid.bufnmf~ "CV Splitter/Processor"

it’s not temporal segmentation more as ‘stream’ segmentation. If you check the helpfiles, you get the bass of the synth, then the blipblip, separately.

I think it is, but @groma would let us know for sure.

yes. you can either make a 2 rank seed dict with your seed and a bit or random noise. Don’t forget to put bufnmf flag to mode 1 like for the piano retraining so it starts with the seeds but updates them.

lol. I think @groma and @weefuzzy will agree that we might want to see the improvement between each iteration, to see when it is not improving anymore. Have you tried 5 times smaller amounts? I’m told the algo converges quite quickly…

Yeah, not so much for audio I would feed it…

Hmmm, interesting.
So it will still modify the seed(s) you give it yes?
Like there isn’t a way to give it a “golden seed” that it processes everything else around, to make sure it null-sums.
Might produce interesting results either way, but was just thinking that it would be cool to process the shit out one decomposition, then use fluid.bufnmf~ to “fill in the blanks”.

Yeah totally. I did one at 10k and it didn’t look too different (from 1k), so tried 50k just for good measure. It would be good to know what the “functional” upper limit is, as in some cases computation time isn’t important, and the best results matter, even if it takes crazy long (e.g. training up classifiers for nmf-ing), but sometimes having something quick (but still good) is preferred, since it would be used in a real-time context.

there are 3 modes: one with random seed (default) one with provided seeds that keep updating and one with fixed dicts.

I think the algo will always make it null-sum - just don’t feed a silence dictionary as this is bad. you’ll get NaNs. We are sorting that.

the algo can bail with an improvment threshold between iterations. we know and we plan in the medium future to provide a way to stop ‘early’

Oooh, I see now. In the helpfile they are explained as dictFlag, but the actual attribute is @filterupdate.

I now understand what that section of the piano patch is doing (and why it’s not really relevant to the “human” trained percussion sounds).

So with @filterupdate 2, you can provide it a single buffer, and request @rank 99 and it will fill in the rest of the ranks right?

edit: no wait, I don’t have it. What you can give it as seeds are just dicts (filter contours) right? Not audio audio. As in, requesting @rank 10 with a specified @resynthbuf. Then taking one of those channels of audio audio, doing stuff to it, then have it keep that as a “seed”?

really sorry about this - we have corrected that in the refactor.

you need to give it the right number of ranks - the others can be random. I have not tried with 2 but with 89 - 88 notes and 1 random - it was not convincingly catching the stuff. So we are in unexplored terrain here… but at least we can try it!

So things to try:

  1. create a rank 1 of what you want, normalise it, create an antirank (inversing all value from 1) as a 2nd rank. I never tried it but that is an intuition - you take the rest. then train with that and see. Train in @filterupdate 1 (allowing it to retune between iterations)

  2. same as 1, but with noise in the 2nd rank (all positive values, don’t forget! non-negative matrix factorisation, so nothing under 0)

let me know how it goes. I need to go to be, I teach and re-write a paper and test a new segmenter tomorrow - other fun!

1 Like

Ah right, I misunderstood then.

I can see this making for some interesting stuff, and will give it a poke, though what I was thinking of was being able to feed it an actual bit of audio, which it would then re(de/)compose around.

I’ll go make a feature request thread about that now!

1 Like

Been away from this thread packing my bags, but the kinds of gestures that are emerging from nmf~ is really interesting! I’ll do some experimenting of my own on some real gestures and report back…

2 Likes

Here is the updated (alpha04) version of the patch.


----------begin_max5_patcher----------
4827.3oc6cr1iihb7y67q.Yc5TRzbV8SdbeZStDk7gKIR4jRTzdQiv1LdXWL
XA3Y28Nc6u8zO.LMz.sws8LWhWocGFngtdWU2U009y28lEqx9TTwBmu04cNu
4M+7cu4Mhawuwap982rXW3mVmDVHF1hGSxROraw8xG8bXdZ3tHwSX2dUTd8S
1EmFuiMP1S.KAU2LdiXjYqd+2Pg0ibeXN6STFk+PTZ3pDwGCdeyTW+UnMeE1
DEmlDUVzdjOlkuKrjeG2iCK6PY83PMyV45mhS29Pdz5RIhCADxR58Nv.5x..
.fHDHA3hX2hxgcGDZIv4+T8AjeyxOuOR91KVbuyhUgoaWzLjhvmi17PXYYd7
pCkQGupnhvVQY4zujCQYOVe6562lnTOSUXuxyX7hs5o+JCiwJJiCS5SeUF0N
FwVgPq6aTQwpQUkgT7TVdYWvQNre4t6N9Cw+9K2cugRb6hJJB2FUKtTF8IAe
awy+TV1NmupQNpkvElrPmrBRqjAbZICDFsziIY.QHfG.C4hFtPCDMb9Oy.gW
msaWTZYODFtz4eDsNKeiy28OWzH1mV9X3ZEkl1ZYn1CrH9mDCDMotT5Q93eI
J44nx30gKzR8.iP8P9bRD1Snb4RD+BjSulAQIM5iLDpGMYuSRV3FMh.P8h.f
SUDvGHPBcR.Dyj.Z+sYJDcr.7XbRzyQ4EwYosULWDteeqaqZbXW36yDeH+Fs
PFJJu0Qc27nmiqeeZycCyYXXIC8NjK4uexkbzlwtrMQ4oGhEfRspaMHIXFb4
hh8URbBdV8iORynAbBCS4g+CWhvFJwGbjNwX1aSxV+gnMsA4EY6iRiS2mGUv
D+CKqf8lGuI5wvCIkOzVTFhVp8405DZeXir8uOmaRqdHayi2jkxABENA+10S
GSnlJvMZajQLhzv8ZdYlnHirLvCKXH4ghUg4bFUkkYT8CKyxRTeTy6kD8XY0
i2Gml1gJVlse3GlGu8oQd2UYrGtarus3IEObHU9zGXxDkOvc3oNtvjjJMV0O
+mBYgEDVxLnHYAHPyCkdmdpXcdVRhB9JexyZdxFlL95nOFuo7IkHM3OgM738
0BQKZ3xah2FUTpduxvsEp2on7yRhdqacXUkN7CkQ61mvvB0AnDKUaE1111Tt
+X13TsywsxwcD5rJdeVRXtCr8vZY2Cga+.cl2G192P1.CvBYdohLDDz0r2nN
+Z49u1d+kh1TDUt5viOFk6r94AHOPn8IOn.gif.xRWWWOnGEEfBb883d8DtZ
eURrjgOMjXTf8ISzJwmWRoH4meHYi4n5.FGoIBefHlapdxFXAg.C5PApi9qs
oEAfltI5Ss7KqPON5KJINcHiPBvi+b8DphrC4qqI6Ux.NpvFynZYbZim42cj
t4.LjOcp.AB+Z.J3lMNWn3HOR3bY.lzwXSNrIN6GDQH7veMJ8vQYg5XYzC6q
1xBoLYcVRVdqAzZDLiAUpWKji59VOp48dGyYJJf.g9L7YIFh8PthqXWP4V1Z
SLpdOX8KRnj..hObhKxiPEW4ivTL+JflWEcbNAv.4LAB7AD4UraAYyY2Wksp
6pnl7N55Wxfyy1yVMZcHjKwAJu2gxrs4gahqTz.MOqgecLtW4ZbYireLAbyK
LFQb6ugNwsFl52enYcTSxHiRh3FBT3Hd9LqHBxoO.56KuhPAHTOpyhB1GXMm
Bn9EP.2.AOE55gj7Ce15ZH8+.beFh2ks3e9ZQhZ3Q3.DTviPMLZjmOA2mGoJ
PQ7nPr.nQAX+.4UTHCh5+hmhbbCubDQ4SPrRUX1uQD12CP88kWoEa6JL6RAR
ZsK+OdxqjesqhrrB4TgdD.HPu.ApDPIddRAITfT3h5pvJZulIlct+NacLN+P
XZgyODsKdUVxlEJCOb85txsXtfhflSpIIb6HjZ99EUo6CEIwrk09u3q60Tku
VPuH3Nk+4BCurHVbasv5o.0AUSA225e5qdMLJxD.lhgJ0BZrC3UoTccHNh3x
lAmjY.h4CBEzV7ia4hPgWKPWcyLuX7VaX5rkAvZiW8uZBCfd9bu92q8J8u5u
phCnul5oKQzcIImfzrf+2JVKFcBeUrnJWe4eH4Pz2.MEx04U.54RjdEaPh.9
sfWQjHO6iomEVbD1oM1TvWYr369b34gD.DKL.oobOLFI0wQPHDe8Ph+bdTzY
hEBt.l+GYDt7X2tdHv+NJII6iliAs2H62I1JaZ..3OouWVHydRKoPenvG.kw
8nWEDUjUu+LKluyhQwUO.BwMJKDBp.afssteQQhbY.gbrXV1ccItt3fJUDup
fmYLf.7DwY8Ri3Gway4dcV1fGDH.5.LwEDTsrAOXe+4uPr8puQ8GnJW7xzvL
Rh3OozErMIaUXRUx.ZHtZxlv7S5czOsIb8WzjWS5IjY6QxMKNvSjUNWQxYIh
colPmYtYGJg04xrUCANErqR2T37QVrXO4j8nyOt369m+XMISrokqyNHCBCWc
yUGVsJIpfIw19tsIEMo3UNz1YxUadsMOy0xj74QjaUsXQQTKm45nOsO2427U
OBc9cNneqy2zrU7pTCjtTaCVXNZNV4MTkch.LWHPl0VL09EzvPUvw5jnvblG
SMh4tT6TAGUx4XhDEwWpZ1Ps3mZyrniUmS.y4iiU.SDYgV3KQxSqlkrXsXDt
9CNOxlecjAjkpHGoHKACDnp2EiepGE4pl5rJCAm.5glF8jlkwjoQuh3so7ZX
3b3mCoelxqotDV.pLmy5bEEXWcTo3qG4JySKcV4fbpsE4TTFlWpAaInSvnKY
XrEUUHTRrEBbmFcEbVFGNl6issYSmERn0ljCYZCxx+BinfzIpGnqjxNVGNpj
GrtRJqcY2XtXBRVOQU5FPZfwJGVk7Du8KNeithNDANEBCzhDFoJSkMQh6KBc
ozAxTcx1yTl3+PWQYFXIEHPaEHeCLWTo2HgqipShe2xpNN.GsEjp6hwzNTwc
7z3tLbFHNvbiG0+zt9Cqqlj87JyRCdisSjpU3sOUvxQWJODkYa4ajrF7vyRQ
wMMNhAxRNVJWSlRt11dBi0g89KrRbpXYs+f.B1HJP7uF64ylX5W+057vCsS7
LULRDUpjhnSim1mSpKHbhkzFwT44kvEWiYWa7iaoMLLTGNRrSj303HR7Chm4
FZssaUcHI0RLxphw60HiDQsDirBGegYjOk8r18G.QrSTQUnozCIELsIGAFV+
2NGcoI2tT94D339tNqc3b.5DCcKh3EFuN2vvSwQDcRKzUxDdPiCgbveXSQEw
d+oaWFH9VZA2DkELPurKXP8DC1dO9lcLUmyg8StCK0aH3EeuxDonPl2EcGZx
V19JhJYnZ0gv6c8prCEAgqvdJJoS0lMkm..Zqh2jIllVtIrLr8mmgCMIpANp
kmYQL+Hy5Dm22nbDxS35l7vssQ71Qtdj3pqXHCDU3pHqTTeeY8Gz+V7RFp08
TJg0ExCbPC+rTTUva0pmVaPhebgTqCBhnXW.hhJD6cuw25HXnxWq0JxOjDkO
4ozSvnoDe4tGTEhd6OdR3pnDkblzimxTxCEFCG4hj3hRUuMOWFu9CEMNRri4
SIG4KNUrB9IN.nKZXjkVTSUlzjFSgHCblzPQr+Vvm8gnFLW2V1BNg8gv.gFH
TfzdshpZFHy6KNnaYmDibPvO.kMpeOlbHdyRlDvywQeb46KrSXxdxCxJxCI1
9AY9.c4H80JSYZNYSJl4rzJWqQTMG1UOvkZSWFBmkN4cDJKXlgXNilOYNbu.
267w7iky6joL0ypYexykQlfLpT.D.ohFE.DhuTYOcnrqiV57GYH8t8YEQleh
vwzWvSDtqb2ZIH4xS.WlSDN+rkpcoVt1QJvkN7QBmd6HgO8QBmu2J7e3hucj
vucjvucjvm2I4cuypnn8CbVV8n1+rrhDZV0mfWh9S1bGaZcO2ACXaaH6acdc
c14FvV2v16l1l2P185dnplx9WGafbGFbydHY4NTEzLE08zLnyPnAFCMwf3jF
EMzv3HFGMy.4DFImzP4jFKmvf4zFMmzvoAFOMw.5oXDcDCoSZLcbCpiaTcbC
qiZbcHCr5MxNfgViL1p2faWKHcM7164it5j9Vg+i+8+1ep6C0rSc5MEi5+P8
8SgAWPRfHTTerbKHzYQdx1pf5wcRoDxOWhWOuWc7fkGmVJJEXmeXeRbIeSK9
wEiPMgiRMgiRMAFSM4oCie71ntjflNAmRgZ8xS53UGtCro.szFB.9Lj8LfZU
UchxP5ozWSTme2WFit.ur5jR5hVgnfdkBvvZnJob4kkbt9yqSh9hiuOXLxJ3
ZPVkV5bcM2R20jNNkyBtbgC0AbrFo0QIcCtvNMfhspthTR+UlSi1kfsVpm2Y
P8PFS8fH7R94Ljfo.pOM.6osfsmTtTMK.WXRamCNeec3wCWAXIIODttyG0u+
GMRIYzaXCzpjFncIogtptbjdsNo9jac8MHMD8d8OHNg0oOdpuGB4FncvY4aj
qqFNKIkqBnSFGxAWWHGdBPtG9UEQ+jAc3qFpN3T.cnZ6x5p.gCneMfxn2KAD
5cpzP3UFBOEiBSyia8PklVzDUiV2MWbV6Aw3GlWcGn2t8GjKY6Zbedz9nzM7
Va4.6zK8BzvOg9PQvMPTfuOxWjZKDFtj5AIHWb.zUj2y6c7PuxZukrPBVwjl
c1w9kBmkN6Jbd69vMa3EBBhIEx+qBASWliGrtoG4z8LX49L9o7Y7XPMk2vuG
m03E.8H9.hKuJkfxscESmj4b+UjAcH88YwoNjgZesjYHMSmfh4waUUcnXDdK
avChgATe.vicWcszcCJc1qIwSjYam2VUYDO8z2ta22VTLT6LcXRIZtBep8vU
BvL5US8NYWBU2UynrJPvfHO37ZfsDvvKdwfEtLu965EgDAsOIBJqk5KNMBcs
5IvtH6mGUsdW8bEdW4cbopa8pu+.6ZZSwkmL5NCr+hSrZ+50XPiajTcsSZVx
mcAMvo.ZWpFZL0z1pLWA3hAEDSgB5EsES2WFXfc23hCEHSgBzkDJvlBEjKU6
11TNBhbqcaeqcaOHS8V619V619V619V619V619V619Rxau0tsuJwAbqcaeqc
aeqcaeqcaeqcaeqca+poca++HMb5gNko.v2BvKI.hlCTo2ozQ+.SefJkmuZW
YNkAy7XgtOLMRWqnC4coA15NBgXCj6anTS3iUisMbjmcHci7DhT2seZZ1N0M
8BMge0aAmGaTD0NIM4VsgstwxQmAyfI5WxdeMGCYvkug5UcZiC.l1O8rd6Xf
2P8VoSVzRMTuJLDhQr.3CB787N9+tjX+Sr2PZSDuoOLjt6wu37V4F71zQNda
dTwmSKexY8yrqCS+fC04sbJASJfmbYm293ikEQhyCRgiOL.wtKhHtxzS7OJv
tjXdktvHwdziE6a+5q3J0Kwp6vIZ6EDvE1r++3C8XqQfElDNPdDFbuN82DNt
pZ73oX0jdpsQGbr4HnqehLeaNIQaCW+4lsGn8i5uyNsW8ccKCpsgUkOSc++A
culKfC1geFoGw5Akl8jMYAPe+Sgq+vVgaFkVDw1zL12HId8Glt4M0zzy56zh
2+fdA3255RhA3+ufeSEGpHHA9qI9MOvXsM8mw8Lxes5EFw8Vbx8JaH.6MjKS
H8j6wMhwoVSERruaFOqnA8y2pe6LfOTVNCNlkydzYimo.SlI21IdsSoPbYmZ
rRIazo.Ql8Te0HudFLQPKLOtTSvHaLQlfP1XhnAWILhBMQLjXgYhXhXG++HE
pqii4OSlHNf8sANQLXlZWgLyelvWMbBYBNYsYBcEDxESDzDQuydlLRcxyFyj
IZSDfElI9+GULI0yJBD3.SMQb1yjIFiHPaMSPSlI34NSl3tE6ZCbx0DbBYqY
ZRbxJRDFYJ2JTOSLkCsh9D7pgS.ShWwF3DxD8IjpXyt3M6yXKVqnd8Nvplsn
rokJ+OOIwuct.mIhqdVYkKlDiScfPm2LQLvKMgXqYZRgHqfS.SczbtFkgl3R
i24KN+Y5p4RCRMcYPmMNQLgQYCCXvql4enIwWCsQfaPfoxd.MafSmNOHeR5z
oA6zgA62YAGtiB1sSBJxTbmhRWhrSTL5cRY9Oe2PUeVcNl0W34yonymYAmOy
hMWeAlMbwkMPgkUmG76ua3r5qlQ+1RdZJhb8LfynvwOqhF+rKX7YUr3FIu0s
JGmWsFNyBCedEEt0j4FHe7FV.3mPweO2B+9rUH5Wf25ULLnntOaXQojP0CFm
bQ8ZZwZOmB01JHbqBxdRJuYEgsU.Kkhs1d7h4Zt4jKn5YVL0yz310vGmp1gY
bw1EHsARWSUTzmsjU+heVOTM2Bd1V.X6Ba1XHznhY1RPX6hV1X.znBU1R.nR
AIaNDNQQHaIfSsXi0CcSTfwyr3hOeDnWQDaLw0n5m8rAvdEHrA1cLrnfmUAA
e1HzQ7YbJdmPD8f.A.EfItffpPD8fp9ad4XSkg6mR5uUjqeeXYly2yaO5Kly
7KWX9.8W+69k69uv7a6Iv
-----------end_max5_patcher-----------
1 Like

Here is the CV splitter patch as presented in the 2nd plenary (with the buffer flattening built in)


----------begin_max5_patcher----------
7088.3oc68j1iiajcetmeEDBFKRbzJTmrHMxGlrdS17Amr.w.aPfcPCJI1p4
LTjBjT8LiM192dpCRJdyhWR8LQigaIwy2c8dU8du52e2Cq1F9Y23UF+fwuX7
vC+96d3A4gDG3gze+vpiNedmuSr7xVczMN14f6p0pyk394D4wicS1d9ombiL
18xiO46jj3F3tO6xBOm36lj7kStp20pUF+uom5jSxtm8BN7Xj6tD0YgTSxF5
ZCSf8FvZCHBK9.g1.xuqfyG8B3ORIPgROn2dInDt8C+Qn4pKWo5sKuTn3f+8
28NweVqIJuK73Q2fjZnLdiw+lBQM9SRTON6RdJLHIv4nDYW8u65+hah2NmUc
fwDKf.GwHAdiPpe.KfvhG4SN6jORXSDAXCDADqHDE68axaGQ4O8lHNfQPbBb
+D+UUi1bxXua7tHuSIgQwOxENNeZrxBLljXXojEf8HK.ZhLzlvPwWqaTJVlh
lbZlmu6KbtpWXPgq9gUNmNU3vOT3VDzlODJePVqyOjWf5Pf7CE49hW18SyOp
SDG4S3X94HkjymMIqt7XB26FEb1KWJVxkRAII+PHwEeJUFQx1xN8ExIUQEAD
wGlDoblT1KiZx42G7C28Q28EA4UgmbC7BNE4Fy0DbRRg87Su28Imy9IOVTLC
h1z34yjha7j4ZM+KQdN94HvgHu8gABfnDmPb3rWmPTQhazhHi7JBbN0vMyEM
3jkVNYLGIOGu0IRvn156VvLCWJOLzu7oxwEe2mRRO8IuffJTwjvSsexHuCO2
w8tMjexic8rkmI9wyApy9HWlH4wXmWJCgIN99oJske7e1Iv6nSB2TkhEf.4m
zMvginOyUnC88KQmTm4kFNydtL9N2O4sO4Y4KpnvfxxPpPzpbt7duCtwIkOV
hyg3xGIN4KJhdgCcdapN7iItGOwMJqtffPAEYUAb7xfcEUaKZjqzw6xXWYCd
9gN625Dbn3IqYoSdA4BmsXwiBTpnxOnVUM20pk+pl8XrUkuipCC9Pl09TaIi
jnT1ifxTEtO.QG9Rxyb6FOu13omRN4D4bL1f.rM4iCYp9xyNAAqKNfggy1XC
nwQ28dNAEev9dAt6BOGjTTer6AUpOfbISKcyDvoi1fjCAQ6hKfZlKv4iqp.H
MXfbY4PpGqVXLBIE3vfr+NXwNHh1tbWQ7MysphZxxmUvd2O2FI3hkcgnPKJy
RrSb9loMwgmi1kImjooXTFS4BiIdA4Cz8KEXlhqTKlyPAi7md+vgfF2Bbjdv
LeCVIF.X+ipA6dj6sZj21yIJJWQmcFjQYtGBac7SM4lqW0fM62cA3lG+JiMD
tfjzkqzTgeyBOEk93Pnc6uXitMSVs79G66wGc1O7f2tVcLtzvEcEnDkIQYyw
fq369FmRMsYVpvMMEeXkONr8cuiu6c7cuimjifRq1qMTi4Yr6k0FbyM63N9w
8yS55WxAGu.C3F0O3BXQIhSyYAFEFCrzjKweb4W12weJUc+tjyhT8cVrImir
kZOXSo+fPhzePl4H7GDs5MjKeDokNFEOQe9v3Ezku0yevZeHjKqgVMIQBLYi
o3eLarEBiHHDeLCa4bUgrPar4+yxhRo1.KD.2WLbsHsfg29X35W0sfZHZ7pq
ilEvcBxl.I.SD2UHN2P51msc+AN2lJJ85Pz49gmDFL8IL.BvR5.CxnHajsok
E2WPlxYPR1eGrRMhT17AOvc2D9XHpA0ppZeajMmaIJkSRTtkcHfZYSssMA1X
FU3Gn0nEnf1q91iRoVvh4lTYdcnTcL1fZUrdka5pSBzS9gN7wW0TEEqBC0DB
TeL5I0iSaamBgtNTn+ICXmjFOwH78PPP1V0scaYplCJa0hfMpYai8lQ.h6pc
xWleYnlz3rPSPfx75HPUdUTKSx9wvSewH4YWwj6jXvkeBk+JfedCmWb77Ei3
XD6GlDq0rAKdve3L2Mjm71kGNNpGxqJrelx3EL0mX7nHocMCnWaqX0VL94TV
DqVNQ7TLngu4FzNGbxY2GM7L750t1Z8Lu0XvAoTIK7nIV12di++lOWIs6gFE
DowQg.RJDlMZ2GrY2bBjXdce5bPfqemDIwkMJhDiIM1SMGuTD8lOF4S9m81u
gajhOpvovX2W6OJnwJTYyTyYCX7DLKy2BpcGhByShlYVwiQjzHJbzJdVvaNI
JwX+4icSfjWfdw.lF+b8kOR+0e29lqlsKz22.88NQG3fa+hNq0TDRQgR8ThM
gLTnigyHENSOKgYYhyCqbOtMc1+yOXNYdo8jMKg.Etul7oPiO457QgOsJ+wh
U91FF3Z3jXHhFmOLgAvH7ohyZ1lV8wEOO93RXfB93RXybxk.95V3Fg2fE+iZ
wLIlDKBgSiProJqS+pTVu6IF9X3KtFeGbhyjTSD7zz8zjN5QjXjat42DCeC+
oOhcyDHUzDLX+yURaRjnqyP1y1zbqFPlQl37ZaZ81Xds6TvYK++1465Dokiw
YeptCMmjanJXKh8nsoY1gew3qCk5ECNX9Hez0G2NOymsZFMRExFEQ41Gc0Eh
hyrrbHSmlPd6Ewow6yWQSi2eYEMMdegjQP8iBIif5.Ms5lyS.rowdjFNlIaz
Tb5sOdr4S0jGJlEe3OBlBnVT0TdmlJFSPnjBdKr15yjKTz5q.LRI9LAWnH1e
63BUSDHU1cawFsKTD5aHsroZq2lrA1hLzDzxH32.xPbvrGoHYHj5PkZJWKfp
rCiL9UAgft4BRKU3zMQvvpI5eBgSSfeUFN80m9aIUcglnIRvwru0H3RyB8ZT
PS5KzNqBgFK807a2YKFWfDMEQP52Zhfy4ZElRlsvSb0AwnUuMl9C+QLAHCdR
PRWK9IPt5PlbFoVR3XNBlGpctdCZIgM5P73MY08IRZBsppNQxVuXE2mDJfZU
igrkDLzsTGynZKCTP0EJVRZgXY80Sv.ujPATWZAcAgBwhUqETvVR4BltJIVv
kFJv2bnfnKGYQkKP5BEjkFJzQtftj0msotCjXZtjPgolzBS5RCEZQKHKMTfz
ZP05vaXzdUcMCt0vFtcXCtLvlti+tnBx5ZfCZujPgl.AcIs0S00G.1RRJH55
C.YIoEDckMI1KMTniUVxR5aHQ2w8HzkFJt8xEPMoEYtrrHPgXZP0iirnPg1Q
trjwOg0Ut.ujRmXcschVTnP2ATsVXfPGYSr4BCD3AHTT3BO5s+TnWPR5D+fv
xjaKskOJVBiresfftNdrgWRcajti+YsjbQD4sfGIP62BdmkOib5MChvkBLzE
H5n0fUpKwzx7qdoICcduW3OKa0OO9e3Fb9xz3l0ThZFx2d3IOe+cg9gQsslK
Yya8J0Ustvoxuuew.rAYSfPKN9rACwLjo7a7uPoUrzkdevrajPI1.j3xIlHF
gJ+lEBSwhuAZ3VQWdm.ns5MArs.D023GBxemUuUmfCos+HFnX27iydiBOEFk
2Kn1fsKcemSBOD4r2KcNxadsmVWPXIhek0atOBqlbFgWwmQSBa4L0e57NGcY
jkXEDFEhkzQjM1xV8MJOvZ6ZjkUwt9t6Dndom.CwuXIyDZxPJFgE..I0e.Ea
1Ubw5+5I2.ieVjed+r6Qusg96KuZGhUNR9pdzKPz9wby4kXaDzTApYBDHlEA
WmWxEaKAs1.BjYKtANxRXL42HHalDyolUtW8E4yY6cH0O.Ivxx8V4R6VL.0x
R8sFQ3px8lTfh6nJOL02TOsqhXeAxoytc7KnDMAKXfRBAICNE1AHMH8wE9NV
81YVbTRQW.PKK023OIQ0uAK6PwBnz8wXeu8tQ+2hVX2HT9T8yvh+Ygg2iNe1
rPOxqOPsU0Ov5B+oS8sJnHWAqz01f.gRzNW+lkpobcHNUVN1gXFkOFDxtn3q
vhDgBuVfdszQcY3syg8vBV0xrHU+a8XUiYIF0ecieq4a8qJ+.pqoNbIhp8Jt
AHMK4+E70hSmv1WCIYU1i7m7O6VLgD5FxaZTEHyjnFpKGIrEGBdEQhnvOELI
r3BrSysofuxXwO9EmogD.D2MKkobFFiT53HHOd+qGR7WhbcmHVH4Bxp0S4nq
vgrqGB7+356G9oIgAVbm5YJqjPKnz9NkyYnM6jdg9KKRbg.f0RinmOt0M5uv
iAXRnoP8.HE2nbWHnRLFVz59hhDQJGBEXwnr6ZRLMw1opHrzfS3LIabuw0ba
Q7K3s9buJgkwf.IPaiIl.6zvxXvFDPuMr8uwa.6hFVP2cr708sk9XZaIlJ2z
Z7FSF9t6DrktVNZ9PzJcbkdJ7nN6N6XYCsqd2Uoe7DXu334kt4W2cxulwvrt
pCs4F2mFXHa91ntZACiJumALz8epzsS.QQvh.W54djQrQTAPyGxVpr5G0dGf
h2o1dspWO88u0A.fW1FFZsH5WN15Am7ISYn7ThsJKnUoIOFMXEy7Fw1xgdIE
5GcZ0K55TA0zrhzKbvaUD1rE2Vz+rg4DrEks00fKipivpjs4hydk8zG2n9Xv
Y+utLZnMnL1aZ2Mil1.1SaF6IyG1y82yMhGoxzzeoP4RBSICWVlbEze2Z7Tu
NJoZ6l5frhcoOQ+MGzszbSHKZ9Tbaa6+zIvw+Kwxlov2AmnUYkagVC2pLkt3
b0BaRYu1JZVpds5jmRZo7p6evW37gpbYP9CI648hSTkXs6zC3x9YvAZui7mU
wszjlH.hlxHUYsxF..HRdOfNaaHq.sfCrYOzR6bocRfnc5bBLeaQM5niDlLa
VEoTLb4Au0QXbu33e1M7o569QW.CN49Pyj3RWFmTl343WGpKcUG4TmRTlldF
oRcWBNtvkD+bXThFfSFeG7thSO8nBsrMiHu7aggGGs8iTYJDhsgwkofHDfAv
PgPk4vC8BSV9MPX3Fi+K2cgQ6M9w+1325fSc6Q1EKfljYYmClhtcabvhcRyw
IAvx5bv0k.5ye2lhVibemQ69tF7RtunAuuun8VbeQ6pseAKFGzXq2oPemHiI
1BnrS2YxR2zBGeS8Cc6aXO4zlX2DUiysuciEM1uQjC.XKa90W5EMxsqFz36Z
GP3aGhkx6oIJFUZymdJhQ1ug1m6Hp3q3CsTi4OkM5X7Wa6yw5lM0vkrllP32
BPADNcn3d5TeOcpumN02Sm56oS88zo9d5TeOcpumN02Sm56oS88zo9d5TeOc
pumN02Sm56oS88zoNehJc+s8N6dsi0wEaKW7RhobgbI469f5m8Kqls0lssEr
NRsZ0PfQL+aA6iM9D2WrmE6ec+5pe7u8qYjrF205Vs871JoeQ6coVUJw.U8I
dJb.YFCskksETBJh45M4aSQyyJW694SQF+Ce2SPiu2.8OZ7GujW0MsOUOzji
JKCqk43.MuaiqeBCQ.yWBMzVBbHa8xiNs9R0.vDENhGbNaXNm4+0PS8oFSyK
UpYXoPHvvyxK5vyv5YLcbk6J1OYPAqlhLKAKSYQJa3k+.ZwymOgpY6IxWr2g
.Q9DnCuNEYUluGSMs.V9rzLPjta9beL4CNOMcTkHMa3nI09pj4sHiLaQFxsu
qdSD2z7s9hELiUparKpAJMcqTTiF1ho6UCmfV7bsVs5AgQuxIJn9D0Kk0XMl
VMMRGTYFTpvOj1SNmiaP52toDN6Rx.sbRKbD+Ui+HbgHLJMjTSfjgKef.2J5
RhAjq5DdhqLI9nuBUPcMWzmj+tScGPQcGqgmBzX6qgpiAni5iq11OgNHrx8F
Hd3JI3VJKkYzI17rI4jHyrF0PDo3oEUxWQCmuhmuQHRBOHlH4wVSQYrLfrNN
GQMxkuqIcaJQNwHgdZMzWmi4qxFHDPxQ6qbpZhJXs3UN1e3OLUlLhpzKQzAW
tXD3UvmFvnQPLknxMbbFlMTmTvKN9Irz533LsBKOCQQxOHCOfCBYwETSlP4V
mpHNAFI8qDFYJhNZFIht3LxmCeom4Gn1NjVGnpZzR5vKtOTKhrjgMcoh5D3x
7tNmMLBNPE6JRLdWcJl4F+PCq2ohJrgWVyvVFbhNy056qZGgQSRIjRwQPGtk
MqkpdAG4Tioltjr45a3SMloNNV0a48Ml4VQrDEp0cooRlrKaekMFriGP2dmD
mhHXr6k0EA1K0Ky9nJ0+oERDSwChS+RqMveoVVkz+HEWmId7SbqSBlT6JGpB
jdcmeQVusknsMmwj1x7eUtlUTKKU1IT+PhDJpvwJkfqcvLnDKUL9oNKW7tTE
wPtLRhLSiOju7.Nac8KsFENhkcdejyghGTTTRky1BhLkZ.x7QDyVq8g5oU.D
c12MpkhhqEOAyTudIwa2Gm6RBTQ8d0HkrIpNA.neAldsAkshaJipPzvG6.s3
dYbJ7it4X9p9EBgpVlOiM3IWfBlu0O7CwmyC6TTOj4R9O4e1a+FNC8EO2Os4
CwiaFFLSWKA0zMZoVjPSANqu8MyqSf4sMS7MTYSijHzPwtx.CubmgK+pCpFM
1Ppfh4lZERFBr0PLJvZiOEcIcdmwkLkYZsgScvHaH.Rk8XfzcTB7PVcc1xWN
3nMF+YNRe7TXr6TpHbyTzioBl.LKUDd9lu7MnhvE0VZz3zRnVsWR3C2KZj48
RBuoRBGqZAOXS78RB+dIgeujvGWk7dxXqq6odpkUjTaHqBcIiuzkYT8Je0J1
zpV2AsXaqM6aUt8lry0hst1s20uMu1r6UsRo5y9WEafHUmCDiT4DQpS2TT0p
YnICgZXLTGCh8ZTTSCicXbTOCj8XjrWCk8ZrrGCl8azrWCmZX7TGCnCwHZGF
R60XZ2FT61nZ2FV6z3ZaFXa1HaKFZ0xXayFbqZAopg2ZmuynSpaE9O+W+O+W
qdxt6iBsF.hsL8+rTs5MbSVpa0qylrXSVU+FapsJTtbmJkB4Sk3UazqJifE4
EjHSEXie9juWhXRK90UqzlTIVYKQcnQMI14cDtFRqpdGnq1j72MoCb6IchrC
2.lmfVcQrRStPkq2T5jkqX327Tmu+0dUIqrJJ8S.aTXyt1p+ObxI7Mud5tur
y28UCKKv7SVUl6LMmtXI31SG6avBgXjA0.bIGom5XFP4jQmRDmttso8adgwh
ofcuxgUmWeMnkPDdin.BIXJfZQUsE45In8vIsrtIsnq.osRgy+fF8BdMnXHb
VSQpdqQp0VmXipv84xRky1RqRpk1kTCz0xgiTq0IUmb2TeCpAhds9GDq19ia
G8PHS6Fu3vn8p3pGmR3UAzIcC4fqKjCG.jyvuoH5CFzguYn5fg.5U1HluJPX
K5WsnLxtEPHanzP3UFBGhQg94wENYoNQTOYiV0IWbTyAQ2EyaSEza09CxR1t
FOE4dxMXuQb4tV3v6TiPKnzsFHx1xBYIWRKDFtgxfDjI1FZJWty0FLznmiX5
suWfxcIXKWZ13H+GwFaLNFa79SN62KRDDDWJT7+kfxlV4XMRGqtqsmgvDDGS
vCX1PFwBPLE4PDTMkoXZWbAZybARI7q8IBtM+OWVFz4fOD5EXPV0KotoThsU
BKSzMppPXIhtx.Chg1TK.fwOZSs1c86zsj1ktoWGhmbksMdeZlQ77y+vwi+P
bbmjx77aZf8xUBneBEpkNcZGDp4TJqZzLZDIS63MAzdPLsF.So36.cX7ap82
0aLIBpRT5oSifyDMBcs6IvMN7IyTN7onKIkdnIzefMQes0efM0so3JV63JWX
8fSl090q1flvVU4XmZHju4Ez.CAzVpFZLU21prPrbwfBhtPAcQawz0kAZY1M
Vbn.oKTfVRn.qKTPVp1sstbDD4d619d61tUl581s881scyx82a21KlR281s8
81s881s881s881s881s881s881s881s881s82vsa6uQZ3zsUko.vO.HaP.3p
9qZRUAVapV.Yv.JuZl87UL4mbBb8mBvt8xD.m0gCBOGrWU0FjtvH0cV2DYCN
NVZgEYc2Bpya1NYs6gFb+pV.8WZgCYCRpygJBgU8kaLc3FtneB+96r6N0YUq
qpMYU6NZLMTOvMug5sUu1AoFTAHhw8S211hwtrgThsFdanX46ud4MtgfiO8p
w6USvadG438QtweIH4Yicuv+tSvGMnFuW.0b1iXAnMd+SOkD6JqGjXCKnMhe
TDQ9sgUw+Z09vxHubKB.N4kQuj1u0SCi9ot1KN0MqCmzQufP+1ZRZeOvBx3A
CvcoAaqJsAyQzarlOLWfqkMd7rW4E8r8rFoTO.y28fytujGXeOcJISUcWYo5
EBf5iMTaZbJFpcVG.pnUzsN693A4.HsLhh4Ea3M0nE7NDDxgOeucer29uPIr
Lqk+fV2vWZYjHhVlKuzAJlu9K6MheSkCr.Iv++I+1FOH9Mb932BGiO6Mtlzg
spZgZZ3P3HZMbVc2jNDPZVrXhAnVU.akuixoTgB4qtfmojf5awxVEW.71V7a
5kE4rFYV62DSi2jDbxWpwUG81eJjqcEmUF2vzV5qxa1h+bNfNXePm4bPGL0k
N.ZmNfS20FfocROT9OyumxYQxxBtPHVK3McWxgAT6yHLRSvKXZvKUG3EvlCN
IQGNIsaJih0QwJKJDlrM0T4mPKZQ4c4OmJrizA1IyAUBoglEDXOCuJcrkgli
WjNlxfyv6wTGgYzb7hzAgliWD09JgQTsrC.0Q4j.wEMyJ+4TgNnFPGdNT+H5
nTH1MSxxnqw+lzghislCbRGCuEyUtw+lvWMbRGCxjY6MgtBpfDsr7OG1iIZo
NMGi4qijmbqqaxuIw1ESuTuYQf.aqqIhI+lzwXDANWuInNuI3TeS53L.dNhb
P9P5EmPy0apWbZVjHzxT9rP8zwTNbVzmfWMbBni2TyANgzwFQEDelhnSqWMp
rtwLE7K5pEQARG6UHytbW0NcRDgxXGo1l4+ZpvlNVCXyBUPGWHIywrQUtXGZ
6MQlq2TuxPyBNAzcb7oNlGTGURQKFZ5uoqlGCPyAX0NeIB1uuTagrdHjpo7x
1LsnVMM2HaaWU9MhJ0VMMUJsheMUzgpaH8SlEQzQtaNFtCd0bV.hLmgoOvxT
scmPJM8AXxloCdZ4Ly7PIzZ9Tmi2DTKjBX2IQOctkonThtR+ihlAhtNt0YOG
teWEGaS4EOKuKsVWF1r7pP5Ng4nI+pfCet4mImF06cCq3WvL4rLDn6Hyk4lp
ERrRCvV7Rpzvqqznqq2fqauwVWsgVKSXwJ0FoBY6olHqj4l+96ZqHHxR0wlq
+wwT6iirtGGYMO1bcNzdMNzR8MjkNlqeW6IWZ4DKsnjWC0xXyLfwT+hSp1EG
PcKN4ZVbr0qnVhkUqImwUYLir1DGWcINahlYI4vXqAwwW+gSVgndcF1qhQa0
V3jgkRUlTyfwfqsLcqYvwTufyBBWnt.0wjjF0B3r.Vkp4u4iWLV6HCtt9FYM
8MRqVWiw3JqcnGWrXc5ogzUe0l2jkrpWCdMCUist6lK.rX80oMDpUM0MSPXw
ZmSa.Tq5kal.vR0Em9PXO0B2LAbkq4MsgNspystqwsoi.0pkMsAesJiqICf0
pSMMr6nYsoMp5RaxHzE7oaJdEWqYPfDfrwDSfcpq0LXEgkaFaJw4TWHSknR9
ImjPieRrK8rZLueUf4srMO8t+969+.Pp296L
-----------end_max5_patcher-----------

And here is the downsampled version:


----------begin_max5_patcher----------
7086.3oc68r1iaijbe19WAgvhCIWlUoexlbQ9fys2kKeXSNfr.WPvtACnj3n
g1TjBTTis2Cm+sm9AIEeyljMkF6HuXGIwm06tptqp5+1aeypMwex+zJqev5W
rdya9au8MuQdHwAdS1ueypCdeZan2I4ksJx+iwad+pGTmJ0+SoxC+O+EKBYM
L+3wmSC8SS+7Qe0yd0of8Qdgqr9eytfidoaeNHZ+iI9aSUWCFCWCdvhfAqo7
OrE+.gVCJtmnyGBh3OVIffxNXvN46mCSeu6pKWnB.jWITbv+9aeq3OOnIVdv
+zIu89MPyS9oaN+zS9IVae4wmB8RS8i720IV2K9Bo1DAlZCbEnJDgGMFCsMG
JuM9vA+nzFnLds0+lBQs9CRT+T9k7TbTZj2AIxt5e2O7E+zfsdq5AiIN.ANh
QB7FgT+.VBgEOxm71Jejv1HBvVHBHVYH5TvuIucDk+zai3.l.woCo9iV67Os
MI3XZbxoG4BGmONUYAFSRLbTxBvAjE.sQF5RXn7q0OICKyPSNMKHz+ENWMHN
pzU+lUdGOV5vuozsHnMuOV9fbdn3PAQpCAJNTh+KA42Os3ndIbjOki4mSTRN
exlr5xiIdmeRz4fBoXIWJCjj7CgD2oiYxHR1V9ouPNoJpHfH9vlHkyjxd4TS
N+deX71O3uqLHuJ9neTPzwD+SbMAuzLXu3z67ex6bX5ikEyfn0sd9bo3VOYg
Vy+ZR.2pX9krOIXWbj.HpvIDGN+0IDUj3FsLxHuhHuisbybQCNYoiSdhijmO
swKQvn1D5WxLCWJONNr5oJvkP+mRyN8wfnnZTwz3icexjf8O2y8tIlexC88r
km4zimiTm8QtLQ5im7doJDl5EFlozV8w+IunfCdobSUJV.BTbR+HONh9LWgN
NLrBcRclWZ4L63x3a8+XvtzmkunxBCJKCYBQqJ3x6B16eJs5wR81ep5QNk9Y
EQuzgNuISG9wT+CG4FkUWPTrfhrpDNdYH8xpskMxU438YrqpAuvXuca7h1W9
jMrzIufBgyNr3QAJUT4GTm5l65zxecydL1pp2Q8gAeSt09LaISjnT0ifpTEt
O.I6+b5yb6FO+f0SOkdzKw6vIKBv0lONjs5KO6EE8P4ALr71bxBZcveWfWT4
GbXPj+13yQok0G6ePklCHWwzR+LAb1nMH4PPz93Bn14Bb93pZ.RKFHWVNj5w
pEFiPRANLH+uiVrChncK2UFeycqprlr7YEsy+ScQBtXYWHJzgxrD6DmucZyo
3yIaykSx0TrphobgwzfnhA59kRLSwUpEyYrfQwSeX3PPi6.NxNXtuAqDC.r6
Q0fcOx8VMIXy4TEkqryNixnL2CgMdgYlbKzqZwl8au.blwuxSVBWPR6yUZpJ
ZIHT5iCg1u+hs51LY0x6ebX.ez4v38Aa6zw3JCWzWfRTlDksmBthu6abF0zk
4nB2TFfsSw3vt28N9t2w28N1PtYnl9JFEOS+Lv3EzMiGLe.BuONHxBsReeVa
ah.IqsE+i4hcPXDAg31obkyOBxAs1k+OGGJk5BbP.7PwMzgGqX3sOtA4f7OX
obQxZ6KOXwgis73D3gEHiTHkaBJIUbDquCoNRlaRUl+Q9i3x0wuyAiPSWV.e
fWWBj.rQ7ge4bCoqFttCGrVGD89bZ1jDctueowQyOHUH.KoCLHihbQt1NNb+
OXJGPH4+czJ0HRUyG7fE8S41sTFRqqZeajMMsDkZfYJydMDPcbott1.WLiJ7
8vYxBTP2Ue6QoTSRtoIU1WGJUOiMnV4juvMc0KA5ovXO93qZphhUg9XCApOl
7DIwoscSgPWGJz+jErWRSfXD9AHHHWml1tcrUy6gqZgWlzL7vd0H.wcuK8yl
WFpMMNGzLDnruNBTUW4tpjreL93msRe1WLgBoVb4mX4uh3m2x6EufPwHNVmB
iSOo0LPJdvu+L2MjmB1VDBHZ.xqJTSlx3ELymX7jHo8MqaWaqXMV.XSJKhUK
gEdNFzv2bCZ73P819Aq.qfAsq8fdl2ZM3fLpjCdxDK2auw+eKjqj1+PiBhzz
nP.IEBylr6CtraNARLWhOcNJxOrWhj3xlDQhwjF6o1SWJhdyGi7ovyA6VyMR
wGU3X7I+uLbTPSUnxkgUyc3zIXN1uFT61mDWj3FFVwiQjzHJbxJdNvaNIJ0Z
24C8SfjWfdw.lE+bykrP+0708lqlsMNLzB868R1yA2gEcdPSQHEEJySI1LVU
7dFNiT5LCrrYUINuYk+gMYy3bwAKHyKsmr4Iglv80zOFa8QeuOH7oU4O1Iku
swQ9VdoVhnw4CSXArhep7rlstSebwlwGWBCTxGWByvIz.3qagaDdMV7OpCyl
XSbHDNMBwlqrN8qRY89mX3Cwu3a8cvYNSRsQvyRwPa5jGQhQt4leSsBsBm+H
1sSfTQSvfCOWIcIQhtNCYaro4VMfLiLy401140w7Z2qfyF9+sMz2KQKGiy+T
cGZNI2PUvVD2IaSytG+hwWGJ0KVbv7Q9nqOtwLymsZFMxDxlDQ41Gc0EhhmQ
VNj4SSHu9h3z5cEqno06trhlVuS3I1dufHK3Z0OtrzI.0AZa0MMS.rYwdjEN
lMaxTb5sOdLyoZxCEygO7GASATGpZJuw13YJTRAuFVacC4BEs4J.iThOyvEJ
h62NtP0FARkQwNrI6BEg9JRKat15cIqgcHCMCsLB9UfLDGLGPJRFBoNTo1x0
Bnqx0zouJHDzMWPZoBmtMBFVMQ+yHbZB7qxvou9zeGopKzFMSBNl8sFAWZVX
PiBZRegt4UkxTou1e6Naw3Rjn4HBR+VSDzjqUXFY1AOyUGDiV85X5OBmvDfL
5IAIas3mA4pGYRCRsjvgIBlGpctdC5HgM5Q73UYEkIRZBspjKQxVuXETlDJf
ZUWarkDLzs75xoZKCTP0EJVRZgXY80Sv.ujPATWZAcAgBwhUqETvVR4BltJI
NvkFJv2bnfnKGYQkKP5BEjkFJzQtftj0DrstCjXaujPgslzBa5RCEZQKHKMT
fzZP0lvabxNUszBt0vFtaXCtLvlti+tnBx5ZfC5tjPgl.AcIs0S00G.1RRJH
55C.YIoEDckMItKMTniUVxR5aHQ2w8HzkFJt8xEPMoE4trrHPgXZP0iirnPg
1QtrjwOg0Ut.ujRmXcschVTnP2ATcVXfPGYSr8BCD3QHTT5BODr6XbPTZ1D+
fvxjaKqMCJVBi7esfftNdrgWRcajti+4rjbQD40fGIP2WCdmULib5MChvkBL
zEH5ocTUoyjzw7qdow1bdWP7OKauLO9e3Gc9xz3l2HbZGx2r+ofvvswgwIcs
lK4ya8J0U8PoSUbe+hEXMxk.gNb7YMFhYHa423egRqYoK69f42HgRbAHwkSr
QLBU9MGDlhEeCzxsht7NAPW0aB35.HpuwODj+NqeqdQ6yZ4NLP4NHGm8lDeL
Non+CsF6V49NmFuOwaWP1bj29ZO8PIgkD9U1rgxHrZxYDAkeFsIrUvT+oya8
zkQVgUPXTHVRGQtXGW02n7.qcaPVVcxOzeq.0q7DXH9EKYlPaFRwHb..Ho4C
nbCVhKV+WN5GY8yh7y6m8ODrINbW0U6PrxQxW0iAQhVdkeAuD6hf1JPMWf.w
bH3l7RtXaEn0EPfLWwMvQVBiI+FA4xjXN0t18puHeAauGo9QHAVUt2oPZ2gA
nNNpu0JBWWt2lBTbGU4go9l5ocUD6KQN81tkeAUnIXACTRHH4vovN.oEoOtv
2g52NygiRJ5B.53n9F+IIp9MXUGJV.ktObJLXmex+snsoMAkOUOzq7eVX38f
2mrK0W1FBT6T8C7Po+zq9VMTjqfU4ZaQfPIZWneyxzTtNDmZKG6XLixGCB4V
V7UXQhPgWKPuQ5ntL7VSXOrjUsbKRM+1.V0XNhQ8en0u09s9Uke.M0TGuDQ8
dE2Hjlk7+R9ZwoSX2qgjrJ6Q9Cgm8KmPB8C4sMpBjYSTC0UfDthCAuhHQR7G
ilEVbA1oE1TvWYr3G+r27PB.h6lkxTNCiQJcbDjGu+0CI9yI99yDKjbAY05o
bzU3P10CA9e7CCi+3rv.GtS8LkURnCTZemx4Lz1cRuTOMEItP.vYoQzyG13m
7m4w.LKzTnd.jhaTtKDTIFCKaceQQhDkCgBrXR1csI11X2LUDVVvIbljKdv3
ZtsH9E7VetWsvxXPfDncwDafaVXYLXKBn2F1923M8aQCKn+tj8CCsMxX65Hl
J2rZ7FSF+NJDriNkMxbHZsNtx.EdTucDbrrg10r6pLLdBbWb77R27q+N4W6X
XdW0g1di6SCLjYtMGpNvvjp8o9wtmGk0B6EEAKBbom6QlvleD.YNjsRY0Oo9
Uuh2o1RmZVO8C2t5AvKs9+NKh9kist2qXxTFKOk3pxBZUZxiQieSbyYwkZSK
0O5zpWz0qBpscMoW3n2dBbYKtsn+EK6YXKJe6RAWEUmfUIW6Em8J6oO9ICwf
y+ecYzPWPUr21seFMsErm1N1SLG1y82yOgGox7zeoP4RBSIiWVlbEze2X8zf
NJoZ6l5frhcFNQ+MGzuzbaHKxbJtcskS5E4E94Sxlov2AmoUYkagNi2pLkt3
b0RaLVeoSzrR8Z0KOkzQ4UO7fuPygpbYP9CI+48hWRsXs60C3p9YvA5fC7mU
4sQi1H.hlxHUYsxE..HRQOfNequpDsfCr4OzJ6Vl8Rfn85bBrXq3L4fmDlra
WEoRLbEAu0SXbu3Ed1O9ol63NW.CN4de6j3JWFmTlF3E1DpqbUG3TmJTl1dF
YRcWBNtzkb543jTM.mb9N3skmd5IEZYWFQd42hiOLY6GYxTHDaMiKSAQH.Cf
gBgJ6wG5Elr7aZsv0V+W9aiS1Y8i+0ouc0l41irKV.sIFY2pkhtcaVshcuwo
IAvx6bvMk.Fxe21hVibe2359NU6RtWbAuuWb8Zbu35psG0JFGzZSvw3PuDqY
1BnTNTBIYaTdSuo9gt8MrmBZS4Mx94QdPtxA.bkM+5K8hF41UCZ5csCH70Cw
R48zLEiprgGOGwnqTqCSq84NhJ9J9PKMX9yYy0E+01dqqtYSMbIqoID90.T.
gyGJtmN02Sm56oS88zo9d5TeOcpumN02Sm56oS88zo9d5TeOcpumN02Sm56o
S88zo9d5TeOcpKlnR+eam21uzy53hckKdIwVtPtjhceP8y9kUFasY6ZAqSTq
VMDXch+sncmr9H2WrmE6ec+5pe7u9q4jrV205Vs47lZoeQ2coVUJw.U8IdJb
DYFCsiksETAJNw0aJ1lhLyJW6+oiIV+Ce2SPqeuE5ez56ujW0ssOUO1jiJOC
qk43.snaiqeBCQ.lKgF5JANjsd4ImVeYZ.XhBGwiNmMrMY9eM1Tep0z7RkZF
NJDBL9r7hN9Lr1foiqbWw9IKJX0bjYIXYJKRYiu7GPKd97ITM6NQ9NErORjO
A5vqyPVk46oTSKfkOKMiDo6VH2GS9fyySGUIRyFOZRcuJYdKxJ2Vjkb66ZvD
wMKequXAyZk5F6iZfxR2JE0nksX5A0vInEOWqUqdPbxW3DEzPh5UxZrVSqlV
oCpLCJS3GRGHmywsH861VBmcIYfVNoENh+EquGtPDFkFRlIPx3kOPfaEcI0B
xUchOxUlDeLTgJntlK5Sxe2qtCnrtiy3SAZr60P0wBzS8w0X6mPGDV4dCDOd
kDbGkkhAchsHaRNJxLqIMDQFd5Pk7Uz34qXyMBQZ7dwDIO0ZJJmkAj0w4DpQ
thcMoaSIxIFILPqg95cLeU1.g.RN5PkSUaTAmEuxw9c+t4xjQTkdIhN5xEi.
uB9z.lLBhoDUtgiywrw5jBdwwOgkVOOu4UX44HJR9AY7AbPHKtfZ5LJ25LEw
YvHoekvHyPzIyHQzEmQ9b7KCL+.M1gz5AUUiVRGew8g5PjkLtoKUTm.Wl2US
1vH3.0IeQhw6qSwL25GZX8NSTgM9xZF1wfSTCWqueQ6HLZSJQ0DBH7HLKlb3
wYYyYopWvIN0XpoKIet9F+TiYqiiUCVdeSYtUDKQgZcWZqjI6y1WUiAa4Azs
yK0qLBdx+x5h.Gj5kaeTk5+zRIho3AwoeY0F3uzHqRFdjhqyDO9Qt0IASpak
CUAR+PueQVusUnssmwjtx7eUtlUTGGU1Iz7PhDJpzwpjfq8vLnDGUL9YNKW9
tTEwPgLRpLSi2Wr7.da7CqrFEdhkcdWh29xGTTTRUy1BhLkZ.x7QDydP6CMP
q.H4bneRGEEWGdBlqd8RZv1OX5RBTQ89hUFYi6oNXXwkAs.kudapolABbF+b
yr39XbL9C9E38pgEAgpFlOiM5oVfBL2pG99SmKB5TTMjEx8OEdNX2ZN67k.+
Ot98ml17KXmsRBpIazQsDg1BbVeqa1Wmvx6Zd3aotllHQnkRckAFewNCW90F
TMVrkTAEyMzJjLDXqkXLfGr9Xxkj40fKXJylqWCQXjKD.oxNLP19IAdLqsNa
4KFbzZq+HGoObL9j+bpGb6LzioBk.Xj5AuXqW9FTO3hJKMYZZITmtKH7w6CM
x9dAg2VAgiUMfGrM9dAgeufvuWP3SqNdOZsw2+3.UxJRpMjWetjoW3xLpdEu
ZMaZ0q5fNrs0k8sZ2da145vVW216F1lWW18pWmTCY+qlMPjpuAhQpLhHyoaJ
pdsLzlgPMLFpiAwAMJpogwdLNpmAxALRNngxAMVNfAygMZNngSMLdpiAzwXD
sGCoCZLseCp8aTseCq8ZbsKCrsajsCCsZYrscCt0sfT2vaiy2azIMsB+G+K+
m+o5mr+tnPmAf3JmQAGUidC2lk5N85rMK1jUMuw1ZpBUK1oJIP9bIdMF8p1H
XIAQoxDA15mOFFjJlzhec0JsIUh00RTEZTahaQ+fqkjpZvA5ZLE+8S5.2dRm
H2vsfEomUeDqrTKT45MkNa4JF9UO042+kAUIqsFJCS.aUXyswZ+OdxI7Uud5
1OuMz+KVNN.ySVUl6rsmuXI31SGGZvBgXjE0BbICom6XFP4jQmQDmutss6qd
gwxIf8fxg0mWeMnkPDdsn7AIXJf5PUME4lom83Isr9Isnq.osVYy+FM5D7ZP
wP37VhTyFiTmMNwVUgGxkkZmsiFkTGMKoVnqUCGoQiSpI4tstFTKD8FcOHVi
cG2d5fP1tsdwwI6TwUOMkvqBnS5GxAWWHGNBHmgeUQzGMnCe0P0AiAzqsMLe
UfvNzu5PYjcKfP1XogvqLDNFiBCyiKcxJ8gnAxEs5St3jlCh9Kk21Jm25cGj
krYMdLw+nezNqSU6YgiuOMBcfR2ZfHWGGjibIsPX3ZJCRP1XWnsb4Nevhgl7
bDSu8cBTtKAa3RyVG3+3j0ZqCmrd2Quc6joABWJT7+Ufx1V4XMRFq9qrmwvD
DGSvCXtPFwAPrEYPDTMkoXZebAZ6bARE7q6IBtK+OWVFz4n2GGDYQVMHotsD
hsSBKSzKppQXIhdx.ChgtTG.fwOZaM1c86ysjtktoWGhmbkssdWVlQ77y+vg
C+voS8RJKxuoQ1IWIfgITnN5yo8PnLoTV8nYzHRltwaBn6fX5L.lJw2A5w32
b6tq2XRDjAMCMBZHZD5Z2Qfac3Slsb3SQORJ6Pyn6.ai9Zq6.aqaKwUr1w0t
vlAmXzt0q1flvVU0XmZIjOyBZfw.ZKU6LlpaSUVHVtXPAQWnftnMX5lx.cL6
FKNTfzEJPKITf0EJHKUy1VWNBhbuYaeuYa2IS8dy19dy1tc496Ma6ESo6dy1
9dy19dy19dy19dy19dy19dy19dy19dy19dy19a3ls82Hsa5tpxT.3GDqHjKY
0vUMop.qsUKfLXDkWMy0bES9QuH+v4.ratLAv482f3yQ6TUsAoOLRcmMMQ1h
iiUVXQV+Mf5hVsSdydnE2uZDP+kF3P9fj5bnxPXce4lR+sgK5mxu+d6sS8V0
5pZSV0rilR6zCbyamdazqYPpAU.hXb+zcccXrKaGk3IzFJV9tqWQiaH5vSew
5cpI3sneb7tD+SeNJ8Yqsuv+tWzGrnVuS.0b1iXAnsd2SOkdxWVOHmrbftH9
QQD42FWE+qUyCKm7xsH.3jWF8RZ+1LMLFl55t3T279aRO8BB8aqIY88.GHiG
L.2kFrqpzFrmPmwxbXt.WqZ734fpK5Y2YMRkN.Vn+dusetHv9A5SR1p5txQ0
KD.MGanwz3TNT679+SYqna719g8xAP5XDE6K1vaqQKDrOJlCegAa+vf8egJX
YdC+A8PKeoiQhHZYt7RGnvbcW1aD+lJGXARf++S9sKdT7an432BGiOGLslzg
qpZgZa3P3DZLbN82jNDPZdrXhAnVUBakuipoTgB4qufmYjflavxNkW.7tV7a
5kE4rAYV62DSi2jDbJVpwUGB1cLlqccJuLtgYMzWk2rk+oIfN3PPmsInC15R
G.cSGvY6YCvr9nGp3mE2S0rHYYAWHDqE7lsG4vTstL4OaBuf4AuTcfW.yDbR
hNbRZ+TFEqihUVTHLYapo1OgNzxx6xeNWXGoCrSLAUBoglED3ZhWkNrd2KIu
xjeQ5XzDYBLRGalPC7dr0QqAYhWjNHjIdQT2qDFQ0xfCTGq.DHtr8b4OmKzA
0.5vlPOmniRgIzIH5PvwNl3MoiA9x4j2zeS3qFNoigehwdSnqfFHQqQXLhnm
VZSlv2Bcj7jaPdy9MI1TZFj5YDABr1iOO62jN1hHPS8lf57lfy8Moiu.XSDg
h7gLHNgL0aZPbxHRDZYJ2HTOcLkCMh9D7pgS.cblxD3DRGaD0PbCE4nVuZTU
cCCEjM5pEPARG6UH697V0MaxJgxXTot1E+ZtvlNVCXFgJniKjDSLqWUKphtd
SDS8lFTFxH3DP2wwm6XdPcTIEsxn4+ltZdL.sGgU6hkhX2tJsexlQPplZMW6
rhm01dsr8fU62HpTa01VozJ90bQGptQzOaVDQG4NSLbG7p4r.DYafYOvQsG6
j0l3xm8.LY87AOsblwLTBsl2VS7lfZgT.2dI5YygMEkQzU5eTjAH553VmqIb
+tNN1kxK1HuKsV+GlQdUHcmXdzreUvwuF.FxoQ8d2vZ9EXHmkg.cGYtJ2Tsf
k0Zz1hWRsFqcsFpcyFoc2MP65MNaYhQVqFLUH6.0dYsLD8u81tJ1h7Tpr85r
bJ0X4DquxIVaksWOEcWKEcTGE4o84Cus6jXsZBrVVxqkZlrcFvTpSxYUijin
9HmcsQN05hTKwx509yzp.mIVCjSq9GMlnYdxTL0Zcb5043rUHZVOiCpXzUML
NaXoREP0NXL5ZXS2ZSbJ0knQP3R0enNljznlCMBXUo1BMGuXp1QFc8CNwZGb
hVstFiwUU6POtX45ATCoqgpAvYKY0rV+ZGplZ88YJ.rbc7oMDpUs6YHHrbM5
oM.pUc4YH.rR82oODNPM2YHfqZs0oMzoU8z0eszMeDnQMyoM3qU4hMa.rQ8v
ogcGMqAtIU+ayFgtfO8Swq4ZMCBj.jKlXCbybslAqIrbyXSodG6CYpEUxO4k
Fa8ShcCnUS48qBLuisSp292e6+Gf551tt
-----------end_max5_patcher-----------

I still want to go through and find a nice balance between the downsampling, fft size, and resolution/latency.

I’m thinking being able to go up to at least 250Hz would be useful enough for most CV gestures while still keeping the nmf working “properly” and keeping processing time short and usable.

Then figuring out the best way to “upsample” it back up on the other side. Probably just keeping the buffer as is but using a (multi-point) interpolator at playback to smooth it in a manner better than something like line~.

1 Like

Here is a tweaked and updated version of the patch.

It samples the incoming CV at 1k Hz, so you get an effective resolution of 500 Hz, which ok enough for low audio rate gestures.

I messed with the FFT settings a bunch too, and 4096 256 4096 gives pretty good gesture separation and computes fast enough (this will be less of an issue once there’s multithreading).

I also reduced the @ranks down to just asking for 4 and then flatten it down to 3, which is probably more of a “real world” use case.

I also built a shit little CV listener so you can play the gestures back and have some idea of what’s going on.

At the moment I’m using play~'s internal interpolation as the “upsampling” to bring the gesture back into the CV world. Might be worth experimenting with that side of things too.

Things to improve:

  1. My FFT maths aren’t great, so I don’t know if there are better settings here for the corresponding sampling rate and the nmf-ing that it will go through.
  2. Having more intelligent buffer flattening and ordering. I remember @jamesbradbury working on something that let you group the ranks in terms of more musically relevant descriptors. It would also be good to re-rank/order them in a sensible way so the slower (or faster) ranks happen first.
  3. Figuring out a way to “smooth” the components so that each one doesn’t have a “wiggly” sound to them, even if the underlying gestures are flat.

----------begin_max5_patcher----------
7987.3oc6cs0iiibc94Y9UPHuvHYSak5dwZSdXhWm37vFajr.NHv1nAaI1cy
cXKJHQ0yLqgme6otPRQJdqDUUbjGqAXTKwqma0oNUUmyW8Wd6aV7P1Gi2uH3
6B9iAu4M+k29l2nOj5.uo32uYwKQebUZzd8ks3k386idJdwclykG+wb8wSyh
V+PzlmJOw1n7UOmr4o62EuJ27BXvvkf6BBYH0en5efjeO3OWbOaN7Rxlz3b8
aBc7fYGxKOJr3nIq0u0rG9oeEkU9NMWW9m1FadgKVT8ne3oUYoY6LGGrDCfB
F7tN+FrFEUbany89dZWz5j3M40I4Gd5wjzT8y69RZbggp53JzeBOe58jmPEk
itq1GCdKk2gPpnHL.QP.DHgntU.fCQ.dXHPvwg5mF.wIXBLLLjinbV+OaosQ
plmQb4c0wErcW11rc4IYaTWEXIsqGxg7r5xV4SRcQ+029V0G2YoM7l3OHMbZ
YBm+bxdsYa7twshE.n5OL9vVwvNshQsshIh9shuqtk79nWKOwu32oNUCxNXw
+h5iew+s5y3MqMGI3OOAozprWdQIlOULQVF7CI6yi2DjmErKd+gTISUJuj+V
dOQJs38oIahWkcvnoJY4Gy1juI5Ei0++Yb5qw4IqhFPdCIHhRFygRSW...QR
KP.FhnJ4tPcJLbLwu5s9Xzp39UIfNTI7E0t88I+rw7k5RatsA6yOrMY8O9oM
4OagTHTY1AQXj.BfTlRHDBmhIXGNRwndMA2m7zlnziFgk1aF9sfgkxojz3Wi
2sunMbw63MKh1ts1geSsaQIk9IiOmv6pNTxFyg.UGZW7qIk2Os5nQ6jxoboP
5vNiA0GYjEGeLYqi2s4PhlTLGTpuJHIslQYHJa6XrKzJvxSeTxqbVY9fQz+g
DBNJpUtmRyV89300o2EYai2jrodqgFmdc7iQxlM2W2tBhV144KMa67jUsj92
1kH0OkWxS6RVmsQQDMTCpCW95jlTTE2n97HynuhMQa63lkVHRYROmbujIOr+
gncJszCE94KOYdVVZySUceowOlWb5sIa1bhTLOaa+mbWxSOOv89Pl7juLzyV
el82eXi4r2KMHxuuz65wqKJMsnsayG+Gi1j7RTtz8kQEH8MUdx3MQRF848q1
kkl1feMm40NNyZoA9p3OjrV5Fvzw1wyHu7jskFQKpzxqSdJdedyikG8z9lGY
e9mLB8ZG5vCEMfuOO9ksoRtn4EzHpv5sVq6kqwwGLJwlt7j1J6xC.RGof.nz
gNn9U0gqOptUGDijQDHuAzod65Mzw985cpmONpNMzUXjkmU60uvShGjMiIKP
BS7F.wRFCxCgLf.JnXNVdPwRp6kLfYTxznOxS5mLZ06CdTx3iHffbrV.EFJi
ekhIjPDmJCjEKCVkx8foCiecHfTAa8Y6DNXT3RFQFIOifYZaHocClbIBGTOB
G1fBmhnJjgnpG43bIpxCdH.ZmSGf4OD33MsfmsvYXmNlASGrHQE+7LIY91Oa
kXAyvZ4gOb3PCswj4ZSfzUKJ+Hd3WShm8qhRi+bvuBF.UsUBHi2adoC5t5AC
hfi6Dhc1hL10jHKMSNnfOqhVTFiWnUVWc1YVHcbQE9rEU3qUqqPswkchqNMs
.gdvzpZRatNjWQevN2UHhXIFgoLLBFhE.NgI8g4inivnqIAjbjNe5yAqdM.a
Wu+bizhwFWxzeu+jtkLHnkgF002be3RZNwJohYRPvUe1uLAbtVKHKhHpwqqb
JJqO3U8yby53OVaZebhHxPO1IiHTUe+1Hj52vAziPpgw6jj.GmuG0nF5Yf9Z
lSc9tEM6yNraUolozfNnIitNdedxlpo+5Odzoo5BsR0LIp.ZAUnhJvuTAxFp
faHW+QEXKnB0f78lrP0EfU1EpfO7FUTZzMJUTRtdgJJYQ6rK7FUvNGMhurNK
YwwohPOJKTCB2J+ELtuoBajEbeZcxXmiFwW1ELasKX9zCdoKwur1EbasKJ67
0O8iXKUv7puyPakE82ORwAKWEP8Zou9dyJaceTd9tjGNjaBHp9xZdVq.ySoY
ODkVr9JUqOWGKPyaORbm4ZIKIxbIoXwZlSYmtZwlSn97BWs3pUZUR.6jrYd7
t6MKuU8kSuuf3m.WG+yqiV8YaVibhdnrDZ4mmSBF0Qd..4Kb2B9+O+Y4nCVB
GfMvDhYLD5IYkvbTZRIFew8m.W1W5fsON+gCO9X7N4vsu+wTYaqX0JvNjxio
R4m.FDtjeRZdHsfcjP.NXth4vjjAuL3+vv0A+ZsbX+hIm.LXt1F.S6H+W.dL
+WfnYIAXJ8tlsa+8RylCaGzJoXIrDcXk.GwJAXsUBxlTJ7uixAFpvrZXjaoA
iKSCFvszf4ZLMX1jojHtKYXFb0fZj0zVsZzzvKY5n6KOO31L0qyTVvHCUX2S
eJ+YoeimuK3wGy0QXtOf.DLY2OLyWdNZyl6p26QPzC6kCK8k30IQap+f6JQT
a2WbCeGijKRE8zfJ5W1kKYBDLZJ2bBGT204Wl46FgBscQAN646V12904Ddys
chJzZTuMt3pm93zgRR908Hi6IHy8p7TuxVtmwNpGzHDxZEXIgNkDrty.pIKb
YjyoIxtpSydJYkECrhJib9TNiQcTpiCqVUpQV1t+dJpYAW6UTNZB8rRT0It3
Vby2ha9VbyNJ.DyDjwoXuEAB9xWwcOjLK+TVxl.zHRGLYIS8Ot.GhvHBRk4X
E4PdHZoP9uvPJkJ.gH.18o+C7JIu50c+eWfI3ofUudWfj9WIGAgb.C5wPjqq
JA0QB9Fj4HEAP0XBLkOhiWm7NsXraEp.JiHHPBPOI7RsgdJTDBOjyUMiW1yB
8FKEQugf.vZY.GxoHARvBCUUNIsbkHZtdDNXzrHRSJp20m3ZXztmsEkomWJm
sDBngBpPv.BLmZYVNd9iHUbkzJ97kTgf4UTwtNJFDyRunR0wQcNoskXPSANB
ujYVB027YLbF8+XZVT9rWCH+SiVAHHQXaG2gLy7c3iT6GBFdN3lyBAoz.RFd
W9mryFpqFYgHuXPw9RYP0b09ZJx99rseJH+4X0TMjGHUVY5esQd9fnWiRRUc
8DrOMqpZ4GdtI6RRaFII235BVDxK9xC1UwD+zAYHOOlrpZ3l8J9oKlauXsVA
4wrEwlErB6GGZ3qPGZxwgpJQxjfjoLjfBAUH1CxKQ3nt0l4xb6mSkMRecJxI
CnebYkJQehoQJjz6l0hIce9iG1rINcBBIN2fuOLOrLUhgGaihtmMgzioGRVu
T5jR1qv1r8iV8scIqDlzYP1klGZ3Exrp.SmylcOsKqJ+NNKaJhVNQgdngWH7
5ogWdv5Cur0pw+UL9YB0GqF7vi3SSiykHYUVZZ.5ai18jjirRxTDeDOzCksE
Obbik6NAxlrYA0ZJbdyh3WdnXFmqNXkX12QxVl3ZpvWy+PVvGhiduJlVS7X6
Mw1lsINHJOPMZbY2DAffrGqOqYK6MFWrUw3RL0dWQLtpD5bNiwkyWbEZbivK
wp+QC4LBiDpvjshkszO15zuNr0GdhgeI603fuANEgONTOLCF0GPRC45XpjxC
RCRmjvwLlBtOfNiwvqm69xLM2lNj4DuMu1rvqr40dDTV4gfUowQ6ra9rglwV
QDWhqL7j.hlxPgK+qgpmKI0qARV6dYuq2+fkymsY5M3DOD5Gidc324nPIxNy
GeJStR7E2ZDmAuqZEMCd2wUzL3cpHwdJJYS.bo4GGW5Df4.cs5l1Mtihghw3
dXHqT300PVOillxgiEJ6Bjfo.ZH0L+2JfRxWFkTvUyZqaaHTz1qBLxXF4kPn
Hh+VJDptDNl7LNj6gPnHzqmY83L70KHKg8XC4kVYD70hMjjKF2JpqDs.JLwk
5i0BgLbf35A0NiRoyZ3zcIqvlI32KCml.+5X3zNR9GpatBMaF.dQfi4e0Kv0
tErSPCEkEqhycRhYi5E35b1hw0jL9wDj9UuIn0qUXg3ND6sUGbDzlaVWcPyz
ejdNS.Rwhu6CzlCeVS+gmlBDavXthpJ.6MLlCdFEW20SslIrE7Sv9DHXDgVB
VR5TYyejgsEdmvmHGkfZKU3SYQnsX1D1mnqVnsX+mf5SzRxVLdi6S6BtsMRB
g9lJvewoBhsZD50.JZURt9iJrBYJ8Y0ByBuFPWM8C2JT2idMf2cLhuoBjUcp
1ldy1s1TKsfuzzFteZC5GZy19e8pgrsN3f9DzasF2F8oudpsw.vEWC37Jwmx
BB8Z.Kj0TgMdYIdE4csseOB02TwWd6BaQmZuhyqXtsZDuREVOxE90.5Ti8o0
I1VemHuRE11gZnmIBarMwLOSD3yvnn1E9Rx5sYIaxKl3GDVm+aEXSnZ0NJ+k
GIczWZbNGYa+egdEE9IWCQj.EWCQmUMib1MCh9Bbus0O2PP3bCjIom4W8Hv1
bXcR1OpgWl6+uh2b33z3VBDNcS401zo6aMW5bO7tbhiqsOZiDDHLTuicCwbD
S+M4WnzS7zUbeUa52DJQ.zax1DFhSn5uEhvTrdCosia83t8sPs4fa1kvEg.R
O6W3lasqcl6B06IaI2XQi66zMi6NW6o6pYrrSdksATFkWSohHo9ynKisJk5O
bXUjsJxFpBBmBwZ4HRfCEluQkCrVzRrrXebZ7JEq23IvQxKVqLgLNxnHBA.H
o8CnN.KIMq+8ai2D7ip7y6GieI4grz0MWrA0JGY1jyS1nf7p3JcIVffLCoVZ
Pf3gDbac4YY1Vo5Fvx8LrhZZ6FVYwFxAzvPy25jnO01kQAFIroJvLey7zlES
2FhyFxCAf.4BMqHnDtlzBIHAWynTVCUQzpUxGdi6GqTfZgHojGU9AHcX8IM9
d4zamGJEGFYJ.FFZ9l7IoJPNXy.J7Pit2uOMYc7t+WEroMgFe57powGdldeI
5irZ3x1XjZuM+J28uAUjceFHmvhRKhwLHLMKpZeyKZkMOBmSVN1ywMprOHjn
t4qxiDgBmKRuU5n5GcqK7kVyiXo2r1eaDOh7PUu9204259V+ap3.Z2R87sHN
Eq3NCqYs9uVrVR4DVLGVxlrG4WmdHtdVILLk2UuJPNiX5lrhIDpCAmQlXW1G
1bQbwQZmV4SAOybw2+onKiI.HYbAFW4bLFYZiifxw6OeLwucWb7ExEZsftf9
LA5pBla9Xf+u3zzrObQbPnLndtwKILDp8uSkZFZ2AoWCSSQpKD.B8Mid3kGh
28akiA3hXSUyCf1biJCgfp4XXcu6dkI1YBHTwESxuKivXXQQSDdQzzRkj.OR
bVeoY7i7s8ZuSFGAGBzDs.SX.Qw3H3vNLP+xn1+JGNvU.VvPPlMUPz6eqcrK
yfISYqHB0AjYCGAxruap6IQ8v0m.+JChU3DTq8Zn1XuxTYbP+aEUNmoOhyec
yufBDpi2RQ2Fi+l5dNUEt9MDl94F1cm8.cOQZaifx95v.fraRMP26rMPI.xw
6yVVrk2YTkbQaMoq1x6jNYm487tdTyOEUMGLcuigEVTrGgs8egb09IWniUw8
vq40vztAaCyBaaPCmx9aPG9rDC2D9N22R9eMfZwVcHFPawzNywkfMa9sznCT
7NKTyPApEGyDCqlocxwjN3X5Xp4x+6ZAfL3w3cxg8XQqZJr8FAHk3nMxCAYt
ZU+PviVvrjPbKlU.F1.29V0nQi.y.lmNcqwLZST5m1qwrguAZiW7NhBMzUdw
oz4QeWaa55y1n1Is6Fm6JabHrWdtVIhcl7szPQ9hKevuFs6jA6WdFIAm7h7B
quIczkjPgLjpgCJTCWD.PjJLntbK2plbPRIkOT5RvE0lfNXHNvgBbu4F8yiY
6dIRyLrFChrZziCLNxWiRODm8X6s7mizjTb+T2h3FWlTZmmDk1lEZbUuHEfM
Ddc8LJrPON57ZWx9my1kaA4TJw.us97iOow11m6kW+4rrWF1yRgsUWi5gAcj
iELYl1ocgKC9ehWksacv2+Gl9drawFXmFoMfLhG2Ucon4XS0UswRN.+xKgv3
1V.iEyr8CBjbaSz81lnq22Lvf21LvtF2LvlssOWU+fAOjrMKMZ2napGBSZ3R
J1J9Dd.DBPWIHFTkrYebtA4dGe6fAIzN+EZD39Hv3n2ubP9.4PfvqLgkI5I3
4reL6Gyn4D6xrZi1iXF9krqkV1F9Ye+Eects+Za5bC8YQUgvWCTADd4Tws74
9V9beKetukO22xm6a4y8s749V9beKetukO22xm6a4y8s749V9beKetukO22x
m6a4yc0DUF+yqiVMT9iPKVVMldgbIU6PhmyhY20Z1tvgKX8NypUCAA6keay5
8AePFK1ypMPu+zhu+O7mJEYcts4M.l4ZxOFnAA6oit30Ob3gGRi2KM8q+36V
TXt19RgHxB2sx0web6tf+gu4QXv2Ff9GC9UGSe6t1nr6amzPuEsqywAZEpme
oIMDA33DZnuD3Pi7xCmJfDnd46wgFdD6nb1f47jAqQpO0YVcFVmQ.NJccgzI
km1mroc6nbwPssb+X.cvBNwXyRvlpuf6H8IDMOI2mpo4msf8LdkcWEzzeKx8
IOsQkCCWh9ru1maTI1VpLFSYmyi2Fk.0l1bhqRXSw7kftnfReQA58OrA3VTQ
NSYZH2w9YsMsj6HirIimhtEYl8Q2lAKLTqKEGlUOHa2mkBETmoYV8rloSIjI
weTY7iRBQGIm0wV2HWLVqfZojYyTDxghmjm9bPUzymofwz1fPzlNDlixxWD3
JPtjG.kMcx1JaLo9y3lGEMfBINp8CVLVEMXnqiMmz+1wMcB.CVFdk7twB.hm
TSCbGLOaTmGdoRKqxljspLyZT9NjtzhT52ZCeL1w8Pjm8jZhjGW+AzUMqyJ2
tp8uoyKJNWWZNpdBGp.zvlz.BAzpwwp9JqigEGZUOetjS+k+xwUxHpoQJh5n
pLi.WLeZxgBBGSIlr+FWxYNo4HAOa7mxSaTTjE7HR+GB2QQhSHyaormOX2IE
MHcthjdMoHK3QGqHQz4UQ9b1qCN+.ErooGR5jp6uNBJBQFF.BNcGYy1oKUUm
.Gm2UWhXERFZerJw3sna3BaB9jp8YZGCvHzlZety+37RDdnYY.axP0hAbSnN
Z.2jvwGGwEWuf8OoIEAE6roFicoyLV6x6aJyshZIJLq6RWkLYMee6iOtHGvQ
kVk9CMo4OELl3ZkbjeqixiNKQHYxhvZdThykjSQYG9GqkvJSPX9Ao2Ik5npw
wq4IqdeiIvu6jeTnSkU8xOQCCMIZP6CoxMnZGqQtpNfpfRBMimuH5XvXUmeZ
zCwomrrCpxVnxpHWmawOsnS8TYQlFoVr406hdpmkxo+nwLk58cC9Ec8A2PQt
6PZb8RLSW1SMymChNoc.5rkDyuy5CAbo6Sir7yAEBQ09LoESdYwHxAgNx6CZ
bou6m.9r2GWw2i6vkBMH1OmOkYgnqEODLk0G6m1enZPmppgrpUvioGRVuTpN
eMI9CK+o8CvQrhURvLu6rRDU.d4gBOwdQb57v2QcMMjPniRckCbUwNCmo0Fz
zqaftwBV5cVYYndYAp9.tK3C6NlLum6BlxYxF4PDFIf.HUiz.E6ZEX5EKf3y
TwfiVF7ajL8Kay1GeI0CNqfy4lQb.7X8fWsEQ605AWUYoCMPKZX+EDtqhjFw
tUP38VP3XCD9fY3aED9sBB+VAgOs53cavCwwaGqJmgnZkuK4hpq4dJdUNsEM
D2aUGzius97ucxs2ketd700u+tw840meuSqwpw7+chOPjAOBwFPoDWDzMEcZ
sLzkiPKbFZiCwQcJZoiwAbNZmCxQbRNpixQcVNhCywcZNpiSKbdZiCzywI5.
NRG0Y5vNTG1o5vNVGz4ZeNX61IaONZsxYa2NbO0CxoNdac9AGcRauv+le+u6
e+zS10.OD5oUHDax8stbC2azliClB8MqcVApBMK1oFIP9kJ7Z060I8fsKYSt
NQfC9wsoI4pIs3OsvdooZUuTUgFkQDUPFWG4i0nczMbmcsVjfEe4EcpbCO.V
kdVCIrJxAQSn2TpKL8FP3vwWARmu8yVKW5zFRzZA+cbCTNbzVnMVvkurhyUe
ZUZ7mCBCAVKVMN5XLO6niCtpjii0YgxdKfF.NlgzC5kCpWD3BQI0yhRl3uM5
zndBXagzChvKUUCHASAzPp.y6LsrmhvDMfvjaqcYyUAvyh1SJa9wjcHbIVG0
Fwi5ErDmPi3wCWow5wNFPI0CXI0gbs4vQZAbRsE2cgZPcHzagdP7VaOuCffP
LQmWb1t0lwUCmjkxrP5jgobv7R4vyfx43qJg9YS5vqFoN3bH8S1GnmEJrm1W
8zXj+kfB4mqLDNyT343TXbcbsS1.CiFIWzNcxEmzbPLbo71U47dJ5f3SvZb6
t3swaVGreTLKDFB0A5.QhvPTw1iAFtjxgDDCKfL8RcdW.G4AHbjdkfDnxPBd
PZMG7h7G6CVF7x9f2sMZ8ZcZfHsBU+uAo10JGObc8bNJ.0wTxet.xIg.BSkS
QPy7ghoCoAn8pAPcqAHinApmIO8VIP9WAcXyOkkrIfLlvjq.WpSDlDEHKvgX
nfFZ1PT5BD2OGqYZO3ZKYbYYyjmcdDd5U1N3cEYFwyO+cu7x2se+YAfqDv3x
Kz4Z6AGVdUkuStUPc5nY5m4If9GHSuChwNGeLvfrdqAtLMzc0mhHnI6o8oLB
5ZYDZtQD3N6ckyz8tpvHohC4EzAlgtNQGXlsPhqZEhO4BaO3DmhVuVSZJOWM
G6TGC4ysjF3bHMeAmwTaAUYkwm2nBhsTA0q.LcaafdlcCuSEHaoBjOoBrsTA
wWfsssZDD4FXaeCrs6UodCrsuA119yz8FXaeCrsuA11C5F8FXaasuzafs8nl
B2.a6afs8Mv19FXaeCrsuA11WMfs8WIvMceUYJ.7c.oL6H7pNPAUVT60l0WF
bdUdcGUKJWLkhIeazl3TmSr6xNrYsovMJAYmGNNQwCCnz5qqsiyNBmrwZPVU
GwUPsSIrOzQ3WsFA5Q3UnrSRaNTcZ4zX4nSPYHM8yk2+nEerAzibGZ5AlTM6
6b3XPAmdOLN2CQbY.3BQHmebelD6LbnHzNjgzkLdEvMr4kG+bv6LSvaEdb7t
cw6+zl7mCV8p76Qade.I3cJlSpmTKTcv6d7w78w55AYe.AHXAHJS+EKDlxF1
.ovjSqR2WJj4JYoXdwLrRjLYPTen.TCBgbY37xfRvBSULvftBhw8IRln30lt
IdNo4xa1ox1TCUgFPK.XmS7z3mhV8opA42XGBHZ06eR6juGu9ritZ6B5CZO+
N0GCdIZB0vU+Saxj7SZxp22ux.WyfnEP6ftqiuzSuIDvzAxoJ.NqEBTrX1z2
TcGDPB7l91J8s.6A8Mb9z2PBUKU4zVH0xMs+nZeNwCZexbp8wF26vVHzxMs+
3Zeez1GOEsuZ3uGFBOoElJDrq.fgSCFH6Xz.gV.EOJJsbFWTgg5EtkiD0BZA
6Jz+GhOGFrVn00YR8E1L6vL77o4tQAm2NihX0ykm9xZDww70nkz012DiXwaB
ibvap7gL3aBxqmrJmjYayvqFz9UCunWsZeH4XlH0Wl23.wKUXAO5hWDiNSuH
QnEuHJ0EuItEuIM4bzz7kj0ayjt22W1KqA9GQBTqtY6+btftgiQ2LWHgX1Jg
.8KgvXy13DtsDBKB69btt8nULBDhshS3r1bBq.V1ZcNW6TSXS6PHf6BsuMcR
bB8bpLqPCSwgcn84FDTcfyAC481tp84tT90l9KDDWHYQVzBFBbQO81z+fZOg
pLcXm7KxF21HWvQ130F5hd7r483j9vspIMzl1YDHsWursO2kR2PaBhzEsWH1
Xb4BaKhMpBbnKdS13bsd1xO82Dd13IabfRb1aBZiasK9MYkQtK5t0FCB81J6
kOlLgEROmnmvV28yE+lrwEAA5p2Dzl2D7ReS1zUG1EA5qeHixSHW8lFkmbhE
gUdXchzyFOrPmzdBNa7Dvl34bAOgrwGwILtiFLkUuZDq6Im5xFQJZ1hWFYi+
JDanvKEEKZnII.nBV0utTZyFuAbmHErIxNhKlVolUgXeuIhqdSiZC4DdBXa+
3WZedPaZRpv9uK+MMaQL.YmgW6p03a85F30b6oixrejvL6+sPNQrTmxJm7aD
U2ZkwLMZU+5RYGpsiL9hUQDar6bQ2cvYKXAHdtb7CQrKehEHgHyVjFq+IV.y
b6DK.QVEPkSzFVsFQtXPWPqT7US5WOpih4Ylh5PcT3Pn84tXJ2lYewECN3Tt
uOWKXm7trZ4e3N4UgrclzQW7qBd9SZuiBo0t2M7jnVbTn7PfswMzTaZVz9S1
2LTujS1mLNY+wn89hQ+6GFmtOXnqygSfTACyNBTJbRAe7Wdae0NYYERzMrIL
EHSXhvkvDgJgtKOx9KMxdJKxxp33t21eMozrdTpa40ADHzsBXJvdvEA4AmAb
GbwPcfUlWmVRtSqvXmHrFLMHMvYlX8T7HVBeASG5BlNrEbwMHZCOAi1vnOHI
3hokFEzb2jwYWR51B0.SAlAbBCWCNArwkjEPHfSHqFPEf6zES0+yYCG.SDJ.
ln2t4nOtlsNrSKVu79sv5ZrR5+hsrZW59cSUSsb8cEAVur7slBspT7cDEVuj
6sl.spL6cDA1nb5smBGoD5cDw0rT4sl5rp73Gtz3ubFnUIvaM4aU0eewDXqx
a2B+NVVR6Spb1uXF5H+LrD+jXF4PflfDXBCHJhYjCOwX4KlZJOZ6PLyIiJ4G
hxyB9A0l62ho79MCLumcGx29We6+O3tngB.
-----------end_max5_patcher-----------

Ok, here’s an experiment to try to use fluid.nmffilter~ to create real-time CV decomposition based on pre-trained CV examples.

It kind of works, but not really.

At first I was getting nothing at all really, but then I remember that the input CV I was testing it against was downsampled. In adding that in before fluid.nmffilter~ I get better results, but not really. Perhaps it could be because the input is being downsampled, but still contains 44100 samples a second no matter what (which the buffer I trained it on did not).

I’m wondering if it would mean wrapping fluid.nmffilter~ in a poly~ and manaully downsampling the whole thing would help.

For now here is my initial test:


----------begin_max5_patcher----------
8442.3oc6cs9iiibb+y69WAg7AC6KyozOYy9R.xFeNw4CWrQ7A3ffyFCnjnl
g2IIJHQM6tmgm+1S+fjhuZxlOWsKzBrRZ3yppt5pqp6p90+829lEqh9Pv4EN
eqyO57l272e6adi5PxC7lj+9MK16+g067OqtrEGBdezpeZwC5SEG7gX0gOG9
zqoGL5R7tf33OdLP+fkm7f+tEN+sjKHbi5dDOmugQSuqCW1GdPbepWCL4fG8
iW+b3gmd7Tv5X8SiCbWBdP7EU9EFJ+DgVBxd5hGjlBzOI4A+Gu8sxOdXX73l
n2e3r+9iu5.A.Pu3VTsbKpctkPjeAAjIfcWGseevg3J7KcoyeNveWb39.mu6
u3rIPbgGiNGFGFc3eK8p2EdPb7KGhKvHmBNKdh9xq7wZuhsQGh25uNHeicdA
Ul3UdgmC+E0EhjM4MnsHu1C96UW6h+qfcuDDGt1egYoKDPU5OLOuk.HBi3P.
j5hnRYLPdFpqQQMnGh5yqiNFj0QIGC6x6plACpzE77bKS5PrhzUeMhztgdEq
trcavoWcV4eVXIwTmhs6h7EZXhK2+vS012v0qqVBP5dCdP1RNiC.XQmEI+60
lMATO398AmO6+TPE1GtzHOWOax5ZCstqOVo76PASfA.yZk3tRrTFbd0JMS6c
1VKA4cqP6vtR6HO57R66uHFX37tvMAmL2A3AScBxLuuVXxdierewt5mDFwiC
N8XvA+U6TOsT69mEjb7G2UXbCq8bfgWRq0XuKTKhnipICgMOwCoQoiQqgTuE
VHMLLJ3o89JV1sU+J7bwkkEsZgAMdicrc2kvMKOre61vcwxAQHNuSMNhdzDm
2scarnEOVP6mcH.tqvE.W0OZy6qGZ6W0J0QvNOFTR+NBSYcl21POzQbnGwPp
aTJPcZ.HpaWss.4FLsP8Zavnjit5o0Q6hNoebfkX.j6Ben1eAy8vRtMTWuum
N4uILP6v4URPnisS87dLUDsPSU0bEpOgcmdK8DxnbzC49nwaI8N3dtHhKfvI
.BjPj2J.vfHfv7EPXIyS8z.HFASfdddLDk4Z9YKTSzlNPLPlSzEtfKwQ4ka0
eUGOEcL5jzsd80PGOaAwOGdVo70mATH7t1wUqTykdUUZr.Va1+RGJx+kT55W
8GkTVANvYw+h7ie0+i7yfCazGw4uMhwmQV578gmiCN3DG4Hh3RLh74E1EeEg
MOwWQPJmWYPghuHlYnHpJF.C0AXwSCfe5CR4ny43KGC27Ce7P7y8IxcLpyJX
I7tG.VVEq0.TJ7XCNkvuILrncHbWvKAmNmzML4peyB+iGyc32j6VjRoeRabw
6grCEdPeHP1gNE7RX58SyNp+IAyEK3rKmzs8evkr35iIR3C3gKgYQenZuRHI
UKiTmQzyPqMpZ.SO8UwkxqC0GtD0WDubNrJsBsKZ8OGrIO8tP397gvC4msgB
mdSvVeQmhGyqiCQKq87ocVp8jYJ8+6mBktOjbIOcJbSzAIQTnYPd3zWmPOP4
f.jlmYTWwA+i0byBkMgLwvIOKXxKmW4eR1Jk3KHJ8jwQQ6Jdpr6aWv13jSeL
7vgRRw3nilO4ovmdtg6cUj3j6a5YqNy4GubPe1GEJDwOlZ67504uaWRe2hO9
O3eHT3NafbVnTrKH6jZ+ge975SQ61Ufe0m4kZNyFgB95f2GtQXFH+nbxyHt7
vioJQKxZk2D9Tv43hGK1+oyEORVTI4NzkUIcfeLNX+wcBtn3ETXxWy2aMuUt
BGuQOCKMirw9mhc.Bi5.07UBxeUlcUz3TVZzkQiSEPRbmHYPWP.prMOSSdwa
Rs5mXIYBjM8UV.5qr.w0dU.3KccgLOnKfC4TLCKNHeIcVkLEFirz3j9q+Yms
B5reBnrI2pyBHnH1bo.RDaN2ihIDODiJbAFKbykxlYUmFDPxIy90FENWCwrP
v8UDUtCTTgQdKcIhHBbIXWkFkPKBSrPTglGQUryJGXihJcvqNKBkgbXRNY19
CzJ6O.8WDnE8xlIIyWakFjIIR1TC0SKxXW0zfcKY1YfBD1.EH00S5VR7bds+
tfWc9FnCTpO6PZaz71DXls83ZmY55FGChf2P1oiDAE7pzaQgOddCRXgMJrv1
ncU6PZ5YM71S6xSobMDwU1LwzYcqDwUspV.uaH4k+6Gj4J7.8nFQ3KwHL0Ei
fdXNfQbE1vtg7QRDoyGe0Y8KNXKcTpte0nySH3.cJfokjttVH0HinTSQms6S
jQ91rpCvF9VOyJ3rOaRWI2YRm.x7AupnrCaB9vXqXoogEFD.3g0vSHT4v5VI
A.CUBbc9djQMXHPeEoJOe8hlyQWNsNU2HMdbmhj8lfywgGxl9qe7ZeD4EZUS
SmoBfkTgLhvIiJRe3sSEtSIU3ZIUHcbWLF6DQE1pWjp.McTA7SsdgRPaUeD7
TRErtnWLYTg0Zm3IT6jhskJlR8BouoVQE3orOBF0kVjohJP1REtSorPMHE1F
qVfolJP1pcBmRpvFamT2oVVXidQZmoZc74s4WEP0Jku4Q8Ja8neb7ovUWh0N
DkeYM6zJv7ztnU96RVekr0mqlEn4sWItNtVxBhLVPJlVsXyYxJo24tUSqgNs
R92nOg7yQLYPC9kM9qqKoDgcNyUyVBbc1QQnoeN8K3++7qx7lE1mk5uyYhMV
mgtDhZdUItSPF5ZJEvNGDqy+ZQ31OtcmnuUfbEX6TBgA6dBgQbAKUoMIbIqT
ZcHzPmwRT.uz4+Ty0N+Nkb3ryuQzxFcJvYazImCQu+21XgJzRZx.QyTdxf4J
oFDsbxJ8.iYFSpY2nSmeTnOc4XGUeP0q+.ZR+IYIr30n+.w2SNlxIGCkmq5e
tmeLiU9w.tmeL2h4GygHoDY7xRlFWlnBoPcOlRVFaTVeZp2MT5wH7g3zSeL9
YgcimevY61Xkerkx.emm8Ob3g7id33u5rH.l8AaB8Oj+AW2PucLyRfEWUJCV
rZbAULanpkDXJY.IUBLkuDQl3VnFmHbwXkCSuCoK1oOmmIbameMktyjEvb1S
uc5P1l8kcHylpNbY5omoKWTOlziDqVENID5Vw6QBsEmGGUOm2EJFpdWzSgq6
9jD.Q3ty35vtnBumKy3tz6dMW1qYNySGTktT2xFuke2u469Me2u4g4.Bt+qD
udFxXT774.xDjkK+TT3AGT+xSZLruo.DlrzU9OFG6gvHBRlLYIIWtGZIW7OO
OJkxAdH.9lIhB0v+O3ncdxY8KO3Hni0hHHDALnhgHVUtBxi37UH8QRbfpvLa
JdDWuNwc1ZralSkF5.aBntDNARzPNgn0PMmLb9LGFWg0nnOYTDoXPPFWuhN2
MGBvJ4DCxnHNh654IKtRZ5RVTbgK9DpaNVZTPduyneMzdvbWBATONkycAbLi
9oHwGmCIU+K8AOvsijpgwFRwDm0uzn.pdPwo5Te302gZw53gbg5BqDd6TbH+
SsTZHMURHP.q+0gkWUi2dt5YD4FJi+SUfDt2E+wQQGxcf5P00myCMyJTEWFv
hhruK53GcheNPNUCwNB8mH0ecPbdG+W7C2IGPy47tnrhju44lT9f+oKB2P1F
tNKDPjIwaumMNrN5Tl17ELwoXbytCO2VwprzxCSWDOTcQrd8vv2PFzDwgJqc
xPmvVsq0REuwGf49ZBNHQH4gucjU+xNQmzlGZr.ReTQBwF0vm.JIjUUPAZtp
xzywaub3PvtFERxKyrPhNlpQLFJMmDtUFiTCdTBiTZXorkxxMsVSMJu7bGS4
EWmgCPf6MU2tmNEkkeG8nim2nNuELhRFQg2R0r7lK6aV.ot.iqFLuuJQ5X.S
hOlbCUdfqi1syA809mdRvLsq57PKpPLugIgRbThYSzdjbmokETqnv4MKB1uJ
YFmyNXlXdp8jMMi1jtuF+9Hm2G3+yReZWkjgaJeaiND33G6HiFWLLgCvIZa9
YMaoQebw8zG29mnCIt3RzEcWhKtxTB8SuKtisxcuGyUl1jX4+ndLWhKwSB4a
IKz4m655MOwv6idIv4qf8DQVH8dpjpSfi8TAV3dCY9M1Ymyt9OhMCMpZjXcz
Dr4FLMF5zb65MYSysd.aF4Sx7Z2B7qrxY8t.+SV4Xb5256nGvViUBJJTGrEw
lEJAOORpWbDbwihQWebUOmO69a1OYBs0SnAib6X24pPwumBEx.0Tt8jIUh3z
4cYqnoy6tthlNuS5I1S9gGbfK0+w0kNAnOPcqt4vBfkBGXrGIgi4dCMQHCtq
IEzaghHTLOwveDLEP8n5Y7VhcReJTJmPWnH8eYKQzpqvKRq97EjKTjA3TecB
Hc9D6wtcvirAaqmz6YzGxIKgFzgtkL8GKEQsnEoBgrIoT+8Eutbo.x0tddCM
8Yib3zD3nJvv.3WBgSOexebumxGO81UkK5KbAtxrPqFELJecGn7UCh83ubms
Xb+G6UOMiIhnufUAGi0JDiFnX1Ceqs5f5o+XWOl.j1mDD7PirUKlt8.eNy4r
QewctjpT.Oe3N2jTqYbaQTJ7Th5ZbOKQHFUFxMcjgsEdGeJA1JN0VpXJkEd1
BuV3oDLm7rEzd3zoDT.sEdsXSodAy1NIdvolJvexoBhssHSpdg0PSHYpoBqf
WqorZgc8tYfrRqfoQ5s.vY5RlZp.Y0fpUo2nSaz0RK3SMsgMSavog1rc72IU
Q1VCbP9TRE1BniSosdps9.v32BPrIYJkED5vAwvQhJrwJKYJ8MjX63dD5TSE
e50KrEhMmTPRFyrsEYRoBqibgcK.Ft3oT6DaqsSzjRE1Nfp2DSD1nahcmXh.
2AkhbW39vMGiBODmLwOHrJU0RPUP4BRj9WSHoi9TCwzHaG+yaRgRXxsfGIP9
sf2YYyHmcyf3Tgwz1ZmC2.PUU.YRLL+pWA1lKaBi9AE7x73+cvgKWmF2Tfvo
dJO2lNso0bo1cw6zINN2NoMhSfPO0d1MDyPtpeI9AkVxRWx8ksseSnDNPsMa
SbQLBU8KODlhU6Ts0bqW2uu4xsGb89DN2CPLrigqu051atSZdKscai4Etuxa
Y20t1SOjSY4j3JqBnLRqlhFhv7Oi5T1xZT+9Kq8ssgTtfL58N7vCRjjJHSDg
4HnRDgxjyHlGAWUDUd+imCHPFWdCdbJgwT+hf3LUSD0sz8ZulTlzrAkoNzvV
TcxKSIxiAndd5eUKCWVcxkJdYxqWWCU5eoeZyh1TNwo+50hKnfLAKa.UBBRJ
cJ6dIOV4FxfcA6Ke6LOAKokK.nmm9WhmjrDwJe+EtQBiBwpKGwwBMAstDD3V
yKNOZaIrw8mNFbv4GjIq4ODrObUztMEW5qyBBcsTRUjRQhmsh+ftLj1JfG..
IIuuIsS2OedW3lfS+uRXSy1Ne4ndUpuT3iIld26+A2b3xVusSjtsfCxHaSFF
JwhBKAEt1Zzb08AyLDwR5ROOBmRKGq0sjBEewXPHd99YRSmDJbtH8Joi5zz1
NFFtyY9M0zY0e0h4WlmbT+Gp8W0eqeV4GP0dpcWinLVw0AsYU6eNesDxILeN
zj0YOxua2kf742PyTdcC+AYtD8XxYLAWdH3LxDmhd+gAwEWocZlME7LyEe2G
8GFS.PB+A0lxYXLR2GGAEw6OeLwe3TPv.4BUqfp16z9ZH8bb9Xf+ufc6hdu8
bPdTP8GU3fJkC.dsN1qvUMl1RJzCpFCfJZ8nyBidY+pfS+AgaeCpgR18.nT2
nBWHnJtAl259jxDmzNDJ4B6iptazuIOucIttXdRuKVR.Xh1N9rzO6JeOssdl
3dNfAApKmiIt.dR3mL33o69ENbfKArflgL6GLsay.wcd2JhxIpM80Z1sYvjV
fMaz3w0kfekVpBohHlEuuaQSTBZIpDSWEvUlNl9JN+0LF+UO990A1EjfEcrJ
swUw0uQXCox.6dpHP2a4NnD.08cPoDLvmHzoQPwvsX.PLPpBC7mhMfq9tW3I
LnNtaFd51YFuZy7TrY3YnY9I+r4fwx13LPcydU5Dvn.S8pZ1BMAMwF303bXZ
mU3YWsH0VmagQtdU0rmQCW+qNzNa3h612cHQLfVgamS6VJzAJ3TaMyo+2n.f
Vq.f1dyMjipH.b4szbSFOAfv4wfShvd5Xu5tu4kjzqlBoUGWlLm8pW4rsUWv
z.5YsbNpubNwCWgy4fVT06SGaS6Yl9G728wyJLa3qfcq8lR6sU7Zb9zaFshm
aa55Ui7bgZDqnW28t0lTcjZ1TnmKTUEOjTx7E+SkB1uQutM59BsQuWR4egHI
bu3kmei+ndIkfjSuxq6gnaiNs2WI2bMKPk.JoL9RtL9S..Qxfu5z8yKycdJD
DYVziMDG4K96tDDss5V9yUofPb+T8h3BWlPxDG5uqpPqvUsWHWJHSp6YjnXc
Mt7bWx4miNEaA4j1tCda94GuWw1Zx7xK+RTz9NaYAS5pkkDEh5h3wENiaAuv
kN+4f0Qm137c+kE1ss5RQyytpaxVbmBoMftZGsfyzVCVjeW2FlIcMHPVJjEW
UCnUOkuuI5deSzcb1Lvf22LvtE2LvlssOW43fNqBOFsy+jSOwfJTuqn9j8Mc
Rxd6G+1A.BxjMmCh0H2aaaGLlq99diCNHtZf.tB8suBFNpMLGD8FTXo8dpmp
Q7QYqXd90hZdm9s28MH53rDCFUow+y3s8WaSma3TVTUH7s.U.gCmJtmO22ym
664y88749d9beOetumO22ym664y88749d9beOetumO22ym664y88749d9beO
etylnxfeYi+5r7GI+J510Uullr9atpEmkjsqGNhqMqoEr9jd0pg.myhecXyY
m2K7E6Y4Fn2ecw28W9qohrZ217Vr5xpU6BNKzXyez7hhlyIL882V1ynWNOch
x.0vVOcVV45fOb7jyu4q1Bc9ZGzu04atl910sQYa8RaC5b9Ckr5DbURNPyv4
7QLgFLk.GJretyoBnam6BPfpkuG6oYwoHqsGRpOAoiaha6kmYAyWh7p1Vt25
PAcLcLPcNU+zprDrtvKXyWx8I6ZZNq9NG9zAY9DzXV52WlUa+dRJiFS8OOHS
WtcBGTECN2wz2j2y9nDnRskMyInKxI0VjiZ+Cq070MIMsuZAyYg9FqSZP5bJ
7hRxgJcm3Z1aqmt7yVOAtQmdUHTPsopWqJNutbN6Zh5TTHfqKmyxmWN0Jdzo
VjLmhjhGJe9zVDL9qNeCrOBFDnKBFXuDL5NNDhRug3Nm8hfhtNQGEclje0V8
Mnulq8mT+csoqIuy8c.4663Ql0tNNfFJCuJ6+E0xv0WZK31YXciND2VuA7HN
dXZ1jbTlYVcKObw8rg0itbpRo+3nmjSjbWqForcuoQwAtzlSfpVZmyhsSNRX
nUC8UqTvqqMnXcZ.g.pVzVqBqQzU0e8utyMxDXWcoIogDQ08KQz4qJyhanpu
MxfctCIlRzI7MNkylsQgEVZ8886WksS5bE.jxnH0WD17ESUbOppaBsmcD+bq
gD04YBHkQm+Fxmidok4GnxVzVAVkzy1T8nkz1J6OR2ltTYcBbcdWGSDqPPTm
CjIFefMUBcseUaPId8zaiDUEVak4AcjKQ3W6SDFjNW66XcpqlD1MgN40KX2l
ZL2d6XkUk5Wxbqj347jLWYpknPutK0UxjMY6qnwfyAwB1Lo789wJI9QA0fzG
4ZQria7i8KppaVRJdGYqyBreyibpoUc0BPAipv78BqSxF1rNG67WErqP0aIq
EmhIY.QkII.U9BhYOX8gtR3UZYzUq8CM9CUI9VnE7zkcA4qQqEuDGt9mKP80
r0GtvWtnxaN4+jQcdZ1JdHK9gLcqXUFJ+zhVaynDO8zEj3Nt4FM2LEk5xxOt
JggUqNH0ySmNGUOjLCrxcrDQ83Y9TKEd0Ig8ka+iKZsgznEnNO0coSjYRz3.
uYbB3i94fL9tt0NDz0oVHUAApw1eVaNL0m0G6mNeIraSc.Y.CKDtKHqCx1cW
B2rTnu7RXv6W9SmanmhaxpLnmEd2T.V.NKqSVM00jsSxRmCZMkQqoTWYfIv6
.S7rd7aGUGTrvtgrgSxsNxw.dv48mtlLuCYASY8b4XXth90PDFwg.HUgN.I6
7Ei7ZmZZs0QKc98Bld+wnyA1WO3Y6xySa8f6lHJX5nN.yY8fKqrzScqWBpyn
ID0ybAgSuWP3MVP3XM56fcw2KH76ED98BBue0w6QmUAAGMTIqLZuKiYHJWA5
RrovkqrujGXrpCLXayj8sR2dc14LXqyr8t1s4YxtW4B5pM6ekrAhzPIHVCmj
3DWoonx0xPcFBsvXnMFDa0nnkFFav3ncFHawHYqFJa0XYKFLa2nYqFNsv3oM
FP6hQzFLj1pwzlMn1rQ0lMr1nwUSFXq2HqACsVYrsdCtksfT1vaky2XzIUsB
+6+S+w+ixmrYTTvzb0Uu0ZToSVW.Ib0LL3g0oDWcFraBTEJVrSERf7gJ7pL5
UoQvNEdHVkHvN+vwcgwxIs3utXgYQErQQEzZQkbYtjkuF0kvyv1sZxwJSi28
oWzIyMbGXV5YUqK.3gpXkjpgZm1ozOejNe8qs1krzZnTq.DNNBvZ013UxEfa
29oq+35cAu534AFEwJXbDqZ6ctt2P16ZavBoxfC0AbMCo64XFt7AOnATsfvI
BQ5mOCZjOAraUOr775WqrjMRxRHBuTV3gDLEP8nbLq1z01fnEMCh1RkM+ar.
f4qsGbytr.rVhgvoPiTU.Rx77l0FPIY.rjpQtVLbjJ.mTUwccnFTMB8JnGDq
x1yaCHHjKu1KN5zFcb08qS3rP5jlobv7R4vNP4L7MkPuyjN7lQpC5BoWZefd
VnPC8uLzYj8ofBYcUFBmYJrKFEZuMN2IK.XRsjKZkmbwdMGDMWJu0UNukQGj
oDrFOdJ3XvgMNmKhYg1iSizdCogPOnxcFHh64gR1mLvvkTFjfbwbnqZcOevg
gtc.2RgKAqDZyN6E+wYmkN6O67ti9a1nRCDgVn7+EjH0sxwVjLVFSc5FptGi
osSyU4SWZejGS17v3PFwCPbkYWCTO+qXZiMPn4oA5xgeJJ7fCYQqh55RHViI
Ea20tYRzqpjziHghAFDC4TO8ViRc.7tob+b5EdpU114cIYFwyO+s62+smO2n
nLK+lLi3slkgnt.kqDfEBpwTKqbzLVDISg39.F4afM7MAXN3EyAtzOzc8SkH
B1WQDTmtzSkLBMWHBrKZTG9j4pF9ThpRIG5yXzA10VHwUtXzktvpAmLpn0q0
jlz3WwXmpIjuwkz.cgzlJ3LlZKnJK6.LYTAwVpfNo.LcUc.CytwjSEHaoBzT
REXaoBxTA1111hfH2Aa66fsswF06fs8cv19NXaeGrsuC112Aa6ors8NXaOK9
AbGrsuC112Aa66fs8cv19NXaey.11eg.2zlpxT.3aABgMzslpIm0Yj4KspIS
JhZ8BGCF0xB8n+gfLfn6TzkCaz0aQJ91r5576VScflUMv5Kqp4tZbBbx39zM
x7Tn1IENHpw8qJy7vUjrHcPRaNTdtprub8AeaDp9wh6uQrcp1pVGLl3oWRwH
qABo4FN8VYGXPVaUI2YHKJgSgHlvidN2iwttMThmQbnHCWENre6qNuSOAuY3
ww6NEb9iGhe1Y8KNuak+4fyN5Oempb1OHs95PbdWnnYWMiumkKxry61tM9bf
pJQDmFvccPTW0O5I3gw6q3UzAFHDuLZVZ95R3ymzMEeSZ.KHZGVSf8Dl38fL
QTCBGmvbckL3Bm.NWxqEMd7bXwE8rloTIeXuoPKSdKZ4FMv8pky5.LAiYjRA
zEak+5e9I0CsvvIOcHRH01Et9mye3r4VHOrDgdnleXBSmrxl3tfm7W+wBuLX
Ejiny585pJySilCfVF2Beu8dLZu43wp8tyc0opQJgD38164q8NqpJFb6cmQJ
RHgpDvLZELs4dq+L05OZ81wcu0GqMuCq.kMSRquLn3tB3WYdBKuYcpsk4bXW
4WttlAqyIYHcJP3p9vvPbENNm6uckkYHdtAvwcYWAPcIESaLMOWNoNR37pED
Rgr+xTJhkKMipHcs9Mgr3MgJjZXK1Gt4XjneeBywgpg93LkHxSixaE+KuDwG
mnKfR2kCktod1HgnifDpXxmYJYq7Fg2TIwrgjKCNVuIXauIzX8lPs8lvi0aB
21ahOBuIH1l9LiwaB4MauItMuI2BpMEy5yo8UiK12nXtv16W8rIdI1zylMER
WtM7HcLLTxYV7lTjCzzPIxz7VuqVfp3Wk4yMFzcaFCkSX1vkPt1Jg.lkPXrd
KMCWUBg4d0etQWoxFFAVxNoINQ3oPENwMA0Cqbtw1B.2FOsf.1Xz5aiQfRzS
YYVRKLE6USqOSC6vMbNnGyX+ppman7qMtVxIigjEYQOXHXLLjayXUx8xszrM
u+NlayKZLbu0lN.igmft1n9iGk2jMhtw3EQ4yjriZCKQFC8apU1Cg1XjhHhK
zzPTUO2PoaahcBOFFaH13P0n3ynMME3wHvShMcMIiQPZD7rwS1L5CYzdSnYv
J.wpg4FEUOq5Mwlo.iT6O2ievexMIyVEmihFB1ZuFF7axFiSD3X8lf17lfC8
MYiqP3wH9LrqM7DZrdSsxSihFgU11GEomM11giR+IarsCY0az.NSuZ3nauBN
asj1Lk2HuwZBNg1LsilW9gjkbGpVhAJ2M6uFJsYSeT1nL4q13oGYLlithULs
o2DYrdSspCMJ7Dv1QWG5HQPaFGWhSoC+MMaiiCc6fUkrLOXylBXKe041SusG
4p2VsgLBeoJu2J82Hpp2pqqtSq7uFJ6PsM3+A2DQrQuaLLGCmsgvgH2gG9Ow
Co2LCcMG9O1cbC+Ghrx4iwQFY0LFOFuIqVnwr40zPyQxToSQ0zbjzMs54FLk
aybjLFNRWl6M0gGOJuKqVgK1n7pP1tXAnA+pfcecIFIuos6cCK4KwH4OMDX6
n4EaM0Y2SocdG4KozNsSocXmp6rNl2QcJuS5npTpRfxhlYaALVJUxX+82Zp5
qSqwp5Adk9.5J8DvU5IXqTeAVat3pMTX0o0A1Cu0bUsUrh1xq4UCHpTeCvPA
Nk9BZJV0xWtd66WUu2S.Roefixn05ml+f8EHTFBHnzK.PoCfex..9jA2gnJ.
mTeGCK.0jASKEfDgN1+zX8LZIXkzGfJYTX3b.RRqRd6.gjQgrJ.1HiWaQeMx
0Y.EomfIROMoNGiwUr2gcsh4AHDKztZCTPFrlUUv+ndppu.9wXQf4A1CqoPq
.yiQhByCZGVSfVATGiDAV.PNrmBaADNFIhqHXaTO00B.azSv0X3LPEPzvZgq
U.mwfIvJ.jgoHc5CnXzC.wXvLzU9Y7k30wUb.CBTWJGSbA7jPFXvQUOJ1+Xa
Z+4bd868iib9d41C5h9790AlaX+k8s+i29+ShSeBI
-----------end_max5_patcher-----------

Try recording a few different types of gestures into the initial buffer, and skip step #3 (flattening) for now, since the @bases buffer is not being flatted in this patch.

Bumping this again as this might be good to play with with some controller stuff I’m working on.

Is there any reason why fluid. objects wouldn’t work in a severely downsampled poly~?

And more importantly, would I need to adjust the size of the @bases based on the amount of downsampling?

OR

Is there another way of feeding fluid.nmffilter~ slower values so the nmf-ing still works on “real-time” input?

have you tried them? there is no reason why they wouldn’t, but you have to be disciplined with SR. Just give them a whirl and see - that’s the beauty of the project, you can actually do this :wink:

What you have to draw is your workflow. What do you want to do exactly is not clear anymore for me. If you want to do some nmffiltering on real-time slow signal, you’ll need to record it at that resolution, so what I would do is to put everything in the same poly~ (the buf rec, the bufnmf, and the filter) and see what happens. This is the equivalent of running Max at a different SR, if it is done properly in the poly~ code.

I’ll give it a try. I’m just not sure how buffers work when downsampled.

What I’m trying to do is to create CV data, split it via nmf, and then be able to give it more similar CV data as input and have it stream that into several outputs, in real time.

So I’m creating a @bases buffer with 2049 samples in it (half the FFT size + 1). This is downsampled by 10x when recording the original gestural data into the buffer (/~ 44.1 on the count~ output).

So I set the @bases in fluid.nmffilter~ to that value, but then I’m obviously feeding it data at 10x that it is expecting. So if I chuck fluid.nmffilter~ into a poly~ with down 4 (I guess I have to down sample in multiples of the sample rate so this works right), will the fluid.nmffilter~ be expecting a `@bases with a buffer size of 2048 / 4 + 1?

1 Like

This is a cool way to do classification (on computer generated classes). Watching this thread keenly…

the whole point of downsampling is to NOT change the fft size and feed a lesser SR. That way you get better resolution at lower frequency.

Just do a patch inside a poly~ doing everything and working without Downsampling. Then downsample as is, and it should work. Try with that to start with, it should help you understand downsampling, buffers and FFT.

Ok, here is the patch.

It kind of works, but there are lots of problems.

The first is that there’s a massive delay before it starts working. I don’t know if the super downsampled fluid.nmffilter~ takes a bit to “set up” something, but it gets locked up for a while and then finally starts putting out data.

The output it spits out does look more in line with what I would expect given the @bases, which is good.

The bad news is that there is a ton of lag, and the output goes super slow. Which I guess makes sense since it’s operating at 32x slower speed. So any fast movements in the top-level patch show up really slowly at the output.

So I think that downsampling pre-nmf doesn’t work for real-time use (via fluid.nmffilter~).

In my first tests I remember testing really big FFT sizes but didn’t really get suitable results (in terms of gesture separation via nmf).

Is there something else I can try to get fluid.bufnmf~ to decompose CV/gestural data in a meaningful way?

realtime.zip (7.9 KB)

I have not tested your patch, but downsampled stuff should not be slower. Have you tried a through poly~ downsampling with nothing in it? That should not have any latency, like a (real-time) (non-downsampling) poly~

Then if you downsample, you are in effect just decimating the info. I have no time now to test this but test the downsampling to start with, then if that works, we can troubleshoot the guts.

(a quick way to test your downsampled patch would be to run Max at 32x slower SR instead, no poly~) maybe your soundcard does that? if yes, check that behaviour is the same.

I’ll test that, but it is definitely downsampling properly. I tested this with a cycle~ inside of it, and making sure that it side-banded (which it did).

In the test patch I also have a “through”, so you can see the output coming out with no latency, just decimated.

It’s the fluid.filternmf~ output (from inside the poly~) that is all lagging.