HISE Logo Forum
    • Categories
    • Register
    • Login

    AAX - ProTools - really ProTools? Really?

    Scheduled Pinned Locked Moved Bug Reports
    20 Posts 4 Posters 944 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.
    • Christoph HartC
      Christoph Hart
      last edited by

      I could add a TransportHandler class that you could assign callbacks to - just like the ExpansionHandler class:

      const var th = Engine.createTransportHandler();
      
      // first parameter is synchronous or not
      // if you want it to be executed synchronously (in the audio thread)
      // you must supply an inline function (because the normal function isn't
      // realtime safe)
      th.setOnTempoChange(true, inline function()
      {
          // the transport handler will contain 
          // the AudioHead properties and can be 
          // obtained with `this`
          Synth.startTimer(this.bpm);
      });
      
      // if it's async, it can be a normal function
      th.setOnTransportChange(false, function()
      {
          MyPanel.setTimerCallback(function() { // something
          });
      });
      LindonL 1 Reply Last reply Reply Quote 1
      • LindonL
        Lindon @Christoph Hart
        last edited by Lindon

        @Christoph-Hart yeah I think that would work...

        so (for our edge case..)sort of:

        const var th = Engine.createTransportHandler();
        
        
        
        th.setOnTransportChange(false, function()
        {
            if (!this.playing)
                Engine.allNotesOff();
        
        });
        

        so cheeky request, can we also get:

        th.setOnBarStart(false, function()   //<--- oh look at that sorta onListener ish...
        

        and maybe the bar subdivisions?

        HISE Development for hire.
        www.channelrobot.com

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

          so (for our edge case..)sort of:

          Almost... you want it to be synchronous because asynchronous calls might be skipped if no interface is present.

          const var th = Engine.createTransportHandler();
          
          th.setOnTransportChange(true, function()
          {
              if (!this.playing)
                  Engine.allNotesOff();
          
          });
          
          LindonL 1 Reply Last reply Reply Quote 1
          • LindonL
            Lindon @Christoph Hart
            last edited by

            @Christoph-Hart and those super useful other event types? (Crosses fingers here...)

            HISE Development for hire.
            www.channelrobot.com

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

              If the basic system is there, adding those is trivial. I'll try to cover all information that is contained in the AudioPlayhead.

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

                There you go:

                Link Preview Image
                HISE | Docs

                favicon

                (docs.hise.audio)

                LindonL T 2 Replies Last reply Reply Quote 3
                • LindonL
                  Lindon @Christoph Hart
                  last edited by

                  @Christoph-Hart

                  👏 👏 👏 👏 👏 ....

                  HISE Development for hire.
                  www.channelrobot.com

                  1 Reply Last reply Reply Quote 0
                  • T
                    tomekslesicki @Christoph Hart
                    last edited by

                    @Christoph-Hart Hey Christoph, would that solve the hanging notes issue for me too?

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

                      Actually I'm thinking about adding a allNotes off message automatically when the transport playback state changes from true to false so this might solve some hanging note issues indeed (the notes will still hang until you stop the playback) - it's a rather intrusive change for all projects, but I can't think of a scenario where this backfires.

                      You can check this functionality with this code:

                      const var th = Engine.createTransportHandler();
                      
                      inline function onStop(isPlaying)
                      {
                          if(!isPlaying)
                              Engine.allNotesOff();
                      };
                      
                      th.setOnTransportChange(true, onStop);
                      

                      If it works (and Lindon's initial problem with protools is fixed with this code), I'll add it to the default handling inside HISE...

                      d.healeyD LindonL 2 Replies Last reply Reply Quote 1
                      • d.healeyD
                        d.healey @Christoph Hart
                        last edited by

                        @Christoph-Hart

                        it's a rather intrusive change for all projects, but I can't think of a scenario where this backfires

                        Might be a good idea to add a pre-processor definition to disable it in some weird edge case.

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

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

                          @Christoph-Hart said in AAX - ProTools - really ProTools? Really?:

                          If it works (and Lindon's initial problem with protools is fixed with this code), I'll add it to the default handling inside HISE...

                          OK so I built using the latest HISE - included the the code for handling All Notes Off on playhead stop, and the customer reports a big improvement in AAX/ProTools, its still not apparently perfect - moving from showing up around 50% of the time down to 5-10% of the time. Which I think is still a "ProTools behaving badly" problem..not sure how we can fix it any further....

                          HISE Development for hire.
                          www.channelrobot.com

                          1 Reply Last reply Reply Quote 0
                          • T
                            tomekslesicki
                            last edited by

                            @Christoph-Hart I just wanted to ask if this is now a part of the HISE build or if I still should call...?

                            const var th = Engine.createTransportHandler();
                            
                            inline function onStop(isPlaying)
                            {
                                if(!isPlaying)
                                    Engine.allNotesOff();
                            };
                            
                            th.setOnTransportChange(true, onStop);
                            
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            8

                            Online

                            1.7k

                            Users

                            11.8k

                            Topics

                            103.2k

                            Posts