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.
    • SimonS
      Simon
      last edited by

      Using setAttribute on a panel seems to work only with numbers, not strings or objects. I first tried using a global variable, but the order of the scripts appears to influence whether the variable is ready on init. Is there a recommended way to do this?

      d.healeyD 1 Reply Last reply Reply Quote 0
      • 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

                          16

                          Online

                          1.8k

                          Users

                          12.0k

                          Topics

                          104.8k

                          Posts