FX Plugins and child Containers



  • @Christoph-Hart Is there a way to use additional containers when dealing with FX plugins?
    I have an Arpeggiator in the main container. In another container, I have a Script Processor that reads the CurrentValue of the arpeggiator in the onNoteOn CB.
    But the Script Processor doesn't work in the exported plugin (I guess that everything below the main container is simply ignored at compile time for FXs)
    At first, I tried to place the Script Processor just below the ARP but, for some reason, the onNoteOn is not triggered. Like if the APR is only sending messages everywhere but in the processors that are in the same container...

    Another case scenario is the use of Global Modulators in FXs. As Global Modulators have to be placed before any module that needs it, it's mandatory to develop the FX chain in another container below, which is ignored at the moment...

    So, is there a solution to make other containers to work for FX plugins?



  • The problem is that the exported FX just renders the FX chain (and the MIDI Processor chain if MIDI input is enabled), but no child sound generators.

    Like if the APR is only sending messages everywhere but in the processors that are in the same container...

    Yes this is intended behaviour. Sibling processors will not process artificially generated events (in order to prevent recursive loops).

    The solution? Scriptnode 🙂

    HiseSnippet 1551.3ocyX06baTDEeOKsIQxwD6PXnfFMgFmgfFKGSBLTXY8gyHrU7gOGi6xr5tUR6nS2db2dxVIPETPG0PAzBMzSW9CfLCyj+BnjtPCEzDd68gt6jTDxNewUn412tu2626suuNo5v0ottbGjRtCFZSQJWDqMzRzsZWByB0nFR4MvMItBpSg.RUFZSbcoFHEkL2VRPIWVj+yS1rBwjXoSiIgPGxY5zcY8YhXppk2gYZtMwfd.qehSuQ4F5bqpbStGfmL30P1D8djNz6PjGaALR4b0MXBtilfHntvYpvMFp0kerUv4Oj4xZYRkKJgz.AEPFUsKyzPMxVcQHkrpwVdl.K+J3lLC1H5wdfk82nPLGI8AJKjFRYSAoROKHsM2zPJfmA7TlDdKg2xwl1oCi.ZK7lIAkRoQUlY4nJM+NJTUtkfZI.Lsh7UGtIbTgOhdCrltCyVTwSH3VHlgjT.JBIMfX5kJb.MGxXI79TWpHsHvJyjcMSlA0wm8KguiWeMA0Nj1HAjcNEvhXI29X3TX.IDvx9BPqGaBHnLmt.PBbGwNzgmdGYZCwlRM1wh2JFBKNMlWNj4p79s3U3m3y9kwZzO2iBIziHOeFRBHrDdOcAY.cehUG5o+tLGVqqW61lzY4.xFv9kSwtJT4vWDWArh9rC3VzDaLBHY.AYPDDjx6fKcyhvyfhUKVrcsZvqGM.9wbqsNE55PpIWmIFNothQdJ8098prUwhezNf9tgmZv54VeWFuK0pin6zrrIzTwckZ5vOAzzQbol5kRSyJRXELTLzxhZpQMo5xxOyNPXpB4sw64Ir8Du.D0J3lp0gRaNQBKVHKL2B4RRgT2xXBQrreOp35uYOHTHM4FdlxZsIaMH6AFtAimt8XCYkSWHZHYOxSQ+h0lZ+hRSqJ8bB2UvpLgd2oi2ElBdgx9urw6n1a0a2FhHhAaV71G8JtUanuKeX7BneIPtX3xBaeT5trAjQJ+LttUGlEsntCEfVMW66PEGyc5s5UMbsu50J7wKkusmktziWv1gZSbnGvUMICW0kz21DJOJnWuPKn1QOM18oWK+CxmK+WluPBl7wXE4IVUOHh0cxiImdxOzeUKu9snNWufeT8nCNw.Tme9bgbqFVLwd1zvikxFhHCiqk.kwTGApXRSIhXetmfY0oIQ3vNARCkMwg4.glOgVaT1c350hJxoQsL7W7T3IbyRQ0SjaVJZy3YYPg2O92+guCuIurwX3JSRka.tgKrMQVjZnJQzUl9.ymJf3SpSQ8QwomSxQID.3wg5tfeHEYkLRwFMgKNrhW+9RPImuM78OiYHUGV45vIBB31GhSjSK2zM47xAxSZEKDf2yKAzh39v7pA.LE9eqD3O9Hur.dL3hblAdKolSiqEAb4P8gzqI2XbEwCHNcnBeTONQnRfTuMLjQItCZiTINvWl.eaTC+os11IXdogn8rGUHgJNzuwRcKBjXEVmc.0QDTBoIy5vzCHrQ4ljSRS6adb4c4GScF66n1n7cssGmJbV+oOgxHRZe+2Ie90M05QONvmKAeohqgpeBjE65JaBH8YxRxfvDLZTQQ4JnUPF4sVdbUhoYK4DFgPaQrmkAsMDKYfT8ZYxzklVrKIPJQq.nLaqFglvpQWXpVMBMEqFNaRqNpYaRqNlZPXXSYL4DZLkAjxmfRDDGb8mJFdIbalojshxs9eSTb5KDbhKj7utCCyk8Qewedqup+i1LnnUb5SZ0V9aKOYlXxPsYDbcC+mGuYRa4Q+l74cGyVhNYZaI5r+21x+7C+zee0+528skL3Oc7HqmrIZ9SFV+gSlLr9T88q+vokLr9bf2zIC9+SNSjRhd9xeexlye9Kjql.xO3J+xs+i6+0iA4mN7GUeyZONLbQqOmK5BiLDi6H1dNw8xmh5NK+Boty3kZd1EgtaiZxOpCLlvgYRrqhRM5.lNMn2SNbMpaOA29UyrU8I5N76oGLomrVyE7o.ICV9+6c4vMkqKTZzGZgWC5BI64eOcc4z9uO7kBSmm0OC7biy.OabF34CNC7byy.O25LvyGNSdj+ola4I38C9RPffZc+fKEk3gUxf9WvR5Dt9
    

    The patch contains an arpeggiator and a scriptnode master FX with a midi note to filter frequency modulation. Note how I used the container.midichain container in order to process the incoming midi messages with perfect accuracy (it basically splits up the audio buffer for each incoming midi note and makes sure it's calculated with (almost) sample-perfect timing. If you don't do it, all messages in a buffer will get processed once at the beginning and with bigger buffer sizes this might lead to timing issues.



  • @Christoph-Hart That's what I thought. Thanks for the scriptnode hint.
    This means we will never be able to use global mod in FXs...

    What I am doing with the ARP is triggering a callback in the main interface script (via component.changed()), another solution would be to call a function.
    Is it possible from this snippet?
    I just tried to link a parameter in scriptnode with a slider in the main interface, but the communication isn't bi-directional so I don't know how to send information from scriptnode to main script...

    In the end, I want the ARP to read the sliderpack indexes. In my first test, I used arp.CurrentValue() which is very convenient as it directly passes the ARP index... But from scriptnode I don't know how to achieve the same thing...

    HiseSnippet 1807.3ocwX0raibbDdFR0qk3ZYuZwZjC4x.dhBqBA4t1qyhEAh5WCEIthQTQYuDX2Zlljs0vtGOSORhdgA7A+1Df7LjmfbIGx0j2f8ZNkTU2CmeH4JOhI1gBPfc0cU0WUS0eUMrWnzkEEICsrW67IALK6OjzehPMZuQTtv5n8sr+HRWZjhE5XDs6j.ZTDyyx1t5WfBrWaEK8m2s8tTepvkkIxx5BI2kcBeLWkIsWmi499GR8XmyGm6zeZmibkh8j9xX.OUIsrBntWQGxdMEOVEhk8CNviqjg8UTEKxxdkckdS5ORdivb9K3Q7K8Y3h1V8ACYDenz2CQLJ0ZuQbeudSi6HKvJ8xxBUMYgmP5x83oxyxFORugSlF4yG1UtK309GGdsVD7pLO7VmrSX.a3PNE7VxSobRZWDUUKhppkCUyiDq8jBESn.LsA90PoObTkFQeDouaHOPsarRIEVbOTjAEIhtl5GWnzvpD1XcxYrHl5dah99bOVn1DeL40wi6qXAIxlwHOpSYLxCInEzXY4PwizFn+U72CLd21kIc.VQFpNlMI5+lLBDLALl2wB4kyZfmLe13QIFXO43Kk6JuUahGS5y9lXFbYOUb4CnbPYcxotJ50rynhgrkKZVizeT7fA92o5qXT+wETuGvtnMwSfnYL+bofkaiDqQrqBFxipnV1+RR6Wzb5mA6tO7+y5A+6q2Ym6gutf4Kc4pIy6qLjWveCd5t6zr4KOF72yi6YVWZ+8XxILwP0nR6slmfd6heK3s2HQucUAucWUEaP.hRgf42m4ybQpoe7hhEZneA4zXUPr5+QlaCR2dG.zegSM3bofRV1+wngNP38dLSqNV43pWwvUuQhgx1A4qeH4HfKMb.EZWlmr1bVqJ+KaRBaaywzqXGFBKR0nwKZ0ZKmOqUqMe050fiEI8YMc8YzvFnDyePqzHky0zPmrG8scbb9MNSM7PFFcAPYuP0ndtSUGsRl9mPuj4ipp+79z2bp5Y.fK74BlyfXgqhKENgLpW+dM3d2t450d650PiglGRhfQy4dzvlkWf42cTZcdkQCy+MNqIPG2nthcqp9VN0OR3wt0otyScfiC+uNXUbEX+MeUsuSiqDL7rMeUJrjhWKUrSEM1r1aqsVsuqlyraMXvB2KohwmEtvswYaBuKEaHhGeIKbKGcUT5AgBmh8qeP45W6Zdpj6fRwQBt5z.Vx56dLnbc2qTBZ2OjnB4CGxBOVTrKRmZ+8+11kkcZcRtm6ye8tHwzyaBDSM0zt+Nj1UzDHl98GsOdH3tSB9gXJfEp3Xpyde10v7mlKhqQ1mEckRF.gUZcKjdKWHdaJt9GzNSRW7UeUmfoIwiz5XLiyguoML9ZHL4Jbo8HcepDqgY5Tu+A2izSFD57GyAAGYmwzr8rp2IRqzNikwBU9IchvQP3eK1UiztYqB.YMUxjkFfnufowvpDyksbt+6y69+x0ctg6oFgsJ+qv5QL9vQJb0SgUCfGJFWNEFurCCJuo5JXn9Bt7hd0b48YvU1WZs.RTXraoWrONba9YwwW.IYC3pUAhTjrTDAsYyWOcOFPuUoe+gxB2MH83J2QKFuUV.dwah+Di2z2m3fACfVrYfcExgu4mg2swd9bWsjJPv+HPJbgZAcJs+SjCDCgFMMcAxcEa+nfWyT2HCupQcunf5a5nI9SoeCBYv0R14xd9zIMhniC7goOUrsbtDFK6JrVcdN6jq36hmngqo4ezxPsOy6utZ4RhyRjWHFlJFda4bnLSZJnxDMaqhE9xdmIiUbwvtTf1Bt5qeKJ3EygI9She7JdErugYcKbMVz1mI7zK92vmjMaiqsS1r8zMyZ4Xk7LSWSj7c3aXA.g.OFQoROjE4PJNI3jdTjwYCBFJPMKKroaZs6CPMZaA.dVndBjYJH1tJZ1o+jCF7Cjhi0ThUHS+9eXJA2VvILEgmAUNXK9tQ4+ALvTZuor9n8qX7fItzQvGXF+aL2iafbgH5SxEQYG4mpPYNvspI+gdtHtdHfqPlFR+eIwZWMi27bZHLgnF0yJD3KP+h8aSpB5s3dvmFjx1vT5wLsNPfMkRHiuFFgvvyzkKtX1WXpK81KlcVkSj2vBm4W5BFOIHXNoua69oMhWak29j+7W7O+1eX69WwtwjxyexCtEtrGEgcKvzlUtoaLrm3JnmQU7AWMxdTe+KwoGRf2CIwPi0AP4jmUu3K84tX3YkqDEsxzUfiu+Q9pcJejuZm7QdZ1XgQtoRrKVVNmGKD.ExIu+PSeuKq.nrOVK+ip4Tc9hSfN.GSUvz8KlC6Kyrr+rvSOl5FJ+RWSeDLwtpVBT1Iz+zrqQ5hqcRGgmPZAyWhrEeoqKNMwuBlDYw57rkPmmuD57oKgNe1RnyKVBc97kPme8cpC9qTuSrRN1LoIHn2A5hKa6LdtpV+GqHXYVA
    


  • So you just want the main interface to show the current arpeggiator position? If yes, just use a timer, poll the attribute and change the slider if it's changed.

    If you need to know more specific stuff of the generated notes, there is an advanced feature of scriptnode and this is to hook up a inline function with a single parameter to a core.midi note - it will call this function for each note and expects a value back. We can also use this to store any value (in this example the note number) into a global variable and read it in the main interface:

    HiseSnippet 1799.3ocwX8zbaTjEuGa2lXEbHNUn3.WFxAV4ZCBIHI.EEkk+aJSrhUE4XxdYoZMSKoFMS2CyziiUR4p3.UAeEfODvYNPAeG1Cbl6bfK64ceutGoYjkhih.1cNnZ5W2u26W+lW+68Z0LV4wSRTwDmUNZPDm37xzVCj5da2iIjj82g3bEZCVhlG6ZEs0fHVRB2m33r3cQANqrDw776arEKfI834hHjiUBO9AhPgNWZy52SDDrGymejHrvpuU888TxsUApT.OKRqRhXd8Yc42mgKaAJwY4c8EZUbKMSySHNKskxePqdpGKsq+XQhnc.GGTizBLjU7dp.eDwnTx18DA9MGtuSHfUZlGEVzFEtNsgvWLRddz3plIby0nX7vYgKBd0d9vq5zf2BSBuUoaFGw61Uv.uk8UpfjZiipEGGUKNanZRjP1VI0boFvzZ3qwp.XoZChtBskWrHRuUpVqjDgOJxhhLQmvBRGK0fLC1XU5C3Ib8KrIZEH74wFS7Jz6mF1RyixjcNib05yhQtLEsfAKyGJtpw.s5KdFv322XVBGfUTw56wGj7GIh.alHN2+dRU6yaf2bxnwUyLv1pv1psTmZLw0ns3edJGNrOR7rugJ.kUoG5oYmve.S1kOe6lUns5k1oSvEp9RV0u1Xp2DXWLl35vtITbjRxKLw4r1kp6yzLhyqSqcmJvyIU1tRkN6rC75iNA9IXyMeA72w7.kmPO3Y6OBYL+04uu0lUp7A2C726l1zNdl820nGvkc08lYuU4.zaG+wf2djB8V+w71EkYrFEHKkRdPKd.2Comd9IFS0PuF8vTcTp9OIysFsQycAJv3gFbhPvLl5+Jng1U5+LLS05jB70KY4qWKyP4yfb1WltOvmF2gAkLKRXaWKYguZAZFiakPVe9dwvfQZT9NUqdS2aWs55e3pkVsDT3LQ6dBK1EOVWy8ibGpZWNh+HH4VpKeCyr2vpSQsvJwwfV6J6Jj7JdwbnXgQ3gs+LHvW1phQRkDLLZds7sy7eLuqa.zmvwXz.rS0JUMxe621ceoPKXAhDtKysafpMK.cofAEcbEcbE5+VhqToc84c.e6uZIQmxugHYG6vxVULFd80WszSWsjK7jYnBSl40RmU.nbKL2lEDzFR6K2IU5oEJY40K8zRq.9IGyuwGUzXqa8Rlyvmh6tBK7CyWgI1h9zLQtoWeh030C467gfpYhyJcF71Pr4pj2Wo4GlAxRmUx87S0oyTmKK+M.9tLsosewt.EKKSCayiuoqImdzBgz3w6fX4YqCBOaFXgEpjXxvgQ7rwWbiYE52vYFJD7RTSvM+.4u8uexO9O+9eYCxC2eGjcKyLfEAuDwi0Bby3rC+DnGU6A0Un6vS5qUQl0lcpAZJ945zSGw.7yp5CFM3K9G0SzCvPyxlERBE99A7lpDAF5KPi8SIX+AhmXP9Su92c2e8Ie4FgE6ulPBYmVj3KAJ6IN0zXbGQPXhFv19gP+xHi+CgiavAJVZf1MoOXm.grO2+HkY8SgiB5rU4mFf8OVrcWrG+rIP.WjmB4hjvFYPQP8BzCb0YtE8YEtqQaJzd8lNdWXJ3Eau9uX7Npk8c6zAHRyA6Rz8dz7d8gYGJNNSF6JkkGC9GAxKmMzcuGUapEhV1gNVcgcRhtOW+XUb+x2vOI5Fq6Z35ERHGimyqj.M1cj5tFtxxBITKOm9tHI9PVUyRx3Ji45zXYlnRmMxlQw7HVLX1lArAkSXgQAPyiZ9McaCcT0GO.MIAWjMBrEthxd151IyCO3x+YcSpGnR0BY2FL3LKbB1bEE3VuP6zYnCj4r.RAZGWEGioqs3Reyf+C7jMYMbrS1j0FNYN6II6ikIaH6c3M7SOkBe+PoJe.1WZOF1h0flLcO7vDRfCYqPgTuQYsKiZTi..97P8.H5NlXmEQyN797V7CjpgFJUfDJ68OQ3iti5bSXE1zuG.eWwpUMRJ9uCXsmcWXv6KYydANUgAfPAkhafWsvFXzZ9KC4SftKYCWnmGGWWFvUL2.o+OEGyIHOhECMHZP84EBgVzu66ioIImzgzjEyB4P+m6atD4dw1q.NfbXzHdkrleH6Jw16xJSbBTq09dCg73w6W9V0avNcbYe8+p9ApGyiO2eazsp+vnnyKEVaqBEN+1uAe9gMZ0m+XaLGAesJUI6dJPcjjXJ5lU.bXK.VNRbDTYXQ7qVI5vNFIYP6JzhrYjlosCDdXQk7nh0PCGAn4h23DxDab3RlSaiSHSYiCqs3FeX42ha7bo1LwFXZ4wSbqmhafwBKWvLySGU+OgzKj4Eq9TOKON9E4RFIv2Uo4OQbEZCbr6n1DoT3RCXaYhO0yCKJ+V0Hjoqy6LG57tygN2ZNz41ygN2YNz48lCcd+KTG7+ScyTsJz1vFHn4tljKGmBjHj+KP6Dj.E
    


  • This post is deleted!


  • @Christoph-Hart I got this part working with no timer by just calling a changed() in the interface script from your SaveToGlobal function.

    Now I got another issue because no global modulator is allowed in FXs.
    I got 4 filters for which I need to modulate Freq, Gain and Q via custom tables

    So how do I sync them?

    Side question, do you have any example on how to use a script modulator please?



  • @ustk Did you ever find a solution to this?



  • @LeeC Nope, I haven't yet. The solution would obviously be scriptnode but that means I have to move my pre-existing modules in a dsp graph. In my actual case it's not too much of an issue because my FX is based essentially on filters.

    The main problem I can't resolve for now is the use of a table. Modulating in scriptnode with any waveform is easy, but the implementation of a table that is controlled from the main script seems to be rather complex, for me at least. I haven't a clue...



  • There is a unified way of how to control complex UI types:

    const var firstTable = Engine.createAndRegisterTableData(0);
    const var seqPack = Engine.createAndRegisterSliderPackData(0);
    const var audioFile = Engine.createAndRegisterAudioFile(0)
    

    If you call this in a ScriptProcessor's onInit method, it will create an object that can be accessed using the processorId property of the UI widget.

    Once you've registered a slot, it will also become visible to the DSP network of the script processor:

    UI <-> DataSlot <-> scriptnode
    

    Check out this example how the slider pack and table is used in scriptnode:

    HiseSnippet 1675.3oc2Y0raaaDDdorW+ibbSSa5cgbxA1UfJ9GEifVqXI4DkXYoX433fdHflbkzVSwkgbkrUBJPOz68b6k9FTzq8PAxKPO0mf9F3K8TOzNKWJRJIZaEE3TmpC1bmYGxuYmY9lgRUcX5DWWlCRY185ZSPJWCWqqEuY9lZTKToBHkOBWVykSbRIEsYWaMWWhARQYhGHDnL6jHuOmtwlZlZV5jPQHz9LpNYaZKJOTZ0bOlZZtklAYOZqH6dkbkzYV4Ylr1.dl.qhr0zORqAYGMw1RfQJSUzfxYN03ZbhKrmMYFcq0jcrkb+6ScoGZRDKxfpA2HoXT9lTSip87UWDRYxpgd9DRO+l3xTCZf7vSfO1SQpPKhdFnjneHMYePJyYAosXlFhavY.OkHvaRI7tAtltC0lGpQfs4vkrffScM3XOJrj6Eo7FbdFrAKd5VZGQ1xAVDXvBqoptTpUUUu88p21RmSYVoXV6v3jJVKb6juN4rI+ljoFTU85wpS7XbXllDmXUKhzNmmgKX0t0gDmkR0QyrMIXif62+46Ti14qtzqirQlUIKJuhMwecXDHSLQ.j+wFDKR3iP.JbuHw79Qh8zDOXJbOlA6ccFjG3il+anw0PJDb16jN3y54g+zoxAauZo0CD1oRY99e85QzaPKlMT+dUV7w0NXwpcdbqkE5cq.+o9hQ1uDyQA5m3CzZlTChSUnXxCs.9CDD.Yrx0Cf6WgWakz4eVkGs31c2ta17q8jFcq7vh7cV7v6Z0IasGc3c6HVu95h0q0UktYaAbRuXAvnr0Vd0mbbEXSObwrOowKyR2a4U8VasdZD5okJHdHPRp+QLbraSb3TQzUo.oCPXHy3mEWf3dDmY6ECZYyrDADkouvnvIgQfR45FtnPtioF7lBm8uUPnlDZilbwp+BTZ2K5WxviEz6lmZqCDYGC8vGoS1PX7suHBLT44N6mU..c5Cfc73MGhS.XlXFsM038SWI3k8U.0X8wKHJ9sbo7tQ4seK3vTikCK1JnQDt2.Wkx0aFOdSDCdEkjWx30uiv73h0qSz4gfcR7VG7dl9eJIVR5mk.OeAP5KoIJf1ocqvbPWQtCjHg.od0FAB76OjfqfmOIPV5xAhWmTFt1o9hTEsZPsHo0cHfSUv0dGB+XlyQKbKP8st88lOYTSpScbkEgCZ48sL1kzfJFdvSunteAUg8gV6Rdo.nmiogdSb1q01fx1hdtO762aOfwAMdrcH1ZNj8XUM05tfqVKaSxtfcKk5PSl9Q0nuhLb2J+51ME6XA8lZVVDS2woo1.ywL8nk0LXKr97gdhUQQQYnz.PEJJlhfcYs4TqFk03NTf+BKRmfwwzI488VQBTBQ+Q4ZUwZQMYMhkg2h+A93qLSP1FnLSOkgsVQ9IVdo79WCWIxuwXHWSHkY.GCyrklNbb0splfb7FXQ2cnjj3jVOnzbJgEYDY5CB0sgyg9DCUIvss2flR7Cb7s7X3gwL8u9Y83hWB1grFaWHOQLJSY2nispLQjdXfWA2bgKkPB9oEnaZrqsILD7Y5HR0WVneDPXRbKlg73rOPdyHfLXG+2fyYjwYMCHYpOLBXG9eZPw6Nxl.mbPngWVU8sIAHrW1dZNMHbutKZNvaw.rQR98dqf6RIqNfkR16xTq8GbDxxZmLfrS2Xa1wDmAdsJXzJa6gjd5F03DaAclP1qu4O+f+7Ue2F0Nhbr7DL5NkIpxG1Pv.EIFLMl6M0UeAgqAIJNjzRMWAJCiIJnnLnP.1BPHlCaJbCQpcPnQJy6cbqXGzDlvkmLEsD9o+LJmW.74uY3.n3vX3.3yeSbAPf8LR.7G+Awmecf.3Wp+a+die4yxU7DnkfqqXHJwA3Ujjt.YmYR20jStWxxfbRLYdQcCTDJq4Bnrxb0lyBK3rt7nrtTpU9Pmw5zMP8EAfIMGLB3wWIj++D1p4v0ZwX7lv.buSTVwDAy884F4HHr2Klx5e59SU+zB+wFe3RYE4c+u.JqX3u7GkowPiaMmLqrwkIi0nmVpjveE792SHc6cIt8RnFxsq19PSpt.TnAr653m5RFQSuPxnDQRKRd0o6qLj5MvvvImCUICgyQ2MdeVQJ6rFxjL.TVI246Khn037c78d4UOaoo6vdgt7EgEoRy3IARRs79MFlEWVrNU3WKJVMsJpE0f9Bccw2+ymmAgh2l6LF1r7XXyJigMqNF1r1XXS1wvl6dt1H9oWteaNqk76FDDTsnWxkhRX+rIP+Kpn8FRA
    


  • @Christoph-Hart Amazing Christoph! I tried something similar but without knowing the how to... I'll make my day around this tomorrow 😃



  • @Christoph-Hart said in FX Plugins and child Containers:

    HiseSnippet 1675.3oc2Y0raaaDDdorW+ibbSSa5cgbxA1UfJ9GEifVqXI4DkXYoX433fdHflbkzVSwkgbkrUBJPOz68b6k9FTzq8PAxKPO0mf9F3K8TOzNKWJRJIZaEE3TmpC1bmYGxuYmY9lgRUcX5DWWlCRY185ZSPJWCWqqEuY9lZTKToBHkOBWVykSbRIEsYWaMWWhARQYhGHDnL6jHuOmtwlZlZV5jPQHz9LpNYaZKJOTZ0bOlZZtklAYOZqH6dkbkzYV4Ylr1.dl.qhr0zORqAYGMw1RfQJSUzfxYN03ZbhKrmMYFcq0jcrkb+6ScoGZRDKxfpA2HoXT9lTSip87UWDRYxpgd9DRO+l3xTCZf7vSfO1SQpPKhdFnjneHMYePJyYAosXlFhavY.OkHvaRI7tAtltC0lGpQfs4vkrffScM3XOJrj6Eo7FbdFrAKd5VZGQ1xAVDXvBqoptTpUUUu88p21RmSYVoXV6v3jJVKb6juN4rI+ljoFTU85wpS7XbXllDmXUKhzNmmgKX0t0gDmkR0QyrMIXif62+46Ti14qtzqirQlUIKJuhMwecXDHSLQ.j+wFDKR3iP.JbuHw79Qh8zDOXJbOlA6ccFjG3il+anw0PJDb16jN3y54g+zoxAauZo0CD1oRY99e85QzaPKlMT+dUV7w0NXwpcdbqkE5cq.+o9hQ1uDyQA5m3CzZlTChSUnXxCs.9CDD.Yrx0Cf6WgWakz4eVkGs31c2ta17q8jFcq7vh7cV7v6Z0IasGc3c6HVu95h0q0UktYaAbRuXAvnr0Vd0mbbEXSObwrOowKyR2a4U8VasdZD5okJHdHPRp+QLbraSb3TQzUo.oCPXHy3mEWf3dDmY6ECZYyrDADkouvnvIgQfR45FtnPtioF7lBm8uUPnlDZilbwp+BTZ2K5WxviEz6lmZqCDYGC8vGoS1PX7suHBLT44N6mU..c5Cfc73MGhS.XlXFsM038SWI3k8U.0X8wKHJ9sbo7tQ4seK3vTikCK1JnQDt2.Wkx0aFOdSDCdEkjWx30uiv73h0qSz4gfcR7VG7dl9eJIVR5mk.OeAP5KoIJf1ocqvbPWQtCjHg.od0FAB76OjfqfmOIPV5xAhWmTFt1o9hTEsZPsHo0cHfSUv0dGB+XlyQKbKP8st88lOYTSpScbkEgCZ48sL1kzfJFdvSunteAUg8gV6Rdo.nmiogdSb1q01fx1hdtO762aOfwAMdrcH1ZNj8XUM05tfqVKaSxtfcKk5PSl9Q0nuhLb2J+51ME6XA8lZVVDS2woo1.ywL8nk0LXKr97gdhUQQQYnz.PEJJlhfcYs4TqFk03NTf+BKRmfwwzI488VQBTBQ+Q4ZUwZQMYMhkg2h+A93qLSP1FnLSOkgsVQ9IVdo79WCWIxuwXHWSHkY.GCyrklNbb0splfb7FXQ2cnjj3jVOnzbJgEYDY5CB0sgyg9DCUIvss2flR7Cb7s7X3gwL8u9Y83hWB1grFaWHOQLJSY2nispLQjdXfWA2bgKkPB9oEnaZrqsILD7Y5HR0WVneDPXRbKlg73rOPdyHfLXG+2fyYjwYMCHYpOLBXG9eZPw6Nxl.mbPngWVU8sIAHrW1dZNMHbutKZNvaw.rQR98dqf6RIqNfkR16xTq8GbDxxZmLfrS2Xa1wDmAdsJXzJa6gjd5F03DaAclP1qu4O+f+7Ue2F0Nhbr7DL5NkIpxG1Pv.EIFLMl6M0UeAgqAIJNjzRMWAJCiIJnnLnP.1BPHlCaJbCQpcPnQJy6cbqXGzDlvkmLEsD9o+LJmW.74uY3.n3vX3.3yeSbAPf8LR.7G+Awmecf.3Wp+a+die4yxU7DnkfqqXHJwA3Ujjt.YmYR20jStWxxfbRLYdQcCTDJq4Bnrxb0lyBK3rt7nrtTpU9Pmw5zMP8EAfIMGLB3wWIj++D1p4v0ZwX7lv.buSTVwDAy884F4HHr2Klx5e59SU+zB+wFe3RYE4c+u.JqX3u7GkowPiaMmLqrwkIi0nmVpjveE792SHc6cIt8RnFxsq19PSpt.TnAr653m5RFQSuPxnDQRKRd0o6qLj5MvvvImCUICgyQ2MdeVQJ6rFxjL.TVI246Khn037c78d4UOaoo6vdgt7EgEoRy3IARRs79MFlEWVrNU3WKJVMsJpE0f9Bccw2+ymmAgh2l6LF1r7XXyJigMqNF1r1XXS1wvl6dt1H9oWteaNqk76FDDTsnWxkhRX+rIP+Kpn8FRA

    This is gonna be so useful! Appreciate the knowledge @Christoph-Hart



  • Is This Work With File Player Aswell?



  • @Natanr Do you mean getting the arpeggiator to trigger a file player on/off in sequence?



  • @LeeC Nah, I Mean Showing The File Player's Waveform And The Start End Loop Markers



  • @Christoph-Hart Christoph
    I Know What The First Two Does, But What The Third One Stand For?

    const var firstTable = Engine.createAndRegisterTableData(0);
    const var seqPack = Engine.createAndRegisterSliderPackData(0);
    const var audioFile = Engine.createAndRegisterAudioFile(0)   // << This One?
    



Log in to reply
 

7
Online

603
Users

2.4k
Topics

18.5k
Posts