HISE Logo Forum
    • Categories
    • Register
    • Login

    Scripnode 101

    Scheduled Pinned Locked Moved General Questions
    157 Posts 13 Posters 15.9k 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.
    • Matt_SFM
      Matt_SF
      last edited by Matt_SF

      Let's build a "Hello world" Gain Knob :

      Once the DSP network created, click into the graph. You'll get this popup showing :

      c5319edc-0f60-4bcb-bbfe-426e0fb0aec6-image.png
      Here you have access to all available nodes

      Type in the search bar : "gain" and click on the gain node to add it to the graph :

      6491d540-d9a7-41ac-b786-52faf358a6eb-image.png

      Here we go :

      3e26bf30-a176-4d1d-a1cf-b56f401ba021-image.png

      Done. But let's make this gain knob available in the script editor so you can manipulate it.

      Open the parameter control bar by clicking on the little upper knob, then click the "plus" icon to add a control, and name it "Gain" :

      16d2fcc8-5edb-4073-8f6e-10506572f099-image.png
      022cbe1d-511a-4caf-ad00-fc768c719ab5-image.png

      Note : When you add a parameter like this, its range is always 0...1.

      Although it's possible to leave the knob's range as it is, the logical thing to do here it to modify the range of the knob.
      Right-click on it to access its setup :

      75952ae9-e1ad-4351-b1f5-c2408bec8227-image.png

      And change the min/max values like this, and click outside the box to close it.:

      b350df1f-e2b9-44d7-96b1-721545bb37e5-image.png
      NOTE : You can access the setup of every node and parameters by right-clicking on it.

      Now click on the target icon to acces the "connect" mode...

      d12fe4d8-7b1f-4142-a3dd-1e005a44060a-image.png

      ... and click'n'drag a cable from the control to the parameter you want to manipulate (here the gain parameter) :

      af8a1af0-4c37-43cb-bb67-799e42869484-image.png

      Then click again on the target icon to exit the "connect" mode.

      Now, how to manipulate the gain via script ? :

      In the script editor, create a generic script reference of the ScriptFX module :

      const var ScriptFX1 = Synth.getEffect("Script FX1");
      

      Create a slider in the interface editor, and don't forget to make its min/max values the same as the network's parameter (here : -100...0, since it's a gain knob) :

      e340173c-549d-4690-9e0e-d67130cafc5c-image.png
      And create a custom callback for this slider.

      Now you can access the network's parameter like any other in HISE :

      inline function onknobGainControl(component, value)
      {
      	ScriptFX1.setAttribute(ScriptFX1.Gain, value);
      };
      
      Content.getComponent("knobGain").setControlCallback(onknobGainControl);
      

      Here I did it by script to show how it works but you can also do it within the Interface editor.

      Voila ! You got yourself a nice little gain knob made with scriptnode. You can now start noodling around. :D

      HiseSnippet 1567.3oc2X8zbaTCEWqc1PiaggBsCbbmLbvclRFaSKvLcXhSbhKdnNwSbHs8TQYW4XMVqzN6JmDCSuyMNCm3NW3J2xGAlgu.7QfuAvSR6lUqiapw8OLTex58O8SO8zO8z1KV3SRRDwHmU1eRDA4bM29S3xgsFhobTmsPNuiaWbhjD6YDs4jHbRBI.43T99JANqrDR+6uVeSLCy8I4hPnCDTexCngTYtzdM+JJi0FGP1mFZY8cZ1wWvaIXhw.dJ6VCEg8GgOhrCVYVIWjyxaGPkh39RrjjfbVZSQvj9CEmvM1e.MgdHinFTG0GBjQbaAKPgX0+QsFRYA8xV2IHjiau7rPYSV3FtcoAzykmmMdWsBubOryGNkJBuxEfW8mE7lAjbrfzRFHcc299wzHYtFEdtpaGNr4L.CocanXrEU5WbbaI.K3x0BwiHsigAm6Q0F2s1s8pe2Z25dUp.o9Do2w3XOiuseTcuuvSWLr1QD41CFP7kUW0nzCztpxqJTNixIdCFy8kTA2SvGwEGppLTyarfU0WDFI3.BtMDc1Xxsp7cUV474XsDhbCoLld3XIoZtXUDxb3dUdJLUYqC.LsxBY0UylsUukJRoyYKLicHT6T8BnAhkET2QHI6xqpQTkmVwaZUCFLScowhQhmoZUUc7k4XU93vCIw14CkgvVcw5mkmu5GeShwxPAuCmJ2MhjNN+.P8YTsgRyrp5tTDBlJ0UcuSZUWeFMfDinPPp3lkSQZ7aebG80c1BKwYQBBJLQQjXIUsdb1hbLPGXpmWwcKRxHoHRaa59ID84YdOMeN2s4j7AcZFJBRisO8PBCEZyP83yBwmZCWfWKpO8a0Kge5GU+9s0SFOX.Erx00KXSv+f.FomHgp1By8swYnKdDEHGDAiYXYQFCEjSUnhg8wT0QQND6I1znSSirzytLn1LY4l4l7bB2q61iJ8GNa7VZF3E1qeUi2TR4210PBkC1kba+nKkAdo46Dzy4BhYvFWwMipRCjq4lyKNKdXmu2MmGHJlDgiI6K5wvSplfCiXj8.7dauCYB+QpBxKRdDYfvlJKp5ODy4DVxhvwr7Ko6nP6IFKo7i5hAxa04kcFG1Gt41mzJEcfLmRJ5Ey3Zpwp5k9DdfdveC+RUVWM1IUY8Lk4LSncHxSDwizaGo+G1LL49DcR9ICNsNZCFSbhhNglV8B6AZY8DrIQCEbpuRjwhLjtQnXrh6w.WmR6nIQVtM1GRTS5gkCUmKTzrPgGIdM+yK.uh6QveaeJR4RVmKlUILEgZFMnukBUDPttGNFZoAtEVQJVxorEIooZSMBNiUxr95jbfRqOlgNvv3B.UMilrgFstJSWVCGTAfeU.3wj0zJleT5TxFSHK.C0CmOB47Vco7CJdKviOqK9zCl9lg9VTsvveVQ01eD4DCVSkd1Q+5MaZVHZd9KDkMFKEgPgqlLBYgikuHNPnKfil+Py4BGey6u0erto8p9gBgbHTmOMXtSymy7+xHObM28HPaMlnbgXUbawwFNVIwEDYFYSiL8ETS4Jbik51dNQSAkjd4e5PnDQU00I37pyygoQ1KBFujr21mBzrIIZD.01nMEhQgXMAxB0jh88Q2zn7ptODeLQ2grlL3l5wCDwgd2m.7DpKVqeIOX52m2GLEM2OXZWeI.g8iw7jHQBotcjmRWCacaQji4EM2HpfUpkWaX4YY2UZlIrgsvdXdgfAiKDotTq9v9y02lig6b5SfUSvtI9vhEOUIWuwrDxCoAxg0scLWbCaweINN.1W7KzkR4Ep0fhMuYY+L5SX4WUOj70ZGfu3MrVd9f6yoSqUxvXeppCos4GSXvwTMFeO3b4.7XlLSZwyYcEbQ1k84U.6QfNUN5HRgBqYtffGjBudLWxMZtGgQvIVm89nlO.5E.G207fiEIW7u+a.Ly8qOz0.WOE4f2aFOzn7aPOz3UwITf+7+O6zefKvo2vSuc68e+98qi2s75XNBw9whm3adtmhv3JZIv5lq+doq31UM1qd1mow0s1Z0TeQC5S78U0zeLjelsOMV.e9jEvm6r.9b2EvmOcA74yV.e97K0G0M9oufQU+CB5sstSTGGSGP5iBn+A.tUO2.
      

      To be continued...

      Develop branch
      Win10 & VS17 / Ventura & Xcode 14. 3

      1 Reply Last reply Reply Quote 5
      • Matt_SFM
        Matt_SF
        last edited by Matt_SF

        Let's go a bit further and create a L/R balance knob. This example is only here to demonstrate the L/R signal manipulation. Althoug it will be usable, a proper L/R balance control would need a bit more work than that :) .

        How to split the L/R channels ?

        Let's start a new network and add a container.multi node and rename it "ChanneSplit" :

        9ef061bd-35d8-4eb1-91fc-40a35dbf3a41-image.png

        (Reminder : to rename nodes : right click on the title bar)

        Now, add a gain node and duplicate it with Ctrl/Cmd + D :

        a2ab24ce-2fc1-4f15-95e5-5a413b7caab8-image.png

        See the cables which connect every nodes ? this is your signal flow. Follow it and you'll never be lost :D

        e83f0611-a612-43d1-b5c3-d2baead6c0a8-image.png

        Now we'll add aparameter control, and set its range to -1...1 :

        57cba45b-6aba-49f3-a073-e8376a80a4e5-image.png

        Connect the Balance control to the 2 gain parameters :

        f73dade8-397c-4c3b-a935-22b1ee80edb7-image.png

        But in order for this to work, we have to modify the range of one of the gain parameters since we want the Balance control to handle both the L/R levels.
        Lets give the gain nodes a proper name and invert the rightChannel's gain values - node values AND connection values - from (-100...0) to (0...-100) :

        9cff57a3-f1ee-43cb-9fb7-5292ede06724-image.png

        And voila again. Now you know how to split the left and right channels.

        HiseSnippet 1611.3oc6X8zbaTCEWqc1Pi6eFJzNvwcxvA2YJYhCo.yzgIN+s3g5DOwgT3TQYWYaMVqzN6JmDWldiCbiy8FeD3BG3T6GAlgu.v2f9M.dRZsWs1tAGSZZOfOY8jz68Su+7SuUMhE9jjDQLxYgC5GQPNWysYetrylcvTNp1VHma3VGmHIwdFQazOBmjPBPNNEefRfyBygz+d4ZafYXtOISDBcnf5SdHMjJyj1n5WQYrcvAjCngVqd0p07E7MELQO.OEcWFEg86haS1EqVVAWjy7aGPkh3lRrjjfblaCQP+lcDmvMq+PZB8HFQMnBpInHi3cDr.EhURQa1gxBZL3bmfPNtMx7BEMdga4VmFPGJOya7t5I7x1gs+voPd3ULG7pXCuksf2DfjiEjly.oa51zOlFIylQgmq5ViCAmVXvsaCEyZQE9UG2MEvJ3xkBwcI6DCCFtixqbukuqWk6s7cteoRfqOQ5cLN1KMLtyodegmNYXo1D41sZQ7kkWb3jKp1DkynbhWqdbeIUv8D7tbwQoqQY3XAqruHLRvAHbWP8rdj6T56KsvP8rTBQttTFSOpmjTNSb5+Frm6W5of8FbV..s4.sVdQKat3cT5K0xahYrifTnxSBVfFsf8tBIYOdYMzJ8zRdiNUqVSbtTcwHwSbZU9c7Yswx7dgGQhscLpEBA87YRtu5LI6Dcei6wZgBdMNUtWDg+pR+Qo9TUVWJpfkJ04b2HMmqIiFPhQTH055tVtRjF1oUvU+qm7COG8001BKwCTFnWvVQjXIUcLb1hbLvGXRnWvcKRRWoHRu1zfIThOkl9zLhicq1OaPspg4XkddHMHfQZHRnJeuM4DZ7pLn9VDzigk4K5ULcoSnzgcklpZhC5tuMS3nLAyMcLAmMQ0zB2a51fJ86LY7VXB3EhVutwaJu50cM7HYfcN2c9lyjD8bCkokPsTZFFXeCS5PtmIwj57itY0uQwjHbL4.QCFte4DbXDirO.265cDS32sI8IjwK5iLHXC0JJ62Ay4DVxrvML+TeKSky7VFz9hdRJuccLv9BkSt61KrIb2KPQlhNPlSAEEgY7xpwpzklDdfdveC+RmrhZrS5jUFLYF6BZWh7DQbWczH8+PrP45ulah1I+3VmVAsNiINQwGPSSdgXfVVCAqeTGAm5qDYVw.jtdnnmh7v.WmB6JB.Gv76f8AGU+FXYGUYghdDx6HwK4OL+yNrq10f1OLGTvJgZVIn4ibIEf6tANF5KAtJUQrUvonEQmIeSMBpxJXNh0RNTMqOlgNzvZBXUYQiCQCXW0Rutq4P0LhAcM8JOBg8XR54.x4A3PKWHmkYjVxTWZdKeUvxwjkZqbamCaVHmMs7XPN4vQHm2oNken0UIvuu8E0wmNhLH2RRhTUWox94m8reaslcImXvZpzWz9WtcU04YdMuMZLsrdOoHDJdz7gHKbL+33.gFCGU+opSEN9t2eq+XMSNVyPgP1Ap0FELqV8ew9WD9gq4tOA5JxnkwzExJC3Ftwz1cdKIEXBtdvc7+o.uFRArCK4iQN1XSooEFPXhFGou74iizWt1HH0f9QQpdkiALcWjbh9lQMaU1PHkQkEVKXTdqg.VMUZ7+h2ot8oPS.IIZf.o7nIBrQJmlNj8eMseTjsgPzMDqu3cl5N2tMtaal7ptOBeLQ+sg5KQusdbKQbn2CHvkSp9QqbFOUvuOsOUPzT+TA64KAHbPLlmDIRHUr07Hysh8baQj834WtQTtUoNd6.GOq0ckpCDthsvFXdNkAiyoo5TqOb4OWaaNF5UqIANMA6k3CGV7H0DM5wRHOhFH6TwdiYhWwV7WhiCf3hethnhScG0miWMY925d0jKuOm6h4gcVX.FaRUe.w17iILnZTiw2CJ+ZggV7FHMe4TcAWLnW3r.89DnQ91sI4xel3AZcoD62MSxsptOgQvIVkXeT0GB8Yhiqq6NXl7EUN2Ox0DiWenqAtdJN.u2HwsKjO8t3T8o2WHXb1+b6KgpOfB7s6n3G3BTwq3oCkduYhkWFeZ9kgMBw9whG6adQCUQ+UzRfyMW+n9K3VWM1qxfmRz0c4kVFEBWW7XeeU95GC29L48rxLrmOYF1ypyvdt2LrmOcF1ymMC64yOy8ntoN8qiT47ffFaqaZzwwzrhN8G8O.e9J+E
        

        Develop branch
        Win10 & VS17 / Ventura & Xcode 14. 3

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

          @matt_sf Thanks for doing this - I think it's exactly the level of complexity which most people are getting stuck, so this might be useful to a lot of people.

          Just a few remarks about the examples:

          Use the Parameter Range Editor

          Editing the parameters using the right-click context menu is just the fallback and there is this range editor that allows you to change the parameter range more quickly:

          38c39ff9-032f-4283-9e82-c99a280190c1-image.png

          Apart from the ability to drag the min and max value as well as the skew factor with the mouse, there's a handy context menu which allows you to quickly set it to different presets, or in this case, simple copy the target range to the source range (so that you don't have to edit the range of the main parameter).

          7551fe60-c3e1-400c-ac5c-5bb8b7688638-image.png

          Use XFADE instead of parameter ranges

          the panner is better implemented using a control.xfade node - then you don't have to fiddle with the parameter ranges and can change the pan laws by selecting different xfade algorithms.

          235e92ea-1430-4670-8926-ec2ae420349d-image.png

          HiseSnippet 1477.3oc6X8zbaTCEWqsWm+zRoEJLLbxG5gzYJAanTXFNXm3D2wC0IdxlFJmJpqks03ckVzJ6DCC24Fm6s9QfqbKeDXFNyLv2f9M.dRZs2cc1j53ZZN.9Plnmzae+z6868zSpsf6RBC4Bj0ZGNNffrttsyXlre89XJC0bGj0MragCkDQIinsGGfCCIcPVV4enRf0ZEP5eur51XOLykDKBgNhScIOh5SkwRaW6qnddMvcHGR8Sr56WqoKmUm6wGB3IucYT.1c.tGYOrZY4rQVE2sCUxENRrjDhrJrMuyXm97iYl0eDMj9LOhZPEjC7gLh2eDQLhRNtA2qiB4JYn58odcZOY+GhPV1si8F4Mdiaa2h1gNUdrW4l5IJEqQR+hUtzvLeJXV47fYFPxJAjJXfzsrcbEz.Y7LJ7bM6lLHH0ECt+jPwrVj0o104vBXxM8wCHMDvfoJrwCJW9dkf+b2ur6PlqjxYk3r83Rx9rMt65+v5qs9OtdoYmpa2LmSYFA2yiHxbZUDWbQJtAan+yHh6UZD1aHY5BgseZeZw4ym5Z10IVHm0jQk6GPhFGSJpjQD.E41f+6wM2AKwpfRjLXcADgjpfi0NjQ.S2DhVydGR3.IO.35mI9ALGdmgdXYZ5jJWJZBvejJFpBTrPpbbxbsY4XENe+Q4D9iWwtcNg6sraSkt8yFu4x.ufW6ea7Fkw9V161sKwUFC1B1MdxhldV9RmdtdT5IXSkwudzvRMdRkLSL+I63jf.AI.KHGxa6gGuQH1Ovib.fw6U5Ydb2ANzumb1Lm.CD1VshMb6iYLhW3hjfUbIUzBc.enjx50BKEzSfxp6Mz2AJo6RpGgNPlUNUtkYbY0XEGwgv5nG72vunIqnFaEMYkISlHsbOh7XtXfNbD8+Pvv36C0N4m18jJns773GWm6GPiXrPLPKqM2abPeNi5pDYVwDjtkOeHXjH3ZkaOdGvATrA1EbTiaik8U4BpZL.YiH1zcJoKksUpM4XMyNELiuB9pC0RwJ.+car.NuCpMqJqjyJehxLFFmZDjakyXmlgGol0E6gNREQUJosXXLhsUKcU6S5Bm4JPof+M0vG3EaFM67CVqBofVtYf1aqB7I1LQny3KQyr3hpxLjIqYU6GA9Sr.ghKwbHVziHU7KmiUEelN1JWRAQ0mYDMsOL8Pj0JpsWyNJC1SEqlhOiLcGMsnrHbLo702bZK7IyHCvgjDnxIij8hm+7espy.nMCs+MR5o89k2q1tm.o1ggZD.NQzh.3Uz.txUDhSDGUjvIi.XcVaCQsyX6WVcFaavyr1VuREeXEayGXlOyeVcqgRtOTgpyTddD8dEa+gdRJ5bSNMSeIn2ox7xLkJhDkxjWCLofrodhKgwxkxXob24uX28qan1rQz7ny7UR6sSfihyUXu1OWatvw29t676UMsw53y4x9vwGyBl6W6UX+kge351GPBIxL4dQbfozMS53+G6+ORrOYX47KGVT8kV2tMG5+UU7b4Wcbppu3C+3+3NE+qpy2wGSO8O04GSJyt7g4rGfrMmOvGq6S609lT2vLIPXfB65mqP2y06qGW5qwiHkdHAJ4qtzRkK3EK9s48EKBl6WrXeWIX9CEXVX.OLseh3SOjyT6wXgONDtLN46NP0hSR404XQlS8xpMfMYl53fkCE5dklz2Zhqeketu9Uxt6SeqzDqOiKCU3J34St36m8l612KmqPt1DL5PUW8aW1HhGjXnw36.YBcwPKLSjllX2hy3StESbT+.BbErd8HoauJqMzVRI1cPrjaW6.hGAmjAemZllx0MpuX9hK+qckY75CrMvsjJarzURbao7RI4mqWJYofwqfWG4Mx6.7lvF9XWA+oQWSVwSWUKA12L8CSulcK03RUPihthqc4MKi7gJbO00U4h+HnfY157IKfNe5Bny8W.c9rEPmGr.574KfNewEpi5vkn1WUobff16pa4vxZWFFXuZlN5e.SLLjjA
          
          Matt_SFM 1 Reply Last reply Reply Quote 3
          • Matt_SFM
            Matt_SF
            last edited by

            Ok now, let's take a look at the container.split node which creates parallel signal chains.

            Let's build a little reverb wit a Dry/Wet control :

            Add a container.split node to the graph and add 2 container.chain nodes. These will contain our stuff :

            83dd2341-b9a1-4575-a683-b08494f2978f-image.png

            See the signal cables ? You can see that the whole signal is send to both the DRY and WET containers and not split into left and right as in the previous example.

            Now add the required nodes like this : 1 gainNode for the DRY channel and a reverbNode + a gainNode fot the WET channel (type "reverb" in the serach bar to find it) :

            58076801-193f-4834-aa22-f5a30be985b9-image.png

            Now will be a good time to introduce you to another type of containers : the container.modchain. This one is here for you to put all your modulation nodes in. It can contain oscillators for LFO purposes, envelopes and more.
            Here we'll just use it to handle the Dry and Wet levels and for this, we'll use a nice and handy node that Christoph's provided : the Xfader node.

            Add a DryWet control at the top, a container.modchain + a control.xfader to the graph :

            b86ae466-b4da-4598-be8d-bf7679b31944-image.png

            In the Xfader menu, select "RMS" and connect everything like this :

            88ec8fae-c9df-4562-80cf-64e6edb44670-image.png

            Done ! How simple is that ? Now if you want to build you own reverb and manipulate it via your interface, just create parameter controls and connect everything :

            1c3d197d-c264-4fe2-9306-f17c48267373-image.png

            Keep in mind though to take care of the control's ranges, depending on whether you're controlling linear values, levels, frequencies, etc...

            That's all for today, have fun !

            Develop branch
            Win10 & VS17 / Ventura & Xcode 14. 3

            1 Reply Last reply Reply Quote 2
            • Matt_SFM
              Matt_SF @Christoph Hart
              last edited by

              @christoph-hart said in Scripnode 101:

              Thanks for doing this

              My pleasure, I wanted to do this for quite some time... Thanks for jumping in :)

              Use the Parameter Range Editor

              Editing the parameters using the right-click context menu is just the fallback and there is this range editor that allows you to change the parameter range more quickly:

              You're right to point it out, I was aware of the range editor but I'm used to the right-click... I must change my habits !

              the panner is better implemented using a control.xfade node - then you don't have to fiddle with the parameter ranges and can change the pan laws by selecting different xfade algorithms.

              Done in the last part, of course it so much simpler :man_facepalming:

              Develop branch
              Win10 & VS17 / Ventura & Xcode 14. 3

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

                @matt_sf I've added this to the "official" hise_documentation repo (it was basically just some file reorganisation and copy pasting of your "raw" post content.

                Link Preview Image
                hise_documentation/scriptnode/101 at master · christophhart/hise_documentation

                The markdown files for the online documentation. Contribute to christophhart/hise_documentation development by creating an account on GitHub.

                favicon

                GitHub (github.com)

                The "compiled" version looks like this:

                Link Preview Image
                HISE | Docs

                favicon

                (docs.hise.audio)

                I would suggest that we keep this thread for discussion but put up a link on top of your first post to the docs so that people who just want to read it get a concise and bloat-free version.

                You should be able to fork and create pull requests from the markdown file whenever you want to edit / add new files there, but let me know if you need more information. Just two things about the general markdown style (the forum is a bit less strict):

                • if you use inplace code like this, just use one backtick (you've used three backticks which usually indicate a code block). And if you prepend javascript after the first three ticks of a code block, you'll get the nice syntax highlighting
                • I'm using the > quote character whenever there's a background / additional information that does not follow the normal text flow. I've replaced all occurences of "Note: ..." with this format to make it more concise with the rest of the docs style.

                Now back to the actual content:

                Now will be a good time to introduce you to another type of containers : the container.modchain. This one is here for you to put all your modulation nodes in.

                That's not 100% precise (and for this use case you don't need the modchain container, just add the xfade node directly. What the modchain actually does is creating a monophonic and downsampled signal which will not be fed into the original audio signal and thus is suitable for modulation if you put a core.peak at the end of its nodes.

                Matt_SFM 1 Reply Last reply Reply Quote 2
                • Matt_SFM
                  Matt_SF @Christoph Hart
                  last edited by

                  @christoph-hart

                  @christoph-hart said in Scripnode 101:

                  You should be able to fork and create pull requests from the markdown file

                  No problem, I'll correct everything and make a pull request this evening :thumbs_up:

                  @christoph-hart said in Scripnode 101:

                  That's not 100% precise (and for this use case you don't need the modchain container, just add the xfade node directly. What the modchain actually does is creating a monophonic and downsampled signal which will not be fed into the original audio signal and thus is suitable for modulation if you put a core.peak at the end of its nodes.

                  Oh ok thanks, I usually do this to make things clear in my graph but it makes sense.

                  Develop branch
                  Win10 & VS17 / Ventura & Xcode 14. 3

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

                    @matt_sf There's a container.offline node which will not pass the audio signal to its children, which is better suited for "hosting" control.xxx nodes as the mod chain has a little bit more overhead.

                    1 Reply Last reply Reply Quote 1
                    • dejansD
                      dejans
                      last edited by

                      With the new development version, do we have to compile scriptnode same as with the master? What is the procedure here?

                      Matt_SFM 1 Reply Last reply Reply Quote 0
                      • Dan KorneffD
                        Dan Korneff
                        last edited by

                        Is there a vibrato or pitch shift node?

                        Dan Korneff - Producer / Mixer / Audio Nerd

                        Matt_SFM Christoph HartC 2 Replies Last reply Reply Quote 0
                        • Matt_SFM
                          Matt_SF @dejans
                          last edited by Matt_SF

                          @dejans for "small" scriptnode effects HISE will include them directly while compiling your plugin, so you should be able to use SN effects in your projects whithout burning too much CPU (I didn't try it with SN synth though).
                          The scriptnode workbench is still under development but it allows you to create DSP networks and compile them (and thus optimize them) before integrating them into your HISE projects.

                          Something to read : Snex_node Needs to be wrapped into a compileable DSP Network

                          Develop branch
                          Win10 & VS17 / Ventura & Xcode 14. 3

                          1 Reply Last reply Reply Quote 1
                          • Matt_SFM
                            Matt_SF @Dan Korneff
                            last edited by

                            @dustbro A pitch-shifter example is available int Christoph's repo here : HISE tutorial.
                            I didn't try it but with this example project it would be simple to add a LFO to modulate the pitch.

                            Develop branch
                            Win10 & VS17 / Ventura & Xcode 14. 3

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

                              @dustbro PitchShifter is here

                              A vibrato should be pretty easy to do: just modulate a jdsp.delay node with a LFO inside a frame block.

                              HiseSnippet 1810.3oc6Z07aaTDEeV6LIwIokTnf5QefCoRgH6RofDGhyWtxh5TqrgPqTkBSWO1dq2cmkcGmDCBDG6sdfS8FbhqbEINDweAHwI9m.kKbgKk2rytd2wdiqsqSp.QNT44Myru2626yYlVyiYP88YdHsb620khzVBq20g2ZqVDSGTksQZWEWk3yod4kj1rqKw2mVGook8tBBZ4lAE72YquIwh3XPiIgPGvLMn2yz1jGSsVoOwzxpLoNceS6Dq91kpXvb1hYw5.xSVbAjKwnMoIcWhXYYvHsY2otIm4oyIbpOrlMY06p2hcrib8GX5a9XKpXPQjN7gjjQa0xzpdsHc0Ggzv0h07rRM+53pl0M6QOFAVNXh7w6HIFnkYXhTwwPjzRHRyHEoqg0M7Lc4wyHjmEwUb.CRCB.0IEE4ZQZmh2hAKvgulMoMsrGLn2FV4NEJrZd3et4G2niiA2j4jm4rKiSuuyJ2bguZgbK70Kju+oZzH04DrwiYYQ8RcZg00aXabEmN1Ol5sZ9iHVcn8VHn9pX5riFlZH05DKj4TwwjeeWZ33xLq5BrR76As.nPXC90mVYaBmHLJgzf04R83lBwQaa5QfWszDkCuM0uMm4B90CX+.OGV8NVDtp6jHtIbB.OTrgBCkiuIuax3pwvGqvP8wFUQ7Z3ZlbiVoKiYRQFAj5hPFCiLuBdmFMnF7XAbFb4GLoggEF6vvEBCCAdJX9RgCyW9AESM.7o3XmcWOpKwitOqlEo6J9DaWK5dfLtZ9GawLZqa9kzAiPbkhvlhUrhQKhiC0xeRBjlcJkbBsGqC2zoYUB2y7DH84tcr0gzzFzsBkNflVFQLjbbAwXgegN0odvfW.+ENYQwXsvIKFMYhvuco7iYdsCLGg+FLFRr2O.jOrwIEQaXYwNdKlsqYnWJXCBnUiY00sEywzPPRthHIcCaVGfIghqVlcY0A.X1xDC.n5VivaI7+E4R.mMp2ZF8b5T3sXaQkpjZJvFag3KJTo3U.3cMhGTCCxAKRejQKahzIRONwHHdJijOU7OPLqAwBcfvhJ1T.GkHRfDikEmaH9v25v.mIjhRbiDJgxpFcQ+USPyjPPW.aypKgREg75IDxdq3xR.wIDvkvLeCnsDQhPz.NCdz0RL8jJehkAg+mDUaYaSeWHqvlcfraxbOJTDJgSc5IQAH6.w30g5WAaOJnIgmE3E2aD76plNgpbbV5pjS5i1xkz4TWQZnjUbzaSOVBBIoJvoYE0KnnA9xnDrdtQi0uaJrFxIbtrdQbYO5Wzg5XzMl+O5Y+5esxidw5azgyrgrbAUnPCGGNa8AElBiINrTfvjeOQhGz.eez3aH.lMlFh6Bp6EFqGlgXNbsVD+WhSvEDumMn6oTT6Dwx4v9lMuEjNQMP9pXvAo0ZQyMFQwYThhUB4ztLfa4Gn2m4u+lm7K7u6oJ57r3lCjbcQYlqliYN0gnsYGdT9COcPsEzLUs86e9y+4A8qOs4O81kNeC7COcbBvSA0K8rRijb74u01+dX1FcaFi2B55Iovr7O77+nZoWB+mF3vR38n9Tdel9dQZJldWJocpl9fIFCS+LJl939+2m30jxC726mHRadACp.ef4wmz.NUuWL5HnF49tiCA50Lv7M8iS14DnQae+fl.Ak5htRaR3umVqX.VNnwFn270BmcRsB8BGiZp4MDMemPXBQMY+rn9VrZ454w2C5zh3kpoEoer3Pewl5LIIDdVXGZvQO7UGBF4XefmTmB.qpOvhvojAhA22ynY7qTZxM9ShbmKTtK95TvO2JKycIUYIZKmSx1977mCa2whahN2yNImdhaWNsCRzy+RgoWAn56tV3TSmZcYlB0XRG+6UiYNr7pQG3yLAcSWYr6lN1yNwm5aqs5OdVecSqzZUTXx+i+WZ3uR724NPEvjwJgW1wzO6QusBMhdiYN3OWezxxF1kpRJ1vF9l9cQctYWCgm4v5tT.hu.Qmd2N5HgNJ2AQekghO56z+v08CTaxXssIA2+1q7MgeU4jP2zPEgfmVJ3tzdmfw4+LxQz72kB0JD5bwg75R+1n95Rti7qKceCNv988HN9tLeUbhZatOyQniwD+TepvJHOxeB5awHdoN0YqWFTxT2iNg2wKn+qn6iLgyRV0asclQ6VaUeUgDqOkK4dlWCO+0z4oIdM95IJOMPtHYT2TbRicbNhZAAFAx3aBQBMHPuOQTUcrqxbXQ2NcrUeOJ2yrYSpZghzTnM3bhQ6XJWuzdTKJwWI5W1nePy+SFVL9uVYp1qafkhadQzX9+89pWY+O8qdco79NWF7vlX3wNL7n2B+z4Cn.5sSv+IBxgqJFmuH5nviMiKrVAjMjg6PCCAD+dPByz2yslf879Svdt8DrmOXB1yclf87gSvd9ngtGQwkv1cEgb.gZ6Hu2Es3aLJK5e.xKD7r.
                              

                              Be aware that this is another contender for worst CPU usage for a simple effect (if you compile it the CPU usage will drop significantly).

                              Dan KorneffD 1 Reply Last reply Reply Quote 1
                              • Dan KorneffD
                                Dan Korneff @Christoph Hart
                                last edited by

                                @christoph-hart I'm trying to test out the Pitch Shift example. Getting some errors when compiling the DSP from workbench

                                Severity	Code	Description	Project	File	Line	Suppression State
                                Error	C2662	'void scriptnode::container::container_base<ParameterClass,scriptnode::wrap::fix<2,scriptnode::wrap::fix<2,scriptnode::wrap::frame_x<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::control::resetter<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>>>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,0>,scriptnode::wrap::no_data<scriptnode::dynamics::envelope_follower>>,scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,scriptnode::wrap::mod<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>>,scriptnode::control::smoothed_parameter<scriptnode::smoothers::linear_ramp>>>>>,scriptnode::container::split<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>>>>>>::setParameter<2>(double)': cannot convert 'this' pointer from 'scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>' to 'scriptnode::container::container_base<ParameterClass,scriptnode::wrap::fix<2,scriptnode::wrap::fix<2,scriptnode::wrap::frame_x<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::control::resetter<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>>>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,0>,scriptnode::wrap::no_data<scriptnode::dynamics::envelope_follower>>,scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,scriptnode::wrap::mod<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>>,scriptnode::control::smoothed_parameter<scriptnode::smoothers::linear_ramp>>>>>,scriptnode::container::split<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>>>>>> &'	PitchShifting_DynamicLibrary	C:\Users\Dan\Documents\GitHub\hise_tutorial\PitchShifting\DspNetworks\Binaries\Source\PitchShifter.h	290	
                                
                                

                                and

                                Severity	Code	Description	Project	File	Line	Suppression State
                                Error	C2662	'void scriptnode::container::container_base<ParameterClass,scriptnode::wrap::fix<2,scriptnode::wrap::fix<2,scriptnode::wrap::frame_x<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::control::resetter<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>>>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,0>,scriptnode::wrap::no_data<scriptnode::dynamics::envelope_follower>>,scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,scriptnode::wrap::mod<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>>,scriptnode::control::smoothed_parameter<scriptnode::smoothers::linear_ramp>>>>>,scriptnode::container::split<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>>>>>>::setParameter<2>(double)': cannot convert 'this' pointer from 'scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>' to 'scriptnode::container::container_base<ParameterClass,scriptnode::wrap::fix<2,scriptnode::wrap::fix<2,scriptnode::wrap::frame_x<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::control::resetter<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>,scriptnode::parameter::plain<scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>,3>>>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,0>,scriptnode::wrap::no_data<scriptnode::dynamics::envelope_follower>>,scriptnode::control::xfader<scriptnode::parameter::list<scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>,scriptnode::parameter::plain<scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>,0>>,scriptnode::faders::linear>,scriptnode::wrap::mod<scriptnode::parameter::chain<scriptnode::ranges::Identity,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>,scriptnode::parameter::from0To1<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,1,PitchShifter_impl::smoothed_parameter_mod_0Range>>,scriptnode::control::smoothed_parameter<scriptnode::smoothers::linear_ramp>>>>>,scriptnode::container::split<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>,scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<2,scriptnode::wrap::control_rate<scriptnode::container::chain<scriptnode::parameter::empty,scriptnode::wrap::fix<1,scriptnode::wrap::no_data<scriptnode::core::oscillator<1>>>,scriptnode::math::OpNode<scriptnode::math::Operations::sig2mod,1>,scriptnode::wrap::mod<scriptnode::parameter::plain<scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>,0>,scriptnode::wrap::no_data<scriptnode::core::peak>>,scriptnode::control::multi_parameter<1,PitchShifter_impl::bipolar1_mod,scriptnode::control::multilogic::bipolar>>>>,scriptnode::jdsp::jdelay,scriptnode::math::OpNode<scriptnode::math::Operations::mul,1>>>>>>>> &'	PitchShifting_DynamicLibrary	C:\Users\Dan\Documents\GitHub\hise_tutorial\PitchShifting\DspNetworks\Binaries\Source\PitchShifter.h	308	
                                
                                

                                Has anyone tested this successfully yet?

                                Dan Korneff - Producer / Mixer / Audio Nerd

                                DanHD 1 Reply Last reply Reply Quote 0
                                • DanHD
                                  DanH @Dan Korneff
                                  last edited by

                                  @dustbro I'm trying... So you can't load a snippet into the workbench? What's the best way to get the ScriptFX into the workbench for compilation?

                                  DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                  https://dhplugins.com/ | https://dcbreaks.com/
                                  London, UK

                                  DanHD 1 Reply Last reply Reply Quote 0
                                  • DanHD
                                    DanH @DanH
                                    last edited by DanH

                                    @dustbro ok, managed to compile the scriptfx. I have a file called 'project.dylib' in the dll folder. Opened up the project and everything looks the same as before - The project doesn't use the new dll I don't think. What am I missing?! :face_with_tears_of_joy:

                                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                    https://dhplugins.com/ | https://dcbreaks.com/
                                    London, UK

                                    Matt_SFM 1 Reply Last reply Reply Quote 0
                                    • Matt_SFM
                                      Matt_SF @DanH
                                      last edited by

                                      @danh Same here. Managed to compile the network but not to use the "frozen" dll version... Works with expr.node networks though

                                      Develop branch
                                      Win10 & VS17 / Ventura & Xcode 14. 3

                                      DanHD 2 Replies Last reply Reply Quote 0
                                      • DanHD
                                        DanH @Matt_SF
                                        last edited by

                                        @matt_sf did you get a .dll file after compilation? And do you get one when you compile an expr.node?

                                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                        https://dhplugins.com/ | https://dcbreaks.com/
                                        London, UK

                                        Matt_SFM 1 Reply Last reply Reply Quote 0
                                        • DanHD
                                          DanH @Matt_SF
                                          last edited by

                                          @matt_sf I get this message at the end of compilation, doesn't look quite right to me!

                                          Screenshot 2021-11-30 at 14.16.03.png

                                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                          https://dhplugins.com/ | https://dcbreaks.com/
                                          London, UK

                                          Matt_SFM 1 Reply Last reply Reply Quote 0
                                          • Matt_SFM
                                            Matt_SF @DanH
                                            last edited by

                                            @danh I do get a dll file for both networks but only the one with expr.node seems to use the actual dll... Don't know why

                                            Develop branch
                                            Win10 & VS17 / Ventura & Xcode 14. 3

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

                                            15

                                            Online

                                            1.7k

                                            Users

                                            11.9k

                                            Topics

                                            103.7k

                                            Posts