HISE Logo Forum
    • Categories
    • Register
    • Login

    Making plugins that network with each other

    Scheduled Pinned Locked Moved General Questions
    20 Posts 5 Posters 1.5k 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.
    • ustkU
      ustk
      last edited by

      Here we go:
      (still not saved in preset though)

      HiseSnippet 1411.3ocwXE0aaaCDlJIJK1ctXEXXOy4mjAxbscx51ZvvbiSRg2ZSLp6BJPPPAsDkMajI8jnShWP.1Os8394r8KX6NJIK4FGiDuVTYCXQx66tu6NRdjtSnxkGEoBIVEd8jQbh0ma2chTOn0.lPRZuGw5qraKizLIH2dLMq6.VnP1mr6jQrnHtGwxZ0mixZUXMh44u+ocYAn7YcQHGqDt7WHFJzY81o4uHBBNf4wesXXNo2tYaWkrkJPMF30p10HiXtmw5yOjghshMwZ888DZUXWMSyiHVqsqxaR2ApKjwxerHRzKfiMpS5BJJt6CTAdHiwdIsFHB75j5+QDPKcxhFqFGM9R6WJ7DS6OKp7ElAnYHxGOrVYQzqdd5U6tSOqbzasX58H6ttghQ5rQPt8.Hio4g9LHEjmVwxRV4uV2tkBjPpqNjcF+fPnwTDNOoVsMoMpUqxNkJBhEoB3UcC3rPGrG7CjbhzzyYgTMj2B6HCn+HMUiLOuNLIOvob5fk2r1lFsk1Q0HHTfxGpBb7YAQ7ap4dZYDn0SRUaettkZ3HkDZ3Td2wZsRVubkMKUjdimEgowRfYqk.y1kqb5Ny5RRt94gpwi1cgtVeTj5fL2hQWrwMnaXPeZRLEMsoazlXmIg21dWB8bUYg2kke5Imdch3BYfPxo9iktZgRRUx9IjNMi4lZtMA2JXLuRohWUpXAgO0ItM1BoXpUy63UERO9kG4mokJ6Trv0kJh12WERc5QExYfTg1qZD5kFy2hEDzC1Nv4FDCmDkDbhck44LnBWrif3mwWnSUZ5aYSj0pQ3dWwqMtofXnVXhy8tEeednxdKNMUETwIFm8z6ol1W1G7+pdiGN5YQ+b2iNzIViaRK6A6kW8cQkmOvbdHKTG6h0i2S.G9F4qdKJOkKlmtPG+jYCdrElBIMe4To3UEKfAQjsuhy7.+OwmBTLOXmqgFuZFuo.78wOl11mpGvQlgD72FyiLSADQTkuex7U5WaX9IopOWj9Tbk0w3b.mJSmQm7Cn8WwAVSABGuSkBLU3EhH9Ta1ZW5EP0Mp5bXfPgNdj2EojYJoGGhfb5Eb5.14bJi5N.qaR0JJpcDPekxCl1xS.M2HdLKMIm7r718roXpaV7U7Z3mEjwys74PkleTRdo30Eou+P99ycrjre.tPYNCmrD51A5HGOrGOLccZpfPcvYKzZe6EZyeN.238NyInR1VJzGMhKusxujjMbgBwqmvJPTsoL7CSJCGu0OQ3g0fmtQNwP57mOhb2UPibJv1xf+N.tfcRExo1dcqzShcOf2HCNYIfu0+O3aOG3+Za7Ln3ggRRGPJZDOTKvru0d7ygSYFeznB16wiNC1elXswzBjPLL1rkRO3DdTEiUKZmtBfbYZndR5KmmNOxZURNk8YyprWv5knrMrMuWOVU9op5AvKZ9kZ73iGx0WnBOiZJy8ThO3NcE+dtoI0Zxg41r4X1MtSy5Ll1wJwzODz3EBO8foF3ONn4.tn+fbGH+GZFx7DJCkv0AMRXK918h.MlRf+g7gg.0IyIvuvY9WlYntMmjYiiaNKMZd76SCfX4owLqauGTnQNJPDeRnvV4n.U+IgBamiB+4UennvMuJDbgLk23.ld1aogWMMY.nhxLWGBuxiLRnmjWyeTt51cktOxtiP6NX97ck4vWXivO17M4hvkr222m6pyH6Z1G7lO925k7J0XsP1+kLcn.2Q4vwC6pFG5xAlHgMuwp9VqfUVhaWKcO6tbomow+BOICVGaakLX8zAICYtgp25FWZBup8Fld.NIM+iCEreI1lNsbpscsp0HCEdh255hghuA397wzXIvr0RfY6k.y2tDXdxRf46VBLe+Bwf+4KOarVMLdYBzQm8MmLvxZeIVyzLij7eoeKByC
      

      Untitled-4.gif

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

      LindonL 1 Reply Last reply Reply Quote 4
      • LindonL
        Lindon @ustk
        last edited by

        @ustk oh thats quite cool...

        HISE Development for hire.
        www.channelrobot.com

        1 Reply Last reply Reply Quote 0
        • N
          NotHereAnymore
          last edited by

          Well, that was an educational attempt at the usage of json files. But I can't help but wonder if there's a cleaner, more 'proper' way to do this. One less prone to bugs rising up from working on multiple projects.

          Maybe @Christoph-Hart can chime in before we go too far and start designing an even more convoluted solution...

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

            @Trivalve There is no "Comms" protocol in HISE - or JUCE for that matter. So you would have to wrap your own. @Christoph-Hart could chime in but I'd be surprised if this request was close to the top of the scheduled enhancements - given we have a fairly big list of stuff we all want - and this is very niche and seems to have a (partial at least) solution outlined above....

            HISE Development for hire.
            www.channelrobot.com

            N 1 Reply Last reply Reply Quote 1
            • N
              NotHereAnymore @Lindon
              last edited by

              @Lindon As interesting as it is, that solution would be hard to work into anything more than a personal use plugin, unless there's a way to detect if plugins are loaded in different project files in order to create 'channels' as lined out in the above experiment. Maybe I should check some JUCE forums to try and see what other people might be trying.

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

                @Trivalve Found that:
                https://forum.juce.com/t/communication-between-plug-in-instances-multi-input-fx/17315/3

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

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

                  I wouldn't try to use the JSON file approach in a real project, seems way too hacky.

                  The problem with interprocess communication is memory management and since there is no one single solution it usually requires getting your hands dirty in C++ (or even C) with the specs you had in mind.

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    NotHereAnymore @Christoph Hart
                    last edited by

                    @Christoph-Hart My thoughts exactly, it just seemed pretty hacky. I wouldn't know where to even begin on adding C++ code to a HISE project, I'm honestly very new to working with open-source software of any kind, but that seems to be the solution - JUCE's SharedResourcePointer thingamajig. I've worked with code before, including C++ (not that I remember much of it because it's been so long), so I'm confident I could learn, but I haven't got the foggiest clue where to start. Or even where the C++ would get put, I don't know if HISE itself has support for C++ or if I'd need to do that within JUCE.

                    I noticed that when all instances of the plugin are closed the memory shared is deleted - but is there a way to do that when a single instance is closed? Just deleting the data that plugin was contributing? I assume there is, but I've not worked with JUCE before at all aside from a brief attempt.

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

                      Yes I am already using the SharedResourcePointer class in a few things - it's used to share image resources and other stuff across plugin instances.

                      However this is just a tool for sharing data and to setup a communication between instances with callbacks and complex data transfers is way more complex (especially if it needs to be a wrapper for HiseScript). Also there are hosts who run each plugin instance in a different process (AFAIK Bitwig does this), so you'll run into many troubles even if you get it working on your system.

                      I would strongly suggest to stay away from trying to implement this feature unless it is the core feature of your plugin (like it is with MIR).

                      If you really need is, go C++, use HISE as C++ framework and build your inter-plugin communcation system from the ground up.

                      N 1 Reply Last reply Reply Quote 1
                      • N
                        NotHereAnymore @Christoph Hart
                        last edited by

                        @Christoph-Hart Well, suppose it's time to start another attempt to learn JUCE. Thanks for all the info; I wasn't even aware that documentation existed!

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

                        18

                        Online

                        1.7k

                        Users

                        11.8k

                        Topics

                        102.7k

                        Posts