HISE Logo Forum
    • Categories
    • Register
    • Login

    How to pass a string between scripts?

    Scheduled Pinned Locked Moved Scripting
    11 Posts 2 Posters 242 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 @Simon
      last edited by

      @Simon When you say "between scripts" do you mean between two separate MIDI processors? What are you trying to achieve?

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

      SimonS 1 Reply Last reply Reply Quote 0
      • SimonS
        Simon @d.healey
        last edited by

        Yes, between MIDI processors. A string needs to get generated in the audio thread, which is passed to the deferred Interface script to be displayed on screen. I know that sounds weird, but I promise it makes sense and is for a good reason :)

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

          @Simon said in How to pass a string between scripts?:

          and is for a good reason

          Whatever it is you're doing it wrong :) Anything UI related should be done in the UI script.

          Let's say you have a realtime script to change articulation based on key press (on note on), and when that happens you want to write some text on the UI. The solution is that you put the same (or similar) keyswitch checking code in your UI script and write the text you want. The two scripts work completely independently.

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

          1 Reply Last reply Reply Quote 0
          • SimonS
            Simon @Simon
            last edited by

            I could add "or object" to the title.

            When the user clicks a button, a sequence about 100 steps long gets randomly generated in the audio thread, so it's ready even if the user is currently playing. The sequence should be represented on the UI.

            At the moment the audio script makes a string, which it puts in a global variable. I suppose the better way to do this is to store the sequence object to a global variable and make the string in the UI script, but the question of how to get an object to another processor remains.

            Or to use the setAttribute method, I could encode the sequence as a bunch of integers and put it in a sliderpack. Would that be preferable?

            I'm used to PGS in Kontakt, so the added step of going through a UI control for script communication is definitely odd to adapt to.

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

              @Simon said in How to pass a string between scripts?:

              I suppose the better way to do this is to store the sequence object to a global variable

              Global variable and better way don't go in the same sentence.

              I don't know if you saw my Mariachi library but I have a guitar instrument in that with this fancy fretboard on the UI that shows the fingering of the chord being played in realtime.

              I have two totally separate scripts, one that does the strumming, triggers notes in a sequence, and the other that displays the fretboard. The two scripts do not communicate when a strum happens. The only link between them is during non-realtime when I establish that both have the same guitar tuning, hand position, etc.

              Separate the UI from any realtime stuff. Imagine the two scripts have no way to communicate. This will make your project way more modular too and easier to debug/maintain.

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

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

                @Simon said in How to pass a string between scripts?:

                I could encode the sequence as a bunch of integers and put it in a sliderpack. Would that be preferable?

                Possibly, without knowing the details of your project it's hard to give specific and detailed advice.

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

                1 Reply Last reply Reply Quote 0
                • SimonS
                  Simon @d.healey
                  last edited by

                  @d-healey Everything else about the two scripts is totally separated, but the sequence is randomly generated, so at some point a few hundred bits of data need to get from one script to the other. You could do RNG with a seed that you keep in sync in both scripts, but that's getting into time sink territory.

                  The global variable seems to work fine as long as the script that sets the variable comes first so I'll use that for now.

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

                    @Simon Ah I see, it's the random part that's the issue... ok now I understand. Sliderpack is the way to go I think. I'll just test something...

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

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

                      @Simon Ok there is a broadcaster that can watch the sliderpack in the realtime script and update the UI script, except it doesn't seem to work, or I'm using it wrong.

                      @Christoph-Hart Might need to check this, here is a test snippet

                      HiseSnippet 1353.3oc0W0saaaCElxIpnVccacX2N.Nek5Rfqchq+YcCq0NIsYqI1HNsccECELhT1rQhTihNMdE8cYOh6MX6PIYI4lrzVisKluvPj7bN767y2QGMRI8XwwRExx434QLj0mXOdtPOcvTBWf1eGj0WYGGvoLUDw6TOYX3LA2in4RglEqQ8mGQhiYTjk0ZOznhU00QI+9yenOIfH7XEagPOUx8XOlGx0E6N59+DOHXOBkcLOrjzst+9dRw.YfbF.u0rafLPfLgcHwHVEaziHwSQVeici61lw5rsOkR1daZ61s60sWqdMI9MZQNoY6ds1pUms51wGYcscobsTMVS.zCFsujNe7T4qEoWvS4w7SBXlEMQigaNcazfo7.5nEwpXDxZ8QEQt0Ribeo8AbJOe+hH3mmb.tPixAMqJWEjZ9Q.oJkfz5oP5V1i8T7HcwIF7bC68gjmxm.4lxPIUVTk4UrGXRuBc8Pxor8TvhbMba2nwlX3uaeOGm6bGbekjP8HwvwXJymK3lZCGHyEqwmQT3zpmQPp6ojfYrmQzdSAY+d7thIbAqtmhAddIy39FGLtFmV6aw0tbkqsoQBhZRLHyKpEsv6psInmfxN27vYFEp8qNuMCnDsl3MEqkX1YfqgMQHmK290Sk8X4.YXT.67cHZhasw4xVOK7XtFEQPkglmZX9q1x2lOWAgg.N3WBl5e75nzGmIhKDbqcDKNRJnwFvVP9vdSIhIrX3Z7mI7LgY2bWeSbhiuINwsusyabpBfLVFvpGo3Bsa592KIbrPcrTbnTyFJbSTv4sN328He+K8LS.PICB..eYGaHxpqRQWwrvSXpxv0HHT3tLa3ZeXrAuz7QIAkh8gJwgQrr06ICnlpbyyWj6fxRnvSOYeS1FnSVY6AxEwTZtANV6vNCZfkRtpZuCK9TsLBZgUv7ruJl20sSKWVh1c3rvhRK3Rrsr.brfLdy0xIiwL8iX7IS0tMuaF86qwmnEGkXyLJW9ZfgsPQn9p+LsFpWpczhx0lPglwH4xaLuaMd7AxPPGhZNHjVkTyrjLYYvAjffS..6JE4GmcjAZbQ.PtKm4eWobgWl.U4vcUtJf6iyJUcpVMMXwiYtlB2T+MNHZL62lwfWrj4wEjJSl6car7.A8H1DC6RMdIAcMd+BKjaykiZEZ.z+LILwklsyhdkzrth4yTGKSr8xXZQtZurnQ7EBOk7TSTvWpvtb.KMtGli+tx.r9DlNuhIFBLX9FaXBVkkARSoB7.nwMzVvkuI9.hdZ8z6w81.hpV0YIcR6tPSB0++oAg8+VMHtplBVUxPEHpNgd+oYz6TZEhSMb6zxaTBhKOzCJW60S09Kxztn7JwB2vNuFagQrs9LPepoij0Kra2pNq8zmsgvu9q6LuU29mML5vAm2y+UmJaMnQ+GoG97d+te2i6b7NaOt2dupwvGR687MTOT8icGL74SiFdDSp64OR+Kc3859L9vy2cvS1n9p01yDVxnv.Re+AlyM9iC3OyMOXBLk51rnuGpjM+vCWIl9OJaZzEmFBlCSRmEPzKOblYr0rCfRvkZMal5QDy0yKOV6GwDaMtxI19Pg3srGwgAEtbLV4Rvnoh8+.LlMm6Ms202m4oK.35168yq5Psumq+H4LMWLAZdo3ljro0G78.dL31EBVPx6KqXJaRW2XQ9eLSPSV7WvurCal+xU3vlKNDER7TxW5kRRMSRe8jc.LIR9Rip1GXViadQpcHLX+K87V1TWPwsVUE2dUUr0pp3cWUEaupJ1YUUr66WQy2c8fYZYXJsAgNXztI84rr1UPfJvjpUzeSDqxFF
                      

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

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

                        Oh actually, since you're not using a button to generate the random sequence, as in my snippet, but the note number which both scripts can already see, you can just use a connected sliderpack on the UI and keep it simple.

                        Press middle C

                        HiseSnippet 1198.3oc6Ws0baSDEdkSDTanCTFdkYDY3AYbFWqXG43ojgj3jzZvI1sNMjAdnyZoUVahztBo0owkg+X7.+B3GC+CfypKVxotWvz9.yfeHSN6dt7smKe93ggbKRTDODoT4rYADjxGqNZFS310ESYndGhT9B0HOpMIL.ackE22eJiZgETNSPhDnClEfihH1HEk0dnzDkxqih+7me6AXOLyhjeDBcNmZQ5S8oh7SGt22S87NFaSNi5WP6V60yhy5x83SA3slZCjDB3IjSwR0JohdDNxEo70pM11jPZ2zw1F2rosooYmc5zpiA1oQK7XCyNs1pU6s1osCR4CNxlJ3giDX.8Hk0OfaOajK+4rj.bNMhN1iHELPifHmb7wbOa4STdJpqK0ydXVdKBAdYXdVbsjr3mqdB0lN+77r4mFegVtEESfJkVDdqs.7LJBuFEf2RfToBPZ8DHcO0QVgz.Q9MR77Qp8fBYnCFpSEgRhtnR+lhZWYolIp6iuhbbHHL2BcyFM1TC9S0GToBTqhDZWiC0FE2uLDJVFZ6pkY9DhnK2Ofy.A8MJnyFRqoLOJin4LkYI6szlFXC4fybIOkpWsxuTorCOTSmB9qwCznZeSwfHc8oS8SNIRuJnPsZUKWobYH1QbOR8fPJDzaYRh34Xuoj8E5zp.L904wmyNkKHCXIAm5noeBjzflu3fAWAAbLITup1t6BYfpPvV.xfupncau43j3tacmLCEx87jtaIWKmJBecFpyhwxlPxGdKyUDp7K1No9pamJ1sakTvJnHm0iQECBHrW0L.JsJCsdJonBBuHtw6yRa7xS+HJzicW0B0CTLzKxT.4RLR4mTMaU+x5acQsKZzezNyLHMubv4FC5UiMdLu8L+YV2Lv7gl9c5a93wsoC520XvfWT2oyk8e79M69CjgaM3pu6T6Z0u35aLm8heriwfCtV7nZ0Qnm16PYPRgLfd3EEPBETYxR4Px0.WUxrSY0CIQWI3Aw5l1DiT9v+AOvaxebe0dyxENbufr7XOvn6nFhY1bezyo1BfbSU4OTPHWBchqPJ86wLl4C2putg64Nq3j87IEItjcEJP.PYy68KMedOhHdTbb0M1NdB+92+K0h7BFQ94oDfWOchOZtyjYSX.8H1DXTttUHAZ61mY+DxDZDvXLZAE0ktLyCy8YA9BrsctE.gQpFarolAP5Hstfc0CINjvy3wddQDkg7iSmahdItljjDMhrbllhgYoLMvreQchxnV1GXJsI2nS2T6DrvsdRbzkDMkA1oh1X4hYSH15+a4fJ7T9eFn2DCTE0r7eF8ipxm7eDpm25W1MxWUE3UMS9OnaQejta.rUB2dpGVr3pJxE5Ru.J2KvhH2AfEQEyJtv26r8Wdag38TGREVtKGikVBFkqF8d.ioa8cW0ibbHVhb.tt5wW79YEOzS3SET1DfYIjJKxRdIXSYKBDcFi3ESsWRNXjH2Hq9OhvriE9K3S5kFy+d.3RirKQ9XqP9yrRFmj6Udm3S.Lwh2Aur5IRYsk7829vZtOyxZQW8RFt0pZXyU0vVqpgaupFZtpF1dUMbm2rgxeEx9SEb+jwFD5jgGESIonbDCCcfwcqn+FuRgCaB
                        

                        Peek 2024-12-17 00-39.gif

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

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

                        18

                        Online

                        1.8k

                        Users

                        12.0k

                        Topics

                        104.8k

                        Posts