How does resampling work when using sample based VSTs?

How does resampling work when using sample based VSTs? For example:

I have a project running at 48kHz and I am running Kontakt. If I load some 44.1kHz samples into Kontakt, does Kontakt automatically convert them? Does Cubase convert the output somehow? Where/how does the actual sample rate conversion take place so that my 44k samples can play back in my 48k project?

Also, I would ask the same question about products like Omnisphere. Does Omnisphere do the resampling? or Cubase?

Thanks,
Todd

Nobody knows?

Hi Todd,

Its an interesting question but I have absolutely no idea of the answer unfortunately. I would imagine that the sample rate conversion takes place at a protected low level within the Cubase/VST API and is handled by the vendor subject to the requirement(s) of their specific product (i.e. optimized by them). I’m not aware of any preferences that provide access to how and in which way this occurs; but that doesn’t mean that they don’t exist! Perhaps you can ask one of the coders/engineers at Steinberg via support for a definitive answer! :nerd:

Regards,

Kat

Hopefully one of the coders will post in this thread by some chance.

It just seems like it’s a pretty important question… Obviously there are different qualities of sample rate conversion. It would be nice to be able to optimize the sound quality and use the best sample rate conversion possible - especially during the export process. If we don’t even know where the sample rate conversion is taking place though, obviously optimization becomes impossible.

Any coders that can shine some light on this subject?

Don’t hold your breath, you have more ‘chance’ of winning a national lottery :laughing: the engineers are busy engineering (working on our new 7.0.5 update) although it would be wonderful to communicate directly with Steinberg staff in the forum but its more for users helping users. However there’s a rich knowledgeable community here, so it works well! :wink:

As I mentioned above I would imagine the sound is already optimized by the VSTi vendors/Steinberg at the API level (i.e. pro software developers are not going to choose a lo-fi solution) if you’ve searched the forum and Knowledge Base and can’t find an answer try emailing support with a general question (as they will likely ask one of the engineers for you)!

I will try this… if I get an answer, I’ll post it in this thread.

I am pretty sure it is the plugin’s responsibility. The host just tells the plugin what the sample rate is and the plugin has to provide data at that rate.

I agree Keith99, that definitely sounds like the most feasible/logical approach :wink:

A host/DAW matches the sample rate of the audio interface, and plugins match the sample rate of their host.

Any plugin, whether it’s a VSTi or a sample player, delivers an audio stream at the DAW’s sample rate. (If for some reason the plugin is unable to match the host’s rate, the plugin’s pitch will be off.) The DAW does not know anything about the contents of that stream, so Cubase isn’t performing any sample rate conversion on Kontakt’s samples, for example.

That leaves the question of whether a sample-playing plugin does any per-sample rate conversion at all? I’m not certain it’s necessary so long as the plugin knows the sample’s inherent rate; it could be a matter of simply playing back at the right rate, not necessarily performing an actual rate conversion on the imported file.

You could probably test whether this occurs by starting off with a 44.1kHz Cubase project that loads some Kontakt instruments, and record how much RAM Kontakt uses. (I think it’s reported on the main screen. If not, you can figure it out by getting a delta between the RAM size of Cubase.exe before and after loading the Kontakt samples.)

Then switch to 96kHz and load the same project. Does Kontakt (or Cubase.exe) consume significantly more RAM? If so, Kontakt rate-converted the samples. If the RAM consumption’s the same, Kontakt just accommodates on the fly.

I heard back from Steinberg Support. Here is the response:

Todd,

In those situation Cubase would be doing the conversion on the output of the virtual instrument. If you have any further questions please let me know.

Thank you
Jeff Deno
Steinberg Support

Anyway… I am curious about the quality of the sample rate conversion.

Why? SRC (even the worst one you find today) would create something like 100 times less artifacts on the sound than the microphone used to capture the original sample.

Are you suggesting that striving for excellence is a bad thing?

Do you think PG should eliminate the quality selector on the crystal resampling plugin included in Wavelab then? It’s pointless??? Run that thing at the highest quality, and it can take up most of the CPU power of any modern computer, but you think it’s pointless? Now imagine how much CPU that would take if it was running on every single channel of a 32 channel mix!!! Real time function would be impossible (hence the reason I am curious about the quality as currently implemented).

What about a program like “Saracon” by Weiss? You can buy it here (http://vintageking.com/weiss-saracon-dsd) for $1715 USD - but it’s worthless?

Now think about this… if using lower quality sample rate conversion on EVERY SINGLE SOURCE in your entire project - surely that could potentially hurt the sound. As a sound engineer, isn’t it our job to make things sound the best we can? Apathy when it comes to sound quality does not seem like a good idea to me. QUALITY IS IMPORTANT.

Also, I just found this:

http://src.infinitewave.ca/

It allows you to make comparisons in sample rate quality. You can compare Cubase with the Wavelab Crystal plugin - or with the Weiss products. You are right that the quality difference may be subtle, but still, I think everything matters.

The same could be said about dither - that it’s pointless, and yet Steinberg contracted with Apogee to get the UV22 plugin. The differences in dither are very subtle, yet we still have choices.