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 <cursoragent@cursor.com>
This commit is contained in:
yuquanjun 2026-09-06 12:29:42 +08:00
parent 794345d3ba
commit 49af730f91
3 changed files with 15 additions and 6 deletions

View File

@ -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)); 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; uint8_t Led = 8;
bool PressFlag = 0; bool PressFlag = 0;
@ -212,6 +212,14 @@ static void PowerOff(void)
powon = false; /* 更新关机标志 */ powon = false; /* 更新关机标志 */
StopFullTask(); 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(); nvm_ret = drv_nvm_save_to_flash();
LOG_I("PWR", "nvm_save=%u", (unsigned)nvm_ret); LOG_I("PWR", "nvm_save=%u", (unsigned)nvm_ret);

View File

@ -147,8 +147,8 @@ void Touch_Mode_Select_Action(int8_t FLAG, uint8_t ID, uint8_t areaIndex)
InModeFlag = true; InModeFlag = true;
/* 进入子页后抑制残留按下,否则易误触底栏 GUI_TAB_INDEX(id=5)→设置 */ /* 进入子页后抑制残留按下,否则易误触底栏 GUI_TAB_INDEX(id=5)→设置 */
app_touch_suppress(500); app_touch_suppress(500);
/* 开机后再次确认弦音色(DSP 已就绪) */ /* DSP 已就绪:再下发音色 + 调音台音量(与关机前 NVM/faders 一致 */
SendProgramChangeMidiEvent(0,Timbre_index[mGuiData[GUI_TIMBRE_SELECT].Current]); LoadConfig();
switch (ID) switch (ID)
{ {
@ -190,11 +190,12 @@ void IdleProcess(DisplayTaskMessage_Type msg)
TM1629D_UpdateDisplay(0); TM1629D_UpdateDisplay(0);
StartTouchTask(); StartTouchTask();
StartScanTask(); StartScanTask();
/* Dream 上电稍后可能忽略首包 SysEx再发一次与旋钮对齐 */ /* Dream 上电稍后可能忽略首包 SysEx再发主音量 + 调音台(保持关机前设置) */
rt_thread_mdelay(400); rt_thread_mdelay(400);
vol = ADC_ReadChannel(ADC_CHANNEL_1)>>5; vol = ADC_ReadChannel(ADC_CHANNEL_1)>>5;
app_adc_sync_volume(vol); app_adc_sync_volume(vol);
Send_volume(vol); Send_volume(vol);
LoadConfig();
Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, level, 1, WHITE, GRAY); Draw_Volume_Bar(UI0902_VOL_X, UI0902_VOL_Y, level, 1, WHITE, GRAY);
break; break;

View File

@ -25,7 +25,7 @@ MAP_TXT = REPO / "Doc" / "音色文件" / "0903" / "FLASH_MAP.txt"
IAP_DIR = REPO / "升级" / "MCU主控升级" IAP_DIR = REPO / "升级" / "MCU主控升级"
OUT_ROOT = REPO / "tools" / "out" OUT_ROOT = REPO / "tools" / "out"
FW_VER = "0.2.0" FW_VER = "0.2.1"
TONE_RES_VER = "0903" TONE_RES_VER = "0903"
UI0902_RES_BASE = 0x00100000 UI0902_RES_BASE = 0x00100000