Cool new "spectral tools" in Bitwig

They’ve called them spectral tools, which I guess is correct, but a lot of it overlaps with the decomposition tools available in FluCoMa:

Transient Split divides transients from tonal sounds.

Freq Split lets you distribute a sound across four channels, like a set of filter banks.

Loud Split very intuitively divides things up by “quiet, mid, and loud” sections.

Harmonic Split gives you two groups, with non-harmonic content in a third channel.

1 Like

More comprehensive demo:

yeah thats looks and sounds great. thanks for the links!
do we have an object in flucoma that does the even/odd harmonic splitting?

no but with pitch you can extract the fundamental and do it in pfft…

with pitch you mean the flucoma pitch object?
could you also please briefly elaborate on the pfft extraction part?

I think other than the transient extraction one, most of the other things aren’t algorithms we have natively in flucoma. I guess the loudness one is a spectral gate of sorts, though it sounds really clean. And the pitch one has a few options, like the fundamental, even/odd harmonics, etc…

I wonder if they did the stuff in-house or if its licensed algorithms from izotope or something like that. I did see some speculation since the plugins are being sold separately and aren’t part of a .0 release.

Lastly, I love the UI of how the splits themselves are handled. Bitwig is definitely eating Ableon’s lunch in that regard. Live looks like Winamp in comparison.

All of these are pretty uninteresting to me personally except for the loudness splitter. My gut feeling is that it’s a spectral gate with a time threshold, so only stuff that exceeds a threshold for a certain time gets split. That’s obviously an incredible simplification of what is likely to be going on, but it definitely does feel better than just gating spectral bins by their magnitude or something…

1 Like

I guess a big part that’s cool about it is how it’s built into the overall plumbing of the DAW, so you can route audio around in an intuitive/musical way, inside each of the devices.

To my ears, the algorithms sound pretty clean as well, though there are more sophisticated ears on this forum for that sort of thing.

I’ve not played properly with Bitwig (and even then on a very early version), but that is very cool how modules can split stuff up and then are available to be processed independently.

As for how to do odd / even splitting, never looked at it before, but this DaFX paper shows how it can be done with a pitch tracker and a fractional delay comb filter.

1 Like

my idea was double - this comb filter idea occured to me after, but first I was going blunt and taking the fundamental and assigning fft bins to the nearest neighbourg - one could do a 'comb filter’y crossfade but I wanted to do assign

if I have time I’ll code it later but I’m stuck in other code now.

Doesn’t sound like that to me - it sounds like exactly what it says - look at spectral magnitudes and groups them into 3 groups via two thresholds into three bands. This is similar to GRM Tools Contrast:

The elements of making this kind of effect sound good (as in hi-fi and not obviously FFT-y, which Contrast does towards the end of the video) are:

1 - treat “regions of influence” and calculate peaks based on these (not individual bins) - see link for an explanation of that in a phase vocoder context

https://www.researchgate.net/profile/Mark-Dolson-2/publication/228756320_New_phase-vocoder_techniques_for_real-time_pitch_shifting/links/562e6fda08aef25a244448e0/New-phase-vocoder-techniques-for-real-time-pitch-shifting.pdf

2 - suitable temporal smoothing of either detection inputs or soft mask outputs

Depending on your smoothing times number 1 can become less relevant.

There’s nothing in the Bitwig official demo that makes mean think it’s anything other than that. The other demo sounds cleaner, but that might partly be the synthetic nature of the input, meaning that the input components are already much more controlled.

Something like this would be fairly trivial to build in framelib. There are already demos of spectral dynamics using peak finding and regions of influence.

2 Likes

@a.harker ideas are good - another general thing I like to do which is less intelligent and maybe more sneaky is to remove transient material with a very short HPSS in front. That way I can remove the most obvious betrayer of fft processing, the lovely transient smearing…

1 Like

Well, go on then :slight_smile:

this is an interesting topic.
slightly off topic: I tried a lot of fft-based tools for my job as a dialogue editor and because of their underlying technique they all more or less have this washed out fft sound. some found ways to preserve the clarity of the original sound more than others or ways to mask the artefacts . Not sure about it…
Anyway, I guess the key here is to split noise and transients from harmonic/unharmonic (voiced) components and treat them differently.
on pitchshifter do we need transients to be pitchshifted? What about noisy components?
on a timestretcher, do we need the transients to be stretched?
(this of course is a question of taste and what we are after.)
I also wonder if it would makes sense to combine fft and sample playback or using 2 different fft-sizes for different purposes: transients covered via sample playback
(alternatively fft with small fft-size) and the voiced components with fft size of 2048 or even higher.
sure, I can imagine that 2 fft streams (or a combi of fft and sample ) would be more expensive and also more difficult to handle to accomplish further fft processing down the line…

anyone here who experiment with approaches like this? Iam Curious to learn more about it…

This is what I was talking about above indeed: I use a short HPSS, biasing it towards being greedy of noise. then I leave that part alone and process the pitched component. It is far from perfect but it allows to select your flavour of artefacts :slight_smile: A HPSS with a different FFT size, much shorter, like 256 64 is what I like but again our tools allow you to dynamically and in real-time pick what sounds best with the material you are working on.

1 Like

With much help from @a.harker and @weefuzzy I’ve managed to glue together a series of objects that do something like the loudness splitter. I learned a lot about how to create soft masks and the wonders of fl.peaks~ for implementing the “regions of infuence” thing mentioned in the vocoder paper. I actually prefer it in a dual split than a tri split for now but I think the main issue is making a good interface around this that lets you set better thresholds.

Spectral Loudness Filter (3 Way Split).maxpat (46.7 KB)

Spectral Loudness Filter (2 Way Split).maxpat (40.6 KB)

2 Likes

And a slightly updated version with a lot of help from @a.harker with

  1. a downsampled mask view
  2. and a tilt for the mask (you can think of it like a tilt for the threshold alternatively)

Spectral Loudness Filter (2 Way Split).maxpat (53.3 KB)
Spectral Loudness Filter (3 Way Split).maxpat (59.5 KB)

These sound quite good!

It’s a shame the latency isn’t super crisp as the the loudness one in particular would be great for percussive stuff.

The latency is a function of the hop size like all spectral things. You could lower it and change the one place in the patch where there is a hard coded constant (framesize / 2) + 1:

image

And here is another version where the peak picking happens after smoothing, tilting and conversion to dB.


----------begin_max5_patcher----------
4946.3oc6c80aiiij+4zeJDLtGtCHwg+mTKvt.Kt8Nb3vsObnuE6CMFDnXo3
nokk7XImNYVr9y9UjT1V1VVlxVRwc2Y.lj1RJVU8iUUrJxpJ9O9zMidL60n7
Qd+Auu3cyM+iOcyMlKouvMke9lQyBdcRRPt4wFkF8srG+0Q2ZuUQzqElKmjE
DNKJO2CiVeuzkyxVVjDUX9CwkWMNz77v2wc9qeR6iU717HKkLZj2uTdq4AES
dNNc5CKhlTXuK1mL1W+eJISQQDl3VOJQMFcqmTp+IgLFs4K.nh3zMDg9Z+yO
8I8OtsiX36vbm4X9YxwH9XjlioJEiKnU3XEdv334dgYeKMOX17jHm4X04wwD
ewXIauwXt+XAR+eBruRAWFtnRbB9u56HZQIWWx12L5o3jnWhVjGmkV4ouYTv
74Ut7MU9SzX0ulY9hT2t4Rwo1Kw2boEQuDu9uGs4pAK.Ns.XykKL3vnWErQa
+ZxBiVjtLdy.mYTqjjLiOoAfL27fI1+X8v35auE6.XBfDL1HeHXH8uXJzVDB
F+mljM4qQgUItQYyiRiSmuHJOJsHnXOZeTXzSAKSJd3orzh73e2PAX.2q69O
URg0dSMOXH++7h3fjMLvzEwgYoZhXmQB8kW+5.MAtg23UYFySjFLul+XPBDf
kibybfIWl+XvB8.0iIl2.Y8MKxxR18Va96Rhdpn71yiSS2CEKxle7atHd5yM
729XFbyYM8catS9CKSs28APln3g7fW1EsKBRRJUh28q+0fz3YAEQEw1g.BZy
MiRC.F847IKxRR1ges24kZtSHHiOI5awgEOadQUEFfGOd9ZgnQaFkCimFkWr
60JBllu6UxKdyB5UtzxGK0genHBLAAbwtO.ncDmWj+b12xKev0BZUAfsS1UU
mtpEwctdSVF2053SIiA9XkWRT5T.Np7H0Zi7X1IOgsxiNCAVZULL59R09FEO
zvHc80MSNTZpoWfkEvLFqZMfH6D.gfL+hSNMfPFL.IL9k3vnUacUxcTg2MhI
1eIoWSnhUwo8BJrNARrpLbGTbvCGhjk80kyW4cebZQzh4doYoQsFdnWF73Ol
C.h0uZLQNr1Urj6wYYT8rLYjC7DEa7blhV+yFFwqbiIYylAtGsyTOlWeZXzq
cs3ggDZ8HN9xFwETM7f8cEcPWJ5r0Stj3ziM+rgP02udXKOa4hIqYwx4S81k
nAWRJhS23W6W1LMydOW1hPabBtMR1mDFtdBC0KDlzQBidvyMKNbdFXipbnCS
DFiFvjtaDjLev6W5EBm6HgWh78BMvbjF38HMPcjFH8HMfcjFXGWsC8tRXziq
1UusqOUMJ8Q5PwBevF14CAEEKhebYg0lV0kcnUgGAwp+XPxdwzTWzSeZKw0w
qwE0406AyNuE7gwoGrfOXFarxrReRpTR84BJ3nFp6WvKMOFLM5.9GXgGHd+K
Xm4dw4x7LCSQAijV9kvUXkfx.WR4MyujyfeSheIBhBYyhuL5kfsBVat4Wn+R
8LNolg8Qa3NHbuHvc0GrKaPUfZmE+4eOaV7DuOGjl68W+7wgsa0dBmETzdgG
IaL1.lLNVPkDg5VOFcczfMuZgV03M5uMnI+RPxxnrmNbUB2BDIYoSaBc24gm
ACT5GTLFUycyeNawVH7+KNontui03WceCKSiK1r5JrOU0d1YY43XpNXvZaKT
bnT4YtPwT4XoQkgiTbPsgACybgpTQRw3Hhzm.JRLROoHY34ioHou4WHtqHQo
pdTUZKTpoqxIe9eWFuIJC2gX3hlEiWgvHkfAWFfX19qNa8pWajR14U2oJcQv
KtjwgmVO6u92jJQ+znF5tCa0pghOo949RG0pjR5OcPTa0AYc2FxckoB1B8Ox
Pq+8+jsLbTKQ2NQ6q5K9ZS466CMu0q2w9H6mmkkU7rWwyQdyiB9Zt2+5x42q
28Tu7HMgTDE9us9ORGDyjrk1UMgVqbJpN4zM6y9okEqQphRPi80RPDAWQERL
WBxNB5XpYGVQXPrC4S70KVrIBdtrK839X.27kEdPraogdPrNGYWlqCMH9WDZ
fkpwr8QCR40PXNC7HGIAEOeqELZWhEySBdKINuX0FzHFrnWrHBHSK4s8k8T1
hYAoESxVnI9c2h18foxsh1rox1cKNHOdxn5.OTSl7V+smsHdJDubR4FbYILM
Z.z6julu0z1AV9xiAE7DsUf59W5+OL1vLAKda6WyusLHIt3sCI80Dhda.yr6
B8lcdz9jEfWtoSMd3xPM3XygFVgQ1CFyw7CVEzQyigus5GEdJKII6a1f12Ph
nlLHGFTDruU1IIwyOxRgF7XdVBXYF3Hyvvn+Zvj3zhr7m89u9K+g6+a4QKxu
+We7s6+KfAGcH742+eqSafrTu+SvXTTt2cdgYdAdSyxB8BihB8z4.wadgAu4
9SB2BI79bTBf.Qg258e7RTZxadeVmbBgieJIXx1E.1jlEaTJ6uWwWiSsh0AK
CiyzWoxCTJwuDCSYhnJbkcIXTRV17cWQcvBUZAXg5AcVBbjEYZyeUSKLT+Ed
dahp.6TTEmY32XH7a19IjkjLlX7PQPQRHpA8Z2vv1bQ4ZH76lctmhbH96+tI
wGdmC.+nIqk1wi6dBzHzlBcNF.7YFGNWXiQjK0+Bi0a.feoH.Qw7wHBhbqmh
0bD.ze9RWKpAR7MNYIDlcXUU0AiOxVqOxVqOxVqtO6JlmrLe0Pu451jxjYSS
Kl7pJ+a5hrMgw6B7gyDuK4axIDXzQxC3STHnT3At4G5c+hHXFVHHeX58GyRf
XMuu3Yvj7y5adGG0PBdQqG.8aF+tcu0Q5D3HxNcqO9ZRPC7rFlrtXkWvr428
mBer0BYjNQHiRH1bgieMANOsHS6C5JiH0r7gNORI91XckBmwl2+DdR1M7rUd
nyS4ogy.UV5jnUCcJkRs1pkFKMb70T9StHZJ3iQzhUCcRShY9UjnDWUFXLFW
10MF2b7AI5DAEB07KA45BT.GezKDevBOjmduqui5cudM37PmAR0MhOLrwTDV
ft9fprofyEdXDx.WmKR4K6DQJruM8jutjorEJmdudVA9RuXVPRbdT3c+om+c
uz29skfko1O4d2XqdsDE9pxsPSYh3ce9jfjnJ.l281Mb.h9k4293QPcChUVM
IX0UkpX1K.0F.NSGLsoI9IGwNkRd5fMbyWZhc5eLxg.13CmF3usn3LhvmI5h
vK7IiEDeA0l.i5rmws.9GN2ilsLoHtHXN3fj28.M7f4euMYOaCjI6jv9U1kK
T8iT.YX5kFsJpzuI12QgjQwrtPh.iFrpPYnwmKUpfaJxBrpePHx6eUbQwhQt
HiHrKx0fTHW8RoJYhWvohS.aKNg20BjvuGqdDBuE.QuUJOtRDFAz9qRZPh1U
xJ8CUPcdHQ6MoGqunClqkmlw8s9aTQ4JcTirbOWYgtSazgt5qb1.GhNznFsc
UOXCk8H32ptthEV207827oAEowLmUTj8YwHhc1vQMlX1GZKwTB13yC3BLu7S
80b.HWkJ5yB5zUDbM09tVVv8Y00pZk4i9ZtPkqiG98ohkuySDh50IBYhKP+t
uK1W2IN0f2..zNPSbQqlePoHumYwx4X3TbYmfa8G5KQOWsGcbih+fTuzNlgt
31jgtz9LCcqqABdsmgt3FyP25SP2Y.spu6cBWRf2OOOI9cuBZATSWIXtlgtj
MKOcyUqw9BJOFnqHhFjQD50c0T5CHIQonBc6Uj5KFCdeIDTeEiwkBLCrdYyp
H1.zyIMxYfvP1TSBWUOJQqCkXMWHd2dtHBCLvpnv+gDbLlvnbcWnz2stP49Y
iaGVrmQuNGDs8RxVFlqEqaSkedl47c83C3qNy1yFvRoOxWocYGch1zIo6.nh
roSaQCJkvPmk9TbZylb4b+wR9ABOnw96CNCn5z1tzq63C8Lagq0B.fYjCAfg
rkdX2zqmWDED1FMDVWBB0phn5g97wQjBr4fo9i5esHKYk6EZ4nVxqfMxCGvw
Hz.10he5ohUsPb+L6Qy0TLgfOU1ZfG7tBwXBoTZZ9H1lXLQPHBDiJcwt3Oqs
u3xc8TGoyGEDyGEDyGEDSOVPLeKNML6aq7teR1LPXKGHwxbhbv6lw1jI1ZHP
dUk9ilZy+LRpHo+kAIRyZdisYPDm8CAjzIRIWkPRbEeNZChzI.huoImoP1MI
4JIKpZDOHmUccbq6Ph0eSWfj2+TChPIchX.9GzTmhPuzzqGajCJEJ9QL0oHT
1HWjQffc99N0oZYWdt21fTrKa0jz+T6yscM.v1Xdp7g24s10LSc+kzWTmyND
CBhat2SaqYFpM8Qq7ogb+GaCKoZGKYSxjF3HbOwQjqf7.nNUnigq8YRwIUsg
L5Ozv0TQix9QeCYO5h+MKH+q4sX0+vcV6uo1MJxj6R5GTPP9XFSPvezNbNZ6
vAbQi7Q+v4ik+6ik+a.V9unWmuXELm4cdwosu7vuvXVEkKyOeqmuWKkI25B.
q803yEVBTTrYSysmvkRx2Ek80ktzEJqe6hq9HyOQoUFmtL+rNf2n3tAAsQKH
utVnX84iXb5CX8OHCdS4nDYTl0K12Ajgc8aig2IXx2SlXvchQ0dxBy.1LxBl
70UdsWIB6eocHJytKPstoeM1ZRrcwk6nBu6HLvqNO73xFTxYzza7EcAZQrm+
nX0.aN9LWfcheWvz8jJF9ZX40QibRIQJ99d40cuRXOYEb4KMqaYonQkOMjqh
I+rOD3ZlcJ69I69o09dYOEDkrAtN.YsYrqQlkR3UX10Gqi1wt9g1Is6zT7ji
SLUEoNawMzSE8XmcFZVJfYaoUU+z67gGoYFQmTNHksurJepu1AIheWIvPMB2
xpntjLva0hybSM53MvNkpwGmcPuyriUzxA9gU1+V2pMWG6P5G1wYlQ0m6.ku
x489A4FnR4UPUyG5MZWztCp1ArtQclzpa.nuauCszpvOta1moFNxSh0v8ZNo
bOVHHdiUb4iSmjkX2rqxSuns+.WYW3xiJ.uyKK0vuTVNgdUOAfJdNdxWAOsO
5VIRXmUcEs6wDmkKqPyXKcHQ9JD0mf4BkfH0WBDdQREihoRBm4uK+DOMMCBO
IAn4pzqt9OVe5Cs4ZAogwvOhH67FoLd02o9RjcnA9tuwZazxhCNlV06RJhRo
Lf7YHE2mZRQOyN.Hnmpd5l9bVdwiAVst06FjgCdSyA5KKacEqtK.r6tmp2jD
XLeslPwyQyhLiNi00s5CASJL+ZYQ1Lqd496C5dCns5aurZcdH2bhHU8auy23
b8p0lUYEIcXqyIzyrvYpQpPWlXGTaxG1W.6whFxlL7OrIU3iaQI5h49cWMDU
24nIlobqdS+IJuA1ZGGriXKhczGIMvGIMvGIMPelz.1Z+P6K.u8Kt9EtSD1i
kQr8PEVcUsSDqKkpmCRS2odp.pOKMuXwxImShu2I3UYs2RQeOrWDXtrKXZF5
G08h.yUibAAHjuy6RpDmWgxdMCjcNye48JYvcO2e+IM0e2zpKfHi4sv08yLJ
FciX9fySakXrZ+iSakr6ihwzyj1cAQNngTYucaZIULWZHUm9319LaYUDAqlC
nbB+PD0t4597AsmUoa2NokVFo01pohSiKzN6WFcRksL4vG5Pf83MHq+bx7mC
7zmsyM0drvM1dr.6+3S1crZ9E4bKxBe4KRg6x2NKbioh2Uw6ZsWTq3s8v.5m
Lw6+17AQ3t9WyPJZer9TTfl9d.BhHsMsoHL8LakW0Zskn2LHay6gvUXkfx.A
QT22mhZFDVNucPfpCmAuVHPNbspoYAfR7qq7HdXPp2YqaJzQwf7XPWKY2cYv
skhTvY1hbxG9WDept8NoHcOTD86gASbukTQviZGa36OFatHELwRIBhtuWxsm
KuCS22JON8qq79iD2msx2gwyx+UaGUQkcjMeIB6KERYOMrdb3vbfCCSJoSX9
s6Z1o0zQmmhtTY69ZU.g5bT2mMXa2fVjvDh2pMm1YLzlTO0g8doy1tALXu6.
j.SOgMeZEnv7D6F3uEY1OF2R7olibhchs8nos1N0c+AsFYIaL6.i4Rh0BOl.
rr.z8gK5qNnxMq44rwJevns67j5x4ILL06UDOQbliPGii.gs80DIRi6tBwXx
AbPkd.2dYBxYyD6SfGaQT1I4K1KSO54WtpIDrFbhtdk9fas+1ptSSFsifPgy
xAjiwELAcL+HxxXJtFQgtVX12IlnxR5c1uIExEAtdQdy8WMtqERbw7Go5ZUd
1uIml7nYUJ4X9Ac0XvoQSRJTsMlxE9iI7S+jWHGwcR1rKvNl5RAOWgjAC7XN
vQa733xrl61b7cz6xoYNPMMTQXRqgUIGo3PzsLkN2IVmEn6OwrXadyeAjM6x
IazQnsdjpcxUmp4c44+tHNYitKdSXkyd9Pt32E042E9RcKk4hCIlyGfKFC27
sz36R1IuIWjKXcgCJDmriQpdnScAuKWlbyjOccv6B6jPHuKDBINIvSXMFcTM
dvyH1CsEL3VLwW.g.pt00Gb.h2a+wySGum9brsdS2l6z0t.i8awDPW9aB6xa
5RE11ndzrRTWnCY1d7SaFp9fWPCvq1rsdcejSXmbirK.XpvItrKLzic0UiKV
.0g2i3.FxtPh6kRx5Wwdoh7dog7gof7wS+38S8XSpvbrTN9S+yO8+C.qI6d.
-----------end_max5_patcher-----------