Objects or cables?
-
woodslanding
- Member
- Posts: 1326
- Contact:
Objects or cables?
I am trying to cut back on my CPU in a big way, to be able to run my setup on my old processor... saving and loading preset files from disk, and recall of wkp control values has made it possible to run with fewer channels, I am most of the way there.
Since I am now addressing all my controls via objects in order to load and save their values to text files for save and recall, I'm wondering about replacing all my cabling with object calls. Would this save significant CPU? If so, would you recommend putting a script in each channel, or running everything from a single master script?
Also, my parameter mapping stuff is using huge cpu. I'm sending all the parameter values for all the vsts via arrays, and all the array sorting and concatenation seems to take a lot of cpu. Wondering if using object calls would help here. I'm only interested in a couple of parameter values, and it seems so wasteful to send the whole array, and then parse it to get the value I want. Writing directly via objects SEEMS like it would be more efficient.... but is it?
Thanks in advance for any clues or suggestions!
cheers,
-e
Since I am now addressing all my controls via objects in order to load and save their values to text files for save and recall, I'm wondering about replacing all my cabling with object calls. Would this save significant CPU? If so, would you recommend putting a script in each channel, or running everything from a single master script?
Also, my parameter mapping stuff is using huge cpu. I'm sending all the parameter values for all the vsts via arrays, and all the array sorting and concatenation seems to take a lot of cpu. Wondering if using object calls would help here. I'm only interested in a couple of parameter values, and it seems so wasteful to send the whole array, and then parse it to get the value I want. Writing directly via objects SEEMS like it would be more efficient.... but is it?
Thanks in advance for any clues or suggestions!
cheers,
-e
Custom Ryzen 5900x MATX build, Win10, Fireface UFX, touchscreen
Custom 2 manual midi keyboard
Usine, Kontakt, Reaktor, Synthmaster, Byome, Arturia, Soundtoys, Unify
Custom 2 manual midi keyboard
Usine, Kontakt, Reaktor, Synthmaster, Byome, Arturia, Soundtoys, Unify
Hi,
I haven't a clear answer to give to you. Mainly because I don't know your work and how it is organized.
A few ideas :
- scripting or patching :
First, it depends on how you prefer to move into the code, with classical coding (scripting) or wires. Sometimes, scripting is also very helpful to clarify a complex patch. A single master script could be difficult to maintain.
Second, how fast you need to access to values, scripts should be slower or not so CPU friendly.
I would suggest a mix of the two solutions.
- organization of data manipulation and calculation:
For audio, we usually need to be as fast as possible. And calculations must be effective all the time.
For some data, most of the time, the speed of transmission is not so relevant. Sending a dB fader value every 50ms is good enough, no need for a value every 1.33ms (64 samples bloc size at 48kHz). Usine proposes many solutions for data manipulation to be less CPU consuming and fast enough. Use of procedures that only calculate on changes. Clocking subpatches with on-off. Resampling data sends. Sleeping patches when they are not needed ....
As an example, we work on a software that owns almost 60 000 modules. It runs flawlessly on every platform. But calculation process is deeply organized and mastered.
Best
Sylvain
I haven't a clear answer to give to you. Mainly because I don't know your work and how it is organized.
A few ideas :
- scripting or patching :
First, it depends on how you prefer to move into the code, with classical coding (scripting) or wires. Sometimes, scripting is also very helpful to clarify a complex patch. A single master script could be difficult to maintain.
Second, how fast you need to access to values, scripts should be slower or not so CPU friendly.
I would suggest a mix of the two solutions.
- organization of data manipulation and calculation:
For audio, we usually need to be as fast as possible. And calculations must be effective all the time.
For some data, most of the time, the speed of transmission is not so relevant. Sending a dB fader value every 50ms is good enough, no need for a value every 1.33ms (64 samples bloc size at 48kHz). Usine proposes many solutions for data manipulation to be less CPU consuming and fast enough. Use of procedures that only calculate on changes. Clocking subpatches with on-off. Resampling data sends. Sleeping patches when they are not needed ....
As an example, we work on a software that owns almost 60 000 modules. It runs flawlessly on every platform. But calculation process is deeply organized and mastered.
Best
Sylvain
as Sylvain said, I'll stick to easy maintenance patching : on/off patch or patchs that are set on/off by the grid, globalarrays are powerful as you can make one for each VST parameters and save global arrays as text files.
Getting a 2025 computer is quite a good idea also. Since I got this mini PC Ryzen9/32GoRAM Usine is running flawlessly !
cheers
Olivar
Getting a 2025 computer is quite a good idea also. Since I got this mini PC Ryzen9/32GoRAM Usine is running flawlessly !
cheers
Olivar
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
-
woodslanding
- Member
- Posts: 1326
- Contact:
Thanks for the suggestions!
I have been refactoring, and I am very happy to be able to address single parameters in a vst via objects, without sending around and rewriting the whole array. This alone has made a huge CPU difference. Before I was changing various params in various places, and merging arrays. It was very expensive.
I haven't really found the use case for global arrays. But for global presets I am writing all my data to text files already, and that seems to work just fine. That way I can be very fine-grained about what to save and how, and I also end up with a readable file of all my control settings.
I don't use any scripts for audio. I use vsts for that. I do have a master MIDI script per channel, that would be a very messy patch without it....
I also went through and did a bunch of automating of turning off subpatches when they are not being used. It seems like I can still access object values in turned off subpatches, just presumably can't write to them. I haven't needed to do that yet, so I haven't checked.
Most of the new scripts have inputs, but no outputs. That way I don't need to poll objects for changes, I can use callback. But then I can send data all over the wkp with objects, which avoids a lot of global sends. This seems to work well.
Thanks again to both of you, you have been so helpful over the years!
cheers,
-e
I have been refactoring, and I am very happy to be able to address single parameters in a vst via objects, without sending around and rewriting the whole array. This alone has made a huge CPU difference. Before I was changing various params in various places, and merging arrays. It was very expensive.
I haven't really found the use case for global arrays. But for global presets I am writing all my data to text files already, and that seems to work just fine. That way I can be very fine-grained about what to save and how, and I also end up with a readable file of all my control settings.
I don't use any scripts for audio. I use vsts for that. I do have a master MIDI script per channel, that would be a very messy patch without it....
I also went through and did a bunch of automating of turning off subpatches when they are not being used. It seems like I can still access object values in turned off subpatches, just presumably can't write to them. I haven't needed to do that yet, so I haven't checked.
Most of the new scripts have inputs, but no outputs. That way I don't need to poll objects for changes, I can use callback. But then I can send data all over the wkp with objects, which avoids a lot of global sends. This seems to work well.
Thanks again to both of you, you have been so helpful over the years!
cheers,
-e
Custom Ryzen 5900x MATX build, Win10, Fireface UFX, touchscreen
Custom 2 manual midi keyboard
Usine, Kontakt, Reaktor, Synthmaster, Byome, Arturia, Soundtoys, Unify
Custom 2 manual midi keyboard
Usine, Kontakt, Reaktor, Synthmaster, Byome, Arturia, Soundtoys, Unify
Hi.
I don't know what are you talking about when you write
What is objects ?
If it exist an other way to send parameters data in all the wkp, than the Global Presets, i don't know it. But i am curius about it.
Thank you.
I don't know what are you talking about when you write
?...to be able to address single parameters in a vst via objects
What is objects ?
If it exist an other way to send parameters data in all the wkp, than the Global Presets, i don't know it. But i am curius about it.
Thank you.
Hi !
from the scripts, you can control any parameter in Usine : https://www.brainmodular.com/manuals/hh ... ne-objects
cheers
from the scripts, you can control any parameter in Usine : https://www.brainmodular.com/manuals/hh ... ne-objects
cheers
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Thank you very much.Hi !
from the scripts, you can control any parameter in Usine : https://www.brainmodular.com/manuals/hh ... ne-objects
cheers
I had to learn scripting ... it seems very useful.
Who is online
Users browsing this forum: No registered users and 324 guests
