Commit Graph

14 Commits

Author SHA1 Message Date
david c0af9c6b6f feat: add pipeline diagnostic script, viz/midi log recipes, reset-mcu recipe
Validate and Test / validate-patches (push) Failing after 13s
- scripts/diagnostics/test-pipeline.py: full end-to-end test
- just diag-full: run pipeline diagnostic
- just viz-log/midi-log: watch service logs live
- just viz-stats/midi-stats: check counters
- just reset-mcu: reset MCU + reopen serial via router RPC
- just test-chord: send test MIDI chord locally
- just fix-perms: restore +x bits on all scripts
2026-06-24 15:02:39 -07:00
david 2968d57e1d fix: add Bridge.run() to loop() so MCU processes incoming RPCs
Validate and Test / validate-patches (push) Failing after 13s
Without Bridge.run() in loop(), the MCU never reads incoming
draw_frame requests from the router. First frame goes through
during setup handshake, but subsequent frames fill the router's
send buffer and the viz stalls.
2026-06-24 04:57:14 -07:00
david 94614bf774 fix: git stash before deploy, no pop (discard board changes)
Validate and Test / validate-patches (push) Failing after 12s
- just deploy: stash local board changes before git pull
- install.sh: configure git alias 'pull-clean' for manual use
- Board-side changes from test edits are discarded on deploy
2026-06-24 04:27:21 -07:00
david 2ac964907c refactor: rename sketch to sketch.ino, add flash-sketch recipe
Validate and Test / validate-patches (push) Failing after 12s
- Permanent rename: led-matrix-bridge.ino → sketch.ino (Arduino CLI convention)
- Add just flash-sketch recipe for compiling/flashing MCU via board's arduino-cli
- Run via post-merge hooks for auto-deploy
2026-06-24 04:24:32 -07:00
david 0382450f8b feat: add git hooks for pre-push validation and post-merge auto-deploy
Validate and Test / validate-patches (push) Failing after 12s
- .githooks/pre-push: validate Pd patches via python3 pd-validator
- .githooks/post-merge: auto-restart services when systemd/scripts change
- install.sh: configure core.hooksPath at install time
- justfile deploy: set hooksPath after git pull
2026-06-24 03:19:51 -07:00
david 290862a74e feat: add skills, version pinning, CI/CD, and generated-file headers
Validate and Test / validate-patches (push) Failing after 2m7s
- Create skills: rego-pd-validator, usb-gadget-configfs, led-matrix-msgpack-rpc
- Update pd-audio-synthesis skill with Uno Q specifics
- Add Pd version check (min 0.54.0) to start-synth.sh
- Add DO NOT EDIT headers to generated pd patches
- Add Gitea Actions CI workflow for patch validation
- Add ConditionPathExists guards to legacy systemd services
- Add 'just ci' recipe for CI
2026-06-24 03:16:28 -07:00
david 1876d8cd42 synth-diagnostic: just run tests, no service management
- run-tests.sh: no systemctl start/stop, just runs test-unit.py
- synth-diagnostic.service: removed Before=, keeps After=prometheus-exporter
  (no deadlock risk since run-tests.sh doesn't start services)
- justfile deploy: stop pipeline -> restart prometheus -> start
  synth-diagnostic -> restart pipeline

Pipeline starts independently at boot (no After=synth-diagnostic).
Diagnostic provides visibility at boot without blocking startup.
2026-06-24 02:59:14 -07:00
david 8e82286287 synth-diagnostic starts pipeline services, cleans up on failure
- run-tests.sh: starts pipeline services, runs test-unit.py,
  stops services on failure, leaves running on success
- synth-diagnostic is the single gate for pipeline startup
- deploy: stop pipeline → restart prometheus → start synth-diagnostic
  (synth-diagnostic starts pipeline on success)
2026-06-24 02:49:58 -07:00
david b445c272fb add boot-time synth-diagnostic.service
- synth-diagnostic.service: runs test-unit.py before pipeline services
- Type=oneshot, After=prometheus-exporter, Before=pipeline services
- Pipeline services: After=synth-diagnostic
- deploy: restart prometheus-exporter → start synth-diagnostic → restart pipeline
- install.sh: includes synth-diagnostic in SERVICES array
2026-06-24 02:48:40 -07:00
david 163ad4145b add prometheus exporter + test suite
- prometheus-exporter.py: stdlib-only HTTP metrics on :9090/metrics
- Exposes: ALSA status, hw_ptr rate, service health, mixer controls
- MIDI counters: notes_on, notes_off, errors
- test-unit.py: 10-test suite covering full MIDI→Pd→Audio pipeline
- test-tone.pd, test-midi-log.pd: minimal debug patches
- systemd service for exporter
- install.sh/deploy updated to include exporter
2026-06-24 02:22:05 -07:00
david 242c74236f systemd services: midi-bridge, pd-synth-onboard, led-matrix-viz + install script 2026-06-24 01:36:36 -07:00
david 7e8848d23c justfile: git-based deploy, streamlined recipes 2026-06-23 21:29:16 -07:00
david d239d58c44 onboard audio: JMISC HPH wiring, UCM fix, update scripts for git deploy 2026-06-23 21:25:51 -07:00
david 8cd796e3dd Initial commit: Arduino Uno Q USB Audio Synth project
- USB gadget (UAC1 + MIDI) with boot persistence
- USB host mode with auto-detection
- Pure Data synth patch with ALSA + UDP netreceive MIDI input
- MIDI rawmidi-to-UDP bridge (midi-bridge.py)
- LED matrix visualization (led-matrix-viz.py via arduino-router RPC)
- MCU sketch for LED matrix control (Arduino_RouterBridge + ArduinoGraphics)
- Conftest/OPA Rego policy validation suite for .pd files
- gen_synth_pd.py: programmatic .pd file generator
- System services: midi-bridge, led-matrix-viz, pd-synth-auto, usb-role-detect
- Justfile with deploy, enable, diagnostic recipes
- Diagnostic script (diag.sh)
2026-06-22 22:46:36 -07:00