robbielyman / seamstress

seamstress is an art engine
GNU General Public License v3.0
123 stars 12 forks source link

MIDI learn + pmap's #47

Closed dndrks closed 1 year ago

dndrks commented 1 year ago

summary

this PR introduces keyboard-driven MIDI learn functionality, with supplementary .pmap generation and automatic reading at script load :)

lingering q's

re: the .pmap workflow, i'm curious if it'd be useful to centralize all script-generated seamstress data under <path.seamstress>/data/<seamstress.state.name>/? on the one hand, i kinda dig all the script-generated data tracing along the invocation, but this seems more of a convenience for someone using a script -- as a script author, i might want to play from my git folder and not worry about keeping it data-free.

totally open to any ideas you have @ryleelyman !

details

MIDI mapping

enter mapping UI: while running a script, focus the params screen and press SHIFT + M to toggle between the params UI and the mapping UI:

image

toggle MIDI learn: press ENTER on any unassigned entry (any with a -) to toggle MIDI learn:

image

wiggle control: once seamstress receives a MIDI CC on any channel / number / device, it will register the assignment and save a .pmap file in the seamstress.state.path:

image

delete an assignment: in mapping mode, any learned parameter can be cleared with SHIFT + BACKSPACE

.pmap's

write whenever a mapping is established, a .pmap file is automatically generated with the corresponding data. the .pmap's filename is built as: seamstress.state.path .. "/" .. seamstress.state.name .. ".pmap". to write on-demand: pmap.write()

read whenever a .pmap file with the above pattern is detected in seamstress.state.path .. "/" .. seamstress.state.name, it will be loaded at script launch. to read on-demand: pmap.read()

robbielyman commented 1 year ago

gosh, this is so good. so good! thank you so much!

I think one thing to make sure of, whichever route we go, is that we make sure to create the data directory if it doesn't exist.

I think I lean towards the path.seamstress route: it seems more friendly towards novice users sharing their scripts without having to potentially .gitignore the data folder or commit it manually? on the other hand, I doubt anybody anywhere is telling a novice git user to do git add . on the command line, so maybe this worry is unfounded?

dndrks commented 1 year ago

yes yes yes, totally agree re: taking the path.seamstress route. pushed changes, ready for final review! tytyty @ryleelyman !