Scriptnode cpu ?
-
Just found this
@Christoph-Hart said in Trying to create a random pitch detune effect in HISE:
Also be aware that scriptnode patches which use frame-based processing are supposed to be compiled into a C++ module for production builds - if you compile it to C++ that particular patch shouldn't take more than 0.5% - even in the HISE CPU meter.
I'm not using frame-based, but how do we "compile to C++"? Does that just mean exporting the project to a binary? Or is this to do with meta nodes or something?
Any scriptnode gurus out there? @ustk
-
What are you doing that eats up 30% CPU? You can send me a screenshot of the full patch per PM if you want to keep your magic private :)
Again: scriptnode is being heavily rewritten at the moment and there are a few occassions where the CPU usage was excessively high, which is now more optimised (IIRC a modulation connection caused an UI update per sample which was unnecessary). However using a scriptnode patch in the compiled plugin is not advised because there are limits what a interpreted DSP graph can achieve regarding performance.
In order to get a reasonable performance from scriptnode you need to create a C++ node from it - this is where the real magic of scriptnode comes in as it allows you to transform the DSP algorithm that you've designed within scriptnode into a fully optimisable C++ class. I did that for some of the effects in PercX and there is no difference regarding performance to the ones that I've handwritten in C++.
Unfortunately the code generator is broken in the current scriptnode branch (it did work before I started the rewrite, but now it's in a nimbus state until I get this overly massive rewrite done).
-
Ah also that entire custom node location thing will be removed. You will just export all the scriptnode patches as a dedicated .dll that will be loaded by HISE for each project during development and when you export your final plugin it will be embedded into the code (so you donβt have to drag another dll around).
-
@Christoph-Hart said in Scriptnode cpu ?:
it's in a nimbus state until I get this overly massive rewrite done).
And you receive an overly massive encouragement for the titan work this represents!
Really happy to see all those commit notifications every day! :)The new node exporting system seems to be easier than the actual export, and I can't complain!
-
@Christoph-Hart said in Scriptnode cpu ?:
What are you doing that eats up 30% CPU? You can send me a screenshot of the full patch per PM if you want to keep your magic private :)
Nothing too crazy, I'm okay with showing some snippets if it helps other people learn (although I'm probably doing it wrong since it's using so much CPU).
These are 2 of 3 node trees for this one Exciter plugin, I've already read the threads about Transient Shaper node using a bit of CPU, but the other plugins (FET Compressor, Saturator, Basic EQ) all have around 9% in ableton. I can't run more than 2-3 copies of each before my audio hangs.
However using a scriptnode patch in the compiled plugin is not advised because there are limits what a interpreted DSP graph can achieve regarding performance.
In order to get a reasonable performance from scriptnode you need to create a C++ node from it
Unfortunately the code generator is broken in the current scriptnode branch (it did work before I started the rewrite, but now it's in a nimbus state until I get this overly massive rewrite done).
Damn that's tragic, thanks for explaining though :) Do you have a rough eta for us? I really do appreciate all the work you're doing.
-
I'm stupid, I didn't expect the oversampling nodes to have that much impact, I'll have to lower them to 4x...
I wonder what the ideal middle-ground is for anti-aliasing and performance. I assume 16x will have diminishing returns for aliased frequencies.
-
@Christoph-Hart Dear Christoph
Could you point Me to a version of scrptnode that the export To Cpp Still Works?@ustk And you said that it was workong Before you start to dosome changes.
Thank You
-
@iamlamprey Mate, in what version you did export Nodes to Custom cpp?
Do they increase the Cpu usage? -
@Natan I haven't done it, I exported them to meta nodes, which don't affect CPU and are also being deprecated.
-
@iamlamprey In The Latest Version, I Succesfully Exported To Cpp Meta Node.
They Work In Hise, But In Exported Plugin, They Get Muted, Or Do'nt DO Anything To The Input Signal, Kinda Bypassed Or Not Integrated :( -
@Natan What kind of node setup are you using? I brought mine down by a significant amount by adding a button that disables oversampling nodes.
For simple stuff like compression/filters/dry-wet chains and saturation, you should be able to bring the CPU usage down to reasonable and competitive amounts, not sure about more modulation-based stuff though.
-
@iamlamprey It's That Flanger, Yo Can Find It In The Forum
It Just Have A Oscillator, And 2 Delays, Nothing Crazy
But It Makes Some Artifacts, Which Will Get Disapper With Only Using Oversampling,
And It Causes CPU Spikes In Other hand -
@Natan I built a flanger (well I gave it a go) and posted here somewhere, it only uses 2x oversampling...maybe try it..I never exported it or compiled it so it might be a dud..in HISE on my system its using about 2% CPU
HiseSnippet 2002.3oc6b0sTaaDEVByBXCISZmjI4ROY5EjYR8HIafvzoSH7WJSAhGLIo2wrHs.6frjpzZ9oc5SSuuyzmh7Hza6iPeCZO6tRVqLFv3DL1TwM38r+nu867ydNFsTOz2lDE4GpoWb2yCHZ5yfZbtG6nUNBS8z1XUPN5.Wr2gjPskOO.GEQbzz0K7Vd25EGWS7y+75kwvfrIohzz9fO0lrIsIkkJs9R+H00ccrCYWZSkQWaoMr88Vw20uE.kBHCs.r8w3CIai4CaLjl9Dq4PY9gMXXFIRSe7k8cNuwQ9m5IG+GnQz8cI7FlZMfERJdceWGNh4R0V4HpqS8jsbjllNpdJATPR.OFsE0g1VdJQ7HQGkSmgJenO1UAOSU3YzyvSSAciKQG.BemVtXVVjwUGwcP88xfrM7XDuHJ6bU00cJb+JTcJy9nti2w5BdAE0sMdiU9O.s1AGPrYofcbz5+zsulVW+hbWITC6PZ.Cd9bfTBstzOzLCbjiQS+OPkKWdMuCodjJ1gD.aqFErMgcpe3wy973o97W7ckOnkmMmzKGDRBvgjc8q6hOe1Hby.WxNv7dY48c8sOtA8WHunzuVpXoeqj5jDvbY9Hl09HrmGwM5hCi6K6wB8cm0qUy8Igur7IX2Voq2EbmKb4rnp6bWTh632hQ8NbKLKjdF3QucqlMfnH1jUhQGHSeLM9TEsM3s41TMHdNhF+K7Sbml715wcZlzoFeyP7Xf7XFUnxh+L7IYbxXRl2iuC.8oVGaCawyqiYGws5gHbLvrhDVwts4khVE.dJjKfrz1D33NDZnwWZ03jq32rIGZ7Xjwe9iTG9CDgpZXDaqrCnc4Qb2havhrfscAfDCHgLJgSh7UUtmDHeRNzd.5.5YlyumvZPKyd4oJ6E0Ac6rE5Ar9Pj+IjPoMr0YYA6yT.alQcmg1IQQAtvwhWp8gr6AJ9JDayJ07mFhCDFollZWiU7vfYqJ3KgBI1D5IDqNQdnLRQk39uKQtHdOuEbJWAIk+FGmc8aPOzC6p8AdvRYru5s12kZGG8K8HycwgGRXhCwvgPNRLR7wHIsf.Ra3AV6L4gNFZaQ8ZurPK7YJOjM8OkDFmpFu22GDnzFB.yHA7yCfv1HiJFffiImJYW4.hCkQHN6C4skfe9fmqlTM0NnRpok0PkCvXJ1PShj11i.l9Sn.6o4Qr2yg.mmmE5OBfdHoRZu2kH+ZMhG6laDOAxz..vUYGGOjTSYDXcl0RtHHopgoQUMIatJmqDEpD+XPHqJKpf1aD9rpcs3CFRJ9DNdc2OKo9IkmklhcPwjPf4Q.uii.1oloDR3+sma0rplGfhXGWItugauSUBtTuQviCl1WICKFfpkuQW42IkdjpjamvMt.qLNCIzZNiOXXbH8VQ0SY36G1N3CuygpHOyff567HhJWS1oogPuQgeTogIPMa4NeVVnDpI76JPGiNlbC5nnShjqX6ybgjHubVdJYpZliZ4pMSZtZl4IqcajrlvgcXOUs1UqZlmq1PP0pUM6d5ZV4IOLfRdnMkalS4e1TdQTsJK7pZKLeOm0l0HcVaJQS+7Raag7z19LSaS7c+Y1AMeYbtz1q58CaOqans20jYa0QgLaGS4q3cZTSemtkT9iUfdxPFreGuHILKJygwOxl5J9aS2kuIZHC7z9Grbb5edW9hbMlhEQuOhvewDTOl8lkFVg9IpQsqIpQujd7D72Nfad95xZARAChWrPF3HnQU7LIHHaAEcIRVIPjk0hKZLWbIEqGR94VDO6zySGuze86AeeoO85drvByrmwOeGjlYmmwOeOvZyHvU4c3pT0buylEUD8PKvI6BmmKNHKty7Cy5wCy5rpMQNBUyyQ3ylVMuHstXNs9kH0KqDlsnbDAD7wcDLXZ4wb7dFdNfqaLs9XWr7kY3XYCmL0n2VEvkmTJz6BZ+5TQXRFZMO79tIuLV2NEnMEWaYzE80ZmEDRhh3INxYMsdYmYNRty5wL+scI3vrFlyH84k8j60eCNi5Zpkn1nasDVCa0RLQlWXpzZEpNTUKQd0CCOUOvmjUO+5ibmW5P07RGtsxwct7bb+BSqHD1woqrJW9nOqNN5aMG.zp3wbAy0Wkat9EnjrZK1kRxpdutjrp22JIK8kI6daEYSIqHyLujragRx5mFueiUwLLemEeMjT3Cc8UImPsIRythfYXzwL+fLWssmH6bZzGwmPDWtSAVehn8A9gMK+VBTFEu1DyK8Nd9os+yd8NdFzy2wy2Yy.HraH1KJvOhXptxczmkZeqRXs7xNbonLihu8VG1dJi6QKkHTcjKUG6kYwf1YVos3Wrrjl+8qktzMHvtw4co00ob8Jq2xMhHLtMUmXpXKUw+.NzAzK1YtviE54aY3M35tNQ90c85tsgFW4sMLy8zrXBFaP42nr0fXMtfmo.ieM3Jd.tkKKQZVWqs787CNx2ilQouCgEROTbEBSwdW2Pugw3u4Rsk73k1g.gliTb29lk1j5AQq2RlxQ+vEl8NWbU5qmgjvsLOdP46GWS4B+u7ZJ26dnPHyQGM8SQPXbqxB0c46d88f3FMOHdFMw1g96YKuH37.FSIj.6aOw+UGJh1h2tro1Ioe0bFZMgic1y1NoXztOGq9XNU6i4TqOlyb8wbluOlyB8wbd0UNG9I9uoEyuoz9GDTeMQxm55sqiQuf1+Ax+JVoB
-
@Natan Could you try this again? Or did this not work out?
-
@iamlamprey It Has Its Own CPU Usage Story, It Removes The Artifacts,
And Another Wierd Issue With This, It'll Add Around +5 dB :/ To The FX Plugins Output. -
@Natan @iamlamprey For me, use of the transient shaper is the worst culprit. As @Natan mentioned, the 'Export To Cpp Meta Node' method reduces CPU significantly in HISE but the nodes become inaudible when used in exported plugins.
Guess we'll just have to wait until @Christoph-Hart roles out the scriptnode revamp - Can't be an easy task mind! -
Still think it would be good to know the last known version of Scriptnode when 'Export to CPP Meta Node' worked end to end ( from within HISE all the way into DAWs).
If anyone has this info please chime in -
Prety Stocked Here :(
@Christoph-Hart Could You Please Help Out Our Hise Buddies :( -
Still think it would be good to know the last known version of Scriptnode when 'Export to CPP Meta Node' worked end to end ( from within HISE all the way into DAWs).
Now that I think about it, it never worked full end to end. In PercX I took the generated C++ code and wrote some custom wrappers around it, but there never was a proper export when you compile plugins.
I'm afraid you need to wait until the revamp is ready. I am closing in on a first prototype for the SNEX workbench. It's kind of nice because you can export any node now into a custom dll that will be loaded as plugin without having to restart the app (also the compile time is a fraction of the full HISE compilation, so the development cycle is quite efficient this way).
-
@Christoph-Hart Watching git like a hawk