HISE Logo Forum
    • Categories
    • Register
    • Login

    Edits from host

    Scheduled Pinned Locked Moved Scripting
    21 Posts 4 Posters 409 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.
    • d.healeyD
      d.healey @karlito31
      last edited by

      @karlito31 I don't believe this is possible because hosts don't provide that information to plugins. The usual way of handling this is to have a processing delay in your plugin, so that during playback you can examine the MIDI a bar or two ahead.

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

      K 1 Reply Last reply Reply Quote 0
      • K
        karlito31 @d.healey
        last edited by

        @d-healey
        That's exactly what I'm trying to avoid. :)

        d.healeyD 2 Replies Last reply Reply Quote 0
        • d.healeyD
          d.healey @karlito31
          last edited by

          @karlito31 you'll have to talk to all the daw developers 😀

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

          1 Reply Last reply Reply Quote 1
          • d.healeyD
            d.healey @karlito31
            last edited by

            @karlito31 actually I wonder if the creators of CLAP thought about this, might be worth checking.

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

            K 1 Reply Last reply Reply Quote 0
            • K
              karlito31 @d.healey
              last edited by

              @d-healey
              I sure will, thanks.

              K 1 Reply Last reply Reply Quote 0
              • K
                karlito31 @karlito31
                last edited by

                @karlito31
                Actually, if it can't be done like that, would it be possible to implement whole piano roll in plugin and sand midi messages created in it to host (or other VST Instruments)?

                A K d.healeyD 3 Replies Last reply Reply Quote 0
                • A
                  aaronventure @karlito31
                  last edited by

                  @karlito31 Yes, all the API is there. You can create any kind of UI you want with the ScriptPanel, you can create artificial events upstream and they'll propagate properly to your Sound Processors, and you can then send these MIDI messages out of the plugin.

                  Relevant classes are

                  • ScriptPanel
                  • Synth
                  • Message
                  • MessageHolder
                  1 Reply Last reply Reply Quote 0
                  • K
                    karlito31 @karlito31
                    last edited by

                    @karlito31
                    Thank you.

                    1 Reply Last reply Reply Quote 0
                    • d.healeyD
                      d.healey @karlito31
                      last edited by

                      @karlito31 There's also the MIDI player module and some examples in the docs on how to use it.

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

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        karlito31 @d.healey
                        last edited by

                        Eh, sorry for the bother, some additional questions pop up by themselves... is it possible to at least get a tempo map from the host? How else can I sync my piano roll with the host? After a day of research, it seems trivial to achieve this with ARA, but almost impossible with vanilla VST? HISE + ARA? Possible? In the future?

                        d.healeyD 1 Reply Last reply Reply Quote 0
                        • d.healeyD
                          d.healey @karlito31
                          last edited by

                          @karlito31 Engine.getHostBpm(); The transport handler might also be of interest to you.

                          It looks like the ARA SDK is under the Apache license which I believe is compatible with the GPLv3, so perhaps a feature request for Christoph?

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

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            karlito31 @d.healey
                            last edited by

                            @d-healey
                            Thanks again. Is there an official channel for feature requests?

                            LindonL K 2 Replies Last reply Reply Quote 0
                            • LindonL
                              Lindon @karlito31
                              last edited by

                              @karlito31 said in Edits from host:

                              @d-healey
                              Thanks again. Is there an official channel for feature requests?

                              yes its the Feature Requests category here in the forum.

                              HISE Development for hire.
                              www.channelrobot.com

                              1 Reply Last reply Reply Quote 0
                              • K
                                karlito31 @karlito31
                                last edited by

                                Allright, hopefully last question. Engine.getHostBpm() will return global project tempo. But what about variable tempo extracted from live recordings and imposed on host timeline as tempo map?

                                d.healeyD 1 Reply Last reply Reply Quote 0
                                • d.healeyD
                                  d.healey @karlito31
                                  last edited by

                                  @karlito31 I think that's probably where you want to use the transport handler. It has various callbacks such as setOnTempoChange() - https://docs.hise.dev/scripting/scripting-api/transporthandler/index.html#setontempochange

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

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    karlito31 @d.healey
                                    last edited by

                                    @d-healey
                                    Yes, but in order to draw grid of piano roll that will reflect all tempo fluctuations throughout project/track I will need tempo map. I guess this is what Im asking actualy, is it possible to get tempo map of a project, not just average BPM?

                                    d.healeyD A 2 Replies Last reply Reply Quote 0
                                    • d.healeyD
                                      d.healey @karlito31
                                      last edited by

                                      @karlito31 I don't think so, the DAW doesn't provide that information.

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

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        aaronventure @karlito31
                                        last edited by

                                        @karlito31 I haven't done any tempo syncing in HISE yet, so take what I say with a grain of salt.

                                        I think in this case it's important to understand how is a DAW reporting tempo changes to plugins. What's the resolution? Is it once per sample? Is it once per buffer?

                                        If this info doesn't already exist somewhere, you'll have to find out yourself.

                                        You definitely need your transport callback that acts on tempo change. But to find out, you should create a minimal plugin with some logging or display features where you'll just log each tempo change as well as the time of the change, and you'll get your answer about the resolution. Now, test it in different DAWs to see if there's anything different in how they act.

                                        Now you can try and do your compute inside these tempo change callbacks and see how it affects performance.

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          karlito31 @aaronventure
                                          last edited by

                                          @aaronventure
                                          But to gather all tempo changes one will have to play once through whole track/project, store changes and than eventualy construct tempo map. One that is allready created by host (or, reather Melodyne) if you just drag audio to timeline (at least, this is how it works in Studio one and Sonar, probbably Pro Tools and some others). And since the tempo map already exists, I was hoping to be able to pull it in at the plugin initialization and use the data to plot the bars inside the piano roll. If the tempo map is not created at the time of plugin initialization, the BPM is sufficient, obviously. But at some point, the tempo map will be created and then the plugin would have to update the entire grid. And move all notes along with it. So, it cannot be achieved through a stream/realtime mechanics you are suggesting.

                                          A 1 Reply Last reply Reply Quote 0
                                          • A
                                            aaronventure @karlito31
                                            last edited by

                                            @karlito31 In that case you are implying that the DAW would report any tempo map changes to plugins, no matter how long the project is.

                                            I think this was one of the things ARA was made to solve.

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

                                            16

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.7k

                                            Posts