Forum
    • Categories
    • Register
    • Login

    Compiled Network Fixed Channel Count?

    Scheduled Pinned Locked Moved ScriptNode
    scriptnodechannelcompilednetwork
    17 Posts 4 Posters 549 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.
    • David HealeyD
      David Healey
      last edited by

      Little spin off from another thread.

      It seems when I compile a network I have to decide exactly how many audio channels it will use.

      For example if I make a network that I want to reuse in multiple projects that each have a different number of channels, I need to maintain multiple versions of the same network just with different channel amounts.

      Is this correct or am I missing something obvious?

      Free HISE Bootcamp Full Course for beginners.
      YouTube Channel - Public HISE tutorials
      My Patreon - HISE tutorials

      1 Reply Last reply Reply Quote 0
      • S
        Stuart Cochrane
        last edited by

        Hi David, I am new to HISE i am adding the core.faust scriptnode to script fx and its crashing HISE, looks like its trying to recompile faust code.
        when I click on any one of the dsp networks HISE shuts down instantly.
        Any help would be greatly appreciated.
        faustest1.png

        faustest.png

        David HealeyD 1 Reply Last reply Reply Quote 0
        • David HealeyD
          David Healey @Stuart Cochrane
          last edited by

          @Stuart-Cochrane Make a separate thread

          Free HISE Bootcamp Full Course for beginners.
          YouTube Channel - Public HISE tutorials
          My Patreon - HISE tutorials

          Christoph HartC 1 Reply Last reply Reply Quote 2
          • Christoph HartC
            Christoph Hart @David Healey
            last edited by

            @David-Healey Yes that is the case - the optimization possibilities that come from assuming a fixed channel were too tempting.

            IIRC Faust also assumes some kind of known channel set, no?

            David HealeyD 1 Reply Last reply Reply Quote 0
            • David HealeyD
              David Healey @Christoph Hart
              last edited by

              @Christoph-Hart Would it be possible to make it still work with fewer channels without sacrificing optimisation? For my framework I want to support projects from 2 to 16 channels but I don't want to maintain that many versions of each effect. If I could just make a 16 channel version that would be good.

              Free HISE Bootcamp Full Course for beginners.
              YouTube Channel - Public HISE tutorials
              My Patreon - HISE tutorials

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

                @David-Healey what's the effect? just a mixer?

                If you use it in different projects we might solve this by allowing FixChannelAmount to be a preprocessor, then it can pull in the actual channel count from the project it compiles the DLL too? So if Project A needs 6 channels, but Project B needs 16, you can just enter NUM_PLUGIN_CHANNELS (or whatever preprocessor you define) and it should cleanly pass that through to the C++ code generator.

                David HealeyD 1 Reply Last reply Reply Quote 0
                • David HealeyD
                  David Healey @Christoph Hart
                  last edited by

                  @Christoph-Hart said in Compiled Network Fixed Channel Count?:

                  what's the effect? just a mixer?

                  I have my multi-channel simple gain thingy and a couple of filters (until the stock filter is fixed anyway).

                  I'd prefer to stay clear of scriptnode but I have some releases upcoming and it seems like the best way to get around the current issues I'm having.

                  @Christoph-Hart said in Compiled Network Fixed Channel Count?:

                  If you use it in different projects we might solve this by allowing FixChannelAmount to be a preprocessor

                  I don't think that will work because my projects are all expansions for Rhapsody, so the count will be fixed at the player level.

                  Free HISE Bootcamp Full Course for beginners.
                  YouTube Channel - Public HISE tutorials
                  My Patreon - HISE tutorials

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

                    @David-Healey but with rhapsody you cannot pull in compiled effects anyway unless you embed them in the player binary - that's the one hard restriction that comes with the full player expansion system.

                    David HealeyD 1 Reply Last reply Reply Quote 0
                    • David HealeyD
                      David Healey @Christoph Hart
                      last edited by

                      @Christoph-Hart My plan is to embed them in the binary since I need them in almost every project

                      Free HISE Bootcamp Full Course for beginners.
                      YouTube Channel - Public HISE tutorials
                      My Patreon - HISE tutorials

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

                        @David-Healey ah ok. BTW are you sure you need to compile them? If you're just using a simple multi channel DSP network with multiple gain modules in a container.multi container, then the DSP overhead is negligible - definitely lower than the old scripting approach.

                        David HealeyD 2 Replies Last reply Reply Quote 2
                        • David HealeyD
                          David Healey @Christoph Hart
                          last edited by

                          @Christoph-Hart said in Compiled Network Fixed Channel Count?:

                          definitely lower than the old scripting approach.

                          In that case no I probably don't need to compile them, so that solves it :)

                          Free HISE Bootcamp Full Course for beginners.
                          YouTube Channel - Public HISE tutorials
                          My Patreon - HISE tutorials

                          1 Reply Last reply Reply Quote 0
                          • David HealeyD
                            David Healey @Christoph Hart
                            last edited by David Healey

                            @Christoph-Hart Hmm I just realised I have the same problem, when I bring in my dsp xml that's setup for 16 channels into a project with only 6 it reds everything out and tells me there aren't enough channels.

                            So I remove the extra ones but then I'm left with another file to maintain in my framework so it doesn't really make the situation any easier. If it was just one effect it wouldn't be an issue but this seems like it will be the same for any scriptnode effect I want to use with Rhapsody.

                            Or will it still work but just show the angry red box?

                            Free HISE Bootcamp Full Course for beginners.
                            YouTube Channel - Public HISE tutorials
                            My Patreon - HISE tutorials

                            Christoph HartC 1 Reply Last reply Reply Quote 0
                            • ustkU ustk referenced this topic
                            • Christoph HartC
                              Christoph Hart @David Healey
                              last edited by Christoph Hart

                              @David-Healey nope, won't work.

                              What if you actually create the network dynamically?

                              // define this somewhere in your interface script
                              global NUM_CHANNELS = 8;
                              
                              // Put this code in a Script FX that is set to use the number of channels
                              const var dsp = Engine.createDspNetwork("mixer");
                              
                              const var mixer = dsp.get("mixer");
                              const var multi = dsp.createAndAdd("container.multi", "multi", "mixer");
                              
                              for(i = 0; i < (NUM_CHANNELS/2); i++)
                              {
                              	// create a gain module
                              	var g = dsp.createAndAdd("core.gain", "gain" + (i+1), multi);
                              	
                              	// fetch the gain parameter
                              	var dst = g.getOrCreateParameter("Gain");
                              	
                              	// create a root parameter
                              	var src = mixer.getOrCreateParameter({
                              	    "ID": "Gain" + (i+1),
                              	    "mode": "Decibel"
                              	});
                              	
                              	// connect the two
                              	dst.addConnectionFrom({ID: "mixer", "ParameterId": "Gain" + (i+1)});
                              	
                              	// copy the range to the source parameter
                              	// (make the warning icon disappear...)
                              	src.setRangeFromObject(dst.getRangeObject());
                              }
                              
                              David HealeyD 1 Reply Last reply Reply Quote 0
                              • David HealeyD
                                David Healey @Christoph Hart
                                last edited by David Healey

                                @Christoph-Hart Ahh that's an idea, I haven't explored that side of scripting. I could pull the number of channels from the master container's routing matrix. No I can't, no access to Synth within the script FX :(

                                Free HISE Bootcamp Full Course for beginners.
                                YouTube Channel - Public HISE tutorials
                                My Patreon - HISE tutorials

                                ustkU 1 Reply Last reply Reply Quote 0
                                • ustkU
                                  ustk @David Healey
                                  last edited by

                                  @David-Healey Can you do it from the UI script?

                                  const var ScriptFX_RM = Synth.getRoutingMatrix("ScriptFX"); // or master chain...
                                  
                                  global NUM_CHANNELS = ScriptFX_RM.getNumSourceChannels();
                                  

                                  Hise made me an F5 dude, any other app just suffers...

                                  David HealeyD 1 Reply Last reply Reply Quote 1
                                  • David HealeyD
                                    David Healey @ustk
                                    last edited by

                                    @ustk I found a better solution to get the channel count
                                    https://github.com/christophhart/HISE/pull/957

                                    Free HISE Bootcamp Full Course for beginners.
                                    YouTube Channel - Public HISE tutorials
                                    My Patreon - HISE tutorials

                                    1 Reply Last reply Reply Quote 1
                                    • David HealeyD
                                      David Healey
                                      last edited by David Healey

                                      My network contains a lot more than just some gains so recreating it all via scripting is a pain and means I don't get to work with the nice GUI. Is there a simple build network from JSON type thing? Edit: dsp.createFromJSON might be it..

                                      Another option I thought of is I can park all the chains in the multi as unused nodes, then in the script use this to add them for just the number of channels:

                                      const dsp = Engine.createDspNetwork("SimpleGain");
                                      const numChannels = dsp.getNumChannels();
                                      const multi = dsp.get("multi");
                                      const numPairs = numChannels / 2;
                                         
                                      for (i = 0; i < numPairs; i++)
                                      	dsp.get("chain" + i).setParent(multi, i);
                                      

                                      This works for my multi channel simple gain because each channel has its own chain, but I don't think it would be a good general solution for all networks.

                                      Free HISE Bootcamp Full Course for beginners.
                                      YouTube Channel - Public HISE tutorials
                                      My Patreon - HISE tutorials

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      13

                                      Online

                                      2.4k

                                      Users

                                      13.8k

                                      Topics

                                      119.9k

                                      Posts