Files
L'électron rare 527c3a3b9d
CI / sanity (push) Successful in 14s
CI / host-tests (push) Successful in 25s
CI / box3-build (push) Failing after 11s
CI / build (push) Successful in 4m11s
fix: SD buffer ownership, input switch, MIDI rate
Backlog from the code review, all verified building:

- SD ownership barrier (Loop_SetSdBusy): while sd_module reads or
  writes the track buffers from core 0, the audio path performs no
  writes to them and MIDI/touch cannot re-arm recording or erasing.
  A MIDI track select during a save used to produce a WAV mixing
  old and new audio; a pending erase corrupted the saved take.
- MTLooper_ToggleSource now actually drives the ES8388
  (ES8388_SetInputCh 0 = mic on LIN1/RIN1, 1 = line on LIN2/RIN2).
  Only the AC101 path was wired, so on this board the UI claimed
  'Microphone' while the input stayed on line.
- loop() prescalers were off by SAMPLE_BUFFER_SIZE: one iteration
  is a block, not a sample. loop_1Hz fired every 48 s; MIDI was
  processed every ~70 ms, long enough to overflow the 256 byte
  serial RX buffer on dense controller sweeps. MIDI is now polled
  once per block.
- Box-3 tempo button wrapped to 60 BPM, below the looper floor
  (~85 BPM for an 11.3 s max loop), so it looked broken. Wraps to
  90 now.
- link RX byte counter on the console (wiring diagnostics).
- CI runs the host protocol tests (C + pytest) and builds the
  Box-3 firmware in the espressif/idf:v5.4 container.
2026-08-06 01:34:53 +02:00
..