[LOGGED] Control Panel Data Routing Using Address System
-
Overview
Implement a new system for routing data between actors and control panel items using an address-based approach, similar to the recently implemented SHOW/HIDE control functionality. This would complement the existing CTL# system while providing flexible and programmatic control panel data routing.
Current Control Panel Data Routing
- Users manually assign CTL# values to inputs/outputs of actors to connect with control panels
- In complex patches (especially those using many nestled User Actors or state changes like controlling layer or channel based media mixing), assigning and managing CTL# assignments becomes challenging
- The current system makes it complex to implement dynamic routing or state-based control panel configurations
Proposed Solution
Introduce two new actors that leverage the existing controller address system:
- Send Controller Data
- Sends data to control panel items using an address-based system
- Uses the same addressing syntax as SHOW/HIDE controls
- Allows for programmatic assignment of data routes
- Receive Controller Data
- Receives data from control panel items using the same addressing system
- Enables dynamic routing of control panel data to different parts of the patch
Key Benefits
- Programmatic Control
- Enable dynamic assignment of control panel connections
- Allow for programmatic state change and lookup table-based routing systems
- Flexible State Management
- Enable the same controls to serve different functions based on patch state
- Facilitate easier management of multi-layer/multi-track systems
Technical Considerations
- The system would maintain compatibility with the existing CTL# functionality
- Implementation would leverage the established osc-like show/hide controller address syntax
- Support for wildcards and pattern matching in addresses
Impact
This feature could significantly improve workflow for:
- Complex performance systems
- Multi-layer video setups
- Installations requiring dynamic control routing
- Projects using extensive nestled User Actor networks
- Systems requiring monitoring of multiple parameter sets using the same control panels
Compatibility
- Maintains backward compatibility with existing CTL# system
- Builds upon familiar OSC-style addressing already implemented in SHOW/HIDE controls
-
Thank you for the comprehensive write-up, as you might have gathered the current/new addressing is the first step towards a system much like this. We have exciting plans for this and intend to base it somewhat on osc.
For now that's probably all I should say ;)
-
@dusx, oh very cool. This sounds amazing. Working with actors using text addressing could open all kinds of possibilities!
-
@dusx As I work through learning more about Python development, I have learned about using a "message bus" to send things back and forth from modules.
I'm making a modular Python project for some housekeeping here and have made some stateless utility modules to do things like generate xxhash values, read csv files, update SQlite records etc. I learned about working with these modules using a "message bus" through Python pubsub. It's super cool as you can make things that don't need to be integrated into everything else, you can just publish messages to a topic in one module and then subscribe to the topic in another to get the operation return values. Mind blown.
This made me think about the Isadora Control Panels and our conversation about using a text-base addressing system. Something flexible like Python pubsub would be amazing to send and receive parameter values to the Control Panels. It might also be a useful flexible alternate concept to send things around an Isadora project alongside globals and broadcast/listener networks in a programmatic way.
-
@jtsteph said:
@dusx As I work through learning more about Python development, I have learned about using a "message bus" to send things back and forth from modules. I'm making a modular Python project for some housekeeping here and have made some stateless utility modules to do things like generate xxhash values, read csv files, update SQlite records etc. I learned about working with these modules using a "message bus" through Python pubsub. It's super cool as you can make things that don't need to be integrated into everything else, you can just publish messages to a topic in one module and then subscribe to the topic in another to get the operation return values. Mind blown.
If you ever end up documenting your discoveries online in the form of a tutorial or their results in the form of a showcase, let us know and we'll happily signal-boost it on our socials :)
@jtsteph said:
This made me think about the Isadora Control Panels and our conversation about using a text-base addressing system. Something flexible like Python pubsub would be amazing to send and receive parameter values to the Control Panels. It might also be a useful flexible alternate concept to send things around an Isadora project alongside globals and broadcast/listener networks in a programmatic way.
Yes, I'm very much looking forward to the implementation of more programmatic control of various aspects of the program. Isadora is already so flexible, but once more programmatic control is possible there will be even more possibilities
-
@woland said:
If you ever end up documenting your discoveries online in the form of a tutorial or their results in the form of a showcase, let us know and we'll happily signal-boost it on our socials :)
I am afraid that the python work is exciting to me but a bit on the boring side:
I am migrating 20 years worth of studio archives on LTO5 and HDD. I had been using Tolis BRU for the LTO archives which is now, of course, out of business. I've upgraded to LTO8 and don't ever want use a proprietary system again so I moving to completely open standards for the tape archives - Python, Linux, CSV, SQLite and GNU PAX TAR. (LTFS has show stopping limitations for me)
I am finding it a really rewarding project - I'm getting a better understanding of modular multi-layer development in python and have really been excited about what you can accomplish with Github Copilot. It's a bit buggy, but it is so much better than copy/paste/repeat from an LLM. You can really refine the context, have it asses your modules and codebase when building and refactoring etc. Up to this point, I've spent most of my time planning, building GUI drafts and developing the architecture to make things super clear for me and for co-pilot.
The crossover with Isadora is learning more about python and about programming concepts in general. I have done lots of bits of Javascript for AfterEffects/Isadora and Python for Resolve and Blender on my own and using Claude and GPT. I can't wait to use VS Code and Copilot to continue that work - there is so much less back and forth when the context is clarified. I am also excited to work with the Pythoner actor, too.