HISE Logo Forum
    • Categories
    • Register
    • Login

    Voice Limit Count: scriptnode synths?

    Scheduled Pinned Locked Moved Solved ScriptNode
    22 Posts 4 Posters 897 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • griffinboyG
      griffinboy @griffinboy
      last edited by

      @griffinboy

      Perhaps only @Christoph-Hart knows : )

      Christoph HartC 1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart @griffinboy
        last edited by

        @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.

        griffinboyG 2 Replies Last reply Reply Quote 0
        • griffinboyG
          griffinboy @Christoph Hart
          last edited by griffinboy

          @Christoph-Hart

          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

          d.healeyD 1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey @griffinboy
            last edited by d.healey

            @griffinboy https://docs.hise.dev/scriptnode/snex_api/containers/polydata.html

            The docs search is limited, I use github's search

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            1 Reply Last reply Reply Quote 1
            • griffinboyG
              griffinboy @Christoph Hart
              last edited by griffinboy

              @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.

              griffinboyG 1 Reply Last reply Reply Quote 0
              • griffinboyG
                griffinboy @griffinboy
                last edited by griffinboy

                @griffinboy @Christoph-Hart

                I'm sorry to pester πŸ˜…
                But I'll have to ask you to elaborate / be specific

                Christoph HartC 1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart @griffinboy
                  last edited by

                  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.

                  griffinboyG 1 Reply Last reply Reply Quote 0
                  • griffinboyG
                    griffinboy @Christoph Hart
                    last edited by

                    @Christoph-Hart

                    Ah, in the project like this?
                    I never knew this existed. I assume it will only take effect after compiling the whole plugin?

                    eeac91d1-9865-4400-b426-5b99b42f3767-image.png

                    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.

                    Christoph HartC 1 Reply Last reply Reply Quote 0
                    • Christoph HartC
                      Christoph Hart @griffinboy
                      last edited by

                      @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).

                      griffinboyG 1 Reply Last reply Reply Quote 0
                      • griffinboyG
                        griffinboy @Christoph Hart
                        last edited by

                        @Christoph-Hart

                        .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.

                        Christoph HartC 1 Reply Last reply Reply Quote 0
                        • Christoph HartC
                          Christoph Hart @griffinboy
                          last edited by

                          @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.

                          griffinboyG 1 Reply Last reply Reply Quote 0
                          • griffinboyG
                            griffinboy @Christoph Hart
                            last edited by

                            @Christoph-Hart

                            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?

                            Christoph HartC 1 Reply Last reply Reply Quote 0
                            • Christoph HartC
                              Christoph Hart @griffinboy
                              last edited by

                              @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).

                              griffinboyG 2 Replies Last reply Reply Quote 1
                              • griffinboyG
                                griffinboy @Christoph Hart
                                last edited by

                                @Christoph-Hart

                                Hi is there a specific place to do this in the source code? Just want to be sure, sorry for asking!

                                griffinboyG 1 Reply Last reply Reply Quote 0
                                • griffinboyG griffinboy has marked this topic as solved on
                                • griffinboyG
                                  griffinboy @griffinboy
                                  last edited by griffinboy

                                  @griffinboy

                                  Update*

                                  Adding the preprocessor definition that Christoph mentions in this post

                                  NUM_POLYPHONIC_VOICES=16
                                  

                                  in every available preprocessor box (including the juicer file when building Hise from GitHub, and the project preprocessor boxes) seems to have worked.

                                  Voice limit must be set to a power of 2, or you'll get an error.

                                  1 Reply Last reply Reply Quote 0
                                  • griffinboyG
                                    griffinboy @Christoph Hart
                                    last edited by griffinboy

                                    @Christoph-Hart

                                    Strangely, I seem to have broken this...
                                    My voices are being limited and I can't set a new higher limit. I've tried sticking in

                                    NUM_POLYPHONIC_VOICES=64
                                    

                                    Into every box I set my eyes on (rebuilding new version of hise on new hard drive, sticking this definition everywhere, as well as in all the boxes in the project settings) but to no avail. The limit is still stuck at 8, which is an old limit I set when I made this thread.

                                    Is there some way for me to change this limit?
                                    I find it odd that it carries over even to fresh hise builds,
                                    I'm thinking maybe the projects I created while the old limit was in practice, have been infected?

                                    Or is there a place in the source that I need to set this up?

                                    griffinboyG ustkU 2 Replies Last reply Reply Quote 0
                                    • griffinboyG griffinboy has marked this topic as unsolved on
                                    • griffinboyG
                                      griffinboy @griffinboy
                                      last edited by griffinboy

                                      This post is deleted!
                                      1 Reply Last reply Reply Quote 0
                                      • ustkU
                                        ustk @griffinboy
                                        last edited by

                                        @griffinboy Have you checked the project's XML? Might be there...
                                        How is a blank project reacting?

                                        Can't help pressing F5 in the forum...

                                        griffinboyG 1 Reply Last reply Reply Quote 0
                                        • griffinboyG
                                          griffinboy @ustk
                                          last edited by griffinboy

                                          @ustk

                                          yes! its in the project xml

                                          <Processor Type="SynthChain" ID="Griffin_WT" Bypassed="0" Gain="1.0" Balance="0.0"
                                                     VoiceLimit="16.0" KillFadeTime="20.0" IconColour="0" packageName=""
                                                     BuildVersion="650">
                                          
                                          1 Reply Last reply Reply Quote 1
                                          • griffinboyG griffinboy marked this topic as a regular topic on
                                          • griffinboyG griffinboy marked this topic as a question on
                                          • griffinboyG griffinboy has marked this topic as solved on
                                          • First post
                                            Last post

                                          19

                                          Online

                                          1.7k

                                          Users

                                          11.8k

                                          Topics

                                          103.1k

                                          Posts