Is this the recommended method to use for modulating a c++ node? Works with the matrix modulation system and such? I've been needing to investigate the best way to do modulation.
Posts
-
RE: Is there a way to give a custom c++ node parameter modulation support without wrapping in a network??posted in C++ Development
-
RE: Third party C++ log to consoleposted in General Questions
I only know for windows DBG works. Using the VS debug console prints
Have you asked gpt about it? I have a feeling it will know
-
RE: A follow up on the custom tables...posted in General Questions
Ah yeah you'll be fine linearly interpolating the waveshaper curve. The one thing to watch out for maybe is cases where you want discontinuities. Linterp will very slightly smooth those, you may want logic to preserve jumps. Like you said, the actual drawing of the curve by the user is of limited fidelity / accuracy, and that's the real limit.
I'm doing all sorts of interpretation in mine to assume intent from the user.
-
RE: A follow up on the custom tables...posted in General Questions
For getting started, just using linear interpolation will be usable.
When you take in your table, sample it to a table of like, 2048 or 4096 samples using linear interpolation. And then you can read it using linear interp too for different speed playback.
It will be aliased, but for use cases like slow modulations, it doesn't matter terribly. Like, if its an LFO, it won't be unusable with alias.
For antialiasing, it's a complex ordeal.
See this paper:
http://www.mp3-tech.org/programmer/docs/resampler.pdf -
RE: A follow up on the custom tables...posted in General Questions
I resample it into discrete sample values.
It's the same idea as wavetable synthesis oscillators, or a sampler. We end up with a waveform shape sampled to the amount of samples we want.You'll incur aliasing if you don't take measures against that.
-
RE: Stock Table Upgrade?posted in General Questions
jokingly
If we make this a contest, I'll just be putting my table through my super strong antialiasing resampler. Can't beat antialised tables...That said, we could probably pump out a hell of a table, if we pooled our resources lol
-
RE: Stock Table Upgrade?posted in General Questions
Idk if you have used a different strategy, but the way I'm doing it, is sending only the control points and tensions into c++
Since the GUI code only contructs the graph at the resolution it needs to for each segment, there is no point calculating a high resolution graph on the hise side of things.The c++ then constructs the actual modulation shape in high resolution to be used for audio processing.
-
RE: Stock Table Upgrade?posted in General Questions
Indeed, that's my thinking. It would be nice for table 2.0!
Although, I'm likely to do it custom no matter what, as is my preference for high control!
-
RE: Stock Table Upgrade?posted in General Questions

It's hisescript.
Currently only integrated for custom c++ projects with my custom modulation source. -
RE: Stock Table Upgrade?posted in General Questions
it's not quite integrated with hise fully.
If we could get Christoph to adopt one though, that of course, would be better.
-
RE: Quick performance questionposted in General Questions
Multiple wavetable synths will use a lot of memory.
Christoph's WT engine creates mipmaps (multiple antialiased copies of the wavetable).
If you have multiple WTs loaded into separate WT engines simultaneously, each one will have multiple copies of the wavetable.However, this memory is probably still small compared to say, a regular multisampler... However 100 wavetables is gonna get big I can imagine you could pass the GB mark of ram usage.
Can't speak for cpu, you can try it but I'd assume cpu is okay as long as you don't have the inactive synths do any processing when silent.
If you are trying to acheive clickless swapping or something (idk if the WT engine does this already? Or what your goal is with having multiple WT engines - fast loading maybe??? No silence dropout???)
You could just have two WT engines, keep one silent, and use the silent one to load the new wavetable, once ready, volume fade between them. Then you get a seamless handover to a new engine. -
RE: Multiple start and end ranges in a single AudioLoopPlayerposted in Scripting
Ah I don't unfortunately, not anything I can share freely at least.
You can paste the code I sent above, into chat gpt and ask it questions about the workings of it
-
RE: Third Party Node + Offline processing?posted in Scripting
Ah right right. I think this is a question for Christoph then! However he did answer something similar very recently. And I think global cables was the answer he gave
-
RE: Third Party Node + Offline processing?posted in Scripting
If by offline, you mean doing a heavy process without freezing the program / spiking cpu, you can create a new thread and run the process on that thread / chunk the process into blocks and do a chunk at a time.
-
RE: Third party node modulation output slotposted in C++ Development
Yeah if you're talking about phase alignment I do it all the time.
Latency compensation is always in whole samples though, but there's no reason you can't phase align things fractionally by introducing more latency to either reach a whole number and then report that whole number to the daw, or in the cases where you're in control of both things that you want to align, just fractionally delay one of those things until it matches the other.
A daw won't respect fractional latency though if you're trying to get the daw to compensate. That's why lots of plugins have internal mixers so that they can phase align dry and wet for example (by delaying the dry path so that it will be in phase with the wet).
-
RE: I think I've figured out a better way to create parameters for a nodeposted in C++ Development
That's very interesting.
In case you didn't already know, there are quite a few other 'hidden' features in parameter data. Such as defining skews, labelled discrete type parameters etc.
-
RE: Reference External C++ Node as Audio Sample script - is it possible?posted in Feature Requests
yeah that was my thinking.
But I'm not certain whether that's the case @HISEnberg was asking about or not!
