Delaying freely in range of 1 to 44 samples

For general discussion related FlowStone
Perfect Human Interface
Posts: 643
Joined: Sun Mar 10, 2013 7:32 pm

Re: Delaying freely in range of 1 to 44 samples

Post by Perfect Human Interface »

Wow neat, thanks Martin!

Which method does the stock interpolated delay use?
I don't mean to hijack (although Tulamide may have gotten what he wanted already?) but I'm working on a project that uses interpolated delay for time-based distortion/detuning and was wondering what kind of properties could exist within the delay itself. The stock delay sounds fine to me but could something else work even better?
User avatar
martinvicanek
Posts: 1334
Joined: Sat Jun 22, 2013 8:28 pm

Interpolation Methods

Post by martinvicanek »

IIRC the (interpolated) stock delay is allpass.

Allpass Interpolation: Best for slowly varying Delays like in a Chorus
Linear Interpolation: Best for fast random access like in a pitch shifter
Lagrange Interpolation: Best for random access with high fidelity like in a pitch shifter
tulamide
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Delaying freely in range of 1 to 44 samples

Post by tulamide »

Wow, Martin. You never cease to amaze me!
"There lies the dog buried" (German saying translated literally)
Tronic
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: Delaying freely in range of 1 to 44 samples

Post by Tronic »

Martin, as always, a big thank for this.
I have a question regarding the implementation of the Lagrange interpolation,
what type of equation you used?
I'm trying to deduct it from assembler, but the optimization makes me harder to reverse the code :D
User avatar
martinvicanek
Posts: 1334
Joined: Sat Jun 22, 2013 8:28 pm

Re: Delaying freely in range of 1 to 44 samples

Post by martinvicanek »

Tronic, I provide this link although you probably know what Lagrange interpolation is. As to the implementation, I am storing 4 consecutive samples per quad word mem entry to minimize r/w access. So at a given instance, the current sample would be in SSE channel 0, the previous sample in channel 1 and so on. Then I use some shuffling and I think also SIMD to some extent to efficiently evaluate the Lagrange formula. I usually keep a code version for documentation but in this case it is not pssible.
Youlean
Posts: 176
Joined: Mon Jun 09, 2014 2:49 pm

Re: Delaying freely in range of 1 to 44 samples

Post by Youlean »

Here you can see different implementation of interpolation... I think that this schematics was made by Exo...
Attachments
Interpolation.fsm
(141.15 KiB) Downloaded 969 times
Tronic
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: Delaying freely in range of 1 to 44 samples

Post by Tronic »

Thanks guys,
I just wanted to compare my Lagrange implementation,
because I get the same results, but I have a different coefficient from yours.
So I was wondering what kind of approximation you used for the coefficients of the polynomial.
In case, if you are interested to compare it to, I will post the code, but not optimized. :)
Post Reply