-
Notifications
You must be signed in to change notification settings - Fork 78
Description
Currently, the use of mod-host and mod-ui is almost impossible as a stand-alone device due to the inability of creating pedalboards, namely plug-in switching via the web interface and the lack of automatic switching when changing plugins.
I’m trying to develop my own api/ws client for mod-ui that allows you to create a linear RACK/RIG-like pedalboard with auto-connection of plugins based on the slot system and information about hardware and plugin ports.
I can download plugins and automatically linearly connect them in mono/stereo modes, with some simple additional configuration. But I can’t achieve full compatibility with web ui. That is, I have to rely on the “optimistic client” and “make before brake” concepts.
It would not be bad if the mod server provided RACK/RIG mode along with pedalboard. This is already possible with the current API with the only difference - you need a slot-like automatic linear connection system. It would also be useful for the MOD DWARF project.
So far I have succeeded:
- Define hardware ports and plug-in ports, params
- Create a RIG with a given number of slots, the first and last slots are hardware, the rest are plugins
- Add, remove plugins in slots
- Automatically connect slots to the chain based on position in rig, the number and type of ports (one2one, many2many, one2many, many2one connection), with support for paired connection of stereo IO.
- Manage plugin params
- Receive feedback on changing plugin params
- Receive feedback on the change in the structure of the pedalboard (so that the changes in the pedalboard is determined by the client and not from outside)
What I plan to finish:
- Saving the rig state for recovery in case of restart or structure change via external interfaces as mod-ui
- Make before brake - when adding/replacing/removing plugins - with connecting its neighbors before detach without a noticeable click
- Add support for modi ports and midi plug-ins (possibly with the same logic I got for audio)
- Make possible a variable number of slots in the rig chain
- Make synchronization between multiple clients on the master-slave model to use multiple physical devices like esp32 or similar as separate cheap controllers.
Notice
In general there will be good to have this feature as a built-in part of MOD UI.
But if you are not plan to implement it, it would be great to have simple API/WS client (micropython compatible) that is able to be realtime synced with current web server state, can get and send state updates seamless between few slave clients (not between few UI clients only)