Programmable VST Instrument,Audio effect,MIDI effect/sequencer,SoundFont import,Pitch shifter,Multi I/O. v1.0.120 beta.
-
- KVRist
- 146 posts since 4 Dec, 2014 from Ukraine, Germany->Munich
Bjt2, I want try to emulate WaveScan as this created in U-he Hive2.
Some waveforms control with host automation params.
I read manual, about samples.
Some waveforms control with host automation params.
I read manual, about samples.
-
- KVRist
- 146 posts since 4 Dec, 2014 from Ukraine, Germany->Munich
Good idea! Like as function Time(), or NextSample() / PrewSample()bjt2 wrote: ↑Fri May 20, 2022 2:03 pm What if i create a "sample" instruction in which you can manually put the time t and obtain the samples? I can also create a keyword for time elapsed from trigger time so you can morph in a custom way the time variable and apply to the sample function...
For classical wavetable synthesis the time variable can be a sawtooth of intensity equal to the period (1/f) of the wavetable sample and then an LFO or other processing can be used to shift this sawtooth...
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
I am not into wavetable synth... I must study it first...Alex_Longard wrote: ↑Fri May 20, 2022 2:43 pm Bjt2, I want try to emulate WaveScan as this created in U-he Hive2.
Some waveforms control with host automation params.
I read manual, about samples.
TIME will be a keyword, as time elapsed from the trigger, not a function.Alex_Longard wrote: ↑Fri May 20, 2022 2:43 pm Good idea! Like as function Time(), or NextSample() / PrewSample()
For the wavetable i was thinking to a function WAVETABLE(<sample_slot>,<t>) that is like the OSC (so sample slot also automatable) but instead of having the argument linearly growing with the time from trigger, it is a plain automation: you can use TIME, warped and modified as you wish or you can use a periodic function (typically a sawtooth, but can also be distorted if you want warp the original waveform and if it is continuos, the period needs not to be the one of the wavetable) plus a slowly varying offset to perfrom wavetable synthesis.
EDIT: but in principle <t> can be anything, so WAVETABLE will be a lookup table and if you put in a table e.g. a distortion with a custom shape, you can use it to distort an envelope with WAVETABLE (<slot>,ENV(...)) or you can use it as custom distortion or old rig simulation, e.g. you have the response curve of a fancy valvolar amp? You put it in a wave file and use wavetable to distort any signal...
The PREV function is applicable to each variable, so if you write
X=PREV(Y)
...
Y = <something>
each time the variable X has the value Y had at the previous sample, so if <something> is an oscillator...
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
- KVRAF
- 7890 posts since 12 Feb, 2006 from Helsinki, Finland
Generally in a wavetable synths you'd typically have an array of single-cycle waveforms, so in a sense a 2D table where time (or rather phase) is on one axis and the waveform index on the other axis. Practically speaking one common approach would have pre-filtered mipmaps (for anti-aliasing) on a third axis (so you'd do tri-linear interpolation or similar), though other anti-aliasing strategies are also possible. If one is trying to do this sort of thing, then it makes sense to support it directly, because trying to build it out of regular sample playback on some scripting language level won't be terribly efficient.
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
As I said i am not into wavetable synth (and this is the reason i didn't include the functionality in the VST...), but the function i devised will be useful also for other things (LUT etc). I will study the matter and see how it works in details and see if i can implement it.mystran wrote: ↑Fri May 20, 2022 5:05 pm Generally in a wavetable synths you'd typically have an array of single-cycle waveforms, so in a sense a 2D table where time (or rather phase) is on one axis and the waveform index on the other axis. Practically speaking one common approach would have pre-filtered mipmaps (for anti-aliasing) on a third axis (so you'd do tri-linear interpolation or similar), though other anti-aliasing strategies are also possible. If one is trying to do this sort of thing, then it makes sense to support it directly, because trying to build it out of regular sample playback on some scripting language level won't be terribly efficient.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Updated ZIP, V6 with TIME and WAVETABLE functions.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- 146 posts since 4 Dec, 2014 from Ukraine, Germany->Munich
Bjt2, thank you!
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Updated zip file at version 7:
Added SAMPLEUI instruction to add up to 32 UI to swap up to 32 samples at run time (and also set the parameters like center note, loop mode, normalization mode, etc.).
To avoid to make the UI clumsy, there is few text, substituted by tooltip. Let me know if it is accessible.
Added SAMPLEUI instruction to add up to 32 UI to swap up to 32 samples at run time (and also set the parameters like center note, loop mode, normalization mode, etc.).
To avoid to make the UI clumsy, there is few text, substituted by tooltip. Let me know if it is accessible.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
I have found this: https://electronicmusic.fandom.com/wiki ... _synthesis
and this: https://electronicmusic.fandom.com/wiki/Wave_scanning
Implementing...
and this: https://electronicmusic.fandom.com/wiki/Wave_scanning
Implementing...
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Updated ZIP file, version 8.
Implemented this:
GRAINSYNTH(<num>,<op1>,<op2>,<op3>)
Grain synthesis of sample <num>, grain size <op1>L/R (samples), crossfade <op2>L/R (samples), grain number <op3>L/R.
At trigger time the grain numbers are sampled and the first grain is played from start, with the crossfade at start and end of the grain.
At the end of the grain, the grain number is resampled and the process begins again.
WAVESCAN(<num>,<op1>,<op2>,<op3>,<op4>)
Wavescan of sample <num>, grain size <op1>L/R (samples), grain number <op2>L/R, frequency <op3>L/R (Hz), dephase <op4>L/R (samples).
At trigger time the grain numbers are sampled and the first grain is played starting from the inidtial dephase.
The grain is sampled at a speed given by the frequency, assuming that a whole grain is one period (and that there zero crossing at start and end).
At the end of the grain, the grain number is resampled and the process begins again.
All the processing is stereo, so the grain phase and the grain numbers can be different.
The dephase is applied continuosly and the grain number is resampled as soon as the combined dephasing and current phase crosses the grain border.
Implemented this:
GRAINSYNTH(<num>,<op1>,<op2>,<op3>)
Grain synthesis of sample <num>, grain size <op1>L/R (samples), crossfade <op2>L/R (samples), grain number <op3>L/R.
At trigger time the grain numbers are sampled and the first grain is played from start, with the crossfade at start and end of the grain.
At the end of the grain, the grain number is resampled and the process begins again.
WAVESCAN(<num>,<op1>,<op2>,<op3>,<op4>)
Wavescan of sample <num>, grain size <op1>L/R (samples), grain number <op2>L/R, frequency <op3>L/R (Hz), dephase <op4>L/R (samples).
At trigger time the grain numbers are sampled and the first grain is played starting from the inidtial dephase.
The grain is sampled at a speed given by the frequency, assuming that a whole grain is one period (and that there zero crossing at start and end).
At the end of the grain, the grain number is resampled and the process begins again.
All the processing is stereo, so the grain phase and the grain numbers can be different.
The dephase is applied continuosly and the grain number is resampled as soon as the combined dephasing and current phase crosses the grain border.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- 146 posts since 4 Dec, 2014 from Ukraine, Germany->Munich
Bjt2, you are so cool! Perhaps work as the chief programmer in Microsoft?
thank you for last version, I will test now!
thank you for last version, I will test now!
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
I am a computer engineer and I am an Italian researcher in the medical field. My job is to write image processing software (CT, MRI, PET, segmentation, denoising, partial volume correction, coregistration/warping, image acquisition simulation etc…) also with GPU. As you may imagine, image processing and audio processing are very similar.Alex_Longard wrote: ↑Sat May 21, 2022 11:37 pm Bjt2, you are so cool! Perhaps work as the chief programmer in Microsoft?
thank you for last version, I will test now!
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Updated ZIP. Version 9.
This version:
- Corrected some typos in the manual.
- Clarified in a few points in the manual that setting a tiny frequency (e.g. 1e-30) in the oscillators and using phase automation can emulate WAVETABLE for synth and other unsupported sample type (looped, separate release). WAVETABLE is still a little bit faster for one shot sampled data.
- Corrected a bug on the SAMPLEUI instruction: the UI didn't get erased when changing the file.
- Corrected an obscure bug in the looped sampled data: wrap around in the negative direction not implemented. If the phase automation was fast and strong enough near the loop start, the sampled data used can be the ones preceding the loop (negative dephasing strong and fast enough). Added a flag for first loop passing and the correct wrap code.
This version:
- Corrected some typos in the manual.
- Clarified in a few points in the manual that setting a tiny frequency (e.g. 1e-30) in the oscillators and using phase automation can emulate WAVETABLE for synth and other unsupported sample type (looped, separate release). WAVETABLE is still a little bit faster for one shot sampled data.
- Corrected a bug on the SAMPLEUI instruction: the UI didn't get erased when changing the file.
- Corrected an obscure bug in the looped sampled data: wrap around in the negative direction not implemented. If the phase automation was fast and strong enough near the loop start, the sampled data used can be the ones preceding the loop (negative dephasing strong and fast enough). Added a flag for first loop passing and the correct wrap code.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Updated ZIP. Version 10.
This version:
- Implemented save and restore of last SAMPLEUI user setting. Now if a user modifies some SAMPLEUI and then saves the file on the HOST DAW, when he reloads in the HOST the file, the VST will reload the last saved file settings.
This version:
- Implemented save and restore of last SAMPLEUI user setting. Now if a user modifies some SAMPLEUI and then saves the file on the HOST DAW, when he reloads in the HOST the file, the VST will reload the last saved file settings.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986
-
- KVRist
- Topic Starter
- 179 posts since 17 May, 2022
Just tested the IN keyword with SAVIHOST64: it allows you to set any input device (e.g. the MIC) as the input to the VST.
It works.
The IN variable can be used as sidechain in an instrument or even in an effect. I didn't found a direct way in Ableton to give MIDI data and an audio data to a VST, so i didn't quite tested this feature. But digging into savihost settings i discovered this feature, so i tested it. Users of other DAWs can just write a VST instrument (or effect) with a sidechain input.
I discovered this help page (https://help.ableton.com/hc/en-us/artic ... ty-plug-in) and it seems that can be done also in Ableton (will test later when i return to home) with a more convoluted procedure.
It works.
The IN variable can be used as sidechain in an instrument or even in an effect. I didn't found a direct way in Ableton to give MIDI data and an audio data to a VST, so i didn't quite tested this feature. But digging into savihost settings i discovered this feature, so i tested it. Users of other DAWs can just write a VST instrument (or effect) with a sidechain input.
I discovered this help page (https://help.ableton.com/hc/en-us/artic ... ty-plug-in) and it seems that can be done also in Ableton (will test later when i return to home) with a more convoluted procedure.
Last edited by bjt2 on Tue May 31, 2022 8:00 pm, edited 1 time in total.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Thread on my programmable VST: viewtopic.php?t=581986