From 49af730f91f9ab4323514edfcb46bac8fadabcec Mon Sep 17 00:00:00 2001 From: yuquanjun Date: Sun, 6 Sep 2026 12:29:42 +0800 Subject: [PATCH] Release 0.2.1: persist mixer volume across power cycles. 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 --- Global/Global.c | 12 ++++++++++-- UI/UI_Idle.c | 7 ++++--- tools/publish_k1_release.py | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Global/Global.c b/Global/Global.c index 205f392..3d8047a 100644 --- a/Global/Global.c +++ b/Global/Global.c @@ -101,7 +101,7 @@ int16_t MIC_VOL_MAP[11]= {-9000,-7000,-5000,-3000,-1000,1000,3000,5000,7000,9000 uint8_t TOUCH_AREA_NUM = (sizeof(Touch_Areas)/sizeof(Touch_AreaTypeDef)); -const uint8_t Version[3] = {0,2,0}; /* major.minor.patch — 0.2.0: tone pack 0903 addr remap */ +const uint8_t Version[3] = {0,2,1}; /* major.minor.patch — 0.2.1: keep mixer/master vol across power cycle */ uint8_t Led = 8; bool PressFlag = 0; @@ -211,7 +211,15 @@ static void PowerOff(void) LOG_I("PWR", "power_off begin"); powon = false; /* 更新关机标志 */ StopFullTask(); - + + /* 关机前把当前调音台推子写入 NVM 镜像,保证再次开机保持音量 */ + { + NvmParam_Type *nvm = drv_nvm_param_ptr(); + nvm->param.BandVol = faders[0].val; + nvm->param.StringVol = faders[1].val; + nvm->param.MIcVol = faders[2].val; + nvm->param.MicRev = faders[3].val; + } nvm_ret = drv_nvm_save_to_flash(); LOG_I("PWR", "nvm_save=%u", (unsigned)nvm_ret); diff --git a/UI/UI_Idle.c b/UI/UI_Idle.c index e2c9067..fdb3f0c 100644 --- a/UI/UI_Idle.c +++ b/UI/UI_Idle.c @@ -147,8 +147,8 @@ void Touch_Mode_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex) InModeFlag = true; /* 进入子页后抑制残留按下,否则易误触底栏 GUI_TAB_INDEX(id=5)→设置 */ app_touch_suppress(500); - /* 开机后再次确认弦音色(DSP 已就绪) */ - SendProgramChangeMidiEvent(0,Timbre_index[mGuiData[GUI_TIMBRE_SELECT].Current]); + /* DSP 已就绪:再下发音色 + 调音台音量(与关机前 NVM/faders 一致) */ + LoadConfig(); switch (ID) { @@ -190,11 +190,12 @@ void IdleProcess(DisplayTaskMessage_Type msg) TM1629D_UpdateDisplay(0); StartTouchTask(); StartScanTask(); - /* Dream 上电稍后可能忽略首包 SysEx:再发一次与旋钮对齐 */ + /* Dream 上电稍后可能忽略首包 SysEx:再发主音量 + 调音台(保持关机前设置) */ rt_thread_mdelay(400); vol = ADC_ReadChannel(ADC_CHANNEL_1)>>5; app_adc_sync_volume(vol); Send_volume(vol); + LoadConfig(); Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, level, 1, WHITE, GRAY); break; diff --git a/tools/publish_k1_release.py b/tools/publish_k1_release.py index fc7e55e..b749c04 100644 --- a/tools/publish_k1_release.py +++ b/tools/publish_k1_release.py @@ -25,7 +25,7 @@ MAP_TXT = REPO / "Doc" / "音色文件" / "0903" / "FLASH_MAP.txt" IAP_DIR = REPO / "升级" / "MCU主控升级" OUT_ROOT = REPO / "tools" / "out" -FW_VER = "0.2.0" +FW_VER = "0.2.1" TONE_RES_VER = "0903" UI0902_RES_BASE = 0x00100000