Stop all sound, show UI0902 LOWBAT_TIP fullscreen, then soft-off after 10s. Skip while charging; speed up ADC sampling near empty. Pack new tip bitmap into ExtFlash UI0902 map.
Co-authored-by: Cursor <cursoragent@cursor.com>
Disable LOOP_LIGHT rhythm chasing in free mode so LEDs stay solid green instead of moving with the beat.
Co-authored-by: Cursor <cursoragent@cursor.com>
Free-mode even-beat release stop; keep fret KEY_ID during wind-down so register octave does not jump up before stop. Also includes universal outro all-green LED and expert local-song continue after section+fret.
Co-authored-by: Cursor <cursoragent@cursor.com>
In normal mode, releasing the fretboard now finishes the current beat-pair (beat 1→end of 2, beat 3→end of 4) instead of cutting immediately.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep fretboard LEDs all green during outro, and for expert local songs treat section-key + fret changes as continuous chord updates like rhythm mode (no mid-session Stop).
Co-authored-by: Cursor <cursoragent@cursor.com>
Include Type-C charging battery icon and BLE timbre/style UI sync fix already on develop; add RTT midi/string inject helpers for mic pitch calibration. Tone pack remains 0916_bank.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop accompaniment on mode/song switch; restore all-green LEDs when leaving universal; default pick/preamble to current-key I chord after soft boot.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply Accomp_ApplyDefaultIChord before SyncStart on preamble, on soft power-on/mode enter/nav switch, and on pick fallback. Reset TM1629 key edge state so soft-off residual key_last cannot stick a prior fret.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Stop_AutoBand (engine stop + all-channel AllNotesOff) when changing nav mode, reloading tone presets, switching songs/progressions, or returning to mode select. Also fix AllNotesOff to address all 16 MIDI channels.
Co-authored-by: Cursor <cursoragent@cursor.com>
Consume the same power-key hold used for soft-off charge boot before setting powon, and ignore stale POWOFF_CHARG after power-on so mode select stays on screen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Require fretboard in normal mode per manual; use SetPiecePlayMode for 1.bin. ACK ui boot/charge before full-screen draw, add RTT flash all and tone pick free, and skip soft-off while ExtFlash transfer is busy.
Co-authored-by: Cursor <cursoragent@cursor.com>
TMR7 high-prio watchdog and fault-loop emergency cut/reset so soft-off still works if the main loop or AutoBand ISR dies; skip start when preset load fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
Require left-hand pad held (PressFlag) before pick starts; skip the default I-chord fallback in normal mode. Release (key 0) stops AutoBand immediately instead of looping.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore TM1629 keys 0-21 in universal so pad no longer changes KEY_ID or arms OutTime_Stop; keep tap-tempo and stop. Clear stale KEY_ID/PressFlag when entering universal tab.
Co-authored-by: Cursor <cursoragent@cursor.com>
Exit piece mode before Postamble so universal chord loops can switch into the style outro stage once 3.bin has PostambleMIDI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bump firmware version after BT recv stack/log fixes and pitch/chord bounds so Phoenix Atelier map/LED traffic no longer stack-smashes the MCU.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enlarge BT recv stack, move large handlers/log buffers off the stack, clamp key indexes, and yield in W25Q busy-wait so BLE protocol tests stay stable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update pack/publish to enforce 41KB song limit, verify 1/2/3.bin at fixed addresses, and emit .res aliases for the tone and ALL extflash images.
Co-authored-by: Cursor <cursoragent@cursor.com>
Point system-settings rows at the correct Flash icons, keep Main/UI alive across soft-off, and expose git build id for 01 0C with matching BLE tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
TaskBTRecvThread previously started only after mode select, so GATT SysEx never reached the parser until then; verified BLE-MIDI 01 01 now replies with GATT notify.
Co-authored-by: Cursor <cursoragent@cursor.com>
Font table had wrongly mapped GBK 议 (D2E9) as 择; remap to D4F1 and regenerate the MiSans glyph so 弦音色选择/歌曲选择 render fully.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse the unused Language slot as BluetoothSW, sync top-bar icon from the saved switch, and keep factory restore defaulting Bluetooth to on.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync faders on shutdown and re-apply LoadConfig after DSP boot so
saved mixer levels and master pot stay consistent after power-off.
Co-authored-by: Cursor <cursoragent@cursor.com>