Building an effects VST - Idea on guidance
-
Check the buffer stop example in the Snippet Browser, it's basically a tape stop FX written in SNEX.
-
Yep Snex will do it.
If you need more complex control, you can also create c++ nodes for scriptnode, which will allow you to use juce directly.
-
Just while we are on the topic of buffers, could anyone assist with a working version of the Recorder Demo from the hise_tutorial.
I recall this working fine in Scriptnode but the network won't compile to .dll. I have tried solving this myself but my knowledge of C++ is quite limited. Wondering if anyone has developed solutions for creating buffers in Scriptnode and displaying the waveform like in this tutorial.
-
I've not created a neat solution yet sorry.
I'm working on a bunch of extra nodes for scriptnode.
Buffers are on my to do list, I'll look at it tomorrow if you can wait : )What do you need the buffers to do?
I've not looked at the recorder demo but I can look tomorrow. -
@griffinboy That would be awesome!
Check out the demo Christoph put together a neat solution, it just wont compile unfortunately (There's some discussion on the forum about it here.
I don't have a specific use case but there is so much potential with buffering. I've managed to get around it with RNBO but displaying the waveform in the audio recorder node would be a huge plus.
-
Hi again,
Apologies for the late reply, I haven't had a proper look at it yet, but tomorrow I do have some time, so I'm likely to create custom c++ node(s) to accomplish what you were after.
I'll share with you the result.Progress:
I've cloned the behaviour of the Recorder node.
Now I shall extend the functionality and make it robust.I'm going to add a sample playback system, and an adjustable playhead. As well as options to overwrite the buffer, and do 'sound on sound' using the buffer, as well as an option modulation output (following the waveform) as well as a circular buffer variant.
Do you have any feature requests?
-
@griffinboy Cheers that is incredible you have set that up already!
Adjustable playhead overwriting was my next recommendation so it's great you are on that already. I am assuming you have managed to link its behaviour with the core.recorder node (for waveform display) and adjustable recorder length? Those are the main features I would personally get the most use of.
Using the buffer output as a modulation on another signal would be a fantastic (similar to MaxMsp's lookup. I imagine that is pretty manageable in Scriptnode already.
I am not sure I understand circular buffer variant but does that entail several nodes can read and write from the buffer simultaneously?
It is really awesome you are compiling so many SNEX nodes for the community by the way, I know I greatly appreciate the work.
-
i've made my own module, forget the recorder node.
Circular buffer means that you can record infinitely, and the recording will loop around and start overwriting the start of the recording when it reaches the end of the buffer size.
This means you can create programs that constantly record, meaning you can have functionality such as 'save the last minute of recording' Without the user having actually pressed record.
I'm still working out how Hise manages the saving of files for the node.
This isn't Snex, I went straight to c++ this will be a node, in the same way that the original recorder node was.
-
@griffinboy Man I'm looking forward to seeing all this c++ based node work you've been doing... well done.
-
Using the buffer output as a modulation on another signal would be a fantastic (similar to MaxMsp's lookup. I imagine that is pretty manageable in Scriptnode already.
This functionality is embedded into the standard core.file_player. Thereās a dedicated playback mode which uses the input buffer as position (try with a ramp before it).
-
Docs:
Signal Input Mode : An external control signal determines the playback position within the file, allowing for creative manipulation based on signal input. The input signal is mapped to the playback position, so if you want it to play normally, use a ramp generator that generates a signal from 0 to 1 with the period time of the sample length that will map to a default playback of the sample as it would be in Static mode. Of course this is just the easiest application and you can do all kinds of funky things (scratchy, scratchy) going from there.
-
@Christoph-Hart That is awesome. I don't have an immediate use case for this but I am sure others will. Just tested it out and it is very scratchy scratchy indeed.
I agree with @Lindon too, I am excited to see all of this node work you have been up to @griffinboy . Do you plan to release a GitHub repo with all of these at some point or share via the Snippet Browser, or are these mainly for personal use?
-
A github repo would make sense, I didn't even think of that!
I'll probably just make posts whenever I create something new. These are custom nodes and so they can't be shared via snippets, but luckily it's quite simple to import these nodes into fresh projects.
Hopefully these will extend scriptnode in a positive way, these are meant to be more indepth modules, and some of them require programming to tweak, but I plan on making it as easy as possible.Things that are currently in development:
- Customisable LUFS calculator
- Efficient RMS calculator
- Two stage autogain module (based on rms + lufs)
- Nonlinear Circuit simulation framework (based on WDF and HSIM)
- Tape simulation (based on Chow Tape)
- Accurate low distortion compressor with auto release
- 1:1 Accurate Moog Filter
- Efficient Linear phase Multiband with latency compensation between bands.
- Personal C++ custom node template
Many of these are already done, but I am working to integrate these better with Hise before I release them : )
-
@griffinboy Wow that is awesome work. Excited to see some of these implemented. Let me know once the buffer project is up and running I have a few ideas for it. Does this mean they will operate as nodes in the module tree or nodes within scriptnode?
-
No not nodes in the module tree at the moment.
I do have the capacity to do that but at the moment I'm less interested. I think scriptnode gives you more control.
-
@HISEnberg said in Building an effects VST - Idea on guidance:
Let me know once the buffer project is up and running
Sorry about that, it should be done quite soon, I just wanted to make sure it was robust before releasing it. There was a method I was wanting to do for a while, which is to fix the number of channels at runtime, so that the node can support arbitrary channel counts when loaded into the daw.
This poor guy, getting notified for our conversation, I should create a new post haha