HISE Logo Forum
    • Categories
    • Register
    • Login

    Scripnode 101

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

                                            @danh said in Scripnode 101:

                                            @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

                                            Not quite right indeed :D
                                            You should see something like this :
                                            alt text

                                            Did you "Allow compilation" of your network ?
                                            (Deselect everything an press "P")
                                            alt text

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

                                            DanHD 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            35

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            102.1k

                                            Posts