7 Commits

Author SHA1 Message Date
david eff3c45849 Fix onboard audio: use amixer instead of broken alsaucm for DSP routing
Validate and Test / validate-patches (push) Failing after 13s
alsaucm set _verb HiFi runs without error but doesn't actually apply
mixer controls on this board. Use direct amixer cset commands instead.
- RX_MACRO RX0/RX1 MUX = AIF1_PB
- RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia1 = 1
- RX INT0_1/INT1_1 INTERP = MIX1
- RX INT0_1/INT1_1 MIX1 INP0 = RX0/RX1
2026-06-24 18:10:59 -07:00
david d4856804ff Fix onboard audio: apply ALSA UCM HiFi verb before Pd start
Validate and Test / validate-patches (push) Failing after 13s
- Add alsaucm -c hw:0 set _verb HiFi to start-synth.sh (onboard mode)
- Add UCM verb to install.sh
- Add UCM verb to justfile fix-ucm recipe
- Without this, the DSP audio routing is not configured and no sound
  reaches the headphone output
2026-06-24 17:31:00 -07:00
david ce4022fa1c fix: use correct pd version flag and semver regex
Validate and Test / validate-patches (push) Failing after 1m41s
- pd expects -version (single dash), not --version
- Use strict \d+\.\d+\.\d+ regex to extract full semver
2026-06-24 03:17:52 -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 d239d58c44 onboard audio: JMISC HPH wiring, UCM fix, update scripts for git deploy 2026-06-23 21:25:51 -07:00
david dbd7c2cece auto-detect MIDI device, drop ALSA sequencer dependency, MPK Mini simulator
midi-bridge.py:
  - Auto-detect rawmidi device (gadget f_midi > env override > fallback)
  - Reconnect on ENODEV (device hotplug)
  - No longer needs MIDI_BRIDGE_DEV env var in common cases

start-synth.sh:
  - Remove all -alsamidi/-midiadddev flags (kernel lacks CONFIG_SND_SEQUENCER)
  - MIDI handled entirely by midi-bridge.service → UDP → netreceive
  - Host mode: same approach, no ALSA sequencer needed

mpk-mini-sim.pd:
  - New MPK Mini Mk II simulator (25 keys, 8 pads, 8 CC knobs)
  - Proper Pd #X obj format for all objects (bng, hsl, t, del, netsend, loadbang)
  - UDP output to board:8081, matching midi-bridge format

system: enable usb-gadget-audio.service at boot, load dwc3 module at boot
2026-06-22 23:10:38 -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