Parameter control of transient/onset size in fluid.transients~

This was discussed in the Transient extraction comparison thread, but I wanted to flag it out as a separate feature request.

Basically the hpss algorithm is way too “long” for my tastes, and ends up sounding like a weird EQ/filter on the sound, and then transients~ returns a microscopic blip type sound.

I can see the benefit of only the tinniest fragment of sound being classed as a “transient”, but the musical usage of this is limited (it doesn’t respond to processing quite as well as a longer slice of time).

At the moment there is no transient extractor that applies to what I would consider to be a perceptual transient (closer to an “onset” perhaps?).

Would it be possible to have a parameter or control that lets you specific the size of what is returned as a transient? Or if it doesn’t work in a temporal way, a thresh-type control that lets you have it grab long periods of time.

I don’t hear anything I’d describer as crosstalk here - can you record it or be more specific?

A transient isn’t a slice of time - it is the residual from a process of estimating the waveform in a detached area that looks transient like - you can’t directly control the length of that.

To be clear you can control the length of the detection, but that doesn’t mean the estimate will create a longer sounding transient.

Here’s a bit of brushes recorded directly from the patch.

Bits of it sound “crunchy” to me, in a way that I associated with lack of debouncing, but it could just be that’s what the process sounds like.

I imagine that it’s not directly a slice of time, but having control over the parameters which can control the length of the output would be useful. So one could tune it in a manner to get (potentially) longer chunks of time.

Or rather,

What do you mean by this? (from the other thread)

brushes.wav.zip (6.9 KB)

Sorry - switched threads by accident. This is what I’d expect the algorithm to sound like - there’s isn’t an obvious debounce issue here (that would look different in the waveform) but obviously they are short. I personally think the way you’ve set the parameters with the skew at -10 is possibly part of that.

There is potential for widening the detection, but it’s unclear exactly what that would result in.

Isn’t another approach to transientslice~ and then take some audio after that has occured? You can deal with the latency math with however that is implemented, but that gives you what you want no?


----------begin_max5_patcher----------
1411.3ocyYs0iapCD94jeEHd7nbhvFys9z9+npZkAbXcWBliwzc2V09a+3K.
ARHaHIHZVoE7X7k4yeyX6YxuVuxNl8Nox15KVe0Z0pesd0JcUpJV0HuxdO98
jbbktY1Ej2Xwe2di4SBx6Bc0+yeZqhlpqP1n+EDzVYQ8dZQNQnGCXSkkXQxK
zhrm4jDgQGfNgac1XACiTu.NAZI3VGqucXjX0h1gBzTqoJwGkDy3XWQyJv41
VeS88euds5wl6ChU4zTxerbrPNNNigV+QQq6kQqmm5UnyCDXEVwVzw.o2nfD
bdPBhB15swxCpQWjp7mfQ34vXLtHydikMsPLq.MiHvBA2JGKHEIeLFjgWKjc
CLTIP+JDcAd08bXVgW8+yIfSI43OFyaM7pcVi76Y9F492v7Uwc0iYn52wZpl
XroegSpdIFm75UaCqMgg9Z9D3cyNpyLF87NAik3zJ5OI2F.AHG8qGF.56bB.
iyYIudGPDD7Xwg9fSfXJIlUWjbiHDBfOVHDbJI9Fs3NnvvvGKqTuS2pgwSI7
aCdl8QefnuSMPqdk71Mxc9nGKtCctiI18V5M5+45+Wg.I+LEmL145W+kvCzG
n6J0cIdPZA0yyfCmY7tIRDXArfi4jcigRzfBunKvF2BJDrrrbxXVU1c5EGum
HH7mIE33bMC6baWfFn4AHp840ZUM2WbtZWo5hjVOkyXkRR6IbcJksilSrh40
UuPp1ho6FYwAdiLYyELAWJlP3Etm4llfI55dE9GjzmkplbFeVsM.MtVXhJdU
2ZhbUBWQSD0ETUe+hEB0Pjqr2wxyYukkyhw4Bx9RVOZV8U9dbgHgwUPhxJF7
08rTh4hMpg2tsZFmlQkZaNoHS7hA.gQHzVeOWGe.DhPgQ9n.IXDT4Eh5Pygt
1oI.Pz1n9+E5211Rpb09LZ1+UiyohOFQ4Dz8jJAmH6qQybLFVFKqYx9ZWdMM
cqfikWUfTHjQemHi99olqNHMJrdpamZKv1vVQ086kxicR10tgdigGHPax45E
d+VdCcA0iicNs33bvnUFU8CW2pX07j1AsM1TouWq5jJoEI02RkesC2VGT48z
zRlbyflYDYttHDYt1Qj2oRf.PqmmWizY1HYppsJ3rdpzTT6DVNi2XsozlCO.
aOK3fl8JhP8w1.o4GankEa9Z828jxKJl8AKJlcCNfy9kWTLqBqYAwLv8.N6W
dY44EEy.zA649kCL6JGdp.vG1Gw9v6mkWTKafIu2tGWdIQrJoRKHh88Nf3dk
WTDun6X2jAJ2iKujH95A7wPYP1z5K00CSJPTWv59b.mhp5aZz8MQ9SYlBlgY
JbpSD3dgTvDlogt6yEqM0YFb5L6bey7j19B9oF2le1wHmdmkNP.3pcHcCz+Z
VZo6ko7lv83gSvizj5ldB26sYmxpo2b39Mk8jBmAmhoNOWbuOytxslDCjfHs
4hqimNifJoO2N2DHHtr7GDdUitnQfLT4uaNoIbiVjVXD0goayI+f11dOcMXt
LJVgLD1ZtIuBu6axFkNSC7hZZi2sbsSNkUhOxON3yB7dSWkgo6qhcWq4xkpc
35bwvkWU355CCelVnzcxEOTLNq2gmflu17vYqWW6vIIjBwfCZCUsHzMBB7Uk
BbhBcPMitYwbSio.Wkw.Ezz3nA.6kZOsckuuoy..qyLvmA4ApDB55AiTZia.
zCoKACPdf4Vs1SppvYj4lK1Qyy6.T+rc0l8B6LNNUk.ltr+naNniS7k+ErYz
R8lpltAa6VPXnbkaynkNsas8BF4.hzbuaC2qJIqBbTuvEYlEYn9mhuMaWbVI
i2knqstQcsuVv5.ZquYW5rFm9F5cLMVzjYnIaco4LjzrxApKIwrTmuUKKylL
5DuoTppRbRSpGknX8uW++Xe5Fq.
-----------end_max5_patcher-----------

As in, reworking the code to do so, or by manipulating the existing settings?
If the former, would it be possible to put that in? It seems like it would be a real useful parameter (unless it was played with and turned out to be useless)

That’s essentially what I’ve done in the comparison patch (crosspasted below), but it doesn’t sound quite the same.

----------begin_max5_patcher----------
3533.3oc0bs0jipaD94Y9UP7S6lLKAciK4oI47RdHObpZSdZ2TSICx15rbwA
jmK6oNyu8nK.FrAu.F6clopwFKAn9q6VsT2pk98auYwxrmYEKr9aVew5la98
au4FcQpBto722rHg9bXLsPeaKVtkJB2vxWbmoxG4rmdjWvWxi4hWT2BnrlrU
qJXBy69SXam6r9Dx1w5+VVcbV32XQQ4z0Eg4YwwpazortvXd32Daxy1sdSyx
YozkwrMG+.lJd73JVtNIKh0pjr7HI42njzcIY6DwLQQSxOklnetEQrjrhrco
Q1RFgD8UH27LhW1xLXbQAecJU15UHjGoe9rk+1m7Vrus3oUMUEAnYo7z0Ojy
BKYXPBTww.Df5KHHP8kePC9GMecofaw8q3wrE2IEN46J1vJro7UpedebV1V4
E.00OlEKuT97pG+Ot8V0G2MPgNUHx2wWbR90Qri8LB0iaXEZV+wrGhem7GP+
7GR.1lbmEwCYCcAHXfqmmGw0w0UwzbzLMn8OWztTohWv+NqKD6MUDCI1PGGG
f5C0e.x4i3k6DhrzQh3kzz06Q8VZtrCifk+fouXS86l31cr310mnvlaYOAb0
mSBnIrhB55ZAhf8rtUV.f1tA9X.ZxR8lXD1IFg8iw.nt+sTGV8k4yIKLSYOI
ohif3ZlPoYZESErzvW5FnndA5ck+2IfQiUnVAXGWscM7k.vEzjsEhrjhW6Fq
vefcbIZWEmIs22IjwSExXnMJP9m9C0evyVh2qVsjuR7CZYqYxZ03fwpUWZwx
CBeepU6LQSzklpdOpUClJj88tdZ0.aWvrnQOZ6zXWjBRXj+6RMZ7nmzQIfQt
duS0nw9SDxXGzUSilX66fC7ClCkZj+XUpgN32yJ0nQO4iR.+9UoFBlHjuDJ0
gYIIrTwwloss9WYOUIws1rsnv5CEYILKZtfuhFJJtyR53Q8c7DsvZCesz+Ug
01bdVNW7xG+ZJz15eH4PrbKsS3RbYdWOwEarhk8n1+99ZJx15qK9kXFMkk+0
EVhbZZAWxdzMTgfGGa0lDr9vFZdjkHyRrKkYI1vKrxRYx1Eaa8eJTsFU9JWQ
+FS99XoOxhy1xhrna2lmQC2TA6XdJKTReZri6Tj2g2PdAiUPhzykxUOACLw3
YjyLK49krDo2bLqkLwSLVpE5C7hMerFxrBM6xvZSkrUlx2OAuOGH6B20CDsJ
KUHEDrVQdYT7ByrKI9F2CaFgD06V69sp+ljIMe8t2VqIL4d2mJXQjwZB2Go8
+GEn6k6FruCcymwD0qapgpjCwiYOxxKTxt875aVHE0MJ9lFOhh+7aY5Wj+c0
EwSyZFQMYQ4LUPAMOOotTZtjxERxdWtI1ZO6V4Gk50jEwxS2w0jhoPojpjjz
xDUL4J1VptnEcUU2fWn4A.i2VPiwMriydlgJnflfO1jjWHElo7zs4rBoRsQc
tY0QrUzcwhGZpTATpdcTekBcmUVGWw+dNWoJTdKqy4QYoJhnkjPUbUy8EK.w
DTvlfQeGozsc7vRkIIaomJKjfbWwRZtN5sl.1.qpTjkE2tp5mKlsRTV8VdZ5
AbQQ119qLWZc+DO6xLYkIm5cqqo3gcolZePpSHdnf9XatsfFGW1ws8q+YZJO
QNZifmTZTntxihrLncMO1QMQRc7P1S7HgIH0MUFj2NeakRzhZobDesb3s1kI
nl.4tujBwKFldih1UE38GDrjspwLaeCsBjeyNrMMw0p7SYpqs4tHVL8kWk1X
cT+27V5blpCJ53GZzCbvq8H6d8NJfuwZmtae.n8bYtoxjeowjIxaZOR4gLmP
5KVZUpdYLNciYOmdAM3zfFD3nb6Nvsg8dmYFzmPg3O+5kQIv0apZAJ68RFBz
UagzCn+A75wQ9Se5UKvEhoPlLSwG1nuAhbQ5a7yPMAclFKtnZIR+1jjT+HGd
JjqWEulKrxOZwU5cAVplYFOQRLsFdxL237Dplo3NUSPR8oZSPGt9SWdcqDo2
0Zmrechb59bzt2H8OUND.oYQdAWaVTth8jjkI17pkirkcHWltij9G6FcZNjY
TLfmqYJ63KBGRSMWFj60OxcFhgHilQoyaMcQQ6wS4jNZNMOc6mFwdtgORu4Y
RvoxjLpGmGSBNiLICxG+z7PS0BRoVhIDGuETSlJGX51PMyq6LYAcoDr2CZUr
65w0IMEopuadSQ1t7vptAU55VsINoufBdZc.E9xdalVC0N2noBv.oB07sO3F
2mcT+bIMP+TF3hPYcvK5lxTJyWLQmZx9CWzAtTTAZn7BzEjWnlJ6v5LcIkH5
WNXncogWJpXvcoIW6tzCmzPGwIuv8oGEk0sBTYgUAhdgJZiQOXhr5Cp0zjub
mvL7QyHqOpH.tNNaIMtL9d0wGti.Dd6dhatVkNnsWRgU1pSuzrcrFNtidk0C
BJG91LqeyRRBc9ImklQrkY6RC6JIMcmXNdUtNLuUxC0szndxBU3DAHF5Z6ED
D36UtLx9j2Nvs3arm5.q3olwdXRfsqJSacKy3VG+2NfUrImUrYIM7ac.4foh
3fNxQw2VHd0SQcIiISDwWjrpdtP7S7zd5+B.SEuD+4vBUOKO9p3c7H65LDnH
lGxd05d8f8V9NV2WmY7VD.z59JSvMiQU6Lp.N0kYu6jBazF188cp7DWoXDDT
EP84MkYjCaLsAiwiNIn7.fYbv39PzFZdh0e0ZKKObvXAM5NwtZLPLq1gG3rP
ROpz+Eqwlxo7ztSdKzny5zp7bAVlgKjynG6NoXZ2oS+NtfkTsyh9m+5m+rpa
zGVQKDeTc0cpOpKVk+U5Pn2p5+ccOe8MEpyGqn80+YkAgbcc0YT0G2yr5jUd
TJ.NvMbBzeZoXEnLORPAmkExswzWh4EhdRCPx9M711MLU5QnJMnNuRFPFD05
J0+Q7PkaGz7W5N4AGswOrGowdQCY9Jn4d4KhJnG5AjBR8DUM5xhrXoWSx1ZS
YFmkVHnoeO6S+ZtJaxXQeVR+L6mnOtOdd5rUp16ng+HeimZPOcWDOyrU4puA
8NjqUXHk1xRkFeEOnRPldbzTu5YoUgnz9P2s4qktXFqxSirpnXdXHKWRKjho
cob0R8oYx312PQ7t7p7T4KVG93EaYlji43leKWJ.CyxUxuZubaeKqxhiydx3
0YCpr8M8+1Qq1Qm5M6kjdWbbCUrgupG9fh5KD4L4c006uZeY18KujCeZbn5b
0U4UR.o5xZwlJiYN1m5tpuGYOHAWN6jEmNb.yXtQKUyd0B22.L3oYI3D4WHj
LwQfLYFuOv6MwzhOgi6vot6JQ9uW7bOXp6eTbfMD43543i7887cvf27ttil5
NwB6HcyQBVheIXgtuSbcGM0chEV0W0Ef.dk6HZB38gu6H7TQLw01I.D34R.t
tHL.geO36Nxcp3U5KJ.JMFSPDhz+Y.I3p4IesW7vS3EOFCj0VZ6RN2Geq6Uc
rs9jp38Z8xAawU+VpRHm+fm08k7KK.ty3.fF2FGpyoH24PhiNRnDWbiHB.cg
l.mMy9OSr8mV.A.id7AfWy.BD3eVdQy9dDM70ASs9SaBIdN9l.zV84z1UdTQ
N+4PQd7H2LGJ+5TZT5uq0pxyd5.V8f7SEL5nd3oETkag9xSGAuFNkEJ8wJIs
nN+GlGKBFt0qVv9lu5.BJWaFVSl.ZZJBtlcBkzTykYqrArcmV2vQKTK2ElyT
X4NoUc0tnSZOWEaNoSwB098QY3UZDVE0tFEIKY0JQgTXJo0BsAcWrxl+HBU6
D8ho6v2N5c+XfeSa0D7YE81KBSUxPQveh7TvzhRVMK0sSVptkZmeUFN7gKje
Ie93zEp4B32yh2qbmceZErHgGsMimJJaQnqIKuIFeWQA0+pGg+PIM0YVzOl1
fm3LWZvsj2UqkbGPKoNWLN+VpUtfzSKgcmqV5GhI7bzR3AfI0gCTUdaM8VxY
.sz7nQ.FhbJXtvzOTNAlALAgC.Sf1pMGXUwMnbqW6YCUtjALSES8q4f3bFBw
0qIO0ghlJRORWBgkKic8OOWpiXxwsKuhG7pYzSEJsqSKgbtZsD3p0R3qVK4d
sZIr2PL5MWMzOBRX+4nk7GBjliwlNX5XWPl2Psh2qgRjOw1G03O.VkJPd1dM
Lap+4LPpNm0.NH4XKJpwgnINy.NlectxqgLBOxeFzLPCYlXv4XDdzPlc4rLU
BxPjryPCAFgFzY2PCsW0Y0PCYT2YwA.OxYOipR2FcgjpUGr5WyAscdSE022P
aXSDnA0+3LIM2qk7AOjVphQcdsD4pgI70pkPvgFhjy1V2PB3AZVlQt6YG1Gr
O9xD1GcyhFh15d.zdWtbYa5C5M0du+L8l9ZoNCHWsA5FxrQ7uDxwA2xf4VLB
.SSNZhi6AmJXpF4fSCrCNIvN9T.q+S.rCO8uza3JyIgzAwNtNE.SnO6VeFfU
cFa0lCPCCYprHK1PUpD7x+N0Gn.HvUckmSfuiJgAZrxYKW23IzKr19OjC8We
epX+quyG3oJNCqQRjs+CvdaN2UJsxUqk9AGxSKRjTOuRF2T51BvM1n9cC4Vf
ECQDXfhPPdPBVeEzCqyIjYkrZczl1MgMBtUsbXEONtFPMytzpU6Xw5bZDuwY
yjA+fZosq7Ou657plIrn4wfUOlmuujycWmWc7iU8Tv.GPfVqBUpUotRVD3fm
hltt7.WyqwoF117rsY40m7b1nf56emHqFn0ajypjPrawW6dGCSJ1b68O.sKs
LCKUqbf5qjXFELYMKiQldNm+t8Ot8+WGEdNG
-----------end_max5_patcher-----------

Oops sorry. What’s wrong with this? What are you trying to get out?

This just has a windowed/grain sound, instead of a more transient sound. It might also have to do with the fact that the audio coming through is full range, instead of limited to the transient.

I’ve updated this example with the final parameter names, it is quite interesting to compare various approaches we have discussed in both plenaries


----------begin_max5_patcher----------
4234.3oc6ck0jaaiD94w+Jvp7h8FMZH.H3Q1W7UbRpJIU1crievN0TTjPRXM
EoVRp4Hox7aewAIEoDIEjDklY1MtJqQBGDc+gFM5FnA3e7ryFLN9VZ5.v2.9
D3ry9imc1YxjDIbV9uOavbua8C8RkEavhPu6F6kLXnJuEdY9yXQSuJg5modN
XKzHahEhXMD.cLGYv+COIjI1F4NDfviL.+Vd0iWlERyxtaAUU2ACFBFvh3Oo
hRvBjMa73+84PihVMZ4bVDuhRRBtJQ0iSlJJO0zr6BkO7AEUdFKflbyjIx5J
R5Oe1yDeLTSDXrjmokPv0L5MWyRYiYgrr6pRQwSljRyQECANXTg0Ci8+BMHH
waZpeRbXnnXF444Gx7+R1rj3kSmUMcZj23P5rMqfJiq2LiwSmGGPqkRbBm+q
lRS8gHGY+lIdD1lv6zbHheirFYw+GwpiNvl54vEXEc9XZvZcZq5IMZrmDVkL
UT9YkcMmMXBiy3zjTVbTkRe1.uEKpj7YUphn+7eGKeP1CKShEoRBWlTBUzsp
pOoLUuDNXkwQpkIJ4pasLGr5wvQ6jnkrRgKoj0yJdfE3KwUBuFxQGVlRgCSm
JhGhdNkDREfgC2KnQrnEIzTZTlW157b.ch2xvrqlDGkkx9cI8AQiLZJ+Id9z
ZO6pYF4MWwbuJg4EVvdCllvBhiDDQslUjbQy8I.TJpH9bEyHKQj2hFpLW9fC
KsjYJmIWlx02HGfoFHiJxLKNNrdVk0KjNIKO6Ernn0Pwr3EsmYBa5rNp63Xd
ly65YKyI8pkQpbuhq3H6pTuqqi1YdggQza3b+ZO9a8hXy8xnYLUW.xnLyMF9
Cqmy0MjS.WH1mdCKHSoIopv.u3rEEBQCJ6kCXSooY0SKiqlpdJanXkmzxBci
WkQmymoHasBTa1lpiHqpysV5qo6MGwFtJ6L5sJRML1KXNMMEvIgYUKQCp2rj
i2De3HGHhPUDV6Vs15p1PUapllWpcMZqCiEIJmOJWywdhSpFaKn.DaLhqaG5
JQBrQwmswpv8fUMZlUqjpe774znrMRmEEPushZzdAW5P9gqTkq8I.H0AoGvY
YOxAiwllb4HxAJGY57nTPRC.i+2Ira2BjYikHFDuBwrOTDi7nDwVxklWVCv3
7RtRuAe7U+52JLw8U+v6dWcFqcLiacPAlAwX8.MgIzCUVSuVyzhoCqislZgs
dK4SkFuXYgldXMFJgaDQFet.0jSqqMnJkTgoQBdFUxwHGTibL2Br4Ef52kPo
Qm+53asvtitw6ZAWOT7wpLLg0x3mY9wgm+iwwK91y+oZ479DtIpbWbN+UdWd
9q7iWllw7uLKY47ztJ4k2EkM682D+qw7IaaujW9we3m+1yuzOQzYemrRsU1W
685y+9kye6a5p.WFuLJH02aA86hC88R9HKa1aim1bEFS8x9Wz4BSvSZtDu4c
m+lYK4129ZZXXZKkIlOwN812xMdf260Fw8te58IrNy7srzVq8OvkZ3xEWSaq
.W9py+vBogZ+ByKJ9WnAdgej6VWKkNjm0alEyRdUPPqOxxBcIKpsB8gO1L+W
SzrtBG7Vm.LW+oHY+Ywozzu4hOjx8b4hEdW71Xeg9jrzKBJ91KmsLH3BwfGg
mHWrHIVZ+7ESBWxB.9wIKVlBh7tlMUNzZUI4EfOWq24bsUWLmFv7t3DMQAuU
GyhnRCy.EMsNp93SpVp4Co6DrC6ZJCiVUqgZsGD8PNIaBcJ81EfmO5qewEi9
5sfZDocsjJVknrtEqEnU8+0JdMuIwiLZFaw1CVqNM6D4NLYM4gD4ylwRquRO
c5MAVNOkkaOHkhv6AVg1pdlBWP4M+W8yBBnFGBF7ODe7U+Swmby5To.9sF.6
Ut0GxGV2h+bxGrH+l6ERi4yyTPN49QApCZb+SyXQkVp7oUfinfZIDryDg3gC
0fJDB6GMpP9v0gJDpyNZTQwCe6TA4XREl5hENGSpfnKVXdLoBGMoBXqDwpgt
RcDsL1sTwMWWokPQZYKVrHgMSwBcmbCqiSthEIV6UZ8k9N+C3ZJG87EVRIqW
Q4cDE0A6hfVhuYa35XXtYMGOsRsf4O67O3dnWEAFVA0SDlQ0fJxAy4blbkaM
5nWqF3H0LqK7TiEMQXhX6PLFgsQDS42P1lDXNadzIcwZk4Mkdb6aGOcBKLrj
wOaimqx8XIQMMwKfIVIngUxUVUXobgX2GrG132VqoyqJpnp1NNbDeXieq4pV
TSjqAzUJGhykCEeimDrgZ5EMMeUpsMpZojvLetqxIEiT4OB2Z0i6IcI.Toar
xn2NEE1bj5tKQr9hFtCRyx9eStXrAR9MNNw4u9RRN+YnPhcb25pYg2Jq6RmH
1Hy6Gr0s.CgjpSHn0sjdSi5RYSiD14BFLlKFrZivZ194pV7UX5b6lM2nyJZu
kmBS+BtRsSKW4kkkvFuLSo8u5VoM1Kk4msLhIn9uAXZVtWAShCCiuYZX7XuP
wR6GWaSKlDmL2SnBOQ.eER3E4VrAjpGe4dADy8emO0UXHMZpZuI9Dv0wANh.
QtHhv9Tl+WRWYkbYMJI.Hpx1Yrfw6BagD9OK8J1a10nBwtrjlkP40MWV9PD1
DP6RVGBUDWSgisDt+sHKHFK1mLi0cYPyMUk3z41gKnEUYk62amas5ZNWcr3Z
tO7HCCCH5fXaa8X6whsOUNr6Hx57gQYwQcv5VpMFvhH0hfLK9rcltttipLt0
ND9C8C6U2FgUZOgnQVtNlPbGbtKR5Krksbc9ss22tazNnAre35VlxXJMSHbA
DK1cj+cZv5FxUFPEBLag0WegWpAA3cniGeLgfTu4KRyhmmduFbuIhaiC+el5
06uZ1yIgwdMGAPDyCKBf5yg.7dUhi6JsQsq2yFgNng.ltO8FBjy5458N7g.F
OoFBTv8N18+P.3img.vQVvNPASK4tUZhcNLw+mfy.jy5XK6dQ72z9Ik3eQGu
At2E+McdzH9SF4Xvcz0sCf.oBvuCcD.14o2HfbVuuFAfeZYCTQG+QXD.5zOA
PQHZswD.i.+X7MEBCfYKRSAOOMdNE3kjwl34mkNDvcQprD23kBlwlNi6xMXQ
Bi6Pe1cu3yQnQfWywAZBHUDPCbnT8rtgkMCDJhouxm2mivi.edvaBodQzjOO
.jk3Ekx3rqrgRyXggf5j.34y7RB.YwfrkQTfXWu.wQTd6ZNB7gTQq4wejS79
Bk+7nQWSCiWPC.dKVjD64WDKgxM6xmSeRd2rqENRZ9qzvGShx8upA9c008wc
G5KMNp8kh3ZvKgBFSytgRi.3myRm8hRPflJAPEXGwAZpH9djKzRkktpHlhga
CcTVDSbTdE6VAcptXYqVdmZfl8IGzZQUvhRokNTE3jGXkpnrbyMHtKs.4eqQ
QGRurxf+uTP0meVSTtehT5aMM12fp23uBp9+Jn5++8fpOfJ1kDthZCw+2Rbv
fy2vD4vPWndQByZp3zOlyQOfw3a8IQWGx78tCHEz1RTj6JihbWqJyKzQz2aa
zege+oIBp962uMDfqpVDsuVRka1P4ONTIFK6GkhLcfS+syuG.2FTUDGzJupH
8xfKKxSMnZqhT45f5WIJ7iRXh6hHuI25QUgrRIyl64V6dhWaanZcqnVs8ux1
yRGMTa6fArqw0HuYXy4.gZh3Sib37zrX4BAbud3ODK6.rc2owsarN.steH8P
jhdhhmYAnMONNa18.CNRXP1B.pljDZaors2rWT7QZ2rB7C3H50hlrNTvoDmZ
4H6sqngc6ngwthFOTGrOcfNknT+BcnGFnCcpOqn4hcp0sY6GUTa7S+yJpdmg
VkIr5CLlOL.C5TEG+15FH+D3QLTosgZREV1aTvU2OFOrjFrcJCdTnrFvhloL
6iYTtaQ1ktN3whJv5hEGyyihvNa8FLcL6QH5dFLjCoQGKpP6gzjS8PZ8IsMO
eQG4wz6Dk01YF4YUWwccCl3cZkPUQVb95bVtN4csrnqV6z8ObcaceMQirmmB
hmnSr94lOmuxOE099hZY+9rbN4ac0VCN27v0Ke+o1+3x0Ruvx0Obo3.TKi46
GxXRNmsMQVirccccbNDdGoGuuvK3XGPxZy2D2QVF7+YcH7soodLd5Wn27nfq
cWESp6OW6pGSmMKglNarm+WdLv58Sv2aR1EdexMAOJXchygoZCB0iqug6tU7
MG6g3sDLBx6+gQkQnQZHymdO3kR6K.NFfWVdfH.DHB7xJJhqtNbMFBCNFEd+
K700FsKwvPyxQVOdBhI97d5NYuMDp+j8l3GMA2yLuj4fK.KnI9ccVUjbEQsS
S1vt3ML4wRL370.3fsGsQn73LhrM411t6Qwm9fPt5EIU67VwMrJVi.KpoaEp
Zlwzs4ocrwM0tOl99e4xKEswym3kl8hxaQmxjEQzmbuMpk86K0bIKjuLB+BV
k+kBEZxKphmWFiduXEabBi.zob8D2CL0QvSEHzNP68HpuFpYjfg1kHAy7jdh
+vNGnSEH6mVdUTbRGMcGgvFV1vCh4ce53VQNiaZvM0hy3D2CgwwFOQbqnfqE
i1sfX3A4DIF9jxuhBdWboS4BcssOHd27ojeEErN2rXHhqimbPrt0SPmKJcr.
0siEllPdAxUPAfHGvKECZAmKRdkfr3Jin327NW.bDA7xULL.Z1XP3i6nKxxr
pKKx30k69+tNAby5kQm7yhRaF1SF4nquKP6p9t35zk48vS+4Rf96Ad92uUKp
rMbTKeUwmMQ96xwkpen94dYIra8yRB6x6QIxmepvyuP.r6RhLjkJMXW92F6m
H6sA6I7gV6yaOA+X9v6nzx8Ttezunvu6AHMLp1RclZfE2OK5MltcLDeXGjh9
boHfirzc3b9YJTukh3Qi25p4QDGtK9LHhkiXBKLSbfRDJ4sAuTrPEURhmxjI
Yo7tTNymJm+vxTLKSiSGf537345TY5.j5hxDS1e+wZdUs1AX17wKLygXLZeP
Y03yiLHC6MPV9zqG6KJLe8MYMG4275hDUc6baKLNpEIAClyBVDyhxxaRa4Yb
iOof8HwcdjITMEg3Wp8ccCAhch3Lzg3fsQbD00vKgaaKJ2F2xednTGQEp.cR
cErvg0R1ZfC8SK4dpZIrwIqkfmrVx7j0RVmpVRbskrUED8SKcxjxINmpVRKV
hrJHv16FBpyvI69Px6D0N5nHxzpO5hHG7jLNX41xXgHEKUbwu5CZ6vlc1wQQ
alpkO.V9iCjzrNU8ODcZIhQezRlZf1DTOLZknynnpAD4g0RvSR+DTmVxsOPO
cz0UM1r26VRdcUuUdpOjHL0YlhpWP3GVKsUdpOZHcF3Z2GS9YRNUJiLMOYsj
tyJ0pleL2ELguNFjQ1k9ko9UOPavCZFSrik55T0VRaEtkI+4gZfhN5VQ8g1A
rN5V6kFBoqYjGr+e5XYLtW7zTPtXczNTYsWpEn4G2ldMsW0C+9CqoOEJeQZY
UaezP5LsO1oGzxiNUpdgjcP26g0R5nqx4XLFP6VF12CAfvSV+3IqabGlObiE
ucs6iJQar18P0Z2AUad+S09cO0526TxS.yZu3TT7ZyuvTV68mve7r86Eow98
BRQuWNJ4GpmVdeLT+cwP0N21dInzLKuyu3S5Exp181Ye0WzvKzjhC7TquHS1
yWhI64Kvj86kWRyu3RZ+kVRKuvRJNFVM28Uezgd8hUOE1ZHcssWDI6ljEuN+
4y9u.F7GnhC
-----------end_max5_patcher-----------
1 Like

In rereading through this thread, I do wish there was something that was more “onset”-y sounding from the available objects.

fluid.transients~ is the closest since it returns a tiny slice of audio, it’s just way too short.

p.s. your umenu expects the files from your computer specifically:

sfplay~: can’t find file choses:/Users/pa/Documents/documents@hudd/research/projects/fluid corpus navigation/research/flucoma-max/media/Nicol-LoopE-M.wav

1 Like

The problem is what you think the algo is doing… to make it simple: it is extracting the transient, the discontinuity. It is not a slicer, it is a layerer- it removes the concept of the transient (a sharp discontinuity in the signal) and resynthesis what should have been there under it.

@weefuzzy should have soon a clearer explanation than this, stay tuned!

Yeah I kind of get that. I’m more pointed out the fact that none of the slicers do what I would expect them to do.

It’s been a while since I play with it, and the syntax has changed a ton since, but I remember @a.harker showing me a median filter with early framelib that sounded more like what I would expect from this kind of process. It could have been a manner of how the parameters were set (or even exposed), but from memory it wasn’t nearly as “blip”-y.

I think we’re getting our terminologies crossed, insofar as we’ve taken to using ‘slicers’ as those objects that just tell you where something happened, rather than trying to extract something like an onset. (Maybe that’s the problem – that our taxonomy doesn’t make any sense? :joy:)

There is a FrameLib demo called 7 - Spectral Median Filter and another 7b - Spectral Median Filter, both in the demos folder of my FrameLib. The latter, I believe, should be the same as our HPSS in mode 0.

The former is similar to just using the percussive filter part of HPSS (and with something more like coupled threshold mode). Something in the same ballpark as that patch: fluid.hpss~ @harmfiltersize 3 @percfiltersize 43 @maskingmode 1 @harmthresh 0 3 1 3 @fftsettings 4096 1024 -1

1 Like

Ah right, I see that. I just had some early demo slides/patches somewhere that I was certain wouldn’t work anymore.

In testing those patches out, yeah they definitely sound like HPSS.

And the terminology does get a bit confusing too (even you said “extract an onset”, which makes sense to me, but is not what is happening in the object, or audibly).

So, technically speaking, a transient is a layer that is extracted from the sound, which is just a discontinuity. As such it has no “length” other than however much of the sound had that transient peak in. (And in effect almost sounds like an EQ-d click~)

An onset, which is not really accounted for anywhere (other than the fabled onset/offset in fluid.ampslice~) other than primarily to denote when one is starting. There is no function to extract an “onset” as a unit of audio (either in a temporal or spectral domain), is that correct?

So if all of that is correct, does it then follow that what I’m after (a transient-like extraction, but that is longer as to be identifiable) doesn’t exist?

Yeah, it’s muddy everywhere. The way we tend to think of it is

  • an onset is the beginning portion of some event, and that may or may not contain something that sounds like a transient.
  • a transient is some very short thing that could be part of the onset of a sound, or a sound in its own right, or something like a texture could be heard as many transients.

We’re treating transients as a type of layer in so far as they’re a sort of proto-sound that can be juxtaposed vis-a-vis sinusoids and shaped noise. This particular algorithm does happen to model them as discontinuities, because its a declicking algorithm (I’ll have a bash at explaining how it works tomorrow, and seek some feedback on whether the explanation makes sense). This does have the consequence that it does indeed only model these shaped, and very slightly extended clicks. I don’t know enough about its innards yet to know if it could be induced to behave differently.

I don’t know of a canonical algorithm but that doesn’t mean that there isn’t one. I suspect it would be difficult to generalise, partly because there’s such a range of behaviour between different sounds, and partly because there isn’t really a definitive point where something ceases being the onset and starts being the next-bit. Then things get more difficult again when you’re dealing with mixtures of sound.

I think if one knows the range of sounds one is trying to deal with, it gets easier because you can make some assumptions (rather than trying to deal with snare + stick and violin + bow with the same model). For instance, someone has tried using NMF to discover the ADSR parts of a sound:

To do that, I guess, you’d seed NMF with some initial estimates for the activations, i.e. where in time the bits might be, perhaps allowing cross fades between them. You probably wouldn’t seed any dictionaries, unless you had some prior idea of what the spectra for the different zones might be. Then set it going, allowing it to update your seeded activations. However, you’d want to be reasonably sure that you were running it on a single isolated event for the results to make sense (for which you could use a first round of NMF to try and separate the incoming audio into events, using pre-seeded dictionaries?).

Ok, that’s as I’ve come to understand it, and it makes sense.

I remember mention of this. So I guess that’s why the scale of time is so microscopic, because it’s intended to remove these discontinuities in a manner that leaves the original audio largely unaffected (uneffected?!). Like a use case for me would be to apply some dsp to just the transient, and other than some time-based effects (or general ‘transient shaper’ dynamics stuff), these extracted transients don’t seem to respond to much (i.e. distortions, filters, etc…). Unless I’m paying really close attention I can’t even tell they have been removed…

This is a bit OT, but there’s been a bit of mention in a couple of threads now about where the generalizability of some of the algorithms break down and/or how often “real world” applications do some kind of contextually appropriate pre-seeding and/or algorithm tweaking. Is that level of specialization and/or fine-tuning in the plans/cards for future FluCoMa stuff?

Like, architecturally speaking, some of the stuff discussed in the thread around realtime NMF matching (and semi-reworking the concept from the machine learning drum trigger thing) just isn’t possible in the fluid.verse~ because there is no step that allows a pre-training/pre-seeding of an expected material to then optimize towards.

It’s great that all the algorithms work on a variety of materials, but form a user point of view, if they don’t do a specific type of material well, the overall range doesn’t really help or matter.

It’s very much on the cards, because one of our starting convictions is that it’s that’s sort of tweaking and tuning that needs to be available, where the algorithm affords it. When @tremblap talks about getting the ‘granularity’ right, this is what he’s getting at. By and large the starting approach has been to expose everything and then struggle with the interface problems that arise :smiley: One of the things we need to find out (hence involving people in the project) is how the tuning etc. pans out in practice, so we can improve on interfaces, and find a hopefully optimal blend of flexibility and usability. I realise we’re not there yet…

All this becomes a more acute concern for the next toolbox, because there will be more of these more abstract algorithms like NMF that get trained and tuned, and with that, great scope for making things bewildering.

Like, architecturally speaking, some of the stuff discussed in the thread around realtime NMF matching (and semi-reworking the concept from the machine learning drum trigger thing) just isn’t possible in the fluid.verse~ because there is no step that allows a pre-training/pre-seeding of an expected material to then optimize towards.

Not quite I sure follow: pre-training and seeding is possible with NMF via the actmode and basesmode attributes? Perhaps the docs need to make more of this, but that gives you a range of ways of steering it in a supervised or semi-supervised way.

As before, we still don’t know the extent of creative possibilities here, because there hasn’t been much creative work with this stuff before. As an algorithm, it definitely has its quirks, and seeing which of those get in people’s way will be helpful in narrowing down what might be the most helpful extensions to NMF to add (there are loads).

This very interesting discussion started getting a bit to specific and off topic for this thread, so I made a new one here.