Re: General Preset Manager question.
Posted: Thu Aug 08, 2013 11:03 pm
"Preset parameter" primitive can do few correlated things with value, independent from each other. Value:
- can be automated,
- can be stored in presets,
- can be sent to host for automation recording.
Which means, you can automate value, but you don't need to push it through saving/loading routines of the preset system. As it is, my preset loads between 30 and 40 seconds, but it does not matters whether I load single preset or whole bank of 100 presets. So it looks that the redistribution routine slows down.
So the value that you use for automation - you can send separately to a converter, which gathers multiple sources and combines them into one array (sample and hold prims on demand help to reload the array once, only when needed), and then into single string, which is stored via "preset string" primitive. Preset string primitive has no automation, but it stores values on demand.
When I turned off "Preset parameter" from saving values, and redirected values into conversion routine with "preset string" (each can handle 255 chars, so you can combine a lot of values and switches in one string) - preset could load and save rather quickly (I had less than 200 strings to save). But... Things did get complicated under some load. You know, when gui seems to not respond, when too many green calculations are triggered at once. This showed that the advantage of saving via "preset param": prioritization in regards to other flows of triggers. It seems, that FS knows that it must save the preset first, and then can play with other things.
Now - some sub-circuits generate many triggers, so I would carefully approach which and how many of them I connect to array, that is being combined into one string to save.
*
In essence it's like this.
You send your outputs (any format) to converter (sample and hold on input for each parameter in converter, but it would be good to add S&H on output of your sub-circuit too; otherwise when doing modifications, FS may hang a little bit). You latch the S&Hs inside converter, to get the values when you wish to save the preset. You latch the output of array, so that you have only one trigger - after array is made. Array is converted into comma separated string, and saved. Simple.
When you wish to reload your preset, you just load it, and decompile into array. Then you either send the data either via individual wireles outputs or you send a whole array, and in your "value box" you put the "get string at" and place correct index. Then the value is converted to (0-1) range and is sent to "preset parameter", which is responsible for automation. And the circle is completed.
*
I tel how it works in practice after I do the mods.
I suspect it might be good to add a routine, that turns audio (and not needed stuff) off before you start preset saving/gathering that way, and audio on when it's finished. I needed to add such thing (with timed delays) anyway, because without it - my apps almost always crashed.
- can be automated,
- can be stored in presets,
- can be sent to host for automation recording.
Which means, you can automate value, but you don't need to push it through saving/loading routines of the preset system. As it is, my preset loads between 30 and 40 seconds, but it does not matters whether I load single preset or whole bank of 100 presets. So it looks that the redistribution routine slows down.
So the value that you use for automation - you can send separately to a converter, which gathers multiple sources and combines them into one array (sample and hold prims on demand help to reload the array once, only when needed), and then into single string, which is stored via "preset string" primitive. Preset string primitive has no automation, but it stores values on demand.
When I turned off "Preset parameter" from saving values, and redirected values into conversion routine with "preset string" (each can handle 255 chars, so you can combine a lot of values and switches in one string) - preset could load and save rather quickly (I had less than 200 strings to save). But... Things did get complicated under some load. You know, when gui seems to not respond, when too many green calculations are triggered at once. This showed that the advantage of saving via "preset param": prioritization in regards to other flows of triggers. It seems, that FS knows that it must save the preset first, and then can play with other things.
Now - some sub-circuits generate many triggers, so I would carefully approach which and how many of them I connect to array, that is being combined into one string to save.
*
In essence it's like this.
You send your outputs (any format) to converter (sample and hold on input for each parameter in converter, but it would be good to add S&H on output of your sub-circuit too; otherwise when doing modifications, FS may hang a little bit). You latch the S&Hs inside converter, to get the values when you wish to save the preset. You latch the output of array, so that you have only one trigger - after array is made. Array is converted into comma separated string, and saved. Simple.
When you wish to reload your preset, you just load it, and decompile into array. Then you either send the data either via individual wireles outputs or you send a whole array, and in your "value box" you put the "get string at" and place correct index. Then the value is converted to (0-1) range and is sent to "preset parameter", which is responsible for automation. And the circle is completed.
*
I tel how it works in practice after I do the mods.
I suspect it might be good to add a routine, that turns audio (and not needed stuff) off before you start preset saving/gathering that way, and audio on when it's finished. I needed to add such thing (with timed delays) anyway, because without it - my apps almost always crashed.