HISE Logo Forum
    • Categories
    • Register
    • Login

    onNoteOn() - Illegal operation in audio thread: String creation (in HISE plugin only!?)

    Scheduled Pinned Locked Moved General Questions
    24 Posts 4 Posters 866 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 @gorangrooves
      last edited by

      You basically have two tasks in one function that cannot coexist:

      • you can only change the note number in a synchronous callback
      • you can only do UI stuff in a deferred callback

      You'll need to untwist that into separate functions. Ideally anything that changes the note number is a separate script and the rest can stay in the main UI script.

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

        @Christoph-Hart Thank you!

        So, lets say I create a script file called extra.js.

        Inside it, I put the script relevant to the mapping (and anything else which may currently cause an error), including the relevant onNoteOn portion of the script.

        I include the script in my project with

        include("extra.js");
        

        before the line

        Synth.deferCallbacks(true);
        

        And that should do the job?

        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 You need to put the audio stuff in a completely separate MIDI processor.

          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 So, I create a MIDI script processor for the Main Container (the sampler window) and put all of this there?

            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 I can't say without being more familiar with your project.

              Anything that is not UI related needs to go into one or more separate MIDI processors.

              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 Ok, but are we talking about the same thing? See the image, please.

                Desktop Screenshot 2022.10.25 - 16.24.56.23.png

                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 Yes

                  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 Alright. Thank you. I'll give it a shot.

                    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 gorangrooves

                      I am getting nowhere with this. It is like a f'ing Rubik's cube 🥴
                      Is anyone of you guys available 1-on-1 to help me with this? I'll compensate you fairly. I want to get this done asap and move on.

                      Goran Rista
                      https://gorangrooves.com

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

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

                        @gorangrooves

                        so you need to get this bit of code into your seperate midi processor - the one you've identified.

                        arrayPos = noteTriggers.indexOf(Message.getNoteNumber());
                            if (arrayPos > -1)
                            {      
                               Message.setNoteNumber(noteSources[arrayPos]);  // yes so play its matching source note
                            }else{
                               Message.ignoreEvent(true); // no ignore it..
                            };
                        

                        so it wont know about noteSources, so you need a way to tell it - ahead of time when noteSources changes - or explicitly if its always the same.

                        so either:

                        declare noteSources in the midi processor init and populate it
                        or
                        make noteSources a global variable (not a great solution)
                        or
                        create a table in the MIDI processor that you can reference (and set) from your UI script

                        HISE Development for hire.
                        www.channelrobot.com

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

                          Update: @Lindon saved the day (and a few more) by helping me today. I got the scripts separated. Massive thanks!

                          Goran Rista
                          https://gorangrooves.com

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

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

                          37

                          Online

                          1.7k

                          Users

                          11.7k

                          Topics

                          102.0k

                          Posts