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.
    • d.healeyD
      d.healey
      last edited by

      I can see a problem though. It will be the same file used for every DAW session.

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

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

        @d-healey Hey, who else can boast a plugin that can communicate between DAWs? 😛
        More seriously, there might be a way to create a unique property per preset and push it in the object.

        {"preset1_idx" : "", "preset2_idx": "", "preset3_idx": ""...}
        

        I thought about using the preset name but it's edgy (preset name change in the future, use of -init preset before first save, etc...)

        So secondly I thought a random propertyName that is saved in a panel. But then the JSON can be filled with hundreds of useless old junk after years using the plugin, and I don't know how to flush it...

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

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

          I can't think a way of fixing up this issue, although is it really a big deal? I mean, how many people use more than 1 DAW at the same time?

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

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

            @ustk But they may switch projects.

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

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

              @ustk Got it! You can allow the user to choose between groups of communication... I'm on it...

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

              1 Reply Last reply Reply Quote 1
              • ustkU
                ustk @d.healey
                last edited by

                @d-healey said in Making plugins that network with each other:

                @ustk But they may switch projects.

                that's where the grouping thing can be helpfull...

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

                1 Reply Last reply Reply Quote 1
                • 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

                                    19

                                    Online

                                    1.7k

                                    Users

                                    11.8k

                                    Topics

                                    102.7k

                                    Posts