Processing Midi Control Watchers and Sends
-
Hello,
I am in the midst of revising a project in which my goal is to be able to snapshot the state of my midi controllers (200+ parameters X 4 tracks = 800+).
The project is for an improvised audio reactive performance group in which I manipulate 4 tracks of video with various filters and transforms with parameters that can be driven by audio. It works beautifully but lacks the ability to have any stored parameters so I am working from scratch each time. I am unable to store a snapshot currently as all of the midi is being processed in nestled User Actors.
My plan, currently, is to move all of the midi out into the top level scene and connect it back into the user comps which = hundreds of user inputs/outputs. In addition to being able to restore the settings with a sanpshot, I will need to send these values back to the controller to update the values and displays on the controller (BCR2000 + others).I am wondering about the processing overhead of the midi watcher actors and midi send actors. With the four tracks of video I am looking at 800+ control watchers. I guess I have always been using that many watchers embedded in user actors, but I am curious what the overhead on these actors are.
In addition, if anyone has any tips as to how I might optimize this (IE would it be better practice to direct connect everything using user input/outputs, or use Set and Get Global Values actor to transmit the values), I would be grateful.
Best, Justin -
So a couple of quick tests revealed that the global set and get don't seem to effect processing, especially when minimizing the actor so the GUI does not have to update the numbers on screen. It seems that it would be a quick way to get values from midi controllers in the top level into various user actors without spaghetti.
Now it is down to methodology for setups - whether I would like to build this as a scene-by-scene thing with one or two snapshots per scene (not using global values), or if I would like to have it all in one scene using global values and a whole pile of snapshots.
I think I'm leaning towards the scene by scene method as it's more verbose. Time to make some noodles :-) I'll post some insane captures when I get things running. -
Be careful naming your Set and Get Global Values actors between Scenes. If they have the same names in all your Scenes you might run into problems (unless you connect an Enter Scene Trigger to a Recall Snapshot actor and ignore initializing values at anything). Just be careful that you don't overwrite data that you meant to keep when you transition between Scenes.
Another way to avoid this pitfall is to tie the names of the Set and Get Global Values actors to the Scene number that they're in, ensuring that they're always unique and never conflict.
Simple Concept Part 1/2
Simple Concept Part 2/2
Here is the simple line that I wrote inside the Text Formatter that make is add "Global #s Scene " and add the Scene Number onto the end, creating a unique name for each Scene's Get/Set Global Values actors:
You can also use Broadcaster and Listener actors so that you don't need to physically connect the Text Formatter actor (which makes the unique name for the Set/Get Global Values actors in the Scene) to every instance of a Get Global Values actor in each Scene (as some/many will be inside User Actors/Macros).
Here is an example >>>ISADORA PATCH<<< as well.
Best wishes,
Woland
-
Thanks @Woland ! This is very helpful. Using the scene number actor as an index for the Global Values name will make this work much easier. I was just beginning to put together a monster patch with 200+ values going into it. It offends my sense of using "nestling" to keep the top level simple. Especially, so, when also sending the snapshot values back to the controller on the scene change to update the values there. I will reframe my working process to incorporate this.
-
@jtsteph said:
Thanks @Woland ! This is very helpful. Using the scene number actor as an index for the Global Values name will make this work much easier. I was just beginning to put together a monster patch with 200+ values going into it. It offends my sense of using "nestling" to keep the top level simple. Especially, so, when also sending the snapshot values back to the controller on the scene change to update the values there. I will reframe my working process to incorporate this.
I'd love to see an example Patch of what you're working on once you've finished (if you are comfortable sharing).
We'd love it if you could tag us when and if you share any photos or videos on social media so that we can share them with our followers too. We're always excited to see what our users around the world create with Isadora and love to celebrate our community!
Facebook, Twitter: @troikatronix
Instagram: @troikatronix_isadoraAlso feel free to join the Isadora User Group on Facebook (if you haven't already).
Best wishes,
Woland
-
I will do. Always happy to share. I just put a gallery up from the show we did at Sound Symposium. I will tag you on it now.
-
@jtsteph said:
I will do. Always happy to share. I just put a gallery up from the show we did at Sound Symposium. I will tag you on it now.
Can't wait to see!