-
Notifications
You must be signed in to change notification settings - Fork 0
Description
At the moment, there’s not really an abstraction available to allow the user to make their own dashboard or combination of macros to make their own workflow. Every call to ‘create macro’ is more or less at “compile time”. Not literally, more like initialization time. This initialization runs on the server and clients since it’s running isomorphically in the springboard feature modules. Each feature module are currently POCs of feature implementations, but there are shortcomings due to the hardcoded nature. The features currently don’t scale for user customization.
The task here is to design a more data-driven way for macros to be handled. When the config for macros change, all macros in the app should rehydrate based on the data changes. I think they are generally stateless besides editing form state, so I think the hydration is feasible.
We should support the user arbitrarily wanting to assign midi controls to inputs and outputs. For example, the user may want to assign a given midi input, lock in the midi number range to 50-100 (meaning 0=50 and 127=100), and then select a midi output for the control change output as well. So this workflow block would be a tuple of midi_control_change_input and midi_control_change_output macros. The user should arbitrarily be able to add more of these and configure them.
Check out the packages at ‘packages/jamtools/core’ and ‘packages/jamtools/features’ for source and examples. Specifically, check out the inputs accepted by each individual macro type in https://github.com/jamtools/jamtools/tree/main/packages/jamtools/core/modules/macro_module/macro_handlers
@claude You are an expert on typescript best practices and scalable frameworks. Please make a comprehensive plan of exactly how this can be implemented.