HiseScript Questions
-
Hey!
I’m just starting with HISE and I looked around the community, videos (thanks David Healey!), and docs! I got to say, it’s a great platform and I can’t wait to learn more about it! I do have some beginner questions though. Everything in HISE seems intimidating and I can’t seem to build something functional. I felt that learning the HiseScript would be the best thing to do first. To learn HiseScript I would need to learn JS, right? I found that codecademy had a free course on JS and was wondering if that would be enough to learn what I need: https://www.codecademy.com/learn/introduction-to-javascript
After that, should I go look at the scripting docs? What’s the best course of action and how did you guys go about learning and mastering Hise to create audio plugins. My main goal here is to complete a project. The best example would be David’s player, Rhapsody and his LibreWave plugins. I would like to create a plugin which would play all my different instruments with things such as ADSR for filters and amp and fxs like delay and reverb. If you would like, you can check out my website and the screenshots of the kontakt instruments are what I’d like my plugin instruments to be:
https://nestacoustics.com/instrumentsJust would like an overview and some tips to how I would go about this tremendous project and how I would create this. Thanks again for reading this far! I have some development experience, but now is when I’m venturing off into the audio plugin realm!
-
Hello, welcome to the forum.
Everything in HISE seems intimidating and I can’t seem to build something functional.
Go build this:
And then this:
To learn HiseScript I would need to learn JS, right?
A basic knowledge of JS will help, but don't get too deep into it because HISE Script is very different to JavaScript and your time will be better spent learning HISE Script.
After that, should I go look at the scripting docs?
We are all continually reading the docs. Also read the posts from Christoph in the Blog forum category (https://forum.hise.audio/?cid[]=10)
There's also this course I made - https://musichackspace.org/product/creating-virtual-and-sample-based-vst-au-plug-in-instruments-with-hise/
-
@Casmat Welcome!
I can only give my own perspective on learning HISE. I never learned Javascript and had only limited KSP knowledge before starting, the most effective way to actually understand everything and "think" about code functionality, is to just start making and breaking things.
Since you're planning a big project (player plugin), you'll probably want to break it into smaller pieces and handle them one at a time. Start with a very basic instrument, add some modules like a Sampler, ADSR and maybe an effect. You don't need any scripting for this part.
Once you have the most basic of projects, try adding an interface and connecting some front-end controls to your Modules. This can also be done without scripting. Once you have a handle on the basics (adding modules, adding interface elements, connecting the two & exporting the plugin(s)), you can start scripting.
First, I recommend disconnecting the interface elements from the Modules, then manually connecting them via scripting. You can do this by right clicking the Module -> Create Script Reference, and right-clicking the Interface Element -> Create Custom Callback. Your first callback might look something like this:
// // Create Interface (width and height) Content.makeFrontInterface(600, 600); // // Right Click Sampler Module -> Create Generic Script Reference: const var Sampler1 = Synth.getChildSynth("Sampler1"); // add a button to the interface via Right Click - Add New Button // Our Button Function, attained via right click -> Create Custom Callback inline function onButton_SamplerBypassControl(component, value) { Sampler1.setBypassed(1-value); /* Sampler1 is our sampler module, as referenced above we call the class method, setBypassed(bool) where bool = true or false instead of manually setting true or false, we use "value" which is given to us by our Button Callback note: the 1-value is to invert the button to better match our interface */ }; Content.getComponent("Button_SamplerBypass").setControlCallback(onButton_SamplerBypassControl);
You can also share and import HISE Snippets, which can be very handy for sending barebones projects for debugging or testing to other HISE users.
HiseSnippet 1463.3ocyX08aaaCDWJNJqVqqXsnXXuL.hf8fSQRrc+bnEa0INeffUmXXmVzmV.sDsMQjHEHoRp2P+eZ+Iz+j5i6ssiTRVRtFYNdsc0OD363cG+cev6NmtBtGQJ4BK6pmNIhXYeSm9SXpwsGioLqi1yx9VNcvREQfRXs6jHrTR7srsqbnlgc0UsLed+y2EGfYdjbVVVuhS8HufFRU4b615WoAAGf8ImRCKH8CacjGm0lGviA7TwogUD16b7HxwXsXq3XYu199TEWzWgUDIHytb+I8GyujkH+qnR5f.hlnoUevPIrsZOlF32MyWkVV1Ncy87JId9cc5P8oS4mGA9VyAnbMJFCrW4pfTyqAjrK.oUSfzsc56InQp7Sz34qcNhAIjgXHTWDJIxZsxeUwodc250QsED.TnoRipcI0WMFgY9nwD5nwpMbcaygiYpsCwmSNP.DSEu1iazXSD7mMdlqahE6oUB0Nf5cNpONLJ.pK5v8iCHns9kr66PBiHndnD7f5QFRDDnt3ottP9UpPWfEYZ2D8yHSA21iHJSLwPUa8ryWO4xQXeeDFMHVo3LjhiTiIH5TG6BJtD11BsCH+wjKQ6ZzPagShEoTnChYdJJmsIBqTPZl3arfvXAuDKL0cZGKU7PTabPv.ndz0kxB.UPCSMBhyRL6YoXNImniqBdPMOdXDmAQ3MA+NHlrg6e3VMy61VRTYovZM2JQfmgbqV+dUykBQkH3MARlFwCMQb.7RjHK3BQmA7KHtUujf7.nZBPdAfkQgD0Xt+lnh20.NOXCzkiAkQ5uCoAkHlf3BzPbfDrCExTDrOhODEhYwfImnsfhxFUVzMQvUFKIn0MvecvpTuwZLOhdAwjrhktUGLw3CoYfoQSvMYbE4oF7lFAz5BZQYWPDJyA448A.Dzg.rBtCsAmVD3V8d0ce6yxqn0UTYA+ZqOubz5anS.oYpLHU6JymP4XgD+w.zOgUyjSceqKZ1iFNbtmkZKv1y8XcaQwUoXMVb3.hnXEkVPnuQ4lQqsXMi7RBXEDjyNhQUmDQRoOfG3qaxn+9G15xJMhqahkhPPTkoE1sRagkDRsnfQ9Nm4EesL9RwwIVu7n8vJblUgK.tzHnjfp8M68HW.yVRZTV0YOh7bEOxHaZNGBGWWL7lo2+6F0ZRNX9sVVeX2YXtf9gHVUdXgdpX5APRqTGZcqUljplTzMuFSPZbkSPVTHdamtT30y7w3JyAiPF3SAFSm69MN6ObHwSkCvUcN30K6P1E+5+gjq+NN8UPi9PnuVZsfACtNYce+XrxSzBuxSWAIfi86S+8Bh8tV6FCwHQYt+YKyUsSHOlU5tRQdORDL.CRyEz4Fs506PAONZVsd+yMEEmJfNfPnn3AmvHPrVUzGaK3R4PvcL1RV7ntwhQ5XUNmdDnOtrLuiiCg7MiQB.kcrsAVuTRz4WpWGrRPeSQoM2RiSwlbLrGngt4Lz2eF5GLC8Cmg9QyP+3YneRNcR.sCNRWYn2Ccl9re0h0mELPWL3xEjbW5noFOgS41GEDcZL2fqBa8NmcIW6S05sqtXu79WlW7keuzRaiWMCi8o5T09vdIAvfHCFuCL4YHNNPkwsb+hNbFOZLmQ8J+h.pvGMhHJh845P6.6m5cdNm61pGIffkEdR+isdArNJVT9g90JVb8+kIyMe88NIvEoaxg9uj29rVlckyCqrPyC+ni2ke13m0P2sRmRhfaWn9BOOeSGSecjdL7+WPsGOV+KnxFw4.yA6Cy98HEmFthdBaBcCMsFP8ILeCweCeROrY1nS8gMyNzxKyTfuk9cydz1UHL8nCyZdAvP4fhkzRXCCMjfwaeVPYH1SvOyK4mKnw5MLb.TxL+6dp5zQSiZl8CCbbZrcCqPXV0Ydd5GBaAQ34qy8WBcdvRnyCWBcdzRnyiWBcdxRnyOck5nWSXmXEOLoIIvn69IEV16Osvph0+.vhoeNM
Copy the above snippet, then hit File -> Import HISE Snippet to load it, you'll open a project that has a Sampler and a button on the interface, as well as the above code. Click the button to see the Sampler turning on and off.
Finally, as I mentioned above, you'll want to break stuff to understand what's going on. You won't get very far just following courses or reading forum posts, you need to actually get in and write some code, watch it break, then try and figure out why it broke. This takes time, but it's like learning a language: immersion is key.
David Healey's Patreon and course are great tools for specific examples as well, and he covers more advanced topics like Expansions, which you'll likely need if you're developing a Player Plugin.
I hope this helps.
-
dammit David's just too fast
-
Wow! Can’t believe y’all reply so fast! I’ll look into more detail on everything and I’ll post if I have questions! Definitely going to work on some test projects to get a hang, and then I’ll start building the instrument in multiple sections! Thanks all and if anyone has more info, it can’t hurt to add it!
-
@Casmat Welcome to the forum.
In addition to what the others said, I would suggest to not worry too much about the player plugin at the moment (it's just a distribution format) and start building your libraries on after another.
Also David forget to mention his great scripting video:
https://www.youtube.com/watch?v=8JO4m-OloqA&t=1492s
which contains basically every concept needed for starting out scripting so at this point I wouldn't recommend a vanilla Javascript detour anymore.
-
@Casmat keep searching the forum for threads on issues that you encounter. There’s so many examples of code and, even better, snippets that will help you see what’s going on. And if you still can’t find the answer or an example post a new thread on here. As you can see already the users on the Hise forum are unbelievably helpful.
-
-
Hello everyone !
I just wanted to find a clean way to deal with multiple buttons and sliders.
HiseSnippet 1313.3ocuX0saaaCElJIpMVscnAXXWKTfA3NjkXaIs1hfg3FmjAitjZT2Fr6BnknsIhDofDUZ7FJ1dl1SvdD1iPeD1av1gT9GZGY4jzt5KBBOG9Q88cHEOmi5jv8Ioo7DjQk2NJlfLdnY2QLwvVCwTFp8gHisLeW6yawCHsBIXVVbczAihwooj.jgw5+jbZFU1.A+NK8u2+.bHl4SlXRYlS8I+LMhJlYsSyWQCCOFGPdKMRa1tMa6yYs3g7LfRqaVCEi8u.OfbJVNs0LQF26n.pfmzUfEjTjwFGvCF0cH+8r74eFMk1KjHGTG0EVnbyGyCCjLVZE0ZHMLnyDomhfUoyr.w54Ahu17DZ.cp8YAjGqbXOCgd7vXs4o25yQu55zqlF8JfRFZTZibJskYW+DZrXlGIedfYalfjzGCgccpjOWzZ+48LawgYvD6DgufbbBLXJhpd0psssasZOcOKKHzmJruDmX+JFuWc6ezdBvADQKdTLmACp9Dk2m.HlGPiRAz35.bJEfy0A3VJ.2qCvqT.dR.VV6tqbPpcD9J.XXFQBmhgsIqDx.6KjjOgzmjPfS1mImvdSc3rLGtKyg2hNjDnCrqQYCrwggpIkNlHB9TtjZaQYgTFwteFyWP4LaNSEXkBLgGV0eh51NG8Ss9MqJEvdHlnvIiHJCUe5dUr9vdVkt4sSpzp5I0BnYO38xpyS.UvrXN5rRN5THGcz4njhVkddY4bzY0bzckbzsPN5dK3naYbzc0bzakbzqPN5cK3nWYbzSmi6t6IvkhpCr1941Ckmhor.RLA9CSjlebda6DRZLAjB3lf8GZmfYCHKQk0KUk4mcSmnGE.M4Y+cE8Fq8t102QdIWk7iUqBtSYvcWIb2xf6sR3dECuxJ14pW1NWc8ct7eZg8S4BxqYUUAXqOXYunq98Kz230LjjTnaYx8jx.VkkE0ijnu8JmHjwa9znlKOMpdVd+7Pi1D4r1Lp30vowkk6GMNdBobMGyJXpBUB2uZbB2tgz.RBhB4UuuoJXhTDVuLGzMFbiOEvNeJfc+T.6U.3209Pr.KqVYbTDhrwjDAUtoYbH4Rnzu7ZWpXdHI8BAOFpfa5wVnby7G5ilTYClQBUOyMMU+eczU5OvQ5CdOMPLbpgl+dygD5fgZUYNpYuASpk7gltMd1yq+hZ0ddMDUPhlywKbdlqimqliFK3QPtRnWWZOdBDd5R+04BH4VeCNflktPTdpjevJOaoIYZSMIeXy4k7eb1hRFrjBG9U2ZzgGmEKWzW1ieIQI.4SUck8jM8Hntdjw2XdJOIBGBhInCIwGnITxMJMqee5UR49snHZPPHrjoT4KvynzG2+1HsF5R6sZRqIYAogZescy1qPZOz7PZJbmghfegElilv.s74UXaZ9FxkjjdeoEkqtnh+LKp6C2GDhG8kVSdZZ5iYe10TGpveHPUM9g9KnuBsgMWlPjsEesV9flM4AYgXw7cfJa6drC4Zn21mr0NFr1Z2a7O6uXaoabyZKs7tluozcq7vRw7csB3KjO4+a9NtI+GYdT+9PYoyH6FlG+Kk1Q+F2rRQVAUdCOSVK7IXQh7.t4oYQcgbK9DfILHumrlGi0jINxGWSNVFY5B0UqF7uvuwNqKGaL1Y8INQQX+D94iKLW9IE1TYA3DS80Tp.4Bfw1SKlwzr1N0junQO22WFJ9df6Eiowc.iyc.i6c.i2c.yObGv7r6.lmWJF4GV5kYBdT9qIfgNGoJvxv3Hl7i.nNQh9Ov7ZGRM
In this attached snippet, I have a set of knobs that are controlled by a main knob. The code works, however I was wondering if there's a less "boilerplate " way to achieve the same result with a cleaner and less code.
Thanks
-
@Casmat love your sound design videos! Everybody should go check those out. I started playing around with HISE about three weeks ago and @d-healey s videos and this forum have been really helpful. I had zero programming experience before I started with HISE and still managed to build a sampler instrument with Reverb, Delay, Saturation and started using scriptnode. I'm still far from having a plugin that I feel comfortable distributing but I'm slowly getting there. My screentime has gone up a lot in these three weeks but I'm here for it.
-
@guhla Sound design videos? You talking about David?
-
@Casmat you linked the nestacoustics website, so I thought that was you
-
@guhla Wowwwwww!!! Can't believe you caught that haha!