HISE Logo Forum
    • Categories
    • Register
    • Login

    Issues in exported AAX plugins: drawing panels and buttons, sliding a panel

    Scheduled Pinned Locked Moved Bug Reports
    35 Posts 5 Posters 1.7k 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.
    • gorangroovesG
      gorangrooves
      last edited by

      @Christoph-Hart Exported plugin in AAX is having issues with drawing panels and buttons, and sliding out a panel, as far as I can tell.

      Here is the video that best illustrates the problem.

      As you can tell from the video, several elements do not render until a mouse hovers over them to change state. Those elements include my logo, a mixer tab, all buttons in the bottom panel. Then, when pressing on the circular button in the top right of mixer, there is supposed to be a panel sliding out (containing faders), but that doesn't happen.

      On the MIDI Browser Panel, progress indicator is supposed to be moving along with the progress of played MIDI files, but that does not happen.

      I tested all 3 currently available AAX SDKs (2.5.1, 2.6.0, 2.6.1) with identical results. My old plugins work perfectly. Standalone app and VST work as they should.

      I compiled the plugin using up-to-date Developer branch, compiled an hour ago.

      Any idea of what could be going on here, or do I need to provide some further info to squash the bug?

      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 Dan Korneff

        Do you have a simple snip with an element or two to test?

        Dan Korneff - Producer / Mixer / Audio Nerd

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

          @Dan-Korneff I don't, but I can try putting something together if necessary.

          I am hoping that @Christoph-Hart may have an idea of where the problem may lie based on the description and symptoms of the problem. Chris, please let me know if you need me to put together a HISE snippet. While demo'ing the buttons is straightforward, the sliding panel and MIDI player progress bar will be a lot more complex for me to decouple from the project into a simple demo snippet.

          It is important to note that my entire interface is vectorized (with the exception of the artwork) and uses either imported vectors or LAF drawings.

          • The elements that are not showing are buttons that have multiple states (normal, hover, pressed). It is only once they are hovered over that they appear.
          • The panel that doesn't show up uses a timer to slide out.
          • The MIDI "play indicator" that is not updating uses a panel with a timer.

          Goran Rista
          https://gorangrooves.com

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

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

            Hmm, debugging AAX is the worst - I can't attach a debugger and the toolchain gets massively more complicated so your best chances is trying to figure out what the reason is from the outside.

            I can see three different reasons for why this would happen so as first thing I'd suggest trying to nail this down:

            1. HISE regression
            2. Other AAX SDK
            3. Your plugin code

            If it's a HISE regression, then I would recommend the binary search way of finding the culprit: start out with a commit 5 months in the past, if it still happens, try 2.5 months, if it then doesn't happen, try 3.75 months etc.

            If it's the AAX SDK then you need to contact those guys (but that's the least likely option)

            If it's your plugin code, then you can fix it yourself :)

            All I can say from the information is that the repaint() call will not cause the UI to actually repaint (or something is preventing the UI timers to run), so it has to wait until the mouse hover flags the component as dirty to do another repaint. The first thing you can try is to do something like this:

            const var repaintTest = Engine.createTimerObject();
            
            repaintTest.setTimerCallback(function()
            {
                Console.print("REPAINT ALL");
            
                for(c in Content.getAllComponents(".*")
                    s.sendRepaintMessage();
            
                this.stopTimer();
            });
            
            repaintTest.startTimer(5000);
            

            Then load up the plugin and make sure that you open the plugin within 5 seconds (if it takes longer, then adjust the time), but don't hover over anything and check if it shows up those elements after the specified time.

            While demo'ing the buttons is straightforward, the sliding panel and MIDI player progress bar will be a lot more complex for me to decouple from the project into a simple demo snippet.

            If the timer is causing the issue you should be able to isolate this pretty easily: Just make a project with a simple panel that draws a counter in its paint callback and increase that in the panels timer callback. The UI timers are being suspended if no interface is open (HISE is counting the amount of created plugin editors and stops the UI timers when it's zero). If that is somehow failing on AAX then it might be possible that these timers never run.

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

              @Christoph-Hart Thanks very much! This is very helpful. I'll be debugging as you suggest and will report back my findings asap.

              Goran Rista
              https://gorangrooves.com

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

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

                @Christoph-Hart I ran the initial test with repaint. After 5 sec, the elements on the interface showed up. The sliding panel (that uses a timer) still doesn't come up.

                I've discovered several more issues related to the "onNoteOn" callback.

                VIDEO

                • I have "note indicators", small circles that light up when notes on the keyboard are played. They are not showing, and the "incoming note#" display on the top is also not showing any notes played.

                • "Learn MIDI note" is not working either. The way it works normally is that you enable the learn button next to a note, and when a key is pressed, it gets assigned to that instrument.

                So, this seems pretty severe. I will now try different HISE commits to try to narrow it down.

                Goran Rista
                https://gorangrooves.com

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

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

                  @Christoph-Hart I am unsure if I am properly moving back in the commits.
                  In the Sourcetree, when I right-click on a commit I want to move back to, which option do I select?

                  I was using "Reset current branch to this commit." It places the "HEAD" label on that commit. It looks right, but I am unsure if it is.

                  Goran Rista
                  https://gorangrooves.com

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

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

                    @gorangrooves Use the commandline git checkout #commithash

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

                    gorangroovesG 1 Reply Last reply Reply Quote 0
                    • gorangroovesG
                      gorangrooves @d.healey
                      last edited by

                      @d-healey Thanks, but I'd rather not. I want to stick with the Sourcetree GUI. I find it to be easier, but I need to ensure I am doing it correctly.

                      Goran Rista
                      https://gorangrooves.com

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

                      ustkU 1 Reply Last reply Reply Quote 0
                      • ustkU
                        ustk @gorangrooves
                        last edited by

                        @gorangrooves if you're referring to GithubDesktop, then a right click on any commit, create new branch from this commit (or something similar) is what you want, and just give it a name.
                        Delete that branch when not needed anymore

                        Can't help pressing F5 in the forum...

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

                          @ustk Thanks. The software I am using is Sourcetree, which is the same as what Christoph uses. There are several options. While I understand the overall concept and what I am trying to do, I am not sure if I am doing it right.

                          sourcetree.png

                          Goran Rista
                          https://gorangrooves.com

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

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

                            @Christoph-Hart I confirmed that "Reset current branch to this commit" is the correct way.

                            Here is how my travel through time went for the last few hours. I am using VS2022.

                            • I first tried compiling AAX using the 2.6.1 SDK going back several months, and only the latest commits would compile the plugin.

                            • I swapped the AAX for the earlier 2.4.1 version. When I wasn't able to compile plugins with it either, I just tried to compile HISE.

                            • I went as far back as Oct 2022 and tried dozens of times to compile HISE, moving up a month or a couple of weeks. Up until August 2023, it is impossible to compile HISE as it is getting a lot of errors and warnings.

                            So, the earliest I can compile is August 10, 2023. I compiled the AAX with that version, and the issue I reported still exists. This is using the old AAX SDK.

                            So, since I am unable to compile anything earlier than this date, this approach is a dead end.

                            Next step: create a simple project with just one issue, like do something on NoteOn?

                            Goran Rista
                            https://gorangrooves.com

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

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

                              @gorangrooves have you resaved the projucer file before compiling after jumping around in the git history? This will solve most compile errors (there are a few intermediate states which don‘t compile but most commits should work.

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

                                @Christoph-Hart I did. I would close Projucer, open updated Projucer project and clean build in VS before compiling.

                                Goran Rista
                                https://gorangrooves.com

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

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

                                  @gorangrooves Something might be messing up in your local repo, you should definitely be able to build HISE all the way back to the first commit, except for those occasional commits that no-one can compile.

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

                                  gorangroovesG 1 Reply Last reply Reply Quote 0
                                  • gorangroovesG
                                    gorangrooves @d.healey
                                    last edited by

                                    @d-healey I'll try again. I'll delete everything locally and start fresh.

                                    Goran Rista
                                    https://gorangrooves.com

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

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

                                      @d-healey @Christoph-Hart I deleted the local HISE repository and started fresh. I was able to compile HISE from Jan 5th, 2023 and AAX.

                                      My plugin displayed the GUI properly, but panel sliding (timer) and onNoteOn are not working. That leads me to believe that there are several issues introduced at different HISE development stages. I will continue to hunt down and document exactly what happened and when and will report here.

                                      Goran Rista
                                      https://gorangrooves.com

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

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

                                        @Christoph-Hart I remembered I still had a backup of my old plugin version where those problematic features were working. I compiled it with the newest HISE and latest AAX SDK, and all those functions worked. The panel slides out, on NoteOn works. Whatever I had then working, it works now.

                                        So, the problem lies somewhere in my project, but only for exported AAX.

                                        Where do I go from here?

                                        Goran Rista
                                        https://gorangrooves.com

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

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

                                          @gorangrooves said in Issues in exported AAX plugins: drawing panels and buttons, sliding a panel:

                                          Where do I go from here?

                                          Did you use git to keep track of changes in your project?

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

                                          Christoph HartC 1 Reply Last reply Reply Quote 0
                                          • Christoph HartC
                                            Christoph Hart @d.healey
                                            last edited by

                                            Yes, git would be super nice for this. If you haven't used git yet, it's time to do so, then commit your earlier version and then overwrite it with your current project it will show you all changes.

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

                                            15

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.4k

                                            Posts