HISE Logo Forum
    • Categories
    • Register
    • Login

    HISE's Best Kept Secret: Dynamic Plugins

    Scheduled Pinned Locked Moved Scripting
    3 Posts 2 Posters 592 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.
    • A
      aaronventure
      last edited by aaronventure

      How or why is there no mention of this anywhere? Here's a quick demo. Works in compiled VST3i on Windows.

      HiseSnippet 2203.3oc4Y80abbaDeOKuN4NG6z.zf9J6gBnSnJR5tj31ZACKa8Ga0XYI3SwNEv.BT6x6tMZOxKjbk7AC8Inu2OO4w9X+Hzm5y8aP6ugbWc6Jc5hpZSqJhdvRjblg+3L+lgbVumVEILFkNnV88GORDT6iB6NVZGr9.dhLX6MBpc+vc3FqPy7S8zwi3FiHNnVs4dFMQs52Nv8ye+wOkmxkQhISED7ZURj3EICSrSlcu09pjzzs3wh8SFVR5uXssiTx0UopLfm4BWIXDO5HdewK4jX2JLn1c1LNwpzcsbqvDT61OUEOt6.0IRu7uNwjbXpfFzNnKLje5sTowDhoYCVePRZ7dEmaSPPsv8l3Ely6E94g6jDmb17S7F+L2BrIZT1eT6VUg2bUfW6xvakRvaJPpVIHcaOj9jvtQ5jQ1IqP34tgaKQvoGGt8xPwKavs9S2MbcEjPZWZH+HwVZL3LMZ8fUVYQF9mEVsQiFKurQMTvxLhdYordYxHahRZZzHQllHEmMCSXh3iDcs5DY+VFqdA16uWCF9IUEwSYpC+V1iXu+zUcygQKYvXHmeB2+nE1LsjY0DJbhrvprkWlkJrrmuc2MYwJlcfvuUXaX8TZfr603zKBmXwkBHXwMDeleYXxL37YeWlBAG+5m.GufzXIP7rHFaZM+aeay4W3LKP+f08GfkzhQoDhcBsHadH4pd4N0+qorsRwIDdm4NJuJ6nj1QRzosk4NTxK6bR.BmHX8UVKmYDxXFEasCHWoNo+.6iaf82XYGy0rQXuZ7dmYZ1KQarGv08yFBNSyGxdvuqAhjd6MeZJ1AkV3hMmE.5oUCcyXD5iQghDokhdIFx5Ib3zWhQFfaXCyhFP+NwxNQkkFyNTvhTpTFzP7NQTlUPqEmnEQ1zwvTkMLXWoGhRBKx1FhDyjJKa.+XrdVDkSvNIwN.562NwwfLBGbRrXZFA7AgwYhSTZXRwwBIKomacQr2TwhT93FjOpG7QqrZitNarjQXeJ2H95W8hVMGXsiLOb4kGQUIOLQh.6vk07SVtomRenHhibJxzmPjP47VJGy6fnXhJdQOmeDB1HTYXKyrd5OHNGQ9.BSDf1a2t6y3HZRKRS5NDjE6SJnUY8GTfQZ42.cd1l62p4uumdv29rgun4hrQKdVjC7PtMyrHXOlQfNHVHmF.rluF6QOh0AEHbS6WrN4KJzXIxVtyogBDnxMhmvgabIirABsXQ5zf3LEOxPgwXVJ9Ws2Vn3jQABxHHtsUysxQ1CYMY+5paxB9xGm13zE77Q5xCxzTcMG8lQoTZUp4W1nD69vLqEjzGwJpCxiiepatVM2Cg2CdxAuDUDfmoymipgcbUC8JQw4WCPKZ0imBuCcNAlPMJXvDIHpfJWDJbbJkDjVbz62WnMjTVclvg10SSv5jv4.BHGo1iYbhChLD.BbUIC2VPRoEySjSFOxlAZrymR0.IUHGKYHROvFFeBI9YoJtB+4oaTZF90nLGk9b4oWnPpRVxert2W1BrYDCfeaQFE+bTj5D+HeTcLrNEZa0yy28aPDJHAJQFNQelmpWD98drb9A.GRU7GOhWysVwvQVS05AXGNCFShIHNUuQ8SckmJhs8E10KjrZ3cARw7C054gqVS6D6tK7B7mNSm.8UR0gsOXe0A6veWACp8rXPksrS4R1sJ3cqhZH9xOc70e7gUm+DhwH2JtwWZSvIZr2fS1R+PX0VMGB3svBqtXYeuTHvqhJRNcWVE6JbZnZIbKwdRUpiLnLDxvZdoV+sj4eKY+lj59haho7LAh.6rL9MtfG1WxsIGK7E5GSEO5owa8nBxTxialhKU5QxOHOgqfy13e0JxSs53Nluq+wGezW9ua0w50cwop0FwrW2hbWLA04z2WA11LyOmAQHQRApF0urj3NzhSKcqf.OyLtJ4CWRJ2ENC40ycgKyCYtAWZLr3lrYJTQ.sjmixv2U1x4dvCjXmeod8l5Z4PLUnm5xzcP5YoXKY1vCE5xAGRP7p9psJDd4sJTtSlHuWujfJ413hncwCGtr9aBxCUnsh4xQE9Kqqoh6m2TgudVPB5c3dgkpIF3fMZQ6NEMzEbYlnaJdnk1YhOHzEiOS4a+Cpbo8+9gkIQSwFe81avsbpIo7CFNriDZaB4Gqsg3XbMpuko5gaHLGYUibm7bRJb8Wwy96PXo1eC63X5O9yd7eYVYJG+2cFr+9z0FeN+vU.MmySTENwtNouPWhn+TUbFdfU0lVoN0yW.zyJcJRcChGIaGWtS9+i0I6UEheR3dI1nASGi2ZJXDw+eLvXd++2Kbyd8PKHS.3sC25a9woY+xa+m5296F9F7ZZ2Ghws4epaLt9bH6YBoPS9t1y3Sw7WtpeJlQW4OEytQV.g80bIttxHZW1xmasNkWaCzXprp39opHEc71BGuRx8gqULYmxStGWVwXXbEKsSxjztf+5i2TR8e1UfSS7tlHbXIeWYp9dY3ds2jDaGztrhSltS4oeNWGi3RTEh3by5qR09Z9UotyMtuJ0+GTtoxGN6i8X7CBexy2n6qxKy39a1lR7pSbqQ0jncTR0nAJYRkv6qD4MzUFwS8X7DqEOwY8L7Byp78H93yMagvkS47y7BAfVY0eN3ISF+qVyYtIWs7GWqalwVI8+O78uRjJvygKa8MiTHjHtlt81y1sGdEoF2KzeHcMueC7Zn6WfOeT3lG.+nPW3+lp+6iCyIi2Xcf2OLO23lpKbluDZtex7RnYeACtkmci98r+hP7ZiNLWnj8+lX4qTY1DY+c335Kp2gWlMrKdNWj.nTJEoTWm0tE0Lhe7JzXBBcExX2f+A9Iew1z3Z4K1tXw+qrGC4QZ0AEeaW3g9P2L3bKc++BVObGZLaJ8aNDuJ5fnnpl5BJ145p3mecU7KttJ9kWWEev0Uwey0Uwe6OrhziVeRlUMzmafGuu2ltd6qUy+tcWZRv+DJycuxA
      
      Christoph HartC 1 Reply Last reply Reply Quote 2
      • Christoph HartC
        Christoph Hart @aaronventure
        last edited by

        Interesting. I haven't actually thought about that use case but I think that it's a rather exotic one (usually you know what logic your plugin should have when you distribute it and I can only think of a few very unusual examples where this could become benefitial) and the ratio of things that can go wrong to benefits is not very favorable in my opinion (what if there is a compile error? There's no reporting here, what if you cannot absolutely trust the source to not cause havoc (like FileSystem.getSystemRoot().deleteFile())?

        A 1 Reply Last reply Reply Quote 1
        • A
          aaronventure @Christoph Hart
          last edited by aaronventure

          @Christoph-Hart well true, that's why encoding everything would be a good idea. You can also sanitize it for dangerous functions like that.

          I tested it, you can dynamically add components in on init.

          So you could theoretically keep the entire plugin online and have it rebuild itself on init for a true "live service" audio experience, though that is an incredibly niche idea for an industry where the ability to reproduce consistency is key.

          But if you're working on an open source plugin, you can have it pull your scripts one by one from github, so it's always fresh.

          Then you can choose to be on the master branch or choose any of the commits. For important projects, you could lock it to a certain version so that it always inits to that version. Github has 5000 requests per file per IP rate limit according to online sources. So it's more or less enough. Closed source becomes problematic and you'll have to rely on your server.

          Imagine a software that evolves daily or biweekly. And if you have 3-4 plugins like that. AI related or whatever, something that moves at breakneck speeds. How annoying would it be to have to download 5 installers every other day without being able to keep track of versions between projects.

          I definitely don't think this is something 99% of projects need but it opens a door to something truly next gen.

          Plus, it lets you offload the authentication functionality to the server for those who need copy protection. Then you can only crack it by debugging in the memory or whatever, I'm not sure who the hell would still bother with that in this day and age. I'm suspecting most plugins are cracked by scripts because they use the same JUCE copy protection methods.

          But this is a bit questionable right now because as I wrote in my example, eval currently does not work inside of a server callback.

          1 Reply Last reply Reply Quote 0
          • A aaronventure referenced this topic on
          • First post
            Last post

          12

          Online

          1.8k

          Users

          11.9k

          Topics

          104.0k

          Posts