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

Reply via email to