Alpha04 - Post Refactor All Break but New Objects and CLI

Hello

All the code under the hood is redone, most interface is now readable, and there are 3 new objects and a command-line version. A few more examples too… I hope you enjoy!

Max: https://huddersfield.box.com/s/toan3s8911tocsugl9c3b5hc82uwbte9
SuperCollider: https://huddersfield.box.com/s/nu09tjn184yv32b4df3ss2p35u7haebf
CLI: https://huddersfield.box.com/s/7mz52zynzu125r73o5fahwkbvk8mtlnx

Change log:

Alpha-04: Post-Refactor-Major-BreakAll-Release

date: 4/4/2019

New Environment:

  • EXPERIMENTAL: early release of a basic command-line interface for the buffer objects. Check the readme for the (very small) set of indications of how it works.

New Objects:

  • OnsetSlice and BufOnsetSlice: a collection of 10 different onset detection functions for real-time and buffers.
  • SpectralShape: a real-time spectral descriptor object, giving the 7 most common spectral shape descriptors (centroid, spread, skewness, etc.)

New Features:

  • BREAKING CHANGE: ‘process’ method is significantly different - it doesn’t exist anymore in Max (bang)
  • BREAKING CHANGE (MAX): all parameters are now attributes
  • All parameters of are now modulatable - new maxima parameters to set the ranges of those modulations are instantiation only.
  • BREAKING CHANGE (MAX): fft parameters are now a single list
  • BREAKING CHANGE: all parameters have been renamed in a consistent, verbose way.
  • Warning attribute for all objects (in max, window, in SC turn verbose up (see manual)): reports warnings when attribute values try to go out of range
  • BREAKING CHANGE: bufcompose is now single-in, single-out and has clearer syntax (and state and reset in MAX)
  • SC: Buf* have a completion action, as well as clean update of the modified buffers.

New Examples:

  • both: 2-pass mass bufcompose for a folder, that makes it 60x faster in Max and 4x in SC (we’re working on the latter)

Bug Fixes:

  • complete C++ code rewrite under the hood, therefore many, many fixes and some likely new bugs

Known Bugs Still Unfixed:

  • MAX: autocompletion of @arguments and in/outlet assist strings are on their way, but not yet implemented.
  • HPSS: percussive filter above 35 generate noises and glitches
1 Like

Nice!

I’ll download this and have a play, but to clarify, this is the amplitude version or the spectral one, or both? (I noticed the spectral descriptors one is included too!)

1 Like

spectral, real-time and buffer. super fast. try very small fft (128) and it works :wink: Like in the many, many examples. the amplitude one is in gen~ prototype, and python, so will be with us for alpha05 or 06 depending on the other objects too.

yes, Real-time only for now, but NRT in the pipeline for alpha05. With more goodies. but this should keep you busy a bit.

1 Like

Hello !!

I have a small crash with JIT-NMF.maxpat. As soon as I press “rec”.
Max 8.0.4 with I/O vs 512, vs 64 and Scheduler Audio Interrupt ON.

I forgot 2 patches! Let me correct them and I’ll reupload - and push them here too

edit: new JIT-NMF


----------begin_max5_patcher----------
3128.3oc2bs0jihaE94t+UnPU6KItcPW319PpI6C4sj+.SsUWxfLlcv.Av8z
8t01+1it.Xv1.x1PSmYpZrci.N56SGczQGcj9iGevXS5qrBCvOC9J3gG9iGe
3A4kDW3gp+9Ai8zW8ioExayHg88zM+lwJUQkrWKkW1O6febp+2pKH8PYLqr7
sLl5karMNkxu0esp7jC6iR32g7kBqtXFszeWTR3y4L+R0y4RVi7HHqU.Kr4Z
S9WNhOQn0lMuqn.YUfWsdx1z3n.T0gNRnn7sXYMxvPbg+7wGEerRSrumUTPC
YmAdGzZLhX5Y2K56A3n9AtkaCvccEP1EODvsbmSf2Si9S.y02TC9.3FxQXMv
sj.G4s1Z.fSV.fOWZ6PBbsyUntaYs.f+u9NuY2wzoWvWDElPiu9ldGrm.r1N
xurrGD43EA4SOlgtbtzxg2h6ZhFWcm37iAtscsVqKlsLW.LGkDvd8c.K4koG
6pN01NVxu7FTOG8iQ6MxUBVGWMLoSr9AAyVMVy0C2nerzyQ1MCkqktN1aAve
l.5Oum9MVtwkvmY+3yyTBGrmmxT1fXqG61lmis1BjWoTHpBROXrMJl8BKuHJ
MoE27fAMKq0ken0iH3geKU9hbV0bonD0kvMWJm8RT8ya0bUZNG1kbLeHWU+d
0t1iKwqIMfkmbHRVUTWj2h7X8KrwKdGoyqPj7KahjpHBFqlq3sdgBOpXAsXE
ttXFKIJIKmUvRJokU0tlhCXaoGhKedaZRYQzuKqfPwHJWn7sTeVuObBcuBc+
y7Htpd8sDlGEjlHpDc3ZwkqEG2oMops3yifQdGIzrK7vbsANuzSgEbPdnXCM
WzTrQoQfpKrLMMtaQMOWLaaYUwYQIImvhkoY8WXdT3tAd1Mo7B2Oz6VVRwyG
RTk9LuGW4yEzW5x1kz33ptfce8uRSh1SKYkQpl.jYSgrDJGn6J7ySii6fWUI
ubgRB3Zw9ruGETtSJn1JC7aOJqVIxnoUNHJjUT18ZkzvhtW4rdn7KcXSUuzm
KY6yh4nn6MzY10s6R11XUmqOjQqtFt9KOwM1P77ZW3YltiRNNKjdsc26rQ31
uECWgkJ3VVmZe6TabPSitR5ba3WxN9C01xqrdL8TUIHBrg++nQ4pU.iMzjPw
2U+4vLHbXFDAgBFD5RjLn4oi9eJC50OARVRB7uCHjlo5qyLduZcMDVoqozx3
SCdDcM2OopZG98HAWALGjrp0wZqqc6cSUtVCwRWLs7Fi5b5m5vKI0wUfBTDx
XL2M2erhpTpW1liwT1KoRV2fM1kpDNeDkTP2mUvAfEeDS.2uvX.bPt61UwvH
oALHwS80ncOweR6dlwXeq8jctMaY3QrkYJCcEFJ6PZaO53lsqL83J6mLdbyg
saY4RlbDkNEWt5d64VoAhLkpdtiq.ZeSjJRaR8nu9wQI84jmDHhxuLaWjdH2
ulnpF+G.6.ItSqkQIMy74qMi9A3PWq15aoNf+DTGL0nNH73bVqDHcpDyXcvU
WhPo3LK0AGM4AuYjGr0jGbN69RyCTAQAtnULb+ULyYohg0shYOiMa08Oui9P
UWrNpRFh.KD7rJHJOSKKyi1bnTY+scXxtpI6GFmtgFWMU9lPAMzL+OFdfGOV
eux.R5mteOSLIyShH422Q4SXs.rilIi9U3OCn.+nb+CwzbfZjWQ4Ao7x3Esk
9MFHmQiAhPn.dBHhO3a7GOdKnf4mlDrBDUx+YRPg31y4.DTlB1v.Y4o9LVAK
.r4Mv+4e+udeE+E8eOHahB4iBjSS9VwZvuv7oGJ3OzNtXi4jNuBHezhBQEge
WAo6ieiKBV.+cw+SPRJWho4kLtvK2wpeW.ZNSVVH2IAgLJh1GIfUNq3PbYAf
Q82IwwJvNVhOS9vJA.xnI0jkPGzO8PRYK2wzdUVsPH0BpK8LyhHWMFwmWLiB
fZG31ITGnnjlWxIE+mxhousgdbol0EjdHkmRHUvIUy0wrmEYxaQvHKlWa4Zj
JyFR0FAZuVjZ2rFhZfTm4DoBnwsFUl1nmtKJoislKLorUp+2ND.FwrPp+ahW
meZrJN8vqUI+3Zsnni9IERSdqDEljxeEwQb8sVu9MgMUC9bnEuJy0NttHrk3
WDGSKW2UhBZd6479lApHEa2DBVd0TX6ga83YU7aay7MpEM82ZG0+NIHhJf6X
jSOPqCu8UdMDS7LQqtvOZWkuXjPLNewA.+RZbfwOb5KttXQ.3H1xvvMr9h2m
I8Ez35Kpoia40Cz9+F8kdVBye5c.g.MMm9EvEK0FrTgu11ZnE3jrDIjSQVNu
e.2MGwvkJGa9ofqMI7FZnklEvlPTQ.CAGhDPK3J3y09eKobGDfmb8.WLtYg7
UNMAMGL6rv3OA7.Z5SVKkwCM4.xm.N.N8IujJoGzjCrVbN.MC8GH7wnbtp9C
vOA7vz2e.ymzj9bvRjEe+s240GSq4anQ05UZO7nBjOAs9v4hBzq0GtD4sZI2
wfzLfeLil2O742hvgZ0cc0tH3oxNBHRlOqCmfaP6KSBnYMW0EgI4cf4L4inC
Qgea4DM8HCheqkwDv7hbWuwMA.WBS.Yoei8NHJI6P4EioBdHOcTwMPsIDbFb
qm.wyYLUldrYStBrgV.rEP8e23py0XoxnqkrCHdvcMxrFCrtwyX372Pair7I
eI2RLJqKMedw4g59izVho1CKU5SO7VhA6tHCwFA1zKramRcW+lgB1rE3HlRE
Z7foXMBu.itVB1n7vb.2qGHiB0lLPxDIDqB+fyfi0P5YxF34lGLGvIyofCf7
9+U6UJLTsnMC5tAwbAHh5PRU43c82SZXofdpzXqJlT1COD1rZVnNAnqkwKQr
uKSP8n3nx2ZKmzsaKXU.3IYE+IbqZrJ4+CxogGSp65QjjAXtbWd5gvcsu9Y4
Gd2Bd47B1DJ1wBctxw0g+lLdaNzRvHaXpBoNT5lnvYwKZ7djHG1DS4.19zBQ
zxWyaGxnMd+PyCqRBIiuvw3AdaZyRpOQZ1rXM5feCQWTsxCUyfBO3XbH3bZi
uLMLLlM3nYW+FXWgNWU5MOnqKPOCMV3iOvA2YAgr2GsE+VGcGVaLG4ZOtwbH
bAFceNI.qqD+lK.9+GhvmYMCgOqcquEZ74OuD6LPN3slgvFXcJxItCg7kvo9
5r6UN8ZwFxxbjC5fatSP0VnDolRNzb3C2iEnGPMUnQbTmFpfn1.GiPEMS04x
Y17BxPv4mgTaUnQXHj4mGJZa7gnf0bhJY+12AeQjIb.L3Ka2VVnRCtBtUAD2
dfMGUHB3KUYDkp+2W30T4ZaWsWOtUWvFM9JDupT.Y3AhlPdU996l.8JZ9zDM
shrOKASEK39wDLc7jK8r1ScEjXtjGSM+dDTcs49jD7iRRd5vcSA44pifLm.A
YapgjDmXP2sjDm7N5II38JIhNRxcJjDVGI0kh6ld8yqnINWVzl2mnQ5hZ3ji
ZjtnFN4nVmdJNSg4LGMEz8p8Rr9nDjN5pXuKqqh9.DMbN5lnmnmEiCZIZXOF
Gv2mnQeTcSfs2kU8MpOdpjzGlKSeLPx7CBRXcbYRZHZxMXqmnQywvTXWcQ8j
a0QOQilCqNXqqvan6SRZ4g2TzQAeMtYceRRqIlgmEcFsD87ny.uhdJ2mjzwj
G1cBjDRGsSxTncJGKXrY9ZYMURZTUjIg8zY17P6oRRihoof8f5LTDZJFuE59
AMvNz4JFm49jjsFJD1Skf9XzGzYjxdlOjy7KY2KKY24WxV8LHCY9EMtG2wr9
.DMYNl5qdhdVbnPKQi5A01yungj4vWF8DcOS339l0Mjnqyi2arbfZ4v1T3jO
TGG1HSxXYZHHayYoihNPzcbkU0xBcxIZqPnmbR1dxoX64mfs8e50d5IWq77E
QsJUmrTTMYd0d5q1hk+SVyqO8X6xHTeeVR28RrqX6C6h8PPa41f1zy0jzcmD
e91k93GlqsNeeJ+bThfYX0xPde0eHeyOd7HSQjLQ7J0oGhIF6409n5171s1c
.rb4CGBxc.KAgsPdxMLsCxhH+ExgXAm5pUmCGuKWw1DJNR7ZpdsObXpWyTiv
bZPzwylhJz.aZ6r4+yY0E+Er8w8q7wP0O1ws594+57Gq9oPdlPOoNBtRGQ7K
9kfm7TzjvpCFXmVmtsY4oYo4MmPxqwdM2+gxzFf1bdC0bf5LQZUc6cnWqnZc
h0V6RVWHV06IeBmk3n7V0r3Oye93+CnVCNbB
-----------end_max5_patcher-----------

and here is the ‘impactFFTSize’ patch


----------begin_max5_patcher----------
3758.3oc6cs0aiabE9Y6eEDBXQZPsYl6jbeZSSaQenMn.MusIvfRZjMSnHEH
o7ttAY+s24BIEorH4PIMlxas2DAog2luuyYNmYNybF96We0r4oelmOy48Nez
4pq98qu5JUQxBtp72WMac3mWDGlqNsYKRWulmTL6F8wJ3etPU9OlVveuyO8.
24axS2lsfm+MNeJM4aJbhiR3Na23LmW7INOwYYzpU7Lw8vY0phbdQQTx84NU
ew04mSz+q5QHu9EoaSTOGVYgIaWGkDyKTUJXYgaBKV7f3lbWFeQgFTDFyEbi
Cg54hI9TH7FGHEHKx2yE37KkWYzREHRm+q2BAAy18PR2VT8T.kklW7TLWc5y
jE7GWes7iaNQ96GRWuIMQbj2OajPD4ic8wXBfJwI1EA..ObMNQftvo2TgyvL
tSgPSYmlPoJiyeJNJuPniTjpOA98YbtS5Jg5g3pBKhRStQcjEODtHiWvyjGT
VP35MwQEaWxcVmtbar5T+1CpBgFI+5ibkLKHPxlXjReBi6hTYUOyUoIEqBWv
ad2sAQKY14aKJRqavneDEOsgqAvrY2n++HIA7KMjHoIKRiSyzmlPOIvGfCt4
feC1.vlxbzFJlZ5CAUeR6h8nUXX98MpYpKR8An7a0WclPptjqtETeWPccIKb
sT63NdR3bM4B5QtTqchNbSBrUaR7uyRE5946ZDT7PTtymhhicJB+Mtn70Bs5
njsE77abVG9zbtCDbKj9stN+ivGE59NKD1WkMD3gtmEcducRNDDoz3on9U7I
uo3uyqCce5aHEezDq3CmBEeuw5pCCT7.0C3hCvA9HAkR52IGbJbx4er.SzoD
nPiAxFBXASRmTBNRbw.XWL.CHCBK+o.VPvwhKXfKwm3yvCBrIoyVriUOjRpa
fAC5EWro.WziEW3.WYyKp+f3hNE3hbr3BIbKKZfgIChKho35Qd7i7hyI5vGK
5.dlhN7TH0PGItHA.W+pAk1OtPShYwiEWdDWl3OeuAw0j3c9+n5m8nGmMwSM
NPQ+fqAW+iv1eR7Q+W3ww4N25rRF1k7MhpeVXrSFOOMdqbPwyN9gBHcKTice
XuX2axwdAe8lzyG1w9Fic1Th8k7UgaiKpCn1ofYDxXLOI9K+qYaWaKcc.yXr
Slbred00IAPiwNdJw9YTWukSqArqaUuwI7OIdHOCxab1DG9DOKuyfcjGceRX
7rCGrBjQQoi4Ac8BBB78kimQ65F0AI.NLI.eNIz7QyyJgdI1uZ1pnX9iBbIU
Y2c8WMKbylFEeUiKQRX+pNDId2TWTThtHbcQY7GiptdZcogYBBnPf9sY552m
YUsek2lzk7rjsQpphtPgn65paXcOcTC1ySwPPlNDO9dMhOiLPNwoK9McDZ.U
EltgmDkrQzJUnVqhQcqCWpOemLTM4Q+WcnZPtG73Ugx4fGLIbsFbeeVjPmn5
TtOKZYZhrRzhpkEW839nP6WgJZSvnNijvMG3hEJCBZoiClK.4174gYRIQY7n
PUGrHMMt8gputX9phxCuIJIYOVrHcS2GLK59G54ZmmJN359t2pije21D8QuS
zxr3t7vGay1EgwwkMUae6+bXRz5vBdQjVDf.0GTGStGxWjkFG2Bu5i73ANxR
gR7B9mhVV7f5A0TYPb5QapThlUKkWFcOOuncYEg2m2tjm0.UTz14kMRuS5PI
Vfh1mPqYKrYKxlF0ZUdeF2Zafa9V4jA8Em4x9wz7LdlgtUwogExv5NOL49Z6
ccZ3uK6dPjv7uvhuGQZsS3tGK9iHFioGaeCeOKrhyZ+LaX+C03H64H3pJmAk
VUN+bXgy7dYtSkvHvZBChg0DVYnu5gvPcSXvojvtmKLPUj4jGtdS+JcUSkv4
h9XA0zmOdH5C2M8gmR5aY9FoEd9W5k5jy9xMMZ1V96lSJyoQlAJOVrAoQR2z
HYJoQ0zz8EGfCT9ud4x85jWmczqSdC5ooIYDdE+Aw5UBQ+DG8Bs46ed.1peU
rAnJ8f.fjfZhBEHi.TeDk2kpgtbdr.XoB+qrSS+xqeRiAbo..fAEinB5UOhJ
ezPpXdfKTlaSZ7SewYU71nkth9njrdkqrH4nwbf.mOTDlI7hHZ79AwWxECIU
Ln0Mtpdw3JGatLrDVsIcfbXH..DgtwAC20rF6OX+XXAekR5pNe23F2ZwPfso
zvSZM8.RCHkni4eORC+uBkFkiJMeZjFzSPZ38UkzXoLjYSbaCDQIM.A6KMXf
AkFruRkF66d3kSZPjg3Qz1fh2usgW826Ujbo1qP4ZHc01jDd7.cOTdhG+PPn
HcfxjAHWzMGY3S8Gbfb3KTNqJ5KJEyWjnu3oG+FTF7E3tXI3SGjC++znufCp
ILHlMlfuPdK5KsoOOxHB9B5snuzKYVtT3FlGQuE9E4TDUN7XDMXDQfAA+Jr+
OS6XCZHKZ08GOfJrETV+c+ANoVUUnreSlcSL.SB7EQ8It9yNCby3GmTiRqlg
+8KOJYI+yMlD1KeRS2aPiYMeqxZnyHqoqYyNRWEMCHXPPc.AMfg5I1T.6nWs
a9tkVg5XhNUXTd7CSc5j3oTcpRR6zFkK44EQI0S++G2M1.4IZjnaz0BOCqEx
HXauZAxzZAvl0Bfo0h.KVKXAigKXsNw0QK2jJ5AWoJZfuurQlJJWD.wkHawI
ckIyVqpFe0kaK73OF7P6COdArZ7fEeWUukohfnGRUFS1Utsvi2XvCoO7PahG
eczUvR4ibs8Tgm5xsEdXiAOn9vChpviNNdd50HJSzcofF8nptXaAG5XfCtO3
PDCglVEHL8LUAAvcZZ9p9kaETXJHNfwh8.ADpySYT.0MP3oUl5NMsKrq7V2k
zrk5kjGXZwm+wful1IFBevoEedliOhb4XpFJBsE9pJ+v3CYE7QLDe1rSCU8K
xrFIvdMDiIJNVLDuJcHHlR2Qx0G3krQh4.z+H.X.FZL9fSL97LEerf5FIdMw
Wc4ujMRLGeri.e3.uZmsCgOxDiO5QfOJCoV+4xNPLD9vSK9jg7Yz3CgQtPYr
R8FFeT6fOCgWozyZ0AnITrEcjfL1alMGINxTp.CscsvHt.ZQsBjowCnRzYmZ
AbL1u6sWb96h1EJX2zn2b.S6J+kzGr4XjdjXr4nnFBifoEiPxQhwCV7KYWML
s8hMMfAIiYj2G1zQYgUoV0LY50r7NcpDcmbNgilK2si1OWwFUJubeb57v3xD
ZoNgn5K+W1kjLWuq9d1ReO8t7zwk04XLSEZEL7PyzZqvladxG+UXd4QI5v2n
WdeLjZA43QCdKw7dKw7dKw7NtY3+6bX.amkExfTHmOP3fYd2k5JV+cVkkjKJ
gFzzfqyPn+EKMAEtwrGQgBZRTzg0mtTWDqemkIpxMAW8JOhL3ZHDdotFBy2j
I3gUNeebrS4FoIeoSThy6V9924hV59NW7xpcOyicsefMxFFUuzUoACRlWpqB
3BmUNqLa0+p+xwu3oA5MPAMkMXd0AQWnq42aEN9MfvN0lo58ahg4I1Eqh0bS
Vbzm7pJuxplxK4ojU5SpR0hMaWHGixIoXYVCPOseRuSXGOXZW9oRq+N+rnq0
KCWTDsvIYsvD11DYm7c1DlU7zOOa1IQQAk6xKCmBqL7nWwZujjT2YG4XHEc9
Y3APpne4I2RFACp8vfWnLiztjXf2biLMoNwSrAGyyul3nCZfhcoZgZeMp8yh
swqQQ8C1oQAACtiDD7lFkVihxniQiB7JPi5P4Ev30nHdAiwFEk9lFU4J+mNF
MJJ6hVip6Lsc7ZTXOVcpg.gCNLOJ5MMJsFEtbSyURbFnQgeknQc58iB4QanQ
M390AE7lFU4dyIENFMJ3q.MpyiWO43TFgFE4s9QUsQOQ8GgFEgdgpQ0LSL+h
yGxBS9MUdX17csFDfHNXjyGzysutWWhykm+TRwCCua5zob3jGcT4tRlpmGfA
GD.g7JSHX.eeHq.ViuIkahiR9l.FL.GD7qXkdeX.Rq4apZ+f6bWmKw.krSLP
MvlM5UrXf.BXsECJueOSLzc+1slX.iZ3AX3nGS.ulcAf7cfFKBdwb.fPd6DA
fAEAAuNs+2Gc+hZ+GhI61qCPfSXanEcAriGLvTGcd20Cnu365AVI6zMMIjo1
bwn6Qu.RyLYr1MZc4yf1tV.l3DkfALjJnA1tVXBUPrYxAXZVSCetNrkWt6ri
e0ta6rhkYp9C0hRNpoDDwllUnlltOTqWKLhKrYlCPglxE.aWKLhKrYsfXpOu
.aWILQfPrZsvzDJgYylHDiSSRlMqEl5+mYUkSSc8Rso4BisYYSuHWBYbEZbI
OaOarNprSFpGoGVMk3s9gmdIrRUqyP0OrUNjY53NfVMS17GSsvVIAKjNlZAZ
pypuCH5rb2IMup4+R2GbnwaMBVUO1XmF1TM13wOaSlvTMkt6IwWuolpndWr6
8BZ+gOaj4mJp7MCrGRF5b8FYFqwWOXlpRL9MH4Q.1rvkQo2mktcSm.d7fk1w
6KT05MOvuiLxEtKSayDx5Bd1c5zJrYd4Z5aQynB95JLTmSukoHJq72OFFusY
ZaJzAykOukZTHpqs9OsF+4IOmq2G46YxzLcOk2XwBhU1UF8JfvCzWBRi63sx
Mxlu8V6jVZLyJ1hVBH52Rod8xJ9WJrxdS.hsXEcVzODq3Mgrhd5o+oL954wg
Oc6O72u8GdP3t6A0K5a2OE9nkYHjdANRP8xProWu4fSU7YmUzyLTsMlde4Hi
oS.qrLbwWlc7u6m8DxaegCMre0nA6DcV88e8nbbm+P3ll6cAlqi62mqbHqCn
Wmtvmce4v87kCAMclWsIQdyybd2vKtQN6egb7ev0NfkZSV5f64u1da89J+Rw
Nks8uQZ753X.NAMkbhZMP7iQKRiu8ellt4uc6+xl9zzrh1kFLnWWZvigUT2n
1SLulj1eDrkT0yF4peqPt1UPFaMP+8itGSMZKsw7x2nRH+aNbw02i1wt4Yx3
ye0GNxpuOznpO3jp9dDCp9dMhbww+jfF7j7AmgmT63J12SB15IoUk2aadR9P
1a6cZus1omusN08V5z9amShm7eb8+CP6JLYN
-----------end_max5_patcher-----------

CLI is great.

I made two bash scripts that you can add to your .bash_profile. These do batch processing using nmf or hpss functions.

The two functions would then be called through your terminal of choice (assuming you are using bash and not zsh or fish or something) as batch_nmf and batch_hpss.

batch_nmf takes three arguments.
1: Input Folder
2: Output Folder
3: Number of Ranks

The output of dog.wav would be dog-nmf.wav in your output folder.

batch_hpss takes two arguments
1: Input Folder
2: Output Folder

The output of cat.wav would be cat-h.wav and cat-p.wav in your output folder.

Code below. Enjoy!

### batch_hpss is passed two variables.

### Arg 1: Source Folder

### Arg 2: Output Folder

function batch_hpss () {

shopt -s nullglob

if [ -d "$2" ]; then

for src in $1/*;

do

                file_name=$(basename "$src")

                strip_ext=$(echo "$file_name" | cut -f 1 -d '.')

                harm_sf="$2/$strip_ext-h.wav"

                perc_sf="$2/$strip_ext-p.wav"

echo "Starting separation on $src"

                hpss -source $src -harmonic $harm_sf -percussive $perc_sf

echo "$src has been separated!"

echo "Output at $2_filename_p/h.wav"

done

echo "Finished batch hpss processing"

else

echo "The output directory does not exist."

echo "I have made it for you!"

echo "You will need to re-run the command in your shell."

        mkdir $2

fi

}

### batch_nmf is passed three variables.

### Arg 1: Source Folder

### Arg 2: Output Folder

### Arg 3: Number of NMF Ranks

function batch_nmf () {

shopt -s nullglob

if [ -d "$2" ]; then

for src in $1/*;

do

                file_name=$(basename "$src")

                strip_ext=$(echo "$file_name" | cut -f 1 -d '.') ## Remove extension

                out="$2/$strip_ext-nmf.wav" ## Make name for output

## Process ##

echo "Starting NMF on $src"

                nmf -source $src -rank $3 -resynth $out

echo "Completed NMF on $src"

echo "Output at $out"

done

echo "Finished batch nmf processing"

else

echo "The output directory does not exist."

echo "I have made it for you!"

echo "You will need to re-run the commannd in your shell."

        mkdir $2

fi

}```
1 Like

this is great. Let’s edit your post, remove all of it after the praise, and start a new thread with CLI geekery

Okay.

You make it where you see fit and I’ll just copy paste my comment.

1 Like

Well,

the new fluid.onsetslice~ is amazing. The parameters are geeky, but tweaking them gives you a range of detection personalities. I love it!

1 Like

thank @groma for the selection!