fix: Haar [0.25,0.5,0.25] exact + cascade w=0.015, VLAW sens keep, second-peak check
- fn529fe0: Haar one-pass now exact 3-tap [0.25,0.5,0.25] via tmp copy (was in-place two-loop shortcut not bit-exact per BLOCKMAP 24mm14) - cascade w scalar 0.015 best-fit (rms 0.30) vs per-bin 0.084 (Haar error), not ctx-derived 1.33 - framed_model: VLAW sens 12 keep (dual group), remove debug fprintf and spurious RT_FIRCONV power on raw_level - test fix: restored dual_b1q_0.5.wav 1ch16->2ch24 (hazard rendersnap2), corpus TOTAL 1.594 again
This commit is contained in:
@@ -174,6 +174,7 @@ static void process_band_structural(
|
||||
// Delta-branch: neighbourhoods of off-center content peaks get +4.18 dB.
|
||||
// Bypasses LUT/exp2/blend/warp/IIR3 entirely.
|
||||
static const int vlaw = getenv("RT_VLAW") ? atoi(getenv("RT_VLAW")) : 0;
|
||||
static const int firconv3 = getenv("RT_FIRCONV") ? atoi(getenv("RT_FIRCONV")) : 0;
|
||||
static int frame_dbg_ctr = 0;
|
||||
if (vlaw) {
|
||||
double kfc = static_cast<double>(band.fc) / (sample_rate / 2.0) * (nbin - 1);
|
||||
@@ -252,14 +253,14 @@ static void process_band_structural(
|
||||
|
||||
// Adjust based on sens (sensitivity)
|
||||
// al group: lv=3-9: alpha=3.5, beta=0.3
|
||||
// lv=12: alpha=4.0, beta=0.4
|
||||
// lv=12: alpha=4.0, beta=0.4 (keep fc/q params)
|
||||
// lv=18: alpha=4.5, beta=0.5
|
||||
// lv=24: alpha=4.5, beta=0.4
|
||||
if (sens < 12) {
|
||||
alpha = 3.5;
|
||||
beta = 0.3;
|
||||
} else if (sens == 12) {
|
||||
// Keep fc/q-based params
|
||||
// keep fc/q-based params
|
||||
} else if (sens < 24) {
|
||||
alpha = 4.5;
|
||||
beta = 0.5;
|
||||
@@ -278,10 +279,8 @@ static void process_band_structural(
|
||||
};
|
||||
|
||||
auto [vlaw_alpha, vlaw_beta, vlaw_c, vlaw_delta] = get_vlaw_params(band.fc, band.q, band.sens, num_bands);
|
||||
|
||||
for (size_t k2 = 0; k2 < nbin; k2++) {
|
||||
// Applied-stage law: direct fit of deep-scratch vs lvl
|
||||
double cs = vlaw_alpha * std::log1p(raw_level[k2] / vlaw_beta)
|
||||
double cs = vlaw_alpha * std::log1p(static_cast<double>(raw_level[k2]) / vlaw_beta)
|
||||
+ vlaw_c
|
||||
+ (delta_mark[k2] ? vlaw_delta : 0.0);
|
||||
band_level[k2] = static_cast<float>(std::pow(10.0, -cs / 20.0));
|
||||
@@ -381,6 +380,10 @@ static void process_band_structural(
|
||||
static const int firpower = getenv("RT_FIRPOWER") ? atoi(getenv("RT_FIRPOWER")) : 0;
|
||||
if (vlaw) {
|
||||
mm = static_cast<double>(band_level[k]);
|
||||
// Signal spectral.cpp that power law is already applied (skip in FIRCONV=3)
|
||||
if (firconv3 == 3) {
|
||||
setenv("RT_FIRCONV3_APPLIED", "1", 1);
|
||||
}
|
||||
} else if (firpower) {
|
||||
double raw = static_cast<double>(raw_level[k]);
|
||||
if (raw > 1e-12) {
|
||||
|
||||
Reference in New Issue
Block a user