Commit Graph

234 Commits

Author SHA1 Message Date
yuquanjun 29507014f5 chore(release): bump firmware to 0.2.36
Tag the single amplifier init so the shipped version matches the string-tone fix.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 09:53:20 +08:00
yuquanjun df0fd0f6d0 fix(amp): init the amplifier once after the string clock is up
Bring up 12V and Dream together after the boot lights, then configure the amp a single time so the string tone stays intact and the unmute write is not lost.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 09:47:47 +08:00
yuquanjun 0e106e4da1 feat(amp): load prototype EQ when the amplifier starts
Write the captured AD85050 channel EQ into coefficient RAM before unmute so boot matches the prototype instead of the chip bypass defaults.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 08:13:45 +08:00
yuquanjun 58e8b3dbc7 fix(ui): step the battery percentage by 5 so it cannot cliff
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:15:03 +08:00
yuquanjun 3220602f89 fix(pwr): show the charge page, then blank it after 10s below 6.8V
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:15:03 +08:00
yuquanjun 8bf68e256d fix(pwr): shut down at 6.8V and light the charge page only above it
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 15:06:36 +08:00
yuquanjun cde5a80a3d feat(ui): match system-settings cards and type size to the hub
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 15:06:35 +08:00
yuquanjun 03062543e4 fix(ui): fill the charging battery to the live percentage
The charging glyph kept a fixed yellow bar. Clear that bar from the icon and paint the cavity from the current percent, in the same yellow as the bolt.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 14:19:36 +08:00
yuquanjun 6f19486b16 fix(boot): show the burn-mode title in white
The source picture painted the glyphs in the page background color, so the screen stayed black. Draw those strokes in white when the external image has no light pixels.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 13:11:17 +08:00
yuquanjun fa5aa85bee fix(usb): enter the bootloader after USB update confirm without key 4
Keep the NVM sector out of the application image and arm a backup register that survives reset, so confirm stays in flash mode even when round key 4 is not held.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 12:42:29 +08:00
yuquanjun 968f8ae1ec feat(ui): draw system settings with MiSans bitmaps
Match the requirement screen using the settings-hub method, and keep the glyphs 1-bit so the image still fits in application flash.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 12:42:11 +08:00
yuquanjun e6de959366 fix(pwr): keep the pack above 6.8V and unmute the amp after 12V is up
Show the real battery percent, shut down at 6.8V even while Type-C is connected, and leave the charge screen dark so it does not drain the pack. Initialize the amplifier only after the 12V rail has settled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 07:35:09 +08:00
yuquanjun 89a3e5f95f fix(pwr): reach mode select before boot LED show while charging
Bump firmware to 0.2.31. Skip the color LED sequence on USB power-on so a depleted pack can leave the logo screen and charge normally.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 21:04:51 +08:00
yuquanjun 1cc4d400ef fix(usb): show USB update and enter the loader after confirm
Bump firmware to 0.2.30. The 11px font now has the update glyphs, and the flashed boot image stays in USB programming when that mode is saved.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 20:33:26 +08:00
yuquanjun 4063bab4b5 fix(ui): align transpose and tempo controls with the 0924 mockup
Match the card box to the reference, put the value on the same center line as the arrow and plus-minus chips, and use MiSans for the 16px digits.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 11:16:20 +08:00
yuquanjun ea60c1fb62 feat(ui): apply 0924 layout with language and USB mode
Remove divider lines, add language and USB-update confirm pages, and store both in NVM so boot can enter IAP.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 07:39:32 +08:00
yuquanjun ad11f1128b chore: refresh git_user_fw_ver after auto-off activity fix
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 21:33:08 +08:00
yuquanjun 80faaa4f9f fix(pwr): treat all play/UI inputs as auto-off activity
Centralize idle-timer reset on touch/volume/tap/transpose in UI task, and on pick, fretboard, side keys, round keys, and string NoteOn. Pause auto power-off countdown while accompaniment is playing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 20:48:18 +08:00
yuquanjun 91b33a4515 fix(boot): end startup LED on green; reset idle timer on mixer touch
Boot color sequence last frame was cyan; use mode-select green instead.
Mixer fader drag returned before ResetAutoPowerCount, so sliding volume could still hit auto power-off.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 20:43:11 +08:00
yuquanjun a3898dc9ae chore: refresh git_user_fw_ver for 0.2.29 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 20:13:46 +08:00
yuquanjun 84b6e4f15a chore: bump firmware to 0.2.29 and refresh release pack metadata
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 20:12:56 +08:00
yuquanjun 67a5fe5d60 fix(band): revert soft-stop; ignore round/side keys on mode select
Restore hard AutoBandTop1_Stop and drop eaten-start/followup tick-gate.
Keep API stubs for callers. Block TM1617 round keys and reinforce side-key/BLE gates while InModeFlag is false.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 20:08:27 +08:00
yuquanjun 18394d0b9b fix(pick): block accompaniment until a play mode is entered
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 18:42:32 +08:00
yuquanjun 3eba48ece1 fix(auto): stop stacking xpose -12 on III/IV chords
G-major III was collapsing B3 onto B2 after register -12 plus transpose -12.
Keep single register drop for III/IV; stack xpose only from V upward.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 16:32:18 +08:00
yuquanjun f6d9a557c8 chore: refresh git_user_fw_ver for 0.2.28 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 08:12:41 +08:00
yuquanjun f116e17529 chore: bump firmware to 0.2.28 and refresh release pack metadata
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 08:12:26 +08:00
yuquanjun 4bfe3ca008 fix(free): preserve expert chord/transpose across mode switch
NavBar no longer forces I after stop; remember context before leave and prefer saved fret chord on no-fret pick.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 08:05:50 +08:00
yuquanjun 3c01dc8c28 fix(free): remember last fret chord in expert and free modes
Shared last-chord memory; no-fret pick in free mode plays that chord.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 07:59:56 +08:00
yuquanjun 9ae3f5ec5e fix(free): keep expert fret chord (e.g. VI) for no-fret pick
Do not force I on free pick; reuse last expert KEY_ID / remembered chord after mode switch.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 07:53:57 +08:00
yuquanjun a322ed369c fix(ram): pack Global.c statics to fit SRAM (was 8 bytes short)
Shrink even-beat stop tick to 32-bit and fold univ/expert/free flags into single bytes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 07:47:15 +08:00
yuquanjun e7c9cd91f1 feat(free): allow pick start without fretboard using expert-stop key
Normal-mode pick with no fret held applies the last expert stop transpose, starts on I, and arms even-beat stop if idle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 07:43:46 +08:00
yuquanjun 5c30baef89 feat(universal): pick starts with preamble then loops section 1
Exit piece for AutoBand Preamble, then enter piece RunVar0 with loop so the intro is not repeated.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 06:57:01 +08:00
yuquanjun 3a09db55ee fix(led): start boot light show with LCD logo
Init TM1629 before POWER_ON and run the color sequence during the logo dwell instead of after mode select.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 06:46:43 +08:00
yuquanjun 15a647d8b4 feat(led): match prototype boot light show Blue-Cyan-Red-Cyan
On POWER_ON, fret-side LEDs follow the sample-unit '开机彩灯' sequence instead of jumping straight to solid green.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 06:39:00 +08:00
yuquanjun 3c102a918f feat(ui): use 0923 status-bar Bluetooth on/off icons
Replace the old 11x17 glyph and gray slash with dedicated on 13x20 and off 19x20 assets from the 0923 pack.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 06:15:10 +08:00
yuquanjun 3b0f5479ba feat(amp): BLE SysEx R/W for AD85050 CH2 EQ RAM and I2C scan
Expose 0xA0-0xAE via 07 00/01 nibble-coded frames, add RAM helpers, and host scan/test scripts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 06:14:56 +08:00
yuquanjun c480e96a3f chore: refresh git_user_fw_ver for 0.2.22 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 08:39:49 +08:00
yuquanjun 96fd815ca9 fix(band): cut intro and endings in immediately
Normal and expert modes no longer wait for the next bar before preamble, interlude, outro, and ending. Universal mode ignores those keys. Bump firmware to 0.2.22.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 08:39:39 +08:00
yuquanjun 93e633472a fix(xpose): allow neck transpose in universal after pick hold-up
Universal TM1629 path dropped keys 0-21 before BP_Transpose. Route pick-hold neck keys to transpose, add RTT pick hold inject and a HIL script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 07:43:46 +08:00
yuquanjun 6d01d2cbb1 fix(mixer): ignore section keys and lock the grabbed fader
TM1617 keys injected fake touches at y=255 which slammed mixer sliders to 1. Lock the pressed fader until release and shrink overlapping hit boxes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 07:23:08 +08:00
yuquanjun cb4443f0e4 fix(led): use identity colors on universal progression lights
Loop_Light_Handle was hardcoding red for every measure; map L1-L7 to the same R/G/B/yellow/purple/cyan/white table as App guide LEDs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 07:08:48 +08:00
yuquanjun 04abc2e1be feat(ui): tap status-bar Bluetooth icon to toggle power
Hit area on mode/home/settings hub; off state uses gray icon + slash until a disabled asset is ready. Syncs system setting and NVM.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 17:42:04 +08:00
yuquanjun d00f570e2f fix(band): soft-stop on stop key so immediate pick can start
Stop key no longer calls AutoBandTop1_Stop (library eats the next Start). Soft mute + tick gate runs on MainTask; cold start skips redundant Stop when already clean.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 17:42:03 +08:00
yuquanjun 4b8e676033 chore: refresh git_user_fw_ver for 0.2.21 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 11:41:49 +08:00
yuquanjun 4716c87b5c release: bump firmware to 0.2.21
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 11:41:05 +08:00
yuquanjun ef41eb30fa fix(chord): song-mode LED no longer overwrites chord map (6m/Am -> AM7)
Problem2: in song mode UI shows 6m(Am) but MIDI played AM7
(E2 A2 E3 G#3 C#4 E4). Root cause: BL_Set_led wrote the LED frame's
chord code into chord_type_index_map of the group middle key
(LED_L6 -> key17), so a guidance frame carrying 0x02 (M7) turned the
Am key into AM7. Remapping on the chord page only helped until the
next LED frame.

- BL_Set_led: light LED only, drop all chord_type_index_map writes;
  chord quality is owned by map page 02 03/02 04 (BT_Chord_offset_map)
- handleReadRhythmMap / Return_Light_buff: fix type->protocol read-back
  encoding (m7->0x0A, M7->0x02, ad9->0x04, m7-5->0x0B, sus2->0x1F,
  sus4->0x1E), re-landing the 0917 verified fix
- BT_Chord_offset_map: accept dominant-7 doc code 0x0D (legacy 0x13 kept)
- tests: test_chord_map_fix.py (16/16 PASS on device),
  test_fret_positions.py, test_problem2_song_am.py (7/7 PASS:
  post-LED strum stays E2 A2 E3 A3 C4 E4)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 11:40:51 +08:00
yuquanjun 6d064cb53e chore: refresh git_user_fw_ver for 0.2.20 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 17:53:30 +08:00
yuquanjun cd32b4120b release: bump firmware to 0.2.20
Low-battery shutdown below 6.2V with tip screen and 10s soft power-off; UI0902 includes LOWBAT_TIP fullscreen asset.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 17:53:30 +08:00
yuquanjun 1b1b9b196d feat(power): low-battery tip screen and auto power-off below 6.2V
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>
2026-09-21 17:53:13 +08:00
yuquanjun f740b6fba0 chore: refresh git_user_fw_ver for 0.2.19 build
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 17:23:26 +08:00