Old 06-22-2022, 06:01 PM   #1
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default VSTi Freeze Script?

Greetings!
I'm looking for a VSTi Freeze script. Something DiscoDSP's HighLife is capable of, or ArcDev's SynthCatcher, but in the form of a ReaScript.
It is actually an automated note-by-note MIDI trigger and recorder simultaneously.
Anyone heard of such a thing?

Here's why I need it: some VSTi synths really kill the CPU when running at 192kHz, and once I found the sound I'm looking for I could really use VSTi freeze so I could treat it as just another sample player either in ReaSamplomatic5000 or SF2/SFZ or whatever. HighLife is still 32-bit only and SynthCatcher is very hard to route and it supports only one octave.
AtmanActive is offline   Reply With Quote
Old 06-22-2022, 11:08 PM   #2
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

Take a look at https://www.discodsp.com/bliss/
Apparently they made a re-release of Highlife that seems to include an 64-bit version.

Still, I would prefer an automatic Reascript Solution, don't think that one exists. Lot's of work, but it should be doable.
Fleeesch is offline   Reply With Quote
Old 06-23-2022, 04:01 AM   #3
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

One crucial difference in HighLife/Bliss vs SynthCatcher is that SynthCatcher doesn't try to host the VSTi, but just uses simple send-MIDI - record-Audio logic. That's where it dawned on me that this would actually be perfect for a JSFX/ReaScript implementation. Additional benefit would be ability to use/freeze the whole FX chain in a state that's already configured in Reaper. I think this represents a great oportunity as any approach to actualy host the VSTi, like HighLife/Bliss does will always be limited. So the proper way to break out of that limitation (in Reaper) would just be simple automated note-by-note recording with sensible input parameters (range, length, velocity layers...).
AtmanActive is offline   Reply With Quote
Old 06-23-2022, 05:28 AM   #4
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

Absolutely. Right now I am capable of doing this kinda stuff only semi-automatically by using a mixture of scripts, manual tinkering and software from the outside. Far from intuitive. Eventually I'll come up with a one-click solution.

Tricky thing is the post-processing, especially if you want looped audio. I don't know if you can create an automated loop-detection process within reaper and store that information in rendered files. Keeps the filesize down.

Usually not an issue with modern hardware, but I kinda think it's a must-have feature especially if you want to work with temporary stuff. The large sample starts to become intolerable once you with lots of expression layers and short tonal distances between samples, at least in my case where my sampler stores the sample data within the project file.
Fleeesch is offline   Reply With Quote
Old 06-23-2022, 05:40 AM   #5
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,301
Default

Quote:
Originally Posted by Fleeesch View Post
Take a look at https://www.discodsp.com/bliss/
Apparently they made a re-release of Highlife that seems to include an 64-bit version.

Still, I would prefer an automatic Reascript Solution, don't think that one exists. Lot's of work, but it should be doable.
I have this one in progress, it was made as prototype for some hardware device. It will be easier to adapt for software synth, I'll share it later at this weekend.
__________________
SoundCloud | MPL Scripts discussion | ReaPack
mpl is offline   Reply With Quote
Old 06-23-2022, 06:35 AM   #6
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Quote:
Originally Posted by Fleeesch View Post
Tricky thing is the post-processing, especially if you want looped audio. I don't know if you can create an automated loop-detection process within reaper and store that information in rendered files. Keeps the filesize down.
Of course, it is always a question of how deep do we want to get involved. Detecting and setting loops is tricky, for sure. But, presumably, if we can have long samples and so we don't care about loops, it should be easy-peasy.
AtmanActive is offline   Reply With Quote
Old 06-23-2022, 06:36 AM   #7
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Quote:
Originally Posted by mpl View Post
I have this one in progress, it was made as prototype for some hardware device. It will be easier to adapt for software synth, I'll share it later at this weekend.
Fantastic news!
Can't wait to see what shiny new development mpl has this time.
AtmanActive is offline   Reply With Quote
Old 06-23-2022, 11:52 AM   #8
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 11,725
Default

Track Mute by default freezes all plugins on that track.

E.g. SWS LifeConfigs and ReaLearn can be used to control track mutes.

-Michael
mschnell is offline   Reply With Quote
Old 06-23-2022, 01:43 PM   #9
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Quote:
Originally Posted by mschnell View Post
Track Mute by default freezes all plugins on that track.

E.g. SWS LifeConfigs and ReaLearn can be used to control track mutes.
I'm sorry, I didn't get that.

What is "Track Mute"? A script? How would a classic audio track-freeze be useful here?
AtmanActive is offline   Reply With Quote
Old 06-23-2022, 03:26 PM   #10
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

"Track Mute" is an internal Reaper function that renders a selection of tracks to audio wave files placed on new tracks while muting the original ones. Basicially an alternative way of freezing a track with non-destructive reversibility at the push of a button.

If freeing up CPU is the main goal this would acutally be the least complicated way of doing it.
Fleeesch is offline   Reply With Quote
Old 06-23-2022, 04:11 PM   #11
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Ah, thanks, no, that's not what I'm asking for.

I know very well how to bounce/freeze/render whole tracks, that's not the issue here.
What I am after would be an automated way to crystalize (let's call it that, for now) into a new VSTi where this new VSTi would be sample based.

Let's imagine a situation where I have a CPU-hungry synth on a track, and I also have some heavy processing of that synth sound on the same track, like phaser or flanger, for example. Now, regardless of if there is any MIDI on that track or not, I want to be able to press a button (execute a script) and leave my computer, and when I come back 15 minutes later, to have a new track with a VSTi on it (or bunch of ReaSamplomatic5000 instances) where I can now play the same sound with my MIDI keyboard.

In technical terms, this is, what I believe should happen under the hood: the script should enter it's own loop, from defined lowest note until defined highest note, for example, from C-1 to C-5, and then, in each loop, play that MIDI note with defined length X, for example, 10 seconds, then wait for defined tail length, for example, 5 seconds while rendering or recording the track's output to a file named in such a way that it is obvious where on the keyboard it should be imported. Once full loop is done, then, optionally compile a SFZ XML or, alternatively build ReaSamplomatic5000 instances with loaded samples set to correct root notes and key limits.

So the goal is to create a new playable instrument which can still be used for composing and/or live performance, while getting rid of the CPU-heavy FX chain that created the sound. Of course, since it is all happening in Reaper, it would be easy to go back and forth and change the sound or render the final performance with the original CPU-heavy FX chain.
It would be like a midstep between having a live CPU-hungry synth on one hand, and having fully frozen audio on the other.
AtmanActive is offline   Reply With Quote
Old 06-23-2022, 10:28 PM   #12
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 11,725
Default

Quote:
Originally Posted by AtmanActive View Post
What is "Track Mute"?
Muting the track by the mute Toggle button or by using a script / or other software to do that.

Seemingly you don't want to "silence" the VSTi but have it's output rendered in the same track.

In that case (track active but VST dead) you can disable or even unload it by the appropriate buttons in the FX chain (or by controlling such by software).

-Michael
mschnell is offline   Reply With Quote
Old Yesterday, 03:37 AM   #13
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Quote:
Originally Posted by mschnell View Post
Seemingly you don't want to "silence" the VSTi but have it's output rendered in the same track.
No, that's not what I want.
AtmanActive is offline   Reply With Quote
Old Yesterday, 04:14 AM   #14
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Here is ArcDev SynthCatcher:

http://www.dontcrack.com/freeware/do.../Synthcatcher/

It has one active MIDI output and one active audio input working simultaneously and in sync.



It sends MIDI notes, one by one, one selected octave only, from C-X to B-X and creates stereo WAV files of each recorded note.
Since it is one VSTfx that has both MIDI output and audio input at the same time, it does require feedback routing. However, I couldn't make it work even when I enable "Allow feedback in routing" in Project Settings -> Advanced.
It seems like Reaper's feedback block/allow logic is broken at the moment.
However, I was able to make it work by doing this:
- put Synthcatcher on track 1
- put a VSTi synth on track 2
- send MIDI only from track 1 to track 2
- add "MIDI eater" JSFX after the synth in track 2 to make sure no MIDI can escape to create feedback
- add ReaStream after MIDI eater on track 2 and set it to SEND audio/MIDI to "*local broadcast"
- add one more ReaStream before Synthcatcher on track 1 and set it to RECEIVE audio/MIDI
That did the trick and Synthcatcher captured audio files even though it's peakmeter wasn't showing anything (maybe because I'm running at 192kHz). Recorded files are 16 bit, 192kHz and sound correct.

Now building an instrument from those files is another story, but we'll come to that.
Attached Images
File Type: png 2022-06-24_11-48-13.png (4.0 KB, 65 views)
AtmanActive is offline   Reply With Quote
Old Yesterday, 11:16 AM   #15
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

Sounds quite complicated.

I'm trying to come up with a solution within the bounds of Reaper, maybe I have enough time and energy to figure something out. Definitely need something of a one-button-way to do resampling for my own work.

Until then, found this one:
https://www.akaipro.com/mpc-beats

And a demonstration video:
https://www.youtube.com/watch?v=zngTX00Upi4

Apparently Akai released some freeware doing instrument sampling. I doubt it's up to the task, but maybe good enough for now.
Fleeesch is offline   Reply With Quote
Old Yesterday, 01:48 PM   #16
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 439
Default

Quote:
Originally Posted by Fleeesch View Post
Until then, found this one:
https://www.akaipro.com/mpc-beats

And a demonstration video:
https://www.youtube.com/watch?v=zngTX00Upi4
Thanks for sharing.
I watched the video, boy what a timewaster that is. All that dragging and dropping, manually trying to drop it where it should sit... horrible. I would rather go with DiscoDSP Bliss then. But I'm sure Reaper and it's powerful JSFX/ReaScript ecosystem can do much much better.
AtmanActive is offline   Reply With Quote
Old Yesterday, 03:33 PM   #17
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,301
Default

See Reapack/mpl_Sampling tool.lua

Sidenotes:
1) because of rs5k structure limitations it is impossible to link same parts of audio to different pitches, so it adds as more rs5k instances as more notes you have to sample
2) you have to set Apply FX tail to 0 in Preference/Media/Tail length for apply FX
3) on my machine if I increase count of notes higher that 20 (so it require 20 RS5K instances), reaper CRASHES. I can probably handle it by some smart delaying between adding new instances (tricky but possible). EDIT: added schedule mode for 1.01, it is set by default to ON

It can be improved to also handle velocity layers in the future if it fit needs.
__________________
SoundCloud | MPL Scripts discussion | ReaPack

Last edited by mpl; Yesterday at 11:46 PM.
mpl is offline   Reply With Quote
Old Yesterday, 04:31 PM   #18
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

Dunno if this helps, it's just some spaghetti code scribbled together to safe me some time in the future.

Input the data -> Script creates a bunch of MIDI items following the given parameters and configures the render settings of the project. Select the items (or the 'Do render' flag to >=1) and do a normal render process. The item names follow the typical naming conventions of common sampler VSTs, so while still not fully automated one can drag-and-drop or batch import the whole selection of samples into the sampler of choice.
Fleeesch is offline   Reply With Quote
Old Today, 03:53 AM   #19
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Posts: 59
Default

Here's a small update where you can use the region render matrix instead of the media item render method.

Set 'use render' to 1, script then looks for a track with 'midi' in it or uses the first selected track, creates the MIDI items on the track and in additions adds regions for the rendering process (rendering the master track).

That way the midi can go to different tracks and only the audio of the master track is used, if you want to create something like sampled instruments out of multiple VST on different tracks.
Fleeesch is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 12:50 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.