How does CPU utilization and RAM usage compare with Kontakt?

Official support for: tx16wx.com
RELATED
PRODUCTS

Post

I'm interested in a really lightweight sample player (has to play my own samples so not just a ROMPLER) and a lot of the time I just don't need anything other than just playing my samples. I'm wondering how this program compares to Kontakt in that regard?
David Jameson

Post

Well, I don't use Kontakt. In fact, that is one of the reasons I wrote the TX. :-) So I might not be able to answer fully coherently. But in general, TX16Wx is pretty light on the cpu, though as with anything ymmw...
TX16Wx 2 does not do disk streaming, so for large sample sets, its RAM usage will be much higher though. Cpu usage will depend on how many voices, how much filters and fx, and what interpolation quality you run.
Since the product is free to download and use, so you can always just test for yourself.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

Thanks --- I'm trying to put together a list of high quality samplers (both free and paid) that we can recommend to people to use with a new plugin host we're getting ready to release and "light impact" is very high on our list. I'll pull it down and try it out.

Cheers,
D
David Jameson

Post

Hello Calle,

I resurrect this thread because I have been using TX16WX 3 lately and I´m rather worried, if that is the word, about its CPU usage. To be honest, I´m a Kontakt user, and aside from the usual usage (big commercial libraries, etc), I´m very interested in TX16 for dealing with samples/sfz/sf2. The problem is that I´m comparing the CPU performance not only with Kontakt but also with something like Sforzando (which doesn´t interest me, really) and the difference is really vast.

To put it in context, I´m playing trills with both hands with the Salamander Piano V3, 48 Khz, 24 bit in SFZ format.
The machine is an I7 3770K (old but powerful, nevertheless).32 Gbs of RAM, Windows 7 x64 ultimate. Reaper, latest version.

Sforzando : 1,2% of CPU usage

TX16wx : aprox. 8% of CPU usage, and choking the notes as hell.

The difference, as I said, is enormous. Is there anything that can improve this? I´ve tried DFD and RAM and it doesn´t seem to change the situation. With this CPU performance, TX16WX is not really viable for performance (not to talk about playing live, which would wreck my notebook´s resources).

I hope this can be really improved, as I´d like to buy a Pro license in the end. Thanks, also, for your work. Many of us appreciate to have an affordable alternative sampler.

Greets!

Post

If you are getting chokes, that literally means polyphony is being overextended. Which means a lot is playing. Which in turn probably means the SFZ you loaded is not properly converted.

Please send the program, and if possible a DAW recording of what you where playing so I can check what happens.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

Kontakt has multicore processing support so it can utilize your CPU more fully, since it will rotate voices across the specified number of cores. Not sure if TX16Wx has that, I don't see it in options anywhere.

But also, Kontakt was written nearly 20 years ago for computers of 20 years ago, and in the meantime CPU power increased dramatically. The playback engine is extremely optimized for streaming hundreds upon hundreds of stereo voices effortlessly (of course, it also depends on what exactly you're running in the patch - how many per-voice effects and which ones, how many modulators and which ones, interpolation quality, the usual suspects). Also, Kontakt's envelopes are all precomputed at note on, hence not realtime modulatable (except with discrete modulations at note on, i.e. velocity > envelope times), which also saves a chunk of CPU.

Post

Well, kontakt worship aside :-), the TX renderer should be very efficient - even though it does limit rendering to the calling DAW DSP thread - not doing so somewhat violates the plug-in constraints - and also given the small timeslices (256 samples or similar), syncing multiple render threads to produce a single thread worth of resulting audio would be quite prohibitive. TX does use background threads for DFD of course, but that is another story.
I still maintain that if you see chokes, you have long-running notes that saturate polyphony. Either because of mismatched envelope, or simply some bug somewhere.
If I can look at the offender, I should be able to ascertain.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

It was more like stating facts rather than worshipping ;)

Testing CPU performance should be quite easy: use a single sample then match envelope release times to something longish (say 10 seconds), set max polyphony to say 256 (well, this isn't possible in TX, limits to 128 voices per instrument. Kontakt's limit is I think 50000 voices per instrument, haha), then do a quick up-down glissando over all 88 piano keys, then compare CPU usage. Mute track on which the plugin is, of course. :)


EDIT: Anyways, I did that glissando test. TX set to normal interpolation quality (hermite), Kontakt to its standard mode, both set to 10 sec release time, and done a 1-bar glissando up/down across all MIDI notes (so that's 256 notes played within one bar), set both to 128 voices of max polyphony.

Task Manager report:

TX16Wx - max reported CPU usage was 8.5%
Kontakt (set to using all 8 logical cores) - max reported CPU usage was 3.2%

CPU is Intel i7-6700K@4.5 GHz


EDIT #2: Setting Kontakt to its "high" interpolation quality setting does take a lot of CPU (50% or so, but that's because the sample is very widely stretched), however it does play back fully. Setting TX16Wx to its High quality setting (sinc 16) chokes as hell and doesn't play fully, even if it uses just around 16% of CPU.

Post

EvilDragon wrote: Tue Nov 12, 2019 9:30 am It was more like stating facts rather than worshipping ;)

Testing CPU performance should be quite easy: use a single sample then match envelope release times to something longish (say 10 seconds), set max polyphony to say 256 (well, this isn't possible in TX, limits to 128 voices per instrument. Kontakt's limit is I think 50000 voices per instrument, haha), then do a quick up-down glissando over all 88 piano keys, then compare CPU usage. Mute track on which the plugin is, of course. :)


EDIT: Anyways, I did that glissando test. TX set to normal interpolation quality (hermite), Kontakt to its standard mode, both set to 10 sec release time, and done a 1-bar glissando up/down across all MIDI notes (so that's 256 notes played within one bar), set both to 128 voices of max polyphony.

Task Manager report:

TX16Wx - max reported CPU usage was 8.5%
Kontakt (set to using all 8 logical cores) - max reported CPU usage was 3.2%
You say "set to using all 8 logical cores". Which plug-in format are you using here? VST2 limits rendering to a single render thread, though I guess technically a plug-in could mess with the DAW and parallelize processing.
AU does to a certain degree encourage multi-core processing (the architecture is in a sense parallel), but even so it is more to handle multiple channels.
EvilDragon wrote: Tue Nov 12, 2019 9:30 am CPU is Intel i7-6700K@4.5 GHz


EDIT #2: Setting Kontakt to its "high" interpolation quality setting does take a lot of CPU (50% or so, but that's because the sample is very widely stretched), however it does play back fully. Setting TX16Wx to its High quality setting (sinc 16) chokes as hell and doesn't play fully, even if it uses just around 16% of CPU.
Is that 16% on the TX meter, or 16% on task manager? If you saturate the render loop it should hit 100%, since it is measuring local (render thread) usage.
It is interesting that K would manage to get such high throughput on something like sinc16. The TX sinc is quite heavily optimized, but it still relies on per-voice local interpolation. I wonder if K somehow pre-computes some stuff when playing the same sample?
You should try the same experiment but with different samples on each key! :-)
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

All numbers I mentioned are from Task Manager. No Mac here, so can't test AU, and Kontakt doesn't have VST3, so this is as much as apples to apples (heh, sic), as possible - VST2 used all the way through. Kontakt does its own parallelization (just like i.e. u-he Diva or Repro-5). Some hosts like it, some don't. Reaper doesn't object.

(BTW I'm not sure if Kontakt's "high" interpolation quality is sinc16. Nor am I sure if "standard" is Hermite or linear.)
elcallio wrote: Tue Nov 12, 2019 10:23 amYou should try the same experiment but with different samples on each key! :-)
The point of the test was to push the CPU usage by making the interpolator do some heavy lifting :)

Post

Right, 16% on task manager sound coherent with 100% thread usage on an 8-cpu machine.
I am quite vary of adding plug-in local parallel processing. Both because of the sync overhead, but also, again, because eventually it will mess with the parallel processing in the DAW. Somewhat curious what conditions they use for process distribution though. I assume your setup used a single instrument channel to a single output, which in turn means voice level distribution. However, there are pitfalls in doing that. What happens if you add "group-level" vs. "instrument-level" effects to the program?

My suggestion about putting different samples was not just for you to have more busy work, but because I am genuinely curious if there is some pre-computation going on. I don't really have a Kontakt to play with so my reverse engineering ability is somewhat limited.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

Regarding Kontakt's process distribution, methinks it's like this: voices rotate across the allowed cores, including all modulation and group-level (polyphonic) FX. Then this is summed/merged/synced and everything else is applied in a single thread afterwards (Kontakt doesn't have global instrument level modulators that work on all groups).

I wouldn't be surprised if there's some precomputation going on w.r.t. interpolation. Kontakt internally processes stuff in buffers of 32 samples, so that gives it time to do some precomp, as far as I understand things.

BTW you can do this sort of testing even on the free Kontakt Player. You drop the sample(s) in and then you have have 15 mins at a time for testing until it cuts out audio.

Post

EvilDragon wrote: Tue Nov 12, 2019 11:26 am Regarding Kontakt's process distribution, methinks it's like this: voices rotate across the allowed cores, including all modulation and group-level (polyphonic) FX. Then this is summed/merged/synced and everything else is applied in a single thread afterwards (Kontakt doesn't have global instrument level modulators that work on all groups).
Yes, obviously it is summed at the end. However, the above does not really deal with the tricky parts of signalling and synchronization. A voice starts at note-on, which is by VST nature a single-threaded process. After that, you can technically just round-robin place voices in different CPU queues, but otoh, if you have _few_ voices running, this will instead _add_ a lot of extra processing. Then there is also the issue of actual voice liveness. Not to mention stealing, re-use, mono mode etc etc.

But somewhat pointless maybe to debate; obviously they do it reasonably successfully (albeit probably creating a few playback restrictions as well).
EvilDragon wrote: Tue Nov 12, 2019 11:26 am I wouldn't be surprised if there's some precomputation going on w.r.t. interpolation. Kontakt internally processes stuff in buffers of 32 samples, so that gives it time to do some precomp, as far as I understand things.
No, that does not really help. TX also breaks processing into 32 sample chunks, to not do to much modulation processing (RT modulation every 32, then interpolate). But actual sample interpolation is always still per sample (look up the math :-)). But if you have two identical notes, slightly offset you could maybe reuse a precomputed stream for the resampled data. Otoh, does not explain your glissando.
One thing to note though is that in fact high level interpolation is slightly cheaper to compute in DFD mode, since you have a controlled stream buffer to iterate over. TX uses some clever tricks to create a sliding window across RAM samples to avoid some bounds checking when doing high level interpolation, but it still costs some. Kontakt I think uses "streaming" even when doing RAM, which adds more copying but might pay back at high interpolation levels. (It also kills real-time loop point modulation).
EvilDragon wrote: Tue Nov 12, 2019 11:26 am BTW you can do this sort of testing even on the free Kontakt Player. You drop the sample(s) in and then you have have 15 mins at a time for testing until it cuts out audio.
15 minutes of fame...
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

elcallio wrote: Tue Nov 12, 2019 11:39 ambut might pay back at high interpolation levels. (It also kills real-time loop point modulation).
In "sampler" mode realtime loop point modulation is still possible in Kontakt, it's not killed.

Post

Are you sure it is real-time? TX does loop modulation in DFD mode, but it will vary depending on buffering latency (loops are applied in DFD thread). In RAM mode it is sample accurate (applied in render thread).
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post Reply

Return to “CWITEC”