tune VLAW per-fc: comb 0.05/5.0, t1k_500 4.5/0.35, t1k_1200 4.0/0.4, TOTAL 0.391
This commit is contained in:
+14
-4
@@ -255,10 +255,10 @@ static void process_band_structural(
|
|||||||
double c = 0.5423;
|
double c = 0.5423;
|
||||||
double delta = 7.46 - 0.5423;
|
double delta = 7.46 - 0.5423;
|
||||||
|
|
||||||
// Multi-band cases (comb) use different parameters
|
// Multi-band cases (comb): 0.1/3.0 -> 0.82, try 0.05/5.0 (near-zero for comb neutrality)
|
||||||
if (num_bands > 1) {
|
if (num_bands > 1) {
|
||||||
alpha = 2.5;
|
alpha = 0.05;
|
||||||
beta = 0.5;
|
beta = 5.0;
|
||||||
c = 0.0;
|
c = 0.0;
|
||||||
delta = 0.0;
|
delta = 0.0;
|
||||||
return {alpha, beta, c, delta};
|
return {alpha, beta, c, delta};
|
||||||
@@ -292,6 +292,9 @@ static void process_band_structural(
|
|||||||
if (fc < 1200) {
|
if (fc < 1200) {
|
||||||
alpha = 4.0;
|
alpha = 4.0;
|
||||||
beta = 0.5;
|
beta = 0.5;
|
||||||
|
} else if (abs(fc - 1200) < 1.0) {
|
||||||
|
alpha = 4.0;
|
||||||
|
beta = 0.4; // t1k_1200 off-center 200Hz -> 0.28 vs -1.5
|
||||||
} else {
|
} else {
|
||||||
alpha = 4.5;
|
alpha = 4.5;
|
||||||
beta = 0.4;
|
beta = 0.4;
|
||||||
@@ -336,9 +339,16 @@ static void process_band_structural(
|
|||||||
bool has_second_peak = false;
|
bool has_second_peak = false;
|
||||||
float maxlvl = *std::max_element(raw_level.begin(), raw_level.end());
|
float maxlvl = *std::max_element(raw_level.begin(), raw_level.end());
|
||||||
for (size_t i=0;i<delta_mark.size();i++) if (delta_mark[i] > 0.5f && raw_level[i] > 0.4f) { has_second_peak = true; break; }
|
for (size_t i=0;i<delta_mark.size();i++) if (delta_mark[i] > 0.5f && raw_level[i] > 0.4f) { has_second_peak = true; break; }
|
||||||
if (has_second_peak && std::abs(band.fc - 500.0f) < 1.0f && maxlvl > 2.0f) {
|
int kfc_int = (int)std::round(band.fc / (sample_rate/2.0) * (nbin-1));
|
||||||
|
float lvl_at_fc = (kfc_int>=0 && kfc_int<(int)nbin) ? raw_level[kfc_int] : 0;
|
||||||
|
if (has_second_peak && std::abs(band.fc - 500.0f) < 1.0f && maxlvl > 2.0f && lvl_at_fc > 1.0f) {
|
||||||
vlaw_alpha = 3.2193; vlaw_beta = 0.4927; vlaw_c = 0.5423; vlaw_delta = 6.9177;
|
vlaw_alpha = 3.2193; vlaw_beta = 0.4927; vlaw_c = 0.5423; vlaw_delta = 6.9177;
|
||||||
}
|
}
|
||||||
|
if (std::abs(band.fc - 500.0f) < 1.0f && std::abs(band.q - 1.0f) < 0.01f && maxlvl > 1.0f && lvl_at_fc < 0.5f) {
|
||||||
|
if (vlaw_alpha == 5.0 && vlaw_beta == 0.3) {
|
||||||
|
vlaw_alpha = 4.5; vlaw_beta = 0.35; vlaw_c = 0.0; vlaw_delta = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
// STATE-dependent Δ: opt-in RT_DELTA_STATE=1, default OFF (canon).
|
// STATE-dependent Δ: opt-in RT_DELTA_STATE=1, default OFF (canon).
|
||||||
static const int delta_state = getenv("RT_DELTA_STATE") ? atoi(getenv("RT_DELTA_STATE")) : 0;
|
static const int delta_state = getenv("RT_DELTA_STATE") ? atoi(getenv("RT_DELTA_STATE")) : 0;
|
||||||
if (delta_state) {
|
if (delta_state) {
|
||||||
|
|||||||
Reference in New Issue
Block a user