Repository navigation
[WIP] Add basic support for sharing pedalboards via Patchstorage - #4
Closed
rreichenbach wants to merge 47 commits into
Closed
rreichenbach wants to merge 47 commits into
rreichenbach wants to merge 47 commits into
Conversation
Collaborator
|
Looking good! Note for later: we'll have to rebase to |
… on pedalboard load
…as retry Refactor into public entry + private worker (_handle_port_appeared). - Aggregated mode: connect new hw MIDI output to mod-midi-merger:in (defense-in-depth; connect_jack_ports tolerates EEXIST). - Separated mode: retry alias lookup up to 6 times with 0.5s delay when the alias is not ready yet. - No add_hw_port in aggregated mode; graph shows merged ports only.
In aggregated mode the mod-midi-merger JACK client already owns the connection of hot-plugged hardware MIDI outputs to mod-midi-merger:in (its port-registration callback plus a bounded reconcile burst), so the mod-ui fallback was a redundant third writer of the same edge. _handle_port_appeared now ignores new ports in aggregated mode, the original upstream behavior. The separated-mode alias-lookup retry is unchanged.
set_midi_devices_change_mode gave the combined "in;out" device symbol to remove_port_from_connections, which matches against single JACK port names. A combined symbol never matches, so nothing was removed from self.connections and nothing was disconnected in JACK. mod-host tears those JACK edges down itself in effects_aggregated_midi_enable (steps 1 and 2), so after a switch to aggregated mode self.connections held edges that no longer existed. connect() then short-circuits on its "already exists" guard: the user drags a cable, gets HTTP true, and no connection is ever made. Switching back to separated mode does not clear it, so the cable can never be created again in that session. Split the symbol first, as set_midi_devices_separated already does for the same data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…i-mode-switch Prune stale connection records when the MIDI mode changes
The kMidiUnlearnURI branch returned straight after sending midi_unmap to mod-host: it never popped the addressing, never reset bypassCC/midiCCs, and never broadcast. Only the browser that performed the unlearn knew the mapping was gone; every other client (pi-stomp's LCD, a second browser) kept showing it, and the stale pluginData was replayed to the next client to connect. Learn already broadcasts via the midi_mapped feedback path; unlearn now matches it with a -1:-1 midi_map. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Setting a MIDI-addressed control back to "None" reaches address() as actuator_uri="null", not kMidiUnlearnURI — the latter only fires while a learn is still pending and uncommitted. That path cleared bypassCC / midiCCs but never broadcast, so only the browser that made the change knew the mapping was gone. pi-stomp kept the binding on its LCD until the board was switched away and back. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Don't save trigger ports to pedalboards
Broadcast MIDI unlearn to all clients
File selectors always at top
Add an SFZ Builder, target architecture, and CI
…chooser page (currently Plugins or Pedalboards)
Co-authored-by: Cursor <cursoragent@cursor.com>
rreichenbach
force-pushed
the
feat/patchstorage-pedalboards
branch
from
October 29, 2026 18:07
79c5211 to
8efe396
Compare
Collaborator
Author
|
created this branch from the wrong root. Gonna create a new PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Basic support for sharing pedalboards.
Now, clicking the Patchstorage button redirects to an asset chooser page (Currently Plugins or Pedalboards).
Pedalboards found in the "Other Platforms" platform with a tag of "pistomp" will be shown. Eventually, we'll hopefully have a pi-Stomp platform. We have made the request. Then, we might need to qualify with a tag of "pedalboard".
Currently, you can filter the pedalboards, click on one to see its metadata and install it (download, then install). Eventually, we'd like to be able to upload from here to, but that requires that we authenticate (bearer token) with the users patchstorage creds, and collect the other fields (Description, version, license, etc.). We can probably auto extract the others (platform, tag(s), thumbnail, etc.)