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 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) {
|
||||
alpha = 2.5;
|
||||
beta = 0.5;
|
||||
alpha = 0.05;
|
||||
beta = 5.0;
|
||||
c = 0.0;
|
||||
delta = 0.0;
|
||||
return {alpha, beta, c, delta};
|
||||
@@ -292,6 +292,9 @@ static void process_band_structural(
|
||||
if (fc < 1200) {
|
||||
alpha = 4.0;
|
||||
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 {
|
||||
alpha = 4.5;
|
||||
beta = 0.4;
|
||||
@@ -336,9 +339,16 @@ static void process_band_structural(
|
||||
bool has_second_peak = false;
|
||||
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; }
|
||||
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;
|
||||
}
|
||||
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).
|
||||
static const int delta_state = getenv("RT_DELTA_STATE") ? atoi(getenv("RT_DELTA_STATE")) : 0;
|
||||
if (delta_state) {
|
||||
|
||||
Reference in New Issue
Block a user