feat(tone): ship the 0928 rhythm pack with Hall2 reverb and PEQ
Load the updated 1.bin and apply the sound-designer Hall2 and four-band EQ at startup. Version 0.2.39. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
cd4f1cd902
commit
296a1b5420
|
|
@ -111,7 +111,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,38}; /* major.minor.patch — 0.2.38: 去掉样机功放EQ,电量 6.8V 显示 10% */
|
||||
const uint8_t Version[3] = {0,2,39}; /* major.minor.patch — 0.2.39: 0928 节奏包,Hall2 混响与四段 PEQ */
|
||||
uint8_t Led = 8;
|
||||
bool PressFlag = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ void LoadConfig(void)
|
|||
|
||||
SendVolumeChangeMidiEvent(0,(faders[1].val * 127) / 10);
|
||||
|
||||
Dream_ApplyEditorParams();
|
||||
|
||||
AW816_Set_Volume(MIC_VOL_MAP[faders[2].val]);
|
||||
|
||||
AW816_Set_Reverb(faders[3].val * 10);
|
||||
|
|
|
|||
|
|
@ -49,6 +49,74 @@ void SendMidiDataToDreamDSP(uint8_t* buff, uint16_t cnt)
|
|||
USART2_SendData(buff,cnt);
|
||||
}
|
||||
|
||||
/* Roland/Dream GS:checksum = 0x80 - (addr+data 低 7 位) */
|
||||
static void Dream_Dt1(uint8_t ah, uint8_t am, uint8_t al, const uint8_t *data, uint8_t n)
|
||||
{
|
||||
uint8_t msg[16];
|
||||
uint8_t i;
|
||||
uint8_t sum;
|
||||
|
||||
msg[0] = 0xF0;
|
||||
msg[1] = 0x41;
|
||||
msg[2] = 0x00;
|
||||
msg[3] = 0x42;
|
||||
msg[4] = 0x12;
|
||||
msg[5] = ah;
|
||||
msg[6] = am;
|
||||
msg[7] = al;
|
||||
sum = (uint8_t)(ah + am + al);
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
msg[8 + i] = data[i];
|
||||
sum = (uint8_t)(sum + data[i]);
|
||||
}
|
||||
msg[8 + n] = (uint8_t)((0x80u - (sum & 0x7Fu)) & 0x7Fu);
|
||||
msg[9 + n] = 0xF7;
|
||||
SendMidiDataToDreamDSP(msg, (uint16_t)(10u + n));
|
||||
}
|
||||
|
||||
static void Dream_Dt1Byte(uint8_t ah, uint8_t am, uint8_t al, uint8_t data)
|
||||
{
|
||||
Dream_Dt1(ah, am, al, &data, 1);
|
||||
}
|
||||
|
||||
/* 音师编辑器 B:Reverb / E:PEQ Normal。
|
||||
混响是 GS 系统区 40 01 30:Hall2=4,Size=Character,PreLP,Level,Time,Delay Feedback。
|
||||
PEQ 为同一套 4 段参量:增益按 0.1 dB/档、0=0 dB;频率按 Hz 的 14 位原值;Q 按 0.1 显示(2.00→20)。 */
|
||||
void Dream_ApplyEditorParams(void)
|
||||
{
|
||||
uint8_t hz[2];
|
||||
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x30, 4); /* Type Hall2 */
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x31, 4); /* Size */
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x32, 2); /* PreLP */
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x33, 85); /* Level */
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x34, 64); /* Time */
|
||||
Dream_Dt1Byte(0x40, 0x01, 0x35, 0); /* DelFdbck */
|
||||
|
||||
/* 40 04 00.. 与编辑器从左到右、从上到下一致 */
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x00, 81); /* GainLow 8.1 dB */
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x01, 12); /* GainLoMid 1.2 dB */
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x02, 7); /* GainHiMid 0.7 dB */
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x03, 28); /* GainHigh 2.8 dB */
|
||||
|
||||
hz[0] = (uint8_t)((412 >> 7) & 0x7F);
|
||||
hz[1] = (uint8_t)(412 & 0x7F);
|
||||
Dream_Dt1(0x40, 0x04, 0x04, hz, 2); /* FreqLow 412 Hz */
|
||||
hz[0] = (uint8_t)((2294 >> 7) & 0x7F);
|
||||
hz[1] = (uint8_t)(2294 & 0x7F);
|
||||
Dream_Dt1(0x40, 0x04, 0x06, hz, 2); /* FreqLoMid 2294 Hz */
|
||||
hz[0] = (uint8_t)((6048 >> 7) & 0x7F);
|
||||
hz[1] = (uint8_t)(6048 & 0x7F);
|
||||
Dream_Dt1(0x40, 0x04, 0x08, hz, 2); /* FreqHiMid 6048 Hz */
|
||||
hz[0] = (uint8_t)((3126 >> 7) & 0x7F);
|
||||
hz[1] = (uint8_t)(3126 & 0x7F);
|
||||
Dream_Dt1(0x40, 0x04, 0x0A, hz, 2); /* FreqHigh 3126 Hz */
|
||||
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x0C, 20); /* Q-LoMid 2.00 */
|
||||
Dream_Dt1Byte(0x40, 0x04, 0x0D, 20); /* Q-HiMid 2.00 */
|
||||
}
|
||||
|
||||
#define AT32_UID_BASE 0x1FFFF7E8UL
|
||||
|
||||
void BleBuildDeviceName(char *out)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ void SendBankChangeMidiEvent(uint8_t channel, uint8_t bank);
|
|||
void SendProgramWithBankMidiEvent(uint8_t channel, uint8_t bank, uint8_t program);
|
||||
void SendVolumeChangeMidiEvent(uint8_t channel, uint8_t CC);
|
||||
void SendMidiDataToDreamDSP(uint8_t* buff, uint16_t cnt);
|
||||
/* 开机/进模式:音师照片中的 Hall2 混响和 Normal 四段 PEQ */
|
||||
void Dream_ApplyEditorParams(void);
|
||||
void DefaultTask_SendMsg(uint16_t Data1, uint16_t Data2, uint16_t Data3, uint16_t Data4);
|
||||
|
||||
/* Unique BLE/BT name from AT32 UID: "PHON_" + 6 hex (last 3 UID bytes). out >= 12. */
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
/* Auto-generated by tools/pack_extflash_tone_0903.py — do not hand-edit. */
|
||||
/* W25Q128 absolute offsets. Boot logo display uses UI0902_BOOT_LOGO_ADDR. */
|
||||
/* Tone resource pack has no in-bin version field; release tag = EXTFLASH_TONE_RES_VER. */
|
||||
#define EXTFLASH_TONE_RES_VER "0916"
|
||||
#define EXTFLASH_TONE_RES_VER "0928"
|
||||
#define EXTFLASH_TONE_RES_VER_MAJOR 0
|
||||
#define EXTFLASH_TONE_RES_VER_MINOR 9
|
||||
#define EXTFLASH_TONE_RES_VER_PATCH 16
|
||||
#define EXTFLASH_TONE_RES_VER_PATCH 28
|
||||
|
||||
#define EXTFLASH_LOGO_ADDR 0x00000000UL
|
||||
#define EXTFLASH_LOGO_SIZE 52080UL
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
#define EXTFLASH_CHARGING_H 190
|
||||
|
||||
#define EXTFLASH_BIN1_RHYTHM_ADDR 0x0001B8F0UL
|
||||
#define EXTFLASH_BIN1_RHYTHM_SIZE 506746UL
|
||||
#define EXTFLASH_BIN1_RHYTHM_SIZE 509556UL
|
||||
|
||||
#define EXTFLASH_BIN2_SONG_HAITIAN_ADDR 0x0009D07DUL
|
||||
#define EXTFLASH_BIN2_SONG_HAITIAN_SIZE 41914UL
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ def main():
|
|||
raise SystemExit(
|
||||
"USB row overflow: label ends %d, left arrow at %d" % (label_end, tril_x)
|
||||
)
|
||||
ver_w = text_w("0.2.38", glyphs)
|
||||
ver_w = text_w("0.2.39", glyphs)
|
||||
gh = glyphs["0"][0].size[1]
|
||||
pill_h = gh + 8
|
||||
pill_w = ver_w + 18
|
||||
|
|
@ -377,7 +377,7 @@ def preview(pics, glyphs, back, back_xy, chev, chev_xy, tri_l, tl, tri_r, tr,
|
|||
paste(canvas, tri_l, tl[0], row_y + (tl[1] - (CARD_Y0 + CARD_PITCH)))
|
||||
paste(canvas, tri_r, tr[0], row_y + (tr[1] - (CARD_Y0 + CARD_PITCH)))
|
||||
fill_round(canvas, CARD_X + pill_dx, CARD_Y0 + pill_dy, pill_w, pill_h, 6, (0, 8, 19))
|
||||
ver = "0.2.38"
|
||||
ver = "0.2.39"
|
||||
tw = text_w(ver, glyphs)
|
||||
gh = glyphs["0"][0].size[1]
|
||||
draw_text(canvas, CARD_X + pill_dx + (pill_w - tw) // 2,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Pack external W25Q128 tone/logo image for K1 (0916_bank).
|
||||
"""Pack external W25Q128 tone/logo image for K1 (0928).
|
||||
|
||||
Layout (absolute W25Q128 offsets):
|
||||
0x00000000 logo.bin (legacy pad; boot UI uses UI0902 full-screen logo)
|
||||
|
|
@ -25,7 +25,7 @@ from pathlib import Path
|
|||
ROOT = Path(__file__).resolve().parents[1] # firmware project root
|
||||
REPO = ROOT.parent.parent # 一诺国际吉他
|
||||
OUT_DIR = ROOT / "tools" / "out"
|
||||
TONE_TAG = "0916"
|
||||
TONE_TAG = "0928"
|
||||
OUT_BIN = OUT_DIR / f"extflash_tone_{TONE_TAG}.bin"
|
||||
OUT_RES = OUT_DIR / f"extflash_tone_{TONE_TAG}.res"
|
||||
OUT_ALL_RES = OUT_DIR / f"extflash_ALL_tone{TONE_TAG}_ui0902.res"
|
||||
|
|
@ -34,7 +34,7 @@ OUT_BIN_LEGACY = OUT_DIR / "extflash_tone_0903.bin"
|
|||
OUT_RES_LEGACY = OUT_DIR / "extflash_tone_0903.res"
|
||||
OUT_ALL_LEGACY = OUT_DIR / "extflash_ALL_tone0903_ui0902.res"
|
||||
OUT_HDR = ROOT / "project" / "inc" / "ExtFlash_Tone_Addr.h"
|
||||
TONE_DIR = REPO / "Doc" / "音色文件" / "0916_bank"
|
||||
TONE_DIR = REPO / "Doc" / "音色文件" / "0928"
|
||||
OUT_MAP = TONE_DIR / "FLASH_MAP.txt"
|
||||
UI0902_BIN = OUT_DIR / "ui0902_res.bin"
|
||||
|
||||
|
|
@ -163,7 +163,7 @@ def main() -> None:
|
|||
#define EXTFLASH_TONE_RES_VER "{TONE_TAG}"
|
||||
#define EXTFLASH_TONE_RES_VER_MAJOR 0
|
||||
#define EXTFLASH_TONE_RES_VER_MINOR 9
|
||||
#define EXTFLASH_TONE_RES_VER_PATCH 16
|
||||
#define EXTFLASH_TONE_RES_VER_PATCH 28
|
||||
|
||||
#define EXTFLASH_LOGO_ADDR 0x{by_name['LOGO'][1]:08X}UL
|
||||
#define EXTFLASH_LOGO_SIZE {by_name['LOGO'][2]}UL
|
||||
|
|
|
|||
|
|
@ -30,15 +30,15 @@ BOOT_BIN = (
|
|||
/ "Exe"
|
||||
/ "AT32F403ARCT7_BOOT.bin"
|
||||
)
|
||||
TONE_RES_VER = "0916"
|
||||
TONE_RES_VER = "0928"
|
||||
TONE_BIN = PROJ / "tools" / "out" / f"extflash_tone_{TONE_RES_VER}.bin"
|
||||
UI0902_BIN = PROJ / "tools" / "out" / "ui0902_res.bin"
|
||||
MAP_TXT = REPO / "Doc" / "音色文件" / "0916_bank" / "FLASH_MAP.txt"
|
||||
MAP_TXT = REPO / "Doc" / "音色文件" / "0928" / "FLASH_MAP.txt"
|
||||
TONE_HDR = PROJ / "project" / "inc" / "ExtFlash_Tone_Addr.h"
|
||||
IAP_DIR = REPO / "升级" / "MCU主控升级"
|
||||
OUT_ROOT = REPO / "tools" / "out"
|
||||
|
||||
FW_VER = "0.2.38"
|
||||
FW_VER = "0.2.39"
|
||||
UI0902_RES_BASE = 0x00100000
|
||||
BOOT_FLASH_ADDR = 0x08000000
|
||||
APP_FLASH_ADDR = 0x08008000
|
||||
|
|
@ -91,7 +91,7 @@ def verify_tone_layout(tone: bytes, check_sources: bool = True) -> None:
|
|||
"""Refuse to ship ALL.res if logo/charg/1/2/3.bin missing, shifted, or mismatch."""
|
||||
dab = b"\xABDAB"
|
||||
addrs = read_tone_addrs()
|
||||
tone_dir = REPO / "Doc" / "音色文件" / "0916_bank"
|
||||
tone_dir = REPO / "Doc" / "音色文件" / "0928"
|
||||
ziliao = None
|
||||
for p in REPO.iterdir():
|
||||
if p.is_dir() and (p / "logo.bin").is_file() and (p / "Charg.bin").is_file():
|
||||
|
|
@ -234,7 +234,7 @@ def main() -> None:
|
|||
"说明:",
|
||||
" - Boot 进入 USB IAP 时显示 UI0902_FLASH_MODE;资源未烧录时白字黑底兜底。",
|
||||
" - 开机全屏 Logo、关机充电全屏画面在 UI0902,不在音色包里的 logo.bin/Charg.bin 占位。",
|
||||
f" - 本包音色来源 Doc/音色文件/0916_bank/(tag {TONE_RES_VER});BIN3 随 2.bin 长度后移。",
|
||||
f" - 本包音色来源 Doc/音色文件/0928/(tag {TONE_RES_VER});BIN3 随 2.bin 长度后移。",
|
||||
"",
|
||||
"附件: SoundWalkerIAP.exe / 升级步骤.docx / FLASH_MAP.txt",
|
||||
"",
|
||||
|
|
|
|||
Loading…
Reference in New Issue