Voice Count: scriptnode synths?
-
How do you set the voice count of polyphonic scriptnodes?
-
-
- and will there be automatic voice stealing if I do so?
-
I feel like someone answered this recently.
In regard to scriptnode synths. But I can't find the post -
Perhaps only @Christoph-Hart knows : )
-
@griffinboy HISE will use the
NUM_POLYPHONIC_VOICES
constant to create a fix amount of voices (default is 256 I think) and then use the default HISE voice management system to allocate / start / steal the voices.If you set the voice count to be less than the maximum voices using the scripting API, it will just ignore the voices that are allocated above this amount.
-
Sorry I'm struggling to find that in the docs! If you meant the javascript which I assumed you did rather than the c++
Unless you do mean the c++, so instead of using NV for the polydata, I just type in the desired number of voices?
or something like
template <int NV = 8> struct Granular_Synth_2 : public data::base {
( ^ Okay well this probably wasn't what you meant because it didn't work xD )
// maybe PolyData<Voice, 8> voices; // instead of? PolyData<Voice, NV> voices;
^ hmm, doing this wasn't right either.
Maybe you were referring to the Hise UI scripting? I still couldn't find anything in the docs about it
-
@griffinboy https://docs.hise.dev/scriptnode/snex_api/containers/polydata.html
The docs search is limited, I use github's search
-
@Christoph-Hart said in Voice Count: scriptnode synths?:
NUM_POLYPHONIC_VOICES
It's a pre-processor definition?
else { // your handleVoiceLimit() function failed... jassertfalse; }
mmmm.... I'm managing to do nothing but break things.
I'd like to be able to set a voice limit at compile time. It's all for efficiency reasons. If theres no overhead then I guess it doesn't matter, but I know that it makes a difference in the sampler so I wanted the same for my scriptnode synths.
-
I'm sorry to pester
But I'll have to ask you to elaborate / be specific -
I'd like to be able to set a voice limit at compile time.
Yeah, just set
NUM_POLYPHONIC_VOICES
to whatever amount you want in the extra definitions of your project, it will be used globally for all sound generators, including your custom ones.During development you should ensure that you compile HISE with the same value as you compile the DLL with, otherwise it'll be glitchy.
-
Ah, in the project like this?
I never knew this existed. I assume it will only take effect after compiling the whole plugin?I initially rebuilt hise with the lower voice count pre-processor but that caused errors when I tried to play voices above that count. Perhaps this way will work.
Thanks for elaborating.
-
@griffinboy if both HISE and your dll are using the same value here it should work fine (and if you change the value in the HISE source code directly you don‘t have to do it here).
-
.dll ?
I have a feeling I still am missing a piece of information. But I'll see where this gets me. I got errors when I tried to build Hise with the pre-processor definition before. I'm going to try all of the different ways and see what works.
-
@griffinboy if you compile your effect to be loaded into HISE, it'll be a DLL that HISE loads and calls into for the processing. This DLL has to be compiled with the same
NUM_POLYPHONIC_VOICES
value or otherwise there will be a mismatch and glitches. -
How do I set it for the DLL? Is it a case of:
template <int NV = 8> struct Granular_Synth_2 : public data::base {
in the c++ node?
-
@griffinboy no, use
ExtraDefinitions NetworkDll
in the project tab, or better, just change the number in the HISE source code directly and done (since you have to change it anyway to match).