Forum
    • Categories
    • Register
    • Login

    Builder InterfaceTypes

    Scheduled Pinned Locked Moved General Questions
    51 Posts 7 Posters 1.1k 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.
    • LindonL
      Lindon @David Healey
      last edited by Lindon

      @David-Healey it works sometimes and the on others fails completely - only showing me the list of variables I'm using in my script.... its really really crap.

      HISE Development for hire.
      www.channelrobot.com

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

        @Lindon I find if you add a new object the autocomplete won't show anything relevant to it until you hit compile.

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

        LindonL 1 Reply Last reply Reply Quote 0
        • LindonL
          Lindon @David Healey
          last edited by

          @David-Healey yeah that I know, but this is a the same builder object oi have been using to build everything else with.....

          HISE Development for hire.
          www.channelrobot.com

          LindonL 1 Reply Last reply Reply Quote 1
          • LindonL
            Lindon @Lindon
            last edited by

            @Lindon ok here I am AGAIN, 3 times in one day....

            So does anyone know the correct Chain Index for the SampleStart modulation , not in the documentation(duh) and not showing up in the auto complete....

            HISE Development for hire.
            www.channelrobot.com

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

              @Lindon I don't see one

              abc572a5-6404-4ee7-aee8-fd335d2a7762-image.png

              There isn't one for group xf, mix modulation, or some others either.

              I wonder if this is what Direct is for.

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

              LindonL 1 Reply Last reply Reply Quote 0
              • LindonL
                Lindon @David Healey
                last edited by

                @David-Healey yeah - Im begingng to think this Builder stuff is a bit pointless - if its not all there then its not saving anything in the end.

                HISE Development for hire.
                www.channelrobot.com

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

                  @Lindon you can always lookup the chain index by inspecting the XML:

                  <Processor Type="StreamingSampler" ID="Sampler" Bypassed="0" Gain="1.0"
                             Balance="0.0" VoiceLimit="256.0" KillFadeTime="20.0" IconColour="0"
                             PreloadSize="8192.0" BufferSize="4096.0" VoiceAmount="256.0"
                             SamplerRepeatMode="3.0" RRGroupAmount="1.0" PitchTracking="1.0"
                             OneShot="0.0" CrossfadeGroups="0.0" Purged="0.0" Reversed="0.0"
                             NumChannels="1" UseStaticMatrix="0.0" LowPassEnvelopeOrder="0.0"
                             Group0Table="" Group1Table="" Group2Table="" Group3Table="" Group4Table=""
                             Group5Table="" Group6Table="" Group7Table="" SampleMapID="">
                    <EditorStates BodyShown="1" Visible="1" Solo="0" MapPanelShown="1" BigSampleMap="1"
                                  GainModulationShown="1"/>
                    <ChildProcessors>
                      <Processor Type="MidiProcessorChain" ID="Midi Processor" Bypassed="0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors/>
                      </Processor>
                      <Processor Type="ModulatorChain" ID="GainModulation" Bypassed="0" Intensity="1.0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors>
                          <Processor Type="SimpleEnvelope" ID="DefaultEnvelope" Bypassed="0" Monophonic="0.0"
                                     Retrigger="1.0" Intensity="1.0" Attack="5.0" Release="10.0" LinearMode="1.0">
                            <EditorStates BodyShown="1" Visible="1" Solo="0"/>
                            <ChildProcessors>
                              <Processor Type="ModulatorChain" ID="Attack Time Modulation" Bypassed="0"
                                         Intensity="1.0">
                                <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                                <ChildProcessors/>
                              </Processor>
                            </ChildProcessors>
                          </Processor>
                        </ChildProcessors>
                      </Processor>
                      <Processor Type="ModulatorChain" ID="PitchModulation" Bypassed="0" Intensity="0.0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors/>
                      </Processor>
                      <Processor Type="EffectChain" ID="FX" Bypassed="0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors/>
                      </Processor>
                      <Processor Type="ModulatorChain" ID="Sample Start" Bypassed="0" Intensity="1.0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors/>
                      </Processor>
                      <Processor Type="ModulatorChain" ID="Group Fade" Bypassed="0" Intensity="1.0">
                        <EditorStates BodyShown="1" Visible="0" Solo="0"/>
                        <ChildProcessors/>
                      </Processor>
                    </ChildProcessors>
                    <RoutingMatrix NumSourceChannels="2" Channel0="0" Send0="-1" Channel1="1" Send1="-1"/>
                    <channels>
                      <channelData enabled="1" level="0.0" suffix=""/>
                    </channels>
                  </Processor>
                  

                  SampleStart => 4th child processor => 4.

                  const var b = Synth.createBuilder();
                  
                  const var sampler = b.create(b.SoundGenerators.StreamingSampler, "Sampler", 0, -1);
                  const var SAMPLE_START_MOD_INDEX = 4;
                  
                  b.create(b.Modulators.Velocity, "VeloSampleStart", sampler, SAMPLE_START_MOD_INDEX);
                  b.flush();
                  

                  Im begingng to think this Builder stuff is a bit pointless - if its not all there then its not saving anything in the end.

                  I would say 99% of the functionality is there - I'm building the full Triaz module tree with the builder including hardcoded FX modules, loading custom script processors, etc. It's just that the current docs are a bit sparse and you need to know secret tricks like this one but that is solved with the glory of the new upcoming docs.

                  1 Reply Last reply Reply Quote 4
                  • ustkU
                    ustk
                    last edited by ustk

                    Just a quick question without polluting the thread to much.

                    Is this what I need if:

                    • I want to create predefined modules only in "dev mode" (meaning I can use a macro processor during development and disable it before export)
                    • I want to add scripts to those modules (they would be scriptFX that are using their process callback)
                    • add/remove corresponding buttons on the interface

                    The rationale behind this is to dynamically create a set of tools (modules + scripts + components) that are helping me during development then throw everything away before export with a simple macro (or uncommenting an included file which is about the same)

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

                    1 Reply Last reply Reply Quote 0
                    • OrvillainO
                      Orvillain
                      last edited by

                      If in doubt, add the thing manually, and fish the info out of the xml. I've got a tree builder namespace for my plugin, that builds the entire module tree to the spec I've laid out. It is pretty cool and powerful once you get your head around it. But I don't blame you for the confusion; took me a while to understand!

                      Now... SampleStart .... no... it doesn't seem to exist in the builder from memory. I'm sure I reported this before.

                      The most confusing thing is getting your head around the chain indexes. I wish the API was a bit nicer for that. It also is very crashy.

                      namespace BuilderModuleTree
                      {
                          const builder = Synth.createBuilder();
                      
                          inline function buildModuleTree()
                          {
                              builder.clear();
                              // Build stuff here - in my plugin, I have other namespaces like BuilderModuleTreeEffects and BuilderModuleTreeSamplers for example.
                              builder.flush();
                          }
                      }
                      

                      Musician - Instrument Designer - Sonic Architect - Creative Product Owner
                      Crafting sound at every level. From strings to signal paths, samples to systems.

                      1 Reply Last reply Reply Quote 0
                      • OrvillainO
                        Orvillain
                        last edited by

                        Also, worth remembering... a compiled plugin CANNOT use the builder - at least for the most part. So what I've also got is a PluginStateData namespace, which maintains a key:value dictionary of module id's to module references. This runs on plugin instantiation, retrieves all of the actual object references, and stores them in a const dictionary.

                        You should only use the builder to build the module tree. You should not use it for retrieving or storing id's or object references.

                        Musician - Instrument Designer - Sonic Architect - Creative Product Owner
                        Crafting sound at every level. From strings to signal paths, samples to systems.

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

                        20

                        Online

                        2.3k

                        Users

                        13.7k

                        Topics

                        118.7k

                        Posts