HISE Logo Forum
    • Categories
    • Register
    • Login

    AAX plugin doesn't initiate default slider values when loaded in Pro Tools

    Scheduled Pinned Locked Moved General Questions
    49 Posts 10 Posters 2.4k 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.
    • orangeO
      orange @gorangrooves
      last edited by orange

      @gorangrooves Yes, but that retrospective SDK test can help to solve the cause of the issue. You can download the SDK v2.4.0, compile the static libraries and give it a go.

      develop Branch / XCode 13.1
      macOS Monterey / M1 Max

      gorangroovesG 1 Reply Last reply Reply Quote 0
      • gorangroovesG
        gorangrooves @orange
        last edited by

        @orange i will try. You are not having the issue with that SDK?

        Goran Rista
        https://gorangrooves.com

        Handy Drums and Handy Grooves
        https://library.gorangrooves.com

        orangeO 1 Reply Last reply Reply Quote 0
        • orangeO
          orange @gorangrooves
          last edited by orange

          @gorangrooves I built on June and it was working. If you'd like, you can download Need 73 or 81 or 84 from here and try on your system.

          develop Branch / XCode 13.1
          macOS Monterey / M1 Max

          gorangroovesG 1 Reply Last reply Reply Quote 0
          • gorangroovesG
            gorangrooves @orange
            last edited by

            @orange I compiled a plugin using AAX SDK 2.4.0, and the issue still remains. 😞

            :folded_hands_light_skin_tone: @Christoph-Hart

            Goran Rista
            https://gorangrooves.com

            Handy Drums and Handy Grooves
            https://library.gorangrooves.com

            1 Reply Last reply Reply Quote 0
            • Dan KorneffD
              Dan Korneff
              last edited by

              There's also an issue with linking controls in multi-mono mode. I haven't built an AAX binary with a recent version of HISE yet so I'll try to do that over the weekend and see what happens.

              Dan Korneff - Producer / Mixer / Audio Nerd

              gorangroovesG 1 Reply Last reply Reply Quote 0
              • gorangroovesG
                gorangrooves @Dan Korneff
                last edited by

                Also, regarding AAX export: HISE autogenerated compiler specifies "Use static runtime" for Runtime Library, while the AAX SDK requires DLL. I had to change that to make the compilation successful.

                Goran Rista
                https://gorangrooves.com

                Handy Drums and Handy Grooves
                https://library.gorangrooves.com

                1 Reply Last reply Reply Quote 0
                • gorangroovesG
                  gorangrooves @ps
                  last edited by

                  @ps Would you mind sharing that bit of script, please (as a fall-back)?

                  Goran Rista
                  https://gorangrooves.com

                  Handy Drums and Handy Grooves
                  https://library.gorangrooves.com

                  P 1 Reply Last reply Reply Quote 0
                  • FortuneF
                    Fortune
                    last edited by Fortune

                    This problem is definitely unacceptable. I can't believe even the button issue is happening for years!

                    I am sure rather than adding no-urgent additions to Hise, @Christoph-Hart has already started to debug this critical issue and I am sure he will find a way to fix this and the already many years active button issue too.

                    gorangroovesG 1 Reply Last reply Reply Quote 1
                    • gorangroovesG
                      gorangrooves @Fortune
                      last edited by

                      @Fortune Yes, I have my faith in @Christoph-Hart . There was an issue with FL Studio multi-out, and fixed that in a very timely manner recently. Didn't say he was doing it, but just published the fix when it was ready.

                      Goran Rista
                      https://gorangrooves.com

                      Handy Drums and Handy Grooves
                      https://library.gorangrooves.com

                      1 Reply Last reply Reply Quote 2
                      • P
                        ps @gorangrooves
                        last edited by

                        @gorangrooves i don‘t have hise in front of me right now but it‘s very simple:

                        Start a timer on init for something like 500ms.

                        In the timer callback check for a slider value that will usually never be set to 0 (only by protools) and is a plug-in parameter. (This could be your main out gain knob for example).

                        If (MainGainKnob.getValue() == 0)
                        {
                        load your init preset(depending on how your preset system works it either your own function or Engine.loadUserPreset);

                        timer.stopTimer();
                        }

                        That’s it :)

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

                          So a "generic" script would look like this:

                          const var ProtoolsParameterFixer = Engine.createTimerObject();
                          
                          ProtoolsParameterFixer.setTimerCallback(function()
                          {
                          	for(c in Content.getAllComponents(".*"))
                          	{
                          		if(c.get("isPluginParameter"))
                          		{
                          			c.setValue(c.get("defaultValue"));
                          			c.changed();
                          		}
                          	}
                          	
                          	this.stopTimer();
                          });
                          
                          ProtoolsParameterFixer.startTimer(600);
                          

                          @gorangrooves if this solves the problem I could add this as native C++ function, then it will only be called when loaded as AAX plugin and I'll try to not make a educated guess how long it will take, but somehow call it after the plugin initialisation. Still not sure why the default values aren't used by Protools, the code in HISE looks OK.

                          FortuneF LindonL 2 Replies Last reply Reply Quote 1
                          • FortuneF
                            Fortune @Christoph Hart
                            last edited by Fortune

                            @Christoph-Hart This is not a proper solution.

                            It can clutter with the saved settings in the Pro Tools project. It is obvious that there is a bug and it has to be fixed. Other plugins doesn't do that, so it is Hise related.

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

                              Yeah, that's correct, but I don't know what else can be done. Protools simply ignores the value returned by juce::PluginParameter::getDefaultValue() (or overrides it with zero afterwards).

                              In the JUCE forum you can read stuff like that:

                              Short answer - yes, when Pro Tools loads a session, it does its own recall (like automation, but not dependent on the parameters being armed for automation) of parameter values.

                              It does this first, and then calls the setStateInformation method (passing it back whatever chunk of data, presumably some XML, that you might have given it from getStateInformation). So you have the option then to overwrite your choice of parameter values.

                              For setting a “new default” state (like @jcomusic and @parkellipsen are talking about above) you could set that explicity from within setStateInformation, if you detect (by parsing the XML for some telltale values) that it was passed the “old default” XML.

                              https://forum.juce.com/t/aax-protools-plugin-states-persistent-over-multiple-sessions/29977/6

                              gorangroovesG P 2 Replies Last reply Reply Quote 0
                              • gorangroovesG
                                gorangrooves @Christoph Hart
                                last edited by

                                @Christoph-Hart Thanks very much. I will be sure to bring this up with AVID. If it is affecting JUCE, then this is affecting a lot of developers and is not HISE-specific. It took me an hour just to get started with the "industry standard" Pro Tools. I felt like I was debugging their software and not there to test mine. Goodness fuck.

                                I will report back on how this hack works.

                                Goran Rista
                                https://gorangrooves.com

                                Handy Drums and Handy Grooves
                                https://library.gorangrooves.com

                                1 Reply Last reply Reply Quote 1
                                • P
                                  ps @Christoph Hart
                                  last edited by

                                  @Christoph-Hart the problem is that you really have to find a specific custom trigger value for your plugin that a user will never save as preset / store the session with or that will most likely never be set when the user is duplicating the plugin in the daw. this is why I suggested main gain out because why would you store a session with main out put to -100.
                                  That's something I forgot to mention you have to use the lowest value of the slider range because that is what protools will set it to on init.
                                  So If you have set master gain range -70/ 0 you have to call If MasterGain.get Value()== -70 - load preset that you want as init.
                                  you could use a hidden dummy slider of course as well bit it will show up as plugin parameter and might lead to confusion.

                                  orangeO 1 Reply Last reply Reply Quote 0
                                  • orangeO
                                    orange @ps
                                    last edited by orange

                                    @ps @gorangrooves

                                    I've checked again the the plugins that are exported on June 2022 (develop branch). All of the sliders are working without any issues.

                                    I haven't built plugins with the current commit, but if this issue still persists, then the root cause might be some commits after that date.

                                    But I think setting the gain range to -70 or setting a timer object to call the settings won't be more than a temporary solution and won't be healthy.

                                    Since the time hasn't been passed so much from June, it could be easier to find the root cause.

                                    develop Branch / XCode 13.1
                                    macOS Monterey / M1 Max

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

                                      @Christoph-Hart said in AAX plugin doesn't initiate default slider values when loaded in Pro Tools:

                                      So a "generic" script would look like this:

                                      const var ProtoolsParameterFixer = Engine.createTimerObject();
                                      
                                      ProtoolsParameterFixer.setTimerCallback(function()
                                      {
                                      	for(c in Content.getAllComponents(".*"))
                                      	{
                                      		if(c.get("isPluginParameter"))
                                      		{
                                      			c.setValue(c.get("defaultValue"));
                                      			c.changed();
                                      		}
                                      	}
                                      	
                                      	this.stopTimer();
                                      });
                                      
                                      ProtoolsParameterFixer.startTimer(600);
                                      

                                      @gorangrooves if this solves the problem I could add this as native C++ function, then it will only be called when loaded as AAX plugin and I'll try to not make a educated guess how long it will take, but somehow call it after the plugin initialisation. Still not sure why the default values aren't used by Protools, the code in HISE looks OK.

                                      -- Im confused - wont this just reset every component to its default value everytime you start the plugin?

                                      So I load it into PFools for the first time and it does this = good, I change some things and save my session, then I reopen the session only to lose all the changes I made to components = bad?

                                      -- or do I not really understand(likely)?

                                      HISE Development for hire.
                                      www.channelrobot.com

                                      orangeO 1 Reply Last reply Reply Quote 0
                                      • orangeO
                                        orange @Lindon
                                        last edited by orange

                                        @Lindon Yes I think it will override the saved PT session settings, so PT daw session can't be saved.

                                        develop Branch / XCode 13.1
                                        macOS Monterey / M1 Max

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

                                          @orange said in AAX plugin doesn't initiate default slider values when loaded in Pro Tools:

                                          @Lindon Yes I think it will override the saved PT session settings, so PT daw session can't be saved.

                                          hmm, thats not a solution then is it...sadly.

                                          HISE Development for hire.
                                          www.channelrobot.com

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

                                            I think the secret ingredient that I forgot to make this work with restoring projects is like @ps suggested: use a bogus value that no sane user will ever use for a particular parameter, then restore if that value is met.

                                            Is it hacky? Sure. Is it the appropriate solution to the problem. Hell yes.

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

                                            24

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.4k

                                            Posts