Welcome to %s forums

BrainModular Users Forum

Login Register

Modify comma text strings?

I need help on a Patch
Post Reply
gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 08 Dec 2016, 06:48

I am looking for a way to add an identifier (other than by index) to each string from a variable comma text source.

For example:
"String1","String2","String3","String4","etc..

would become
"StringA","StringA","String3A","String4A","etc..

Using comma text> strings> concat strings> comma text etc isn't really an option as I am dealing with large numbers of strings (VST parameter names potentially by the hundreds or even thousands.

I used the search in the forum but nothing came up for me other than ways to replace specific characters, but not to add. Ideas?

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 08 Dec 2016, 12:43

Script TStringLists and use concatenation?

-s
"Every act of creation is first an act of destruction." -Picasso

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 08 Dec 2016, 22:25

Thanks for the suggestion, for now I avoid trying to rewire my brain to understand scripting and utilize the 23fx method here to replace " with a variable character. It still gives a usable comma text output and will suffice for my needs. http://www.sensomusic.org/forums/viewtopic.php?id=4844

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 09 Dec 2016, 16:55

I have you a script that is pretty light-weight.
What options would you like in it?
At the moment it's just like an addition modifier and does a sequential count.
Example:
BaseComma->Name->Seq#
-----------------------------------------
CutoffFilterA_Waldorf1
CutoffFilterB_Waldorf2
OSC1_Waldorf3....
---------------------------------------

I could do like prepend, append, integer input for your own, mix commaText.
Even if you have an alternative, I would like to have this available.

-s
"Every act of creation is first an act of destruction." -Picasso

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 09 Dec 2016, 19:04

Hi sephult, thanks for the interest. In my case, I have found a way to track the index of a single VST parameter in a larger concatation array of multiple VST's parameters by using the parameter names as an index locator. In this way I can change amount or order and array size within the array and always retain my prior mappings to the VST parameter.
The problem is when two VST's have the same parameter name, or when using the same VST in the array more than once, it becomes impossible to differentiate which parameter to set index/value for..

My ideal for my immediate use the script would be to have a single (non sequential) letter and single numerical value attatched to the beginning of each parameter name string in the comma array and to have an inlet to change these values from say A-Z and 0-9, one letter as an id for source location id and one number as an id for each VST (I am suggesting the characters be at the beginning because these are the easiest to remove for parameter names display if desired via arrays editing. Alternatively, if the script could have a reverse function to remove the characters could be useful too, and charcters could be at end of string)
To be clear I am suggesting something tike this:

Comma text from VST 1= "A1Vol","A1Attack","A1Release","A1Sustain","etc.

Comma text from VST 2= "A2Freqency","A2Resonance","A2Release","A2Sustain","etc.

Bigger picture, a script that could easily insert, modify or remove any character(s),single charracter, multiple character, sequentially, alphabetically etc within a string or comma text without it needing to be based on total index location or existing character values I could see as being quite useful in other applications.

Actually, now I thing about it, it would be be dreamy if there were an inlet to plug the output name from a patch (ie: name of vst), plus the numerical id input and have these both combined with the parameter name, and then be able to split these elements for separate use at the destination. Heck, could even throw in a user input text for additional label associated with each comma text string value , but yea maybe lets not get too carried away.. ;)

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 10 Dec 2016, 12:57

You got it gurulogic!

I think this is actually quite do-able and not too much on my end to do.
I definitely understand wrapping your head around different concepts. I very much like to script to have control over the IO better and be able to add additional functions without tons of subpatches and rats-nest wiring.

I like helping others out a lot, even if it doesnt come exactly to total fruition I believe (or hope) it helps push and inspire others to be creative in their ideas. Definitely love to see people reach their ideal performances.

Well I have some time early this morning, I actually have the majority of this concept already implemented...I think I can get you something that will simplify things greatly. So I am assuming you are bussing a single control module to many VST? Let me know your setup again and I might be able to have some other concepts to help you.

-s
"Every act of creation is first an act of destruction." -Picasso

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 10 Dec 2016, 20:22

Yes, in the simplest way of saying it, I have one controller/interface item able to be mapped to (learn from) any VST parameter that is within one of several VST racks within a workspace, along with automatic update of parameter name label and VST name label..

The expanded concept is a master patch containing 8 controllers and a x/y pad for touch with up to 8 pages to switch through that can all be assigned to/learned from any of the VST parameters. Currently these pages are stored in preset manager but I have an idea for storing the necessary info in arrays to roll/page through which should make things a bit more flexible.Also there is one macro control for each page which can lock up to 8 parameters in relative position as well as invert per parameter... and also 8 modulation controllers with one way communication to the VST intended for external midi or internal modulator control.

For each rack grid, the VST's are dropped on a patch and IML is used to wire the VST to all of the necessary i/o (params array, params names array, audio i/o etc). Get array size is connected to the output of each VST and the data is fed to extract array modules (start pos/length for the input arrays to set each VST to automatically receive the correct values from the sum of the concat output arrays>

Each VST params and params names comma text is concat to a single master values array and names comma text, sent by bus to the master patch and once again concat with data's from other "racks". Then Array difference module is used to pick last changed VST parameter. Pressing learn on my control then captures the parameter name, index and well, hopefully the VST and rack name. If the parameters input array changes due to VST being reloaded or removed, then the stored parameter name is matched to the corresponding parameter name in the master params names list (which is same size as params value list) and the index for that parameter is adjusted accordingly. Also, all controllers are auto updated if parameter changes from VST when changing preset etc.

So far it works quite well if not a bit heavy on resources. I do have have some cpu saving measures in place for unmapped controllers/empty VST slots. One place I am stuck at the moment is now that I am not using a fixed size array for each VST, I am uncertain how to regain the auto learn of VST plugin names that I had working before. (it was easy to divide array size by number of sub patch containing VST to pick name) If I can connect VST name to params name comma text, this is one solution. Also, ideally I could learn the rack name or any other label I choose to apply such as name of external instrument that I am processing..

The only other place I would like to find a better solution (other than other general optimizations) is in dealing with the feedback loop caused by sending a VST's params to output bus, and then receiving the same params via input bus. This is causing me quite a bit of extra patching inside each VST sub patch (From extract array>has changed>wait 1 bloc>stop flow on output array) This works but would like to find a cleaner option that doesn't require so many modules.

I agree about it being nice to be able to help people, especially in the case of a software like Usine, it is pretty much IMO the most powerful tool available for designing custom performance setups but it can be a challenging to realize your goals in it. Numerous times I have spent many hours working on what I think is going to be the perfect solution for my needs then I hit a wall that I cannot work around and end up scrapping the project and looking for other solutions.. But I always come back to Usine when reminding myself again it is the best tool for the job. I think it is important that we do what we can to help others where we can which helps build the user base and community which in turn gives incentive for continued development of Usine, which in turn makes my favorite software even more powerful :)

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 10 Dec 2016, 22:38

"Also there is one macro control for each page which can lock up to 8 parameters in relative position as well as invert per parameter... and also 8 modulation controllers with one way communication to the VST intended for external midi or internal modulator control."

That's cool I am in the middle of doing the same thing as well.
I have a Randomizer Designer, as well as a MOD, but half way done with relative/inverse because I wanted to make some additional things.

still reading...just wanted to comment...lol

-s
"Every act of creation is first an act of destruction." -Picasso

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 10 Dec 2016, 22:40

"The only other place I would like to find a better solution (other than other general optimizations) is in dealing with the feedback loop caused by sending a VST's params to output bus, and then receiving the same params via input bus"

I am starting to do a feedback loop myself and think I have one working quite well, these are implemented in my most recent VST add-ons I have been working. I will look into this as well for you.

-s
"Every act of creation is first an act of destruction." -Picasso

sephult
Member
Posts: 1144
Contact:

Unread post by sephult » 10 Dec 2016, 22:47

"Numerous times I have spent many hours working on what I think is going to be the perfect solution for my needs then I hit a wall that I cannot work around and end up scrapping the project and looking for other solutions.. But I always come back to Usine when reminding myself again it is the best tool for the job. I think it is important that we do what we can to help others where we can which helps build the user base and community which in turn gives incentive for continued development of Usine, which in turn makes my favorite software even more powerful smile"

I couldn't have said it better gurulogic. I too am very much the same, a Usine addict, a love for the community, a love for the software and the team who amazingly puts this together. :D

I enjoy helping others reach their performance goals, I do not necessarily perform publicly, but I have an extreme passion for music, technology, and solution support. When helping others it's like being part of that performance in a way, especially when things become easier, expressive, and more adaptable. When I cannot perform myself, I would at least like to help others, and in many ways this community and Sensomusic team have helped me be a part of that. In great debt to all.

Thanks for the info about your implementation, I am starting to build up on it, I am a little scatterbrained and a super multi-tasker...lmao
I'll juggle something your way hopefully soon. Might not be complete, but maybe you could help me organize and get on track to what you are looking for.


-s
"Every act of creation is first an act of destruction." -Picasso

Post Reply

Who is online

Users browsing this forum: No registered users and 12 guests