KVR :: Production Techniques » Let's talk about sinc interpolation [View Original Topic]
There are 14 posts in this topic.


osiris - Wed Mar 21, 2012 5:23 am
Please. Before I had FL set on 64 bit. Then I start in on the manual and how this affects CPU. The lowest you can set it on in FL is 6, the highest is 512.
So, I'm fooling around with this and set it on 6 and forgot I had it on there and streamed a loop to wave. It was, shall we say diminished sounding. It didn't sound bad, and I actually liked the way it had smoothed out and kind of even degraded the audio.
When I went to stream something else I set it on 512 and got this kind of snarky warning message from FL about how much time it would take and how 'some software developers...'.....very funny.
I don't even know if other DAW's give you this choice, but is sinc interpolation that important?
If I'm understanding it right, you should do your draft on 64 bit, and stream to disk at 512, but there's also something about aliasing of audio at 512.
I'd love someone who understands this to explain and give some pointers and advice.
Thanks.
lfm - Wed Mar 21, 2012 5:57 am
I've seen this kind of setting i samplers. They have to process a sample from one to a specific other pitch, and want to produce more or less artifacts in doing that.

So you got a draft setting that is good enough for realtime work, but change to more heavy algorithms when doing final mix.

Generally daws process internally at higher bitdepth, 32bit float or something compared to the actual audio format coming from inputs is maybe 24bit, and final mix is do be 16bit.

So how well is that conversion made without producing artifacts - is my take on what this is doing.

I never worked in FL so I don't know for sure.

Is it a general setting for FL, or a specific synth or something?
osiris - Wed Mar 21, 2012 6:50 am
No it's a main setting. I always stream in 32 bit float. From the manual:

Resampling - is the process of smoothly creating changes in sample data when the system is called to 'invent' intermediate volume levels between any two known sample points. This is necessary when samples are transposed from their original pitch to avoid 'quantizing' and/or 'aliasing' noise. The benefits of higher quality interpolation will only apply to transposed sounds. This video covers the concepts of aliasing and Interpolation in more detail.
There are two independent locations where interpolation method can be set. Here in the Audio Settings the interpolation method affects the 'live' audio quality (and CPU load if your project contains transposed Sampler and Audio Clip Channels). The other interpolation setting is found on the export dialog and affects audio file quality (and render time). The options are the same for both locations, they are:
Linear interpolation provides the lowest CPU hit with basic linear averaging between samples, however this may result in aliasing (high frequency noises) when samples are transposed far from their original pitch. We recommend linear settings for most live mixing situations.
6-point hermite is the fastest interpolation method and so is suitable for 'real-time' playback, providing superior quality to 'linear' interpolation. If you have a fast PC, you should be able to use 64-point sinc for critical mixing sessions.
64, 128, 256, 512-point sinc interpolation methods provide, increasingly, the highest quality interpolation, at the expense of CPU load. Anything above 6-point Hermite is not suitable for live-playback (perhaps one day when we have 32-core 10 GHz CPUs). So why are these methods available? So that if someone requires the highest quality live interpolation they can have it...don't believe us?, turn on 512-point sync and watch your PC grind to a stuttering halt next time you transpose a sample...don't say we didn't warn you!
As noted above, a separate interpolation setting has been provided for the render dialog. This allows you to use the highest quality interpolation when rendering independent of the live setting.
highkoo - Wed Mar 21, 2012 11:57 am
32bit/512point for final render, always.

Why not?
You in a hurry? HiHi

edit-
You are talking about the rendering/export options, and not the mixer interpolation, right?
camsr - Wed Mar 21, 2012 2:28 pm
I just set it at 64-point sinc for everything and leave it. No noticeable degradation with changing sample pitches.
chokehold - Wed Mar 21, 2012 3:15 pm
But doesn't that screw up the mixing process?
Hearing 64-point "low grade" sounds and mixing them, then rendering to 512-point "HQ" sounds which... well... sound better and therefore different?
osiris - Wed Mar 21, 2012 4:25 pm
It must be true. I did some pads and bounced them. To see if it saved CPU, I set it on 6. (Bounced at 64)They sounded kind of ..smeared. I can't explain it. If I'm understanding correctly this is only if you are transposing samples pitch.
So, does this mean like in Kontakt? Does this mean for time stretching?
camsr - Wed Mar 21, 2012 5:02 pm
osiris wrote:
It must be true. I did some pads and bounced them. To see if it saved CPU, I set it on 6. (Bounced at 64)They sounded kind of ..smeared. I can't explain it. If I'm understanding correctly this is only if you are transposing samples pitch.
So, does this mean like in Kontakt? Does this mean for time stretching?


For kontact, no, because it resamples on it's own.

Time streching in the FL sampler, I am unsure, but it is simple enough to do a null test on your own. I have not had any problems with 64-point, but I do think if it is set higher, the transposition will be cleaner.
highkoo - Wed Mar 21, 2012 5:46 pm
chokehold wrote:

Hearing 64-point "low grade" sounds and mixing them, then rendering to 512-point "HQ" sounds which... well... sound better and therefore different?


Well shit, I hope someone can explain why that is not true... Laughing

I generally leave the mixer interpolation at 6-point. But I never really thought about what happens when you then render those mixer channels at 512.
osiris - Thu Mar 22, 2012 3:57 am
Well there's a little line in the manual that if you don't have both set on the same thing.... (I have to read the rest) Good to know about Kontakt. But it does warn the 512 will create 'false high frequencies'.....wha?
I think Tony could explain, but I bet he's busy working on v 11...(I hope)
xoxos - Fri Mar 23, 2012 10:25 am
i learned about interpolation methods coding waveguides (tuned delays for eg. karplus-strong).

if you use an early 2000s karplus strong synth, which are generally coded with linear interpolation, you'll notice that while low frequencies sustain for some period, highs diminish rapidly.

otoh, hermite interpolation (which i used in pling4 or piamo) has a significantly longer sustain of high frequencies.


okay, think about this:

a karplus-strong circuit is a delay with a high feedback coefficient, which is still minutely less than 1.0 and thus ravaging your data to bit depth resolution on each process.

you are injecting an impulse into this circuit which is generally spectrally rich.

what this means is that the frequencies are sustaining at the base frequency rate.. eg. if you play a4, or 880Hz pitch, a frequency which sustains for one second with no discernible loss is preserved through 880 iterations.


so if you are using interpolation for a one-time process, don't you think the results are going to be pretty good, if that process holds up through 880 iterations?


fyi Smile
George - Fri Mar 23, 2012 10:29 am
I see you are interested in SINC interpolation. Check http://www.discodsp.com/highlife/aliasing/
highkoo - Fri Mar 23, 2012 10:37 am
So if, she...
weighs more than a duck...
:headexplode:
highkoo - Fri Mar 23, 2012 11:02 am
osiris wrote:
Well there's a little line in the manual..

Yep, goes like this:
Imageline wrote:

NOTE: There is an independent live audio interpolation set on the F10 > Audio Settings, Mixer section. If different Mixer and Render interpolation options are set, this can cause the live and rendered audio to sound different, specifically in the high frequency regions. Aliasing can create a 'false' high frequency brightness. Setting the live interpolation method to 64-point sinc will minimize this problem, should it arise.


D'oh!

There are 14 posts in this topic.