Weird behaviour of voices allocation and CPU usage

Hi guys

So here’s a really strange and annoying one and I’m sure I’m not the first person to experience this: In Halion 4 (standalone or VST), if I hold a note(s) or if I press the sustain pedal, the number of voices being used (and the CPU usage) remains the same EVEN if the sound is long gone. So for example, if I select a piano, a guitar, a percussive instrument or any other instrument that has a relatively short sustain and play a 4 notes chord with the sustain pedal pressed (or just holding those 4 notes with my hand on the keyboard), Halion will show that 4 voices are used (or more, depending on the layer structure) and the CPU is at let’s say 25%. Nothing strange so far. The problem is that the number of used voices and the CPU usage remains the same AS LONG as i keep holding the notes (or keep the pedal pressed) even if that instrument had a sustain/decay of only several seconds.

The second part of the story is that other plug-ins don’t have this problem. Dimension Pro, Miroslav Philarmonik, Hypersonic and Plex behave as expected: when the sound of the instrument has reached its end, the number of voices being used and the CPU usage goes to zero even if the sustain pedal (or the note on the keyboard) is still pressed.

I would appreciate some help very much.

I think this is normal behavior. As long as you have a key pressed, the voices played by that key must continue playing even if the volume reaches 0 eventually, provided that they are in loop mode (or synth). What if you wanted to automate the sustain level? it should bring the volume up again, and that wouldn’t happen if the voices were stopped.

Voices should be released only at the end of sounds with no loop, after the key off command, or a special #CC (all notes off, reset, etc).

Thanks for your reply. What you’re saying makes (some) sense. Actually, in AAS’s Tassman 4, the number of voices (the polyphony) you select for each instrument remain in use all the time, even if you don’t play any note. For example, if I load a complex instrument and I select the polyphony to be let’s say 16, my CPU could go to 90% and stay there regardless I play 16, 4 or no notes.
So it looks like your explanation applies to some synths like Tassman, Halion and Alchemy, but then again, why I don’t get this behaviour in other synths? In Dimension Pro, Miroslav Philarmonik, and Sylenth1 the moment the sustain of the sound is over, the CPU usage goes down and the voices are released.
I wonder if there’s a way I could get Halion, Tassman and Alchemy behave like the others.

That what you mention about Tassman is also normal. Analog oscillators and LFOs never stop, they are always running. This is the right way to emulate them, otherwise some effects like an free running LFO modulating the pulse width would sound inaccurate and repetitive.

Sample based oscillators are different, because they must (usually) restart every time you press a key, except when you play them in legato (depending on the synth). Of course there are many ways of doing things and not all the synthesizers work the same way… The common way is to leave the oscillators running as long as their keys and the sustain pedal are pressed (unless it’s non looped sound), but I suppose others may do it differently.

Halion has many ways to control the voices used for each program. You could set an instrument to use only 8 voices for example, and any new key above that number would steal a voice with less volume. That would help with the sustain pedal and the CPU usage. Check the Voice Management section.

Thank you very much for taking the time to answer my questions!

I understand what you’re saying and how that would explain VA synths like Alchemy and Tassman. I didn’t take into account the analog oscillators and LFOs being always running (on the other hand, Sylenth1 is also a VA, and, although it shows me the voices being “hold” as long as the keys/pedal are pressed, the CPU usage goes down when the sound is “finished”).
However, I don’t quite understand why a piano in Halion (which is obviously sample playback, and probably not looped) would hold/allocate the voices as long as the key/pedal is pressed, and a piano in DimensionPro or Miroslav Philarmonik would not. I don’t see the reason behind this difference in approach.

And to make myself clearer why this is such a big issue for me: I use to play some instruments (especially the piano, electric piano, celesta, vibraphone) with the sustain pedal pressed for very long periods of time, so if I do this in Halion, I think you see what’s going to happen: the used voices will continue to build up and because of that, my CPU would hit 100% in no time, unless I released the sustain pedal (which is not an option some of the times). And also, restricting the voices to a low number is not an option for this approach, either. :unamused:

Thanks again.

P.S.: I’m gonna send you a PM with a question about your processor. I don’t put it in this thread cause it’s a little off-topic.

It’s caused by continuous sustain loops.
In other words the end of the sample continues looping after the volume (amp) envelope silenced the sound.
When you turn those off, all voices will die at the end of the sample. Risk could be choppy sound when the envelopes aren’t set properly.

Thank you niles

How can I make that stop looping after the amp envelope silenced the sound?

Select all the samples and set sustain loop to “No loop”.
But I’m afraid the creator of the patches decided to loop the end of the samples for reason (?), so results could be unexpected.
Unfortunately Halion 4’s looping tools are from the stone age, so you can’t choose to limit it to a certain amount of cycles, let alone control it with an envelope through the modulation matrix.
Next to that it’s a lot of work to modify every patch.

If you like Halion 4 and its patches, your best (of the worst) bet would be to limit the maximum amount of voices to save CPU, as mentioned by dorremifasol.

Thanks a lot guys. Your answers were really helpful. :wink:
Now, that I understand much better this issue, I’m sure i can get some workaround to manage this situation.