Hi Aaron, This is a well known phenomenon. It happens when the period is almost an exact integer. I see that fb_comb is defined as
fb_comb(maxdel,N,b0,aN) = (+ <: de.delay(maxdel,N-1),_) ~ *(-aN) : !,*(b0) : mem; You really should use at least fb_fcomb(maxdel,N,b0,aN) = (+ <: fdelay(maxdel,float(N)-1.0),_) ~ *(-aN) : !,*(b0):mem; which linearly interpolates the delay. That will still "buzz" when SR/f0 is an integer. To address that, try changing fdelay to fdelay4: fb_f4comb(maxdel,N,b0,aN) = (+ <: de.fdelay4(maxdel,N-1),_) ~ *(-aN) : !,*(b0) : mem; and if that sounds good, you can try fdelay3 or fdelay2 to reduce computation. Cheers, Julius On Mon, Nov 18, 2024 at 10:29 AM Aaron Krister Johnson <akjmi...@gmail.com> wrote: > Sorry for the fat-fingers in the original post; wrote quickly on my tiny > phone keyboard... > > On Mon, Nov 18, 2024, 11:24 Aaron Krister Johnson <akjmi...@gmail.com> > wrote: > >> Hi all, >> >> Perhaps Julius O. Smith or some expert in filter resonance knows the >> answer: >> >> I have an app I built using the Karplus-Strong example in one of the >> "getting started" tutorial. It uses fi.fb_fcomb at its heart -- a comb >> filter excited by a burst of noise, then allowed to resonate and decay like >> a string. >> >> It is an _awesome_ sounding "superclav" as I call it; I have been playing >> Bach on it, it is expressive and its character is super-perfect for Baroque >> music. >> >> My issue is: I have set up a well-twmpered 12-note gamut using a waveform >> table, it works really well. But for some reason, at SR=48000, every >> C-sharp in my gamut, regardless of octave played, has an extra bit of >> bright "ping" that makes it stand out from the others. I suspect that >> particular pitch somehow reinforces, in the combo filter, some resonance >> mode and its harmonics. >> >> Does anyone have any ideas on how to mitigate and work around this? I >> have tried post-EQing the signal, but it's tough to do it for each >> harmonic, and it ends up doing the reverse: making each C-sharp, if the >> band-reject EQ resonance is narrow enough, sound too "pinched". >> >> Perhaps I need to shift my overall gamut by some constant so that no >> pitch hits the resonance peak? That's not ideal, though, so I am wondering >> if perhaps it's possible to mitigate this by pre-filyering the noise burst >> or similar, in such a way that the peak gets reduced on the excitation-end >> of things. >> >> Any/all ideas here are appreciated, and thanks again to the wonderful >> devs for giving us this powerful tool. >> >> -Aaron >> >> _______________________________________________ > Faudiostream-users mailing list > Faudiostream-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/faudiostream-users > -- For language models, Wittgenstein is right: "The limit of language is the limit of the world"
_______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users