Add tulip.amy_midi_thru() — MIDI thru on hardware (amy #738)#1016
Add tulip.amy_midi_thru() — MIDI thru on hardware (amy #738)#1016bwhitman wants to merge 1 commit into
Conversation
tulip.amy_midi_thru(True/False) sets amy_config.midi_thru, which makes AMY echo every incoming MIDI byte straight to MIDI out (in addition to processing it normally). Off by default. Hardware targets only (guarded out of the web build, alongside external_midi_sync). Bumps the amy submodule to shorepine/amy#739 (claude/midi-thru) and refreshes the vendored amy refdocs snapshot to match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
🔌 AMYboard PR previewEditor + flasher: https://amyboard-pr-1016.vercel.app/editor/ This preview bundles this PR's firmware — its flasher only flashes this build (not the release). Rebuilt on every push; removed when the PR closes. The hardware CI has been kicked off and should return within a few minutes, stand by! |
🌷 Tulip Web PR previewTulip Web: https://tulip-pr-1016.vercel.app/run/ Flash a Tulip to this build: on-device run Rebuilt on every push; removed when the PR closes. |
🎛️ HW CI (physical bench)AMYboard (USB-MIDI + AMY Tulip (TULIP4_R11; serial-REPL audio + WiFi screenshot): ✅ PASS — flashed this PR’s firmware; all checks matched the references. ⬇️ Artifacts: recordings · screenshot · serial logs · run logs Self-hosted bench. Audio spectral-compared to |
Companion to shorepine/amy#739 (closes amy issue #738).
What
Adds
tulip.amy_midi_thru(True/False). When on, AMY echoes every incoming MIDI byte straight to MIDI out, in addition to processing it normally. Off by default.How
amy_config.midi_thruflag and does the byte-by-byte forwarding insideconvert_midi_bytes_to_messages()(see amy#739).tulip.amy_midi_thru()just setsamy_global.config.midi_thru, mirroring the existingtulip.external_midi_sync()binding. It lives in the#ifndef __EMSCRIPTEN__block, so it's a hardware-targets-only control (Tulip Web / AMYboard Web are intentionally left out for now).Submodule
Bumps
amytoclaude/midi-thru(28ed5ae, the amy#739 branch) so this PR is testable. Before merge tomain, the amy PR must merge first and the pin be moved to that merged commit (per the AMY submodule policy). The vendoredtulip/server/refdocs/amy/snapshot was refreshed to match the new pin.Test
tulip/macos/build.sh— builds & links cleanly with the new binding.tulip/amyboard(ESP32-S3)idf.py build— firmware compiles (36% partition free).make test— all 94 tests pass (midi_thru off by default; no change to existing behavior).Docs: new "MIDI Thru" section in
docs/tulip_api.md.