HISE Logo Forum
    • Categories
    • Register
    • Login

    Transport Handler ......

    Scheduled Pinned Locked Moved Scripting
    11 Posts 3 Posters 302 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
      last edited by Lindon

      Okay - I'm trying to use the transport handler in any way I can but I clearly dont have enough information and the documentation is frustrating....

      I want(eventually) to have the transport handler to run synced to the DAW, and when the DAW stops I want it to keep running using the last set of values it got from the DAW... but Im so far from that I'd have to stand on a chair to see it...

      so lets start with some basic questions:

      What's the HISE controller doing here? Pretending to be an external DAW?

      Loading the snippet on the TH page:
      https://docs.hise.dev/scripting/scripting-api/transporthandler/index.html

      Why does the transport handler fail when I change to 5/4 from 4/4 ? - it keeps to a strict 4/4 timing - so :

      inline function onBeat(beat, isNewBar) 
      {
          if(isNewBar)
          {
      	    Console.print("new bar");
          }
          local id = Synth.addNoteOn(1, 80 + isNewBar * 12, 127, 0);
          Synth.noteOffDelayedByEventId(id, 800);
      }
      

      prints "new bar" every 4 beats.... when clearly thats not a new bar in a 5/4 bar....

      The documentation kindly/frustratingly says:

      In order to use the master clock with modules, you need to

      • enable the grid callback
      • set the synchronisation mode to one of the four available modes

      ...and not unusually fails to list those modes....

      It also says:

      setLinkBpmToSyncMode
      If enabled, this will link the internal / external BPM to the sync mode.

      ...what does that even mean ?

      HISE Development for hire.
      www.channelrobot.com

      ulrikU 2 Replies Last reply Reply Quote 2
      • ulrikU
        ulrik @Lindon
        last edited by

        @Lindon said in Transport Handler ......:

        Why does the transport handler fail when I change to 5/4 from 4/4 ? - it keeps to a strict 4/4 timing - so :

        Are you trying this inside Hise?
        If so, the Hise controller is buggy.
        https://forum.hise.audio/topic/10078/hise-controller-is-buggy

        Hise Develop branch
        MacOs 15.3.1, Xcode 16.2
        http://musikboden.se

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

          @ulrik well yes - so thanks for that... now what is the HISE Controller pretending to be? The DAW?

          HISE Development for hire.
          www.channelrobot.com

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

            @Lindon Ok well Im capturing transport start and stop, so now...

            Given I want the transport handler to keep issuing pulses, how do I switch the transport handler between external and internal (which I assume will then do what I want)???

            HISE Development for hire.
            www.channelrobot.com

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

              @Lindon Right well some C++ diving gives us:

              Inactive, //> No syncing going on
              ExternalOnly, //< only reacts on external clock events
              InternalOnly, //< only reacts on internal clock events
              PreferInternal, //< override the clock value with the internal clock if it plays
              PreferExternal, //< override the clock value with the external clock if it plays
              SyncInternal, //< sync the internal clock when external playback starts
              

              Now how to start the internal clock.....

              guessing its:

              TransportHandler.startInternalClock(int timestamp)
              

              whats "timestamp" here? any one got any ideas?

              HISE Development for hire.
              www.channelrobot.com

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

                @Lindon so eventually I get to here:

                void ScriptingApi::TransportHandler::startInternalClock(int timestamp)
                {
                	auto& clock = getMainController()->getMasterClock();
                
                	if(clock.changeState(timestamp, true, true))
                	{
                		if(getMainController()->isInsideAudioRendering())
                		{
                			auto gi = clock.processAndCheckGrid(getMainController()->getBufferSizeForCurrentBlock(), {});
                			auto ph = clock.createInternalPlayHead();
                			getMainController()->handleTransportCallbacks(ph, gi);
                		}
                	}
                }
                

                but I still dont know if this is in ms or samples or something else? Anyone got any idea?

                HISE Development for hire.
                www.channelrobot.com

                J 1 Reply Last reply Reply Quote 1
                • ulrikU
                  ulrik @Lindon
                  last edited by ulrik

                  @Lindon said in Transport Handler ......:

                  Okay - I'm trying to use the transport handler in any way I can but I clearly dont have enough information and the documentation is frustrating....

                  I want(eventually) to have the transport handler to run synced to the DAW, and when the DAW stops I want it to keep running using the last set of values it got from the DAW... but Im so far from that I'd have to stand on a chair to see it...

                  In this example the transport handler will continue to run even after the daw playback has stopped
                  and if starting the daw again, the transport handler will sync to the daw position again.

                  transporthandler.gif

                  HiseSnippet 1347.3ocsW01aaaCDlJIZX1acXcX+.H5mbB7RriccR5vP8ryaFqIwX1qXepEzRmrHhLo.EUc8F1+u8yY+C1NRIaI63tUDr5ODHRdu7vm6NdWFpjdPRhTQbpNdQLPb9R2QKD5v9gLtfL3bhy23NVwDIwRk9ZlvOBTjdKhYIIfOwwY2qLx4TYOh82e8xdrHlvCJ1hPdsj6AuhOiqK1cX2ehGEcIyGFymUR51cG3IE8kQxTDS651fDy7tmMEtkYDaGWx0rjPhyAtMddG.NoUfuOqUK+Nc5b1om09rlrfFsYSZ14r1G29jiO8j.hymcgOWKUizLMjPb1qmzewnP4bQlCdMOgOIBLKZRFgdNa6KkQ9lqnYWR+Pdj+vkjUBAsxvBpa2Lp6acug6yWseAE901CnEZTl.c1Yc3s6ZvqYY30nD71BjbJAo8xfzScG4o3w5hSL34KbGHzfJfgwoxPISVxN+oqaeIJgPe3L18vkJbwJMpcbiF0osZzX+uuZULVknoiul9CzKDS4B3POEf2iMSYpYDlKhPInAoBOMWJnSPIQRRLEpY9bfvGdecJO4VXdOlZ+p+d0JKgwTP2WNKVJvE0dVOT5WMI5Y6eXBfK0v60OqNckMPe8Gn6Fes436D8JbiVkB0K4WCpd.rzKwdtR7jgQrEbwTKhN5nJIy4ZuPzL54.Hnn2AkfEQ8hjd2Sq4yluOEu1Ttn7AVUwynwYVi9cFdaNVEPSVH7nZIUGxz0y1BuvVbZMTrLgaf1JSjnkwInAzgvFdghQDMWjBV6wwMBTxYz4gfBLhulIhA+RqYJsEancyLUA1lf0fY.DnnvIV4BAFpdFKiuY3cizuDYQeId8NbnBB.0EKYnWX1yH6fbPuQnZ7FTeV7Zi.hIngf1jYRSRsWKjmLPacFHwfXOYpPat9hkfeE1yXQquwOVhn9FabmXIjGgGUKfEkjkqXh9VhxnxVn+GjLIEiLxaspIYVIip4sLStN8crnTvlWY+JizrdXM7Tqw9Yb2CPZsF4T31qTJbdVwRND5yhhLwzZaAd4z6f.p..epLfNShjbrB73IfMenNMMwP67jWfxdfQbMf9jhuOHUXELEckg8adJ0j3g4zgbrhYFfARZyi5zdrQGd.cgL0ZKSMDV55Ss1oN83VYYen4T.F6wh.i4rZlmsbgfgOKdkh6mmlz7zs8HyTTf7rIaDpNkoldr8usV9DShLBNLVggxLYLTZQR4UEVHyQElDE7fipVsTz9VoFtSTyZYzHzMOJHXqmky81WJ2xwldjp+MEqIRmMATkSnLBh8AVu4h6Gt4R4dedYISkDTJFH356hAwGpiHIOCzzHJGUnnZaanuJuMTuTsVJHbe6bFqx7HVTWdjAxuL3bllszVnYQWECJM2bKbNGdGNRQVKtJtmCI2i0E3zAqx7wl9ebd98Ed87tKVsnKzcN2WGVb5a5FB7og5xxSJ4uJY96I496UrIPj0cUbyaWU1WsK4KbwF9xekubc7w0AHELh+akXnS6BXbkYCcHIikOFYylr5ACAfieH8SiX50mIwL4V9AXtzZCBXdhQf8bVTdxt+2FT4iEhO0cnoQ61w3NaAiX5xmBLlOd2SbuHH.7zE.bO2K+0OMyxQ9YYJ1Da5MLshi4Mt2lNaDNRrGXd3Q.QlZYmcLUcYqarL9OBeG0t3uwe4G1zr1I+vlKOjLi4oju0KqV0L.4ma2AwjvNrcE2aLqoMeX84Lbd1254stodfhG+XUr0iUw1OVEe9iUwNOVEO4wp3o+2JZ92M9wTsbVVYCgbyvKrum53j01zlsR9G.0.qgn
                  

                  so lets start with some basic questions:

                  What's the HISE controller doing here? Pretending to be an external DAW?

                  I think that is the purpose, yes

                  Loading the snippet on the TH page:
                  https://docs.hise.dev/scripting/scripting-api/transporthandler/index.html

                  Why does the transport handler fail when I change to 5/4 from 4/4 ? - it keeps to a strict 4/4 timing

                  bug in Hise Controller?
                  Compile a plugin and try in your daw

                  setLinkBpmToSyncMode
                  If enabled, this will link the internal / external BPM to the sync mode.

                  ...what does that even mean ?

                  I have no idea

                  Hise Develop branch
                  MacOs 15.3.1, Xcode 16.2
                  http://musikboden.se

                  J LindonL 2 Replies Last reply Reply Quote 3
                  • J
                    jp3dr0 @Lindon
                    last edited by

                    @Lindon Christopher explained here what is timestamp in the onGridChange callback:
                    https://forum.hise.audio/post/59358

                    “timestamp is the sample position of the grid event in the current buffer so you could pass this onto any message you create to assure sample-accuracy”

                    So I’m guessing this one is the same? Measured in samples, used to start the clock at a specific position in the buffer.

                    I still don’t understand why in the Clocksynced Arpeggiator snippet the calls on TransportHandler that have a timestamp as a parameter seems to be almost interoperable between getting a specific timestamp value from a note or just putting it as zero. I’ve tried to swap it but can’t seem to note any difference in the execution of the code. Also I’m always having zero as the value of timestamp in the onGridChange callback.

                    1 Reply Last reply Reply Quote 0
                    • J
                      jp3dr0 @ulrik
                      last edited by

                      @ulrik I think it’s easier to just compile HISE as a VST and run it inside a DAW directly, faster then having to compile your project VST to debug and more reliable then the HISE Controller. that’s what I do anyways. I just have issues with compiling HISE as a multichannel VST (it crashes Reaper).

                      ulrikU 1 Reply Last reply Reply Quote 0
                      • ulrikU
                        ulrik @jp3dr0
                        last edited by

                        @jp3dr0 said in Transport Handler ......:

                        @ulrik I think it’s easier to just compile HISE as a VST and run it inside a DAW directly, faster then having to compile your project VST to debug and more reliable then the HISE Controller. that’s what I do anyways. I just have issues with compiling HISE as a multichannel VST (it crashes Reaper).

                        Yes if he has Hise compiled as a plugin, that will make it easier to check.

                        Hise Develop branch
                        MacOs 15.3.1, Xcode 16.2
                        http://musikboden.se

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

                          @ulrik As always mate ...perfect.

                          HISE Development for hire.
                          www.channelrobot.com

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

                          9

                          Online

                          1.7k

                          Users

                          11.8k

                          Topics

                          102.3k

                          Posts