Commit Graph

158 Commits

Author SHA1 Message Date
yuquanjun 7909a4f882 chore: refresh git_user_fw_ver for 0.2.14 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 07:12:49 +08:00
yuquanjun 8a8c7ec377 release: bump firmware version to 0.2.14
Local-song mid-play fret/pick no longer Stop+Start (avoids AutoBand silent fail); soft-off power-on resets KEY_ID/PressFlag/StartFlag so pick starts at degree I.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 07:11:09 +08:00
yuquanjun 064fabf249 fix(power): reset performance state (KEY_ID_1629/PressFlag/StartFlag) on power-on after soft-off
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 07:06:20 +08:00
yuquanjun dc5b7f4391 fix(expert): local song no Stop+Start while playing (fret change / re-pick)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 07:05:04 +08:00
yuquanjun 1201d9f9d0 fix(ui): further darken top/bottom separator lines
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 20:06:47 +08:00
yuquanjun dd55181937 fix(ui): darken top/bottom separator lines
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 19:43:03 +08:00
yuquanjun 125eb00aa3 fix(power): prevent charge-boot long-press from auto power-off
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>
2026-09-16 15:10:34 +08:00
yuquanjun 65b0a84c4a chore: clean git_user_fw_ver id for 0.2.13
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 21:02:20 +08:00
yuquanjun 35d4cc28af chore: refresh git_user_fw_ver for 0.2.13 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 21:01:56 +08:00
yuquanjun 6fbeaa4881 release: bump firmware version to 0.2.13
Ship expert fretboard continue for local songs and tone resource pack 0915.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 21:01:30 +08:00
yuquanjun 5f41af27e7 fix(expert): 专业模式仅按指板即可续奏下一和弦,无需再拨片
App 连机专业模式下,起奏后按亮灯指板即可继续播放:
- 本地曲目(App 和弦曲目)/段落停止时:指板键投递 MSG_ID_BP_KEY 给主任务,
  走与「指板+拨片」完全相同的 Pick_Handle 起奏路径(扫描线程内直接
  Stop+Start 会无声,主任务上下文正常),Pick_Handle 内 Return_Light_buff
  通知 App 亮下一节
- 节奏库播放中:保持说明书行为,仅 Note_On 换和弦音 + Return_Light_buff
- 去掉 Last_Tm1926D_Key 去重:相邻两节可能是同一和弦键,松手再按必须能续奏
- 新增 Band_TrackPlayTick/Band_IsPlaying:8ms 周期跟踪 AutoBand PlayTick
  判定伴奏是否进行中
- 抽出 Expert_StartWithChord 公共起奏函数,拨片/指板共用
- tools/_test_expert_fret_restart.py: 指板续奏 RTT 回归测试

HIL 验证: pitch reg OK=41 FAIL=0; packs 9/9 PASS

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 19:13:10 +08:00
yuquanjun 2d9f234a7d chore: refresh git_user_fw_ver for 0.2.12 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 22:10:36 +08:00
yuquanjun 61caeb7407 release: bump firmware version to 0.2.12
Include autoclose 关闭 glyph fix and recent normal-pick / HIL / flash-tool work in the release tag.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 22:09:09 +08:00
yuquanjun eed22d4b8c fix(ui): add missing 闭 glyph for autoclose 关闭 label
Settings showed only 关 because GBK 闭 was absent from CHS font tables; append WenQuanYi bitmaps for all sizes and keep the patch helper.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 22:07:57 +08:00
yuquanjun c6be9fe88b chore: refresh git_user_fw_ver build id
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 21:49:37 +08:00
yuquanjun 8ac13ce6e9 tools: add MCU + ExtFlash ALL.res flash helper
Script flashes APP via J-Link then streams ALL.res over RTT flash all; include a minimal loadbin command file for APP-only updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 21:49:37 +08:00
yuquanjun cae4eb84a1 test: clearer BLE scan FAIL; RTT reset; longer UI ACK timeouts
Report missing Smart Guitar MIDI as an explicit FAIL instead of parse noise, reset target when opening RTT sessions, and give ui boot/charge more ACK time for LCD draws.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 21:49:37 +08:00
yuquanjun 4c6e2122ed fix: normal rhythm pick via piece; ACK UI before LCD; flash-busy power guard
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>
2026-09-14 21:49:16 +08:00
yuquanjun d06e44bcb3 fix: keep power key alive on hang; refuse play when tone pack missing
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>
2026-09-14 20:19:45 +08:00
yuquanjun f8aeb4fb7c release: 0.2.10 — tone pack 0914 (BIN3 after 2.bin), autoclose label 关闭
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 19:37:57 +08:00
yuquanjun 7fa2f5f1c4 release: bump firmware version to 0.2.9
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 16:27:04 +08:00
yuquanjun 6da7d4d627 test: stabilize HIL suites — inter-suite reset, async tm1617 inject, ACK-first
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 16:16:11 +08:00
yuquanjun eb1e5cbe84 fix: map Finger bass timbre to MIDI PC 33 per tone table
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 15:59:01 +08:00
yuquanjun 28970fddf0 chore: drop committed __pycache__ and ignore Python bytecode
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 15:05:49 +08:00
yuquanjun a495717883 test: unified K1 HIL harness + RTT inject hooks (tm1617/adc/bin2/sticky)
tools/k1_harness: one CLI over existing COM/BLE/RTT scripts covering
App SysEx 01-06, BLE smoke, TM1629/TM1617 key inject, 1/2/3.bin pack
checks with pick/outro regression, and UI nav (log status/TAP/DUMP).
Unified PASS/FAIL/SKIP/SENT markdown report to Doc/reports.

firmware hooks in app_log.c: 'tm1617 key N', 'adc key N on|off',
'tone bin2 [idx]', 'chord key N hold' (sticky inject survives physical
idle scan so normal-mode pick tests can hold a chord).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 15:05:17 +08:00
yuquanjun daee47a457 tools: add BLE/RTT/pick test and flash helper scripts
- ble_log_pull.py: pull field logs over BLE (midi/uart transport)
- rtt_flash_log_dump.py / log_decode.py: dump and decode RAM/flash logs via J-Link RTT
- _test_normal_pick.py: semi-automated normal-mode pick regression (RTT + physical pad)
- _ble_channel_matrix.py / _probe_ble_rtt.py / _usb_midi_sysex_probe.py: GATT/BLE/USB-MIDI diagnostics
- build_artist_kit.py: package artist tone kit
- flash_boot_app_v024.py: flash boot+app images

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 14:58:11 +08:00
yuquanjun f841d9e7b1 Normal mode: pick sounds held chord; release stops accompaniment.
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>
2026-09-14 12:55:22 +08:00
yuquanjun 713a768733 Disable fretboard chord/stop side-effects in universal mode.
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>
2026-09-14 12:36:39 +08:00
yuquanjun 24261942d8 Map universal section-4 to Postamble outro and share AutoBand_StartOutro with ADC.
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>
2026-09-14 12:24:35 +08:00
yuquanjun 1cf6562236 Add bass/chord register mapping with RTT inject and bin1/3 probes.
Intercept AutoBand MIDI by channel (bass ch8, drum ch9), add chord-key RTT cmds, and ship scripts to verify 1.bin/3.bin pitch rules on device.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 21:21:11 +08:00
yuquanjun 91b270d856 Revert "Lower accompaniment by one octave for #IV and V-VII chords."
This reverts commit 439ccf439d.
2026-09-11 14:59:23 +08:00
yuquanjun 439ccf439d Lower accompaniment by one octave for #IV and V-VII chords.
AutoBand ignores input octave, so shift engine MIDI output by -12 for those chords (except drums) to keep the range from low #IV up to natural IV.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 22:08:09 +08:00
yuquanjun 2d62e1e41a Stop drawing status volume bar on mixer page to avoid erasing the back button.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 19:29:47 +08:00
yuquanjun 4aad989263 Reapply master volume at boot/mode-entry/play-start and sync volume bar on settings hub.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:58:24 +08:00
yuquanjun 295a2a6fa3 Fix song-name trailing ghost by clearing the full text row before redraw.
When switching from a longer title to a shorter one, the old gradient-only clear left uncovered glyph fragments outside the pill bounds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 10:46:11 +08:00
yuquanjun b65b762d92 Refresh git_user_fw_ver.h after 0.2.8 release rebuild.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 07:03:20 +08:00
yuquanjun 30c4ea9c0d Refresh git_user_fw_ver.h for 0.2.8 release commit.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 07:02:22 +08:00
yuquanjun 05ccf28a4b Release 0.2.8: harden BLE SysEx receive path for app stability.
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>
2026-09-10 07:02:22 +08:00
yuquanjun 59c11f3f93 Fix BT recv stack smash and harden pitch/chord SysEx paths.
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>
2026-09-10 06:51:32 +08:00
yuquanjun 24ffe87527 Refresh bottom nav with 0909 enlarged icons and aligned label art.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 20:24:39 +08:00
yuquanjun 5bb403cd11 Add artist self-serve tone pack tool for USB IAP updates of 1/2/3.bin.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:37:29 +08:00
yuquanjun a818065c2e Fix mixer knob outline at max volume by seating the knob on the track capsule ends.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:33:03 +08:00
yuquanjun c1b32c0351 Refresh git_user_fw_ver.h for 0.2.7 release commit.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 12:18:00 +08:00
yuquanjun bb6d9ae7f9 Release 0.2.7: refresh rhythm 1.bin pack with fixed BIN3 layout checks.
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>
2026-09-09 12:17:42 +08:00
yuquanjun 99f7ed3e5a Pin BIN3 to fixed 0xA71AC and reject packs where 2.bin drift shifts it.
Variable 2.bin length previously moved 3.bin; firmware still read 0xA71AC and saw zeros. Pack now pads to the fixed slot and publish verifies DAB headers before shipping ALL.res.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 11:47:15 +08:00
yuquanjun cd21e4e45e Always enable loop on universal-mode pick so accompaniment can play.
Without SetLoopMode the piece path often produced no audible output when the chord pad was not held.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 11:35:14 +08:00
yuquanjun 92e5e32de3 Diagnose BIN3 LoadPreset failures and add flash bin3 tooling.
Log Flash magic on load failure, expose RTT flash bin3, and document the 0903 pack offset for the universal bank.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 11:32:40 +08:00
yuquanjun 015417dc3d Enlarge bottom nav touch zones to full-width 60x55 cells under the section buttons.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 11:01:40 +08:00
yuquanjun 6f2f7b6b75 Remove mode-select top stripe cover that left an extra line.
The ROW_BG full-width fill over the universal row top corners showed as a second separator under the status bar; source art no longer needs it.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 08:00:06 +08:00
yuquanjun ba110565f1 Use chevron asset for factory-reset row instead of solid triangle.
Matches 0902-07: restore is a drill-in row with thin > (ICON_CHEVRON), not the prev/next filled triangle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 07:50:08 +08:00