For example consider a square matrix wrapped around a cylinder with a circle matrix on the end.
If you just want this to be treated as one shape and render to that like a canvas its easy enough.
If you want to target these two panels with different patterns or use cases you have to write a multi-segment pattern. Or use multiple PBs and communicate between them via some external mechanism.
if you want to run the same pattern on both displays like scrolling text , the pattern needs tweaking. Even though text scrolling pattern would/could work fine on either display mapped by itself - just not with a map using “compound shapes”
I think a MUCH better LONG TERM approach is to simulate how multiple boards work today, kind of like setting up micro-services or virtualization or containers to handle different aspects of the overall layout. Maybe its not in the map or multiple maps as much as the ability virtualize a portion of the LEDs and map those to a pattern and run more than 1 pattern simultaneously.
For example.
In a pattern - have the ability to specify index start/stop as a parameter, not defined in the code, and to be clear the code should not even have To know about this constraint on which LEDs the pattern renders to by index) Then you can “target” the pixels that pattern renders to. Sort of like you can do with the serial expander config.
Would also want to be able to run more than 1 pattern at the same time targeting different sections of the overall mapped LEDs.
Then you can easily have an UX input/output text scrolling running on the Circle, with a few Digital pins, and then run any random flashing pattern on the Square matrix - as CONTROLLED by the pattern running the UX/ I/O Pins.
Several different concepts here, but ALL working together to make ‘ALL’ patterns ‘more’ “portable”.
Multiple pattern rendering could make it easier to re-use patterns together rather than always re-writing something new for multi-segment scenarios.
Ultimately the goal is to increase the ability to re-use an existing pattern in new ways rather than always needing to re-write a pattern to use it in a new way.
Conceptually - I dont really see this as multiple sandboxes running different patterns as much as i see as multiple threads. Ideally the separate patterns are running in the same global state, or have some IPC mechanism between them.
I know i can do that all with 1 pattern and after it’s done, i have exactly 1 ‘concrete’ pattern that works ‘correctly’ on this project and if i want another one it needs to all be coded up again…
RATHER THAN : just picking some random pattern from the library and defining the space it can render to, the square…in this example.
or i can run some random pattern from the library and loose the ‘customization’ for the project.
To me — either way is sub-optimal and there should be some middle ground so you dont have to re-write every pattern to work with something custom.
lots of different concepts there, but all similar in that — ‘everything’ does not belong in the pattern rendering code routines…