SynthMaker

HQ 6 point Interpolation using doubles

Archive · 2007 7 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

exonerate ·

Hi there...

Been playing around with the new double components last night and i've created a test schematic which compares a 6 point polynomial interpolation algorithm made with the double components to the same algorithm written in the code component.

The Interpolation was taken from this paper.....http://yehar.com/dsp/deip.pdf

its the Optimalx2 6 point 4 order..

This i think is why we really need doubles in the code component, the new double components were not meant for this and i can see it using alot of CPU (I haven't tested that yet 😉 )

But the improvement using doubles is huge, the single precision one completely goes to shit while the double precision holds every thing together.

Oh yeah and the double stuff inside the wave player actually improves interpolation because the fraction part that is used on the interpolation is a lot more accurate, so in the old wave player interpolation would have been worst than my current single precision implementation.

Hmm... I've not posted the file yet have I, 😉 .....http://www.box.net/shared/udads7yh3l

Please note this example is for learning purposes, you can use it if you like but i doubt it will be very efficient.

The double implementation is a bit of a mess by the way, but i had to do it all on one screen because you can't connect the double stuff to the IN / OUT components.

cheers 😉

Exo

exonerate ·

Ok i've been testing the sound quality of the interpolation and using doubles on this particular interpolation improves the SNR a hell of a lot over the same algorithm using just single floats.

The reason why the single is so bad is because i think it was obviously designed to be implemented in double precision and for 2x oversampled audio. So the math for the single precision is going to be off anyway making it a lot worst.

Strangely the linear interpolation from the old wave player actually has the lowest audiable noise, compared to the 6 point double and single interpolation. It also seems to have less audiable noise than the new wave player with the more precise fractional part.

Anyway heres my little sound test..... http://www.box.net/shared/ed2fm0g1y6

I'm starting to think that for high quality interpolation, the best way is to just use linear on an oversampled waveform......Hmm maybe the complexity of over types can actually introduce noise unless the waveform is heavily oversampled?

Hmm... i guess i'm just thinking out loud 😉

I'm going to use this thread to post any finding i make regarding interpolation..... and then maybe i could create a wiki page at some point and convert my ramblings into something comprehensible? 😉

cheers 😉

Exo

PS: Anyone know how i could oversample a waveform in SM? It doesn't look possible to me although i think there maybe a possible hacky solution.

Acrobat ·

@Exo: astounding good! I tested particularly on highs, not on lows and on highs it handles charlestons, for example, much better than single precision one.

Big thanks to Exo for the hard work and 2 the Devs giving us these primitves!!!

> IMO, the preloaded square is not giving rights to the quality of the algo, people, lets load also some more samples if you want to test!

😀

exonerate ·

Ok it seems in my little interpolation quest (test even) i found a very obscure bug with SM.

So the little test i did is not very fair, the single precision looks a lot worst than it actually is (it completely goes to crap!), but this is actually being cause d by some very obscure bug ,(which malc has just sent me a fix for 😀 )

So i'm going to redo the test soon and reupload, and this time round a think the single precision should fair a lot better, maybe we'll see an improvement in the double version too 🙂

cheers 😉

Exo

rl ·

very interesting, exo!

unfortunately the double part takes ~1.5 more CPU cycles.

TomC ·

exonerate wrote: The double implementation is a bit of a mess by the way, but i had to do it all on one screen because you can't connect the double stuff to the IN / OUT components.

cheers 😉

Exo

Exo, I hope you don't mind that I cleaned up your implementation (means the PreciseCounter module), it was a bit hard to understand before that 😉

If it's not okay for you I'll delete this link of course.

Cheers,

Tom

Link: Interpolation using doubles reloaded

[Edit:] The logic is still the same, I didn't change anything!

exonerate ·

TomC wrote: exonerate wrote: The double implementation is a bit of a mess by the way, but i had to do it all on one screen because you can't connect the double stuff to the IN / OUT components.

cheers 😉

Exo

Exo, I hope you don't mind that I cleaned up your implementation (means the PreciseCounter module), it was a bit hard to understand before that 😉

If it's not okay for you I'll delete this link of course.

Cheers,

Tom

Link: Interpolation using doubles reloaded

[Edit:] The logic is still the same, I didn't change anything!

Hey no problem, feel free to modify and repost anything i post on the forum 😀.

I guess i should have done it that way myself but I'm not keen on forcing links, occasionally it can cause problems.

But anyway I've redone the test and now we have a true representation of the difference between the single version and double.

http://www.box.net/shared/udads7yh3l

So now in this test I've fixed the bug with a little fix malc sent me (cheers malc!!)

As you'll see the single is now a lot better, but you can really see the difference at very low knob settings (frequencies).

Thats all for now, stay tuned for future episodes OF ''Exo's Interpolation quest''!! 😉

cheers 😉

Exo

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.