This archive preserves earlier release notes and Finnish translations removed from the shorter main changelog. Return to the current changelog.
Finnish notes from current releases
Unreleased
Automatic mode details tekstejä yksinkertaistettu
1.2.4
Mittaus
Selkeytetty mittauksen varoitustekstejä.
Adaptiviinen käyrä
Adaptiivinen käyrä tallennetaan nyt filter_mode_priors tiedostoon. Tämä mahdollistaa tarkemmat tulokset automaattimoodissa.
UI
Tekstejä yksinkertaistettu. Info-boksi liikkuu nyt UI:n mukana.
Export
Multi-rate taps skaalautuu nyt sample rate -perheittäin: 44,1/48 kHz → 65 536 88,2/96 kHz → 131 072 176,4/192 kHz → 262 144 Kun “Generate all common filter sample rates” on aktiivinen: target-esihaku käyttää aina 44,1 kHz / 65 536 taps
1.2.3
Pienempi muistinkäyttö vaativien ajojen jälkeen
DecayCore rajaa nyt suurimmat DSP-välimuistit sekä alkioiden määrän että niihin säilöttyjen taulukoiden koon perusteella. Ylisuuria tuloksia ei jätetä muistiin, ja ajonaikaiset välimuistit tyhjennetään aina ajon päättyessä — myös keskeytyneen tai epäonnistuneen ajon jälkeen. Näin korkean näytteenottotaajuuden käsittely ja toistuvat tasoitukset eivät jätä satoja megatavuja varatuiksi sovelluksen odottaessa, mutta ajon aikana hyödyllinen välimuisti säilyy käytössä.
Tilastotiedot voivat nyt pysyä DSP-putkessa taulukkomuodossa ja ne muunnetaan vasta tulostusta varten. Tämä vähentää tarpeettomia väliaikaisia kopioita muistia vaativassa käsittelyssä.
Tarkempi ja läpinäkyvämpi kahden subwooferin integrointi
Kun AUTO Bass Integration on käytössä, kahden subwooferin mittaustiedostot voi nyt valita suoraan Basic-sivulta. Bass Integration v5 yhdistää erikseen mitatut subwooferit niiden vaiheen säilyttäväksi mitatuksi äänenpainesummaksi. Malli vastaa viedyssä CamillaDSP-konfiguraatiossa käytettävää yhteistä monosub-lähtöä ilman laskennallista subwooferikohtaista lisäviivettä.
Ehdokkaiden validointi tarkistaa nyt vasemman ja oikean kanavan lisäksi kuuntelun mono-keskiskenaarion ja tekee turvallisuuspäätökset heikoimman tuloksen perusteella. Tulosnäkymä ja vientiyhteenveto näyttävät yhdistetyn bassovasteen, subwooferien mitatun ajoituseron, yhdistämistavan sekä reititys- ja skaalausoletukset. Yhteenveto kertoo myös selkeästi, että molemmat subwooferit käyttävät yhtä yhteistä mono-FIR-suodatinta.
1.2.2
Automaattitila
Automaattitila sisältyy julkaisupaketteihin; lähdeversiossa Basic- ja Advanced-tilat toimivat edelleen kokonaisuudessaan.
Filtterit mukaan yhdellä klikkauksella
Lataa filtterit (.zip) -painike tekee paluun aivan tulokset sivun pohjalle, lataa kaikki suodattimet ja asetustiedostot suoraan tulossivulta — kätevää erityisesti silloin, kun DecayCore toimii toisella tietokoneella tai laitteella.
Earlier release history
[1.2.1] 31-7-2026
Adaptive Target v2 — a target that stays a target
Adaptive Target now treats Harman6 as a stable reference instead of mistaking its own bass shelf for room buildup. Room evidence is measured against the baseline curve and evaluated per channel, so one noisy channel can no longer drag the target off course: when left and right disagree, adaptation is reduced or falls back to the Harman6 baseline. Channel level offsets stay neutral.
Every adaptation is bounded to −2.0…+0.75 dB and faded out by 500 Hz, so the target guides the correction instead of quietly becoming a second correction stage. RT60 is now used only as a confidence signal that limits extra bass lift — never as a reason to add it. AUTO no longer applies a separate full-band output tilt or a measurement-derived high-frequency target rise.
Target smoothing (smooth_oct) now genuinely affects the synthesised curve, and both the log and the export summary tell you which adaptation was applied — and, if it was not, exactly why.
Smoother corrections: Ignore local correction below
I tracked down the cause of the jagged corrected response: it originates in magnitude correction, not in the phase type or the IR window. Because auto-gain shifts the whole curve downwards, the old boost limit no longer recognised local peaks that had moved into negative territory.
The fix is a real threshold based on the locally smoothed response, and it is yours to control:
Advanced → Shaping → Fine tune → Ignore local correction below (dB)
The range is 0–3 dB and the default 2.0 dB is verified all the way through to the DSP configuration. Set it to 0 to keep every local detail, or raise it for a smoother, more conservative filter.
Hybrid IIR — every decibel of modal cut accounted for
Hybrid IIR now follows a clear chain of custody. A cut moved from FIR to IIR is still compensated in FIR. After the FIR limits are applied, the remaining mode is re-analysed, and only a verified residual mode earns an additional uncompensated cut. The total cut always respects the Max cut, confidence, group-delay, priority, voice-risk and residual-authority limits, and Min cut priority now applies to room_mode events as well. The peak strength found during measurement fitting also contributes to the safe total limit.
The export summary reports FIR transfer, residual extra, the authority limit and the total cut separately, so you can see precisely how each modal cut was reached.
A clearer view of the AUTO run
Steps 1–8 now always sit above the Automatic mode details section, in their own separate bar. Run progress, the selected solution and the details appear below the navigation, so a long AUTO run is easy to follow without losing your place.
Inspect the final FIR around its impulse peak
The Timing view now includes the actual final FIR impulse for each output channel. The impulse is normalized to its main peak, with the peak aligned to 0 ms and a focused default range of −25…+50 ms. This makes pre-ringing and the immediate post-impulse behaviour visible without the full filter length compressing the interesting part of the graph.
User Manual updated
The manual now documents the AUTO mode Advanced page: which controls remain editable, how locked fields and presets behave, the range, default and effect of Ignore local correction below, the excess-phase and group-delay controls, a pointer to the Hybrid IIR settings, and a reminder that the final values are always confirmed in the export summary.
Adaptive Target v2 — target pysyy targetina
Adaptive Target kohtelee Harman6:ta nyt vakaana kiintopisteenä sen sijaan, että tulkitsisi sen oman bassoshelfin huoneen korostumaksi. Basso lasketaan pohjakäyrään suhteutettuna ja kanavakohtaisesti, joten yksi kohiseva kanava ei enää vedä targetia harhaan: kun vasen ja oikea ovat eri mieltä, adaptointia pienennetään tai palataan Harman6-pohjaan. Kanavien tasosiirrot pysyvät neutraaleina.
Target-muutos on rajattu −2,0…+0,75 dB ja häivytetään pois 500 Hz:iin mennessä, joten target ohjaa korjausta eikä muutu huomaamatta toiseksi korjausvaiheeksi. RT60 toimii nyt vain confidence-signaalina, joka rajoittaa basson lisäystä — se ei koskaan ole syy lisätä sitä. AUTO ei enää käytä erillistä full-band output tiltiä eikä mittausperäistä HF-nousua, joten diskantti pysyy siellä, mihin sen itse asetit.
Targetin tasoitus (smooth_oct) vaikuttaa nyt aidosti syntetisoituun käyrään, ja sekä loki että vientiyhteenveto kertovat, mikä adaptointi tehtiin — ja jos sitä ei tehty, miksi..
Tasaisempi korjaus: Ohita tätä pienemmät paikalliskorjaukset
Sahalaidan syy varmistui: se syntyy magnitudikorjauksessa, ei vaihetyypissä tai IR-ikkunassa. Koska auto-gain siirtää koko käyrää alaspäin, vanha boost-raja ei enää tunnistanut negatiiviselle puolelle siirtyneitä paikallisia korostuksia.
Ratkaisuna on aito, paikalliseen tasoitettuun vasteeseen perustuva raja, jonka säädät itse:
Advanced → Shaping → Fine tune → Ohita tätä pienemmät paikalliskorjaukset (dB)
Säätöalue on 0–3 dB, ja oletusarvo 2,0 dB on varmennettu DSP-konfiguraatioon asti. Arvo 0 säilyttää kaiken paikallisen yksityiskohdan, suurempi arvo antaa tasaisemman ja varovaisemman suodattimen.
Hybrid IIR — jokainen desibeli modaalileikkausta perusteltuna
Hybrid IIR noudattaa nyt selkeää ketjua. FIR:ltä IIR:lle siirretty leikkaus kompensoidaan edelleen FIR:ssä. FIR-rajoitusten jälkeen jäljelle jäävä moodi analysoidaan uudelleen, ja vain varmennettu residual-moodi saa kompensoimattoman lisäleikkauksen. Kokonaisleikkaus noudattaa aina Max cut-, confidence-, GD-, priority-, voice-risk- ja residual-authority-rajoja, ja Min cut priority koskee nyt myös room_mode-tapahtumia. Myös mittaussovituksen löytämä huippuvoimakkuus osallistuu turvallisen kokonaisrajan määrittämiseen.
Vientiyhteenveto raportoi erikseen FIR-siirron, residual-lisäleikkauksen, authority-rajan ja kokonaisleikkauksen, joten näet tarkasti, miten jokainen modaalileikkaus muodostui.
Selkeämpi näkymä AUTO-ajoon
Navigointi 1–8 on nyt aina Automatic mode details -osion yläpuolella ja omassa erillisessä palkissaan. Ajon eteneminen, valittu ratkaisu ja yksityiskohdat näkyvät navigoinnin alla, joten pitkääkin AUTO-ajoa on helppo seurata paikkaa kadottamatta.
Lopullinen FIR-impulssi tarkasti huipun ympäriltä
Timing-näkymä näyttää nyt jokaiselle lähtökanavalle todellisen lopullisen FIR-suodattimen impulssin. Impulssi normalisoidaan päähuippuun, huippu kohdistetaan kohtaan 0 ms ja oletusnäkymä rajataan alueelle −25…+50 ms. Näin pre-ringing ja impulssin jälkeinen käyttäytyminen erottuvat ilman, että suodattimen koko pituus litistää kuvaajan olennaisenosan.
Käyttöopas päivitetty
Opas kuvaa nyt AUTO-tilan Advanced-sivun: mitkä säädöt jäävät käyttäjän muokattaviksi, miten lukitut kentät ja presetit toimivat, Ohita tätä pienemmät paikalliskorjaukset -asetuksen alueen, oletusarvon ja vaikutuksen, excess phase- ja GD-säätöjen kuvaukset, viittauksen Hybrid IIR -asetuksiin sekä muistutuksen siitä, että lopulliset arvot tarkistetaan aina vientiyhteenvedosta.
[1.2.0] - 27-7-2026
Keep your target curves ready to use
You can now download the active target curve from the Target page as a .txt file. The file contains the green preview curve at 400 points between 10 and 20,000 Hz, including the level and tilt adjustments from Advanced and Manual modes. Target is compatible almost every program (REW, MSO etc.)
You can also save important target curves as named presets. Save, select, and remove presets directly on the Target page, so your proven starting points are always ready for the next measurement.
Clearer graphs and results
Confidence is now shown on its own full-size graph row with a clear 0–100% scale. The overlapping confidence axis has been removed from the Magnitude graph, making it easier to assess measurement reliability at a glance.
The results graph view has been refreshed for greater clarity. Every graph now also has a ⛶ button that opens it in a maximized view. Close the view with the × button or the Esc key.
Completed results are now found directly in the indicated output folder. The separate ZIP download button and the unnecessary graph-download reference in the completion message have been removed to keep the workflow straightforward.
More transparent AUTO-mode scoring
The AUTO-mode settings card and result diagnostics now clearly explain that scoring is based on the current measurement and listening room. This makes it reliable for comparing solutions from the same measurement set, but it is not intended for comparisons between different speakers or rooms.
Omat tavoitekäyrät talteen ja käyttöön
Target-sivulla voit nyt ladata käytössä olevan tavoitekäyrän .txt-tiedostona. Tiedosto sisältää esikatselun vihreän käyrän 400 pisteellä välillä 10–20 000 Hz sekä Advanced- ja Manual-tilan taso- ja tilt-säädöt. Ladattava target on yhteensopiva melkein kaikkien ohjelmien kanssa (REW, MSO jne.)
Tärkeät tavoitekäyrät voi myös tallentaa nimetyiksi esiasetuksiksi. Esiasetuksia on helppo tallentaa, valita ja poistaa suoraan Target-sivulla, joten toimivat lähtökohdat säilyvät aina valmiina seuraavaa mittausta varten.
Selkeämmät kuvaajat ja tulokset
Confidence esitetään nyt omana täyskokoisena kuvaajarivinään selkeällä 0–100 % asteikolla. Magnitude-kuvaajan päällekkäinen confidence-akseli on poistettu, jotta mittaustulosten luotettavuus on helpompi nähdä yhdellä silmäyksellä.
Tulosten grafiikkanäkymä on uudistettu selkeämmäksi. Jokaisessa kuvaajassa on nyt myös ⛶-painike, jolla valittu kuvaaja avautuu maksimoituun näkymään. Näkymän voi sulkea ×-painikkeesta tai Esc-näppäimellä.
Valmiit tulokset löytyvät jatkossa suoraan ilmoitetusta tallennuskansiosta. Tulossivulta poistettiin erillinen ZIP-latauspainike ja tarpeeton kuvaajan lataukseen viittaava valmisilmoitus, jotta työnkulku pysyy suoraviivaisena.
Läpinäkyvämpi AUTO-tilan pisteytys
AUTO-tilan asetuskortti ja tulosdiagnostiikka kertovat nyt selkeästi, että pisteytys perustuu kyseiseen mittaukseen ja kuunteluhuoneeseen. Se auttaa vertailemaan saman mittauskokonaisuuden ratkaisuja luotettavasti, mutta ei ole tarkoitettu eri kaiuttimien tai huoneiden keskinäiseen vertailuun.
[1.1.9]
Smarter final validation for better AUTO results
DecayCore 1.1.9 gives AUTO mode a more dependable final say. P6 now validates the three strongest candidates using their actually realised FIR filters, then performs a weighted reranking based on the result. The raw impulse response is resampled only once, keeping the added validation efficient. A warning can promote a better candidate, while a rejected result gives way to an accepted one. The existing hard DSP safety gates always remain the highest priority.
If P6 changes the winner, the exact materialised preset is now stored in the cache. Linear-phase FIR filters also receive a dedicated pre-ringing check; minimum-phase and minimum-causal filters skip it where the check is not applicable.
More precise and consistent phase correction
Phase authority now uses true log-frequency octave smoothing and stays cleanly at zero above its upper limit. Phase authority and P6 settings also travel through FilterConfig, keeping the selected correction policy consistent from optimization to the finished filter.
Faster, more trustworthy caching and RT60 analysis
RT60 smoothing now uses an O(n) prefix-sum implementation. A new 32-entry LRU cache with BLAKE2b content keys, single-flight computation, copied results, and safe generation-based clearing makes repeated analysis faster without allowing stale or shared mutable results to leak between runs.
A measured RT60 value always takes priority over fallback cache data. The content-based RT60 cache can be reused across runs, but is never written to disk. Cache identities now cover phase authority, P6, and raw impulse-response data; the cache schema was updated to version 27 and AUTO compatibility to am42.
More robust measurement sessions and wider stereo
RT60 analysis now uses a peak-anchored 1 s + 6 s window without modifying the raw impulse response. Guided sessions save up to two channels in parallel, but only after all captures at a position are complete.
Stereo linking has also been fixed, delivering a wider stereo image.
Bass can no longer drop out of AUTO scoring
The lower bound of the AUTO fit score no longer follows the candidate’s own correction band. It is now anchored to the estimated −6 dB point of the speakers, raised by the HPF cutoff and the subwoofer crossover where applicable. Uncorrected bass modes therefore always count against a candidate, and the optimizer can no longer improve its score by shrinking the correction band away from the bass — for every filter type. The residual-peak scoring uses the same shared logic.
Optimization goals keep their intent
The goals “bass” / “prefer bass”, “acoustic”, and “hybrid” are no longer collapsed into the flat and low-ripple objectives. Each now keeps its own identity through the entire search, so the dedicated ranking logic for these goals is actually applied. All safety gates and correction behavior remain exactly as before.
Room-adaptive correction bands
Temporal Decay Control and hybrid IIR cuts now narrow their frequency bands to the room’s estimated Schroeder frequency, where modal correction is physically justified. The bands only narrow — they never extend beyond the previous 300 Hz and 200 Hz caps.
Real decay data for imported measurements
When a WAV impulse response is imported without RT60 metadata or a sidecar file, DecayCore now computes RT60 and its frequency bands directly from the imported impulse response, using the same peak-anchored analysis window as built-in measurements. The adaptive target, decay hints, and Temporal Decay Control now use real measured decay for imports instead of falling back to generic constants.
UI
New retro-theme. C64 inspirated.
Älykkäämpi loppuvalidointi parantaa AUTO-tuloksia
DecayCore 1.1.9 tekee AUTO-tilan lopullisesta valinnasta entistä luotettavamman. P6 validoi nyt kolme vahvinta ehdokasta niiden oikeasti toteutuneilla FIR-suodattimilla ja tekee tulosten perusteella painotetun uudelleensijoituksen. Raaka impulssivaste näytteistetään uudelleen vain kerran, joten lisävalidointi pysyy tehokkaana. Varoitus voi nostaa paremman ehdokkaan voittajaksi, kun taas hylätty tulos väistyy hyväksytyn tieltä. DSP:n ehdottomat turvarajat säilyvät aina tärkeimpinä.
Jos P6 vaihtaa voittajaa, täsmälleen sama toteutunut asetuspaketti tallentuu nyt myös välimuistiin. Lineaarivaiheiset FIR-suodattimet saavat lisäksi oman pre-ringing-tarkastuksen; minimum phase- ja minimum causal -suodattimilla tarkastus ohitetaan silloin, kun se ei ole sovellettavissa.
Tarkempi ja johdonmukaisempi vaiheenkorjaus
Vaiheauktoriteetti käyttää nyt aitoa log-taajuista oktaavitasoitusta ja pysyy ylärajansa jälkeen puhtaasti nollassa. Vaiheauktoriteetin ja P6:n asetukset kulkevat myös FilterConfigin kautta, joten valittu korjauspolitiikka säilyy samana optimoinnista valmiiseen suodattimeen asti.
Nopeampi ja luotettavampi välimuisti sekä RT60-analyysi
RT60-tasoitus käyttää nyt O(n)-aikaista prefix sum -laskentaa. Uusi 32 alkion LRU-välimuisti, BLAKE2b-sisältöavaimet, single-flight-laskenta, kopioidut tulokset ja turvallinen sukupolvipohjainen tyhjennys nopeuttavat toistuvaa analyysia ilman vanhentuneen tai jaetun muokattavan datan vuotamista ajojen välillä.
Mitattu RT60-arvo ohittaa aina fallback-välimuistin tiedot. Sisältöpohjaista RT60-välimuistia voidaan hyödyntää ajojen välillä, mutta sitä ei koskaan kirjoiteta levylle. Välimuistin tunniste huomioi nyt vaiheauktoriteetin, P6:n ja raa’an impulssivasteen tiedot; välimuistiskeema päivitettiin versioon 27 ja AUTO-yhteensopivuus versioon am42.
Varmemmat mittaussessiot ja avarampi stereo
RT60-analyysi käyttää nyt impulssihuippuun ankkuroitua 1 s + 6 s analyysi-ikkunaa muuttamatta raakaa impulssivastetta. Ohjattu sessio tallentaa enintään kaksi kanavaa rinnakkain, mutta vasta kun kaikki mittauspaikan kaappaukset ovat valmiit.
Stereo link -toiminto on lisäksi korjattu, ja lopputuloksena on aiempaa avarampi stereokuva.
Basso ei voi enää pudota AUTO-pisteytyksestä
AUTO-tilan sovituspisteen alaraja ei enää seuraa ehdokkaan omaa korjauskaistaa. Se ankkuroituu nyt kaiuttimien estimoituun −6 dB -pisteeseen, jota HPF-rajataajuus ja subwoofer-jakotaajuus tarvittaessa nostavat. Korjaamattomat bassomoodit lasketaan siten aina ehdokasta vastaan, eikä optimoija voi enää parantaa pistettään kutistamalla korjauskaistaa basson yläpuolelle — millään suodatintyypillä. Residuaalipiikkien pisteytys käyttää samaa jaettua logiikkaa.
Optimointitavoitteet säilyttävät tarkoituksensa
Tavoitteita “bass” / “prefer bass”, “acoustic” ja “hybrid” ei enää litistetä flat- ja low-ripple-tavoitteisiin. Jokainen säilyttää nyt oman identiteettinsä koko haun läpi, joten näiden tavoitteiden oma sijoituslogiikka on oikeasti käytössä. Kaikki turvarajat ja korjauskäyttäytyminen säilyvät täsmälleen ennallaan.
Huoneeseen mukautuvat korjauskaistat
Temporal Decay Control ja hybridi-IIR-leikkaukset kaventavat nyt taajuuskaistansa huoneen estimoituun Schroeder-taajuuteen, jossa modaalinen korjaus on fysikaalisesti perusteltua. Kaistat vain kapenevat — ne eivät koskaan ylitä aiempia 300 Hz:n ja 200 Hz:n ylärajoja.
Aitoa jälkikaiuntadataa importatuille mittauksille
Kun WAV-impulssivaste tuodaan ilman RT60-metadataa tai sidecar-tiedostoa, DecayCore laskee RT60:n ja sen taajuuskaistat nyt suoraan tuodusta impulssivasteesta samalla huippuun ankkuroidulla analyysi-ikkunalla kuin sisäänrakennetuissa mittauksissa. Adaptiivinen target, decay-vihjeet ja Temporal Decay Control käyttävät importeille nyt aitoa mitattua jälkikaiuntaa geneeristen vakioiden sijaan.
UI
Uusi retro-teema. C64 on ollut aina lähellä sydäntä.
[1.1.8] - 14-7-2026
Measurement guidance
Added guidance for adjusting the volume level during measurement.
Faster and more reliable automatic mode
- Automatic mode is now approximately 52% faster on the Linux test machine.
- The automatic worker count now defaults to one, while explicit worker settings remain unchanged. Optuna pruning on the serial execution path was also fixed.
- Stereo presolve now computes only the baseline phase. The final impulse responses remain bit-identical to those produced by the previous presolve implementation.
- Expensive copying of preprocessing results was removed. The measurement core is cached while run-specific state remains independent.
- The stereo-level window now has a cache that covers both channels and all relevant parameters.
- The measurement-fixed cache now uses a content hash of the measurement data instead of
id()values. Reused NumPy object identifiers can therefore no longer return DSP precomputation from the wrong measurement. - The leveling cache now has a single canonical owner in
state_cache.py. The API accesses it directly, and redundant copy fields were removed.
Cleaner DSP logging during optimization
- The
quiet_dsp_info_logging()context uses a thread-local counter and alogging.Filterinstalled once on theDecayCore.dsplogger. INFO and DEBUG messages are suppressed only in the muted thread, while WARNING and higher-severity messages always pass through. run_pipelinenow suppresses DSP logs wheninclude_response_arrays=False, which covers score-only trials in search, polish stages, and the refine cache. Winner materialization withinclude_response_arrays=Truecontinues to write complete entries torun.log. Because each trial’s entire pipeline runs in one thread, the setting covers the full DSP chain.
Bass Integration
- Canonical evaluation now uses the measured response, the generated left, right, and subwoofer FIR filters, and exactly the same CamillaDSP IIR model as the export path.
- Every FIR-based candidate is evaluated across nine perturbation scenarios using ±1 dB gain and ±0.5 ms timing offsets. Ranking combines the nominal score with the p90 score.
- A rejected or infeasible final candidate is blocked by a hard gate, and the subwoofer output is removed from the exported result.
- The optimized subwoofer LPF value is no longer modified afterward by the +20 Hz rule.
- Dual-subwoofer behavior is modeled as the normalized average of a single bus, without an unrealizable SUB2 delay.
- The cache signature and Bass Integration algorithm version were updated.
Mittausohjeistus
Lisätty ohjeistus äänenvoimakkuuden säätämiseen mittauksen aikana.
Nopeampi ja luotettavampi automaattitila
- Automaattitila on nyt Linux-testikoneella noin 52 % nopeampi.
- Automaattinen worker-määrä on nyt oletuksena yksi, mutta erikseen määritetyt asetukset säilyvät ennallaan. Samalla korjattiin Optuna-pruning sarjapolussa.
- Stereopresolve laskee nyt vain baseline-vaiheen. Lopulliset impulssivasteet vastaavat bittitarkasti aiemman presolve-toteutuksen tuloksia.
- Raskas esikäsittelytulosten kopiointi poistettiin. Mittausydin tallennetaan välimuistiin, mutta ajokohtainen tila pysyy itsenäisenä.
- Stereotason ikkunalle lisättiin välimuisti, joka huomioi molemmat kanavat ja kaikki olennaiset parametrit.
- Measurement-fixed-välimuisti käyttää nyt mittausdatan sisältötiivistettä
id()-arvojen sijaan. Uudelleenkäytetty NumPy-objektitunniste ei voi enää palauttaa väärän mittauksen DSP-esilaskentaa. - Leveling-välimuistilla on nyt yksi kanoninen omistaja
state_cache.py-tiedostossa. API käyttää sitä suoraan, ja tarpeettomat kopiokentät poistettiin.
Selkeämpi DSP-lokitus optimoinnin aikana
quiet_dsp_info_logging()-konteksti käyttää säiekohtaista laskuria jaDecayCore.dsp-loggeriin kerran asennettavaalogging.Filter-suodatinta. INFO- ja DEBUG-viestit vaimennetaan vain kyseisessä säikeessä, mutta WARNING- ja sitä vakavammat viestit päästetään aina läpi.run_pipelinevaimentaa DSP-lokit, kuninclude_response_arrays=False. Tämä kattaa score-only-trialit haussa, polish-vaiheissa ja refine-välimuistissa. Voittajan materialisointi asetuksellainclude_response_arrays=Truekirjoittaa täydet tiedotrun.log-tiedostoon kuten ennenkin. Koska trialin koko putki suoritetaan yhdessä säikeessä, asetus kattaa koko DSP-ketjun.
Bass Integration
- Kanoninen arviointi käyttää nyt mitattua vastetta, generoituja vasemman ja oikean kanavan sekä subwooferin FIR-suodattimia ja täsmälleen samaa CamillaDSP:n IIR-mallia kuin vientipolku.
- Jokainen FIR-pohjainen ehdokas arvioidaan yhdeksässä perturbointitilanteessa käyttäen ±1 dB:n tasoeroja ja ±0,5 ms:n ajoituseroja. Sijoitus yhdistää nimellispisteen ja p90-pisteen.
- Hylätty tai toteuttamiskelvoton lopullinen ehdokas estetään hard gatella, ja subwoofer-ulostulo poistetaan vietävästä tuloksesta.
- Optimoitua subwooferin LPF-arvoa ei enää muuteta jälkikäteen +20 Hz:n säännöllä.
- Kahden subwooferin toiminta mallinnetaan yhden väylän normalisoituna keskiarvona ilman käytännössä toteuttamatonta SUB2-viivettä.
- Välimuistin allekirjoitus ja Bass Integrationin algoritmiversio päivitettiin.
[1.1.7] - 24-6-2026
Automatic mode: bass correction restored for every filter type
Fixed an issue where automatic mode could leave low-frequency room modes uncorrected — the correction range started around 120–140 Hz instead of reaching down to the high-pass cutoff. The residual-peak score was measured only inside the chosen correction band, so the optimizer could “hide” an uncorrected bass mode by raising the lower correction bound (mag_c_min) above it and scoring a clean (but bass-less) result. The residual window is now anchored to the high-pass cutoff — and to the subwoofer crossover when bass integration is active — instead of the optimizer-chosen lower bound, so uncorrected bass modes are always penalised and automatic mode corrects the bass for every filter type. The Asymmetric (low-latency) filter additionally gets softened deep-bass residual scoring, because its short pre-ring window leaves a partly unavoidable residual that should not push the optimizer away from correcting the bass.
Cache versions were bumped; previous automatic-mode results are recomputed on the next run.
Automaattitila: basson korjaus palautettu kaikille filtterityypeille
Korjattu vika, jossa automaattitila saattoi jättää matalat huonemoodit korjaamatta — korjausalue alkoi vasta noin 120–140 Hz:stä sen sijaan että olisi ulottunut alas ylipäästösuotimen rajataajuuteen asti. Residual-peak-pisteytys mitattiin vain valitulla korjauskaistalla, joten optimointi pystyi “piilottamaan” korjaamattoman bassomoodin nostamalla korjauksen alarajan (mag_c_min) sen yläpuolelle ja saamaan puhtaan (mutta bassottoman) tuloksen. Residual-ikkuna ankkuroidaan nyt hpf:n rajataajuuteen ja subbareiden jakotaajuuteen kun bass integration on käytössä, optimoinnin valitseman alarajan sijaan, joten korjaamattomat bassomoodit rangaistaan aina ja automaattitila korjaa basson kaikilla filtterityypeillä. Asymmetric (low-latency) -suotimelle pehmennetään lisäksi basson residual-pisteytystä, koska sen lyhyt pre-ring-ikkuna jättää osin väistämättömän jäännöksen, jonka ei pidä työntää optimointia pois basson korjaamisesta.
Cache-versiot päivitettiin; aiemmat automaattitilan tulokset lasketaan uudelleen seuraavalla ajolla.
[1.1.6] - 21-6-2026
Rust replaces Numba
Rust replaces Numba from version 1.1.6 onward. This results in significantly smaller packaged builds of the application. No other functional changes.
Rust korvasi Numban
Rust korvasi Numban versiosta 1.1.6 eteenpäin. Tällä saatiin aikaan huomattavasti pienemmät paketoidut versiot ohjelmasta. Ei muita toiminnallisia muutoksia.
[1.1.5] - 20-6-2026
Hybrid FIR-IIR modal cuts
The IIR search now always runs at higher resolution (262144 taps), even when the user’s FIR filter tap count is much lower, such as 2048 taps. This makes DecayCore’s modal correction benefits more practical for hardware DSP setups as well. IIR filter details are shown in the UI and included in the filter package generated by the application.
HPF
When the tap count is below 65536, DecayCore now creates the HPF in IIR form. This leaves more FIR taps available for phase correction.
Hybrid FIR-IIR modal cuts
IIR haku toimii nyt aina suuremmalla tarkkuudella (262144 tapsia) vaikka käyttäjän FIR-filtterin tapsi määrä on huomattavasti matalampi (esim 2048). Tämä tuo ohjelman hyödyt myös käyttöön rautapohjaisilla DSP-ratkaisuilla. IIR filtterien tiedot löytyvät UI:sta sekä filtteri paketista, jonka ohjelma tekee.
HPF
Jos tapsien määrä on alle 65536 niin ohjelma tekee HPF:n IIR-muodossa. Näin vaiheen korjaukselle jää enemmän tapseja käyttöön.
[1.1.4] - 19-6-2026
Bass Integration v2 — phase done right
The headline of this release is a rebuilt bass integration engine. Instead of chasing the flattest possible magnitude response, v2 optimizes for the best possible phase behavior through the crossover region — the part that actually determines how tight, fast, and connected the low end feels. The result is bass that locks in with the mains, with cleaner transients and a more cohesive transition between subwoofer and main speakers.
Higher-resolution exports
Multi-rate export now reaches even further, adding 352.8 kHz and 384 kHz to the available export sample rates. High-resolution and DSD-adjacent workflows are now fully covered, so you can match the exact rate your playback chain expects without resampling.
More accurate, more reliable filtering
Several improvements sharpen the core DSP. The −6 dB calculation is now more robust, giving more dependable crossover and bandwidth measurements. Stereo policy and filter generation have been reworked with new guard thresholds and smoothing functions, producing cleaner, more stable filters and fewer edge-case surprises across a wider range of measurements.
Better AUTO results out of the box
Cache winner polish is now enabled by default. AUTO mode automatically refines its best candidate, so you get a more finished result without changing any settings — better default quality with zero extra effort.
Bass Integration v2 — vaiheenkorjaus pääosassa
Tämän julkaisun terävintä kärkeä on uudelleenrakennettu Bass Integration-moottori. Sen sijaan, että v2 tavoittelisi mahdollisimman tasaista vastetta, se optimoi parhaan mahdollisen vaihekäyttäytymisen jakotaajuusalueella — juuri sen osan, joka ratkaisee, miten tiukalta, nopealta ja yhtenäiseltä matalat taajuudet tuntuvat. Lopputuloksena basso lukittuu pääkaiuttimiin, transientit ovat puhtaampia ja siirtymä subwooferin ja pääkaiuttimien välillä on puhtaampi.
Korkeamman resoluution vientiformaatit
Monitaajuusvienti yltää nyt entistä korkeammille taajuuksille : valittaviin näytteenottotaajuuksiin on lisätty 352,8 kHz ja 384 kHz. Tapsien määrä on kova. Korkearesoluutioiset ja DSD formaatit ovat nyt täysin edustettuina, joten dsp:si voi valita juuri sen taajuuden valmiista paketista, jota toistoketjusi odottaa, ilman tarvetta uudelleen näytteistämiselle.
Tarkempi ja luotettavampi DSP-moottori
Useat parannukset terävöittävät DSP-moottoria. −6 dB:n laskenta on nyt vakaampi, mikä antaa luotettavammat tulokset jakotaajuuksien laskentaan. Stereo-policy ja suodattimien generointi on uudistettu uusilla suojakynnyksillä ja pehmennysfunktioilla, mikä tuottaa puhtaampia ja vakaampia suodattimia sekä vakaamman lopputuloksen erillaisilla mittausdatoilla.
Parempia AUTO-tuloksia suoraan oletuksena
Välimuistin voittajan viimeistely on nyt oletuksena käytössä. AUTO-tila hienosäätää automaattisesti parhaan ehdokkaansa, joten saat viimeistellymmän tuloksen muuttamatta mitään asetuksia — parempi oletuslaatu ilman ylimääräistä vaivaa. Toimii myös toisella ajolla, kun cache-ajo on käytössä.
[1.1.3] - 14-6-2026
New UI — cleaner, faster, more polished
DecayCore 1.1.3 brings a clear visual refresh to the NiceGUI app. The new layout is easier to scan, sections feel more consistent, and important controls are easier to find without digging through the page. Basic, Advanced, Target, Files, Window, and XO views now feel more connected, making the whole workflow smoother from setup to export.
Better guidance and clearer everyday use
This release also improves the small details that shape daily use. Target preview information is presented more clearly, the User Manual dialog is cleaner and easier to close, and responsive theme updates help the app look better across different screen sizes. Even simple actions now feel more focused.
Linux measurement — easier routing, better subwoofer handling
Built-in measurement has been improved especially for Linux users. Output-channel handling for subwoofer measurements is now more robust, routing is clearer, and the measurement UI does a better job of supporting real-world device setups. The result is a simpler measurement path with less guesswork and better confidence when selecting outputs and running captures.
[1.1.2.1] - 13-6-2026
AUTO Mode cache compatibility — cleaner upgrades, fewer stale decisions
DecayCore 1.1.2.1 is a focused reliability update for AUTO mode. Cache and target-search compatibility markers have been refreshed so new search behavior is not mixed with older stored results. In practice, this makes upgrades feel safer and more predictable: AUTO mode starts from the right assumptions, avoids reusing outdated target-trial data, and keeps its decisions aligned with the latest logic.
Smoother day-to-day use
This is a small release, but an important one for trust. If you move to 1.1.2.1 after earlier 1.1.x builds, DecayCore is now better at knowing when old cache data should be left behind, helping searches stay consistent instead of inheriting stale optimization history.
[1.1.2] - 12-6-2026
Phase correction — a major step forward in timing and focus
DecayCore 1.1.2 delivers a significant upgrade to phase correction. The new behavior improves timing precision and stereo focus more confidently, while staying conservative where the measurement does not support aggressive correction. In practice, this means cleaner transients, better coherence through the critical correction range, and a more natural result without pushing phase work too far.
Mixed-phase behavior — stronger benefits, safer boundaries
Mixed-phase correction now does a better job of turning real acoustic evidence into audible improvement. DecayCore is more selective about where phase correction is useful, more careful around risky regions, and better at preserving stable behavior above the frequencies where room correction should stay restrained.
Better real-world confidence
This release also improves how DecayCore balances phase benefit against phase risk in real rooms. The result is a more trustworthy correction profile: stronger where timing cleanup helps, calmer where the room or measurement suggests caution.
[1.1.1] - 11-6-2026
Measurement blending — smarter multi-position merging
DecayCore now combines multi-position measurements more carefully. Low frequencies still benefit from shared room averaging, the middle range blends smoothly, and the high end stays anchored to the main listening position. That means cleaner results and fewer unwanted high-frequency dips.
Acoustic confidence — more reliable decisions in real rooms
Confidence and modal detection are now more robust against noisy measurement data. New frequency-local thresholds help DecayCore keep clear bass problems in focus while ignoring misleading high-frequency noise.
RT60 and stability — stronger support for difficult measurements
RT60 fitting is now more resistant to spikes and outliers, giving DecayCore a steadier view of room decay. Cache handling has also been updated so the new analysis logic stays consistent and predictable in AUTO mode.
[1.1.0] - 11-6-2026
AUTO Mode — More room-aware correction decisions
DecayCore’s AUTO mode now makes correction decisions from a stronger acoustic model. Modal support, decay need, confidence, repeatability, null risk, and reflection risk are evaluated together, helping the filter focus on problems the measurement actually supports while staying conservative around uncertain or risky regions.
Residual peaks — Smarter handling of stubborn bass problems
Residual peak analysis is now more modal-aware. DecayCore can distinguish real room-mode buildup from ordinary ripple more reliably, promote well-supported modal residuals, and refine the winner around the frequencies that matter most. This improves cleanup of stubborn low-frequency peaks without turning AUTO mode into an over-correction engine.
Bass correction — Better confidence where the room allows it
Low-frequency correction is now easier to unlock when the measurement is consistent. Q-factor estimation, robust gradient checks, adaptive RT60 delta limits, and tuned confidence thresholds help DecayCore separate correctable bass buildup from low-confidence measurement artifacts.
Hybrid IIR + FIR — More useful modal targeting
Hybrid IIR modal cuts are now better integrated with residual peak winner polish. When a supported modal peak remains after FIR correction, AUTO mode can explore a targeted Hybrid IIR option with safer frequency bounds and confidence-aware gating. The default upper modal range has been expanded to 200 Hz for rooms where the evidence supports it.
Advanced controls and reporting — Clearer, more inspectable results
Advanced confidence-pull controls now expose frequency range and separate cut/boost shaping behavior. Presets have been updated, and result summaries report the applied confidence-pull behavior more clearly, making it easier to understand why the final filter is cautious, assertive, or somewhere in between.
Reliability — Cache signatures updated for the new acoustic policy
AUTO cache signatures now include the updated residual peak scoring, gain authority, confidence model, and Hybrid IIR policy details. This prevents older cached decisions from being reused under the new 1.1.0 acoustic logic.
[1.0.9.3] - 9-6-2026
Target Synthesis — Enhanced cache and algorithm stability
Target curve synthesis now includes algorithm versioning in cache keys, ensuring compatibility across updates. This prevents stale cached targets from being incorrectly reused when synthesis logic changes, guaranteeing more reliable and predictable results in AUTO mode.
Prediction Plot — Clearer target visualization
The prediction plot now prominently displays selected targets, making it easy to see which house curve is being applied to your measurement. Visual clarity has been improved for faster interpretation of target-curve choices and correction alignment.
Refined null guard handling
The null guard target implementation now features improved maximum frequency constraints, providing better control over bass region protection and preventing overly aggressive corrections in critical low-frequency bands.
[1.0.9.2] - 8-6-2026
Documentation — Enhanced User Manual and clarity
The User Manual has been significantly improved with clearer descriptions of the Crossover (XO) Phase Model and better real-world examples. A new performance example demonstrates DecayCore’s effectiveness on actual challenging room measurements, making it easier to understand what the tool can achieve in practice.
Results — Improved badge rendering and formatting
Status badges and performance indicators are now rendered more cleanly and consistently throughout the results interface. Enhanced formatting makes it easier to scan and interpret measurement quality, correction confidence, and acoustic improvement at a glance.
[1.0.9.1] - 5-6-2026
BUG FIX
- Fixed Mixed-phase filter auto-mode mag_c_min behaviour.
[1.0.9] - 5-6-2026
Shutdown — Cleaner application control
Closing DecayCore is now simpler. A new Quit button and tab-close shutdown cleanly close the server without manual intervention. The application now exits gracefully on all platforms.
AUTO Mode — Improved cache and stability
The automatic mode cache is now version-aware, ensuring old cache data doesn’t get mixed with new results. The mag_c_min handling has been unified across all components, making results more predictable and reliable across different measurement conditions.
macOS — Enhanced app bundle
The macOS application now includes a convenient Start_Decay.command launcher, making it easier to start the app. Measurement directory handling improved and app bundle identifier updated for better system integration.
Error handling — Safer audio backend
Audio backend issues (such as PortAudio errors) are now handled with clean error messages instead of crashes. Measurement startup is more robust even on systems with challenging audio configurations.
Code quality — Comprehensive testing and documentation
Added extensive test coverage for configuration, UI state management, and health checks. Internal DSP architecture documentation is clearer to support future development.
[1.0.8] - 4-6-2026
UI — Details panel auto-scrolling
During long AUTO mode runs, the details panel now automatically scrolls to show the latest updates as they arrive. No more manual scrolling needed to follow the search progress in real time.
Adaptive Target — Tuned bass response
The Adaptive target strategy now delivers +2 dB more bass energy, improving the perceived low-frequency balance and punch. This tuning is based on measured RT60 decay data for more accurate, room-aware results.
AUTO Mode — Relaxed RT60 constraint for bass boost
The RT60 delta limit has been increased to 4 dB, allowing AUTO mode to apply the full bass boost range without overly conservative gating. Rooms with varying bass decay characteristics can now achieve stronger, more confident low-frequency correction when the measurement supports it.
[1.0.7] - 31-5-2026
Results — Hybrid IIR/FIR cuts now shown in overview
When using Hybrid IIR + FIR mode, the designed modal cuts are now listed in the results overview. Each applied biquad cut is shown along with rejection reasons for any candidates that were ruled out, making it easy to see exactly what was corrected and why some cuts were skipped.
Plots — updated colors and contrast
The color palette for prediction and results plots has been revised. Curves are now easier to distinguish from each other on both light and dark backgrounds.
Fixes and minor improvements
mag_c_minandmag_c_maxare now handled correctly in managed settings; active band selection logic updated accordingly.
[1.0.6] - 26-5-2026
Hybrid IIR + FIR bass correction — new feature
DecayCore can now combine a small set of IIR Peaking EQ biquad cuts with the standard FIR filter to handle the narrowest, most stubborn room modes more precisely.
- Targeted narrow-mode cuts: the hybrid stage detects confirmed modal peaks in the bass using confidence and group-delay excess thresholds, then designs conservative IIR cuts (no boosts ever). The FIR magnitude target is adjusted so the FIR corrects only what the IIR leaves behind.
- CamillaDSP integration: the designed biquads are exported as Peaking EQ filter entries in the CamillaDSP YAML configuration alongside the FIR convolver, ready to deploy as a two-stage pipeline.
- Conservative by default: disabled by default. Up to 3 cuts per channel, limited to the 20–150 Hz range, with minimum confidence and group-delay excess requirements. Controlled from the Advanced tab.
Adaptive Target — new target strategy
AUTO mode now offers three target selection strategies. The new Adaptive mode derives a custom target directly from room measurements instead of searching through built-in curves.
- Faster runs: skips the multi-curve search phase entirely. When you have a clear room measurement, Adaptive can reach a good starting filter significantly faster than the default search.
- Room-aware target synthesis: starts from a Harman6-style reference and adjusts bass buildup and tilt compensation based on what the measurement actually shows. When RT60 data is available (automatic with DecayCore’s built-in measurement tool), the compensation is further refined using measured decay times across bass, mid, and treble bands.
- Best with built-in measurements: RT60 data is captured automatically when you measure with DecayCore’s integrated tool. External REW or WAV imports typically do not include RT60 data — in that case, the
Auto: search best built-instrategy remains the safer and more thorough choice.
Bass Integration — Direct DAC improvements
- Dual subwoofer support: AUTO mode can now average two subwoofer measurements together before integration, improving reliability when two subs are in use.
- Allpass filter option: Direct DAC bass integration can now apply an allpass filter to improve sub-to-main phase alignment. The option is selectable from the UI and AUTO mode can choose it automatically.
- Smarter integration scoring: cancellation risk evaluation, guard band handling, and group-delay thresholds have all been tightened. More integration candidates are now correctly rejected before they reach the winner stage.
- Clearer rejection reasons: when a bass integration candidate is dropped, the reason is now logged explicitly so it is easy to understand why a particular configuration was ruled out.
Auto mode
- Winner rationale: AUTO mode now explains why a particular filter was selected, including the key factors that made it the winner. This appears in the diagnostics and search results sections.
- Per-run compute context: auto mode now builds a stable computation context at run start and caches intermediate results within that run, reducing redundant recalculation during long searches.
- Measurement metadata identity: the measurement identity is now tracked more precisely through DSP policy, ensuring the cache correctly separates results that differ only in measurement or policy details.
- Corrected the maximum safe boost cap to 8 dB for consistency across all code paths.
Measurement
- SNR (signal-to-noise ratio) and timing mode are now shown in the measurement summary after a built-in measurement session.
Performance / Cache
- Plot render cache is now cleared together with other runtime caches when a reset is triggered.
- Materialize cache is pruned when it grows too large, preventing unbounded memory use during long auto mode searches.
CamillaDSP
- Config file supports version > 4.xxx
[1.0.5] - 19-5-2026
Performance / Auto mode — major speedup without quality loss
- Parallel target curve evaluation: target curve trials now run concurrently via ProcessPool workers instead of sequentially, substantially reducing the target selection phase duration.
- Dynamic ripple constraints for Optuna: search refinement now uses measurement-adaptive ripple bounds, shrinking the search space more efficiently and converging to better results with fewer trials.
- Improved local refinement: new exploration floor calculation and enhanced candidate filtering steer local search toward promising regions, eliminating wasted trials.
- Tuned Optuna parameters: search configuration updated based on performance profiling — trial counts reduced where they add no value, increased where they matter.
- Earlier candidate filtering: weak candidates are pruned earlier in the search, preventing poor choices from advancing to later stages and accelerating convergence.
- Added IR validation metrics to the finalization stage to verify winner quality before selection is locked.
- Improved validation feedback is now surfaced more clearly on the results page.
- Added dynamic search space shrinking: when local refinement finds a strong anchor, the variation range contracts automatically.
UI
- Condensed auto mode status messages for improved clarity and information density during a run.
- Improved error handling and logging across several modules.
Cleanup
- Removed remaining CamillaFIR legacy modules; all replaced with DecayCore equivalents.
- Suppressed Optuna experimental warnings and reduced console noise during auto mode runs.
[1.0.4] - 16-5-2026
Bass Integration (BETA)
- Implemented Direct DAC Bass Integration and Subwoofer Targeting for improved low-frequency channel routing.
Crossover
- Enhanced crossover filter functionality with updated YAML export settings.
Plots
- Added combined channel results to prediction plots and enhanced plot parameters.
Performance / Auto mode
- Added Optuna runtime cache clearing function integrated with
reset_runtime_caches. - Optimized Optuna memory usage by disabling persistent journal in cache refinement.
[1.0.3] - 14-5-2026
- GitHub Actions : sounddevice module fix for macOS builds
[1.0.2] 14-5-2026
Export
- Export ZIP now includes bypass FIR WAV files (identity impulse at the same peak position as the correction filter) alongside the correction filters. Thanks for the idea : ShadowBoxer @ audiosciencereview.com
- Export ZIP now includes a bypass HLC config file, making it easy to A/B between corrected and bypassed signal without reloading a different config.
[1.0.1] 14-5-2026
- Optuna memory-leak fix
[1.0.0] 11-5-2026
- Release DecayCore 1.0.0
- Name change : CamillaFIR –> DecayCore
CamillaFIR
[4.3.3]
Automatic mode
- AUTO mode now detects room modes and uses that information when deciding how much time-domain correction to apply. Results summary shows which modes were found and how they were handled.
- Filter search is smarter: frequency range adapts to the measurement and the search explores a wider variety of filter shapes.
- Winner selection now explains phase-related decisions in the results text so it is easier to understand why a particular filter was chosen.
- Improved stability and consistency of repeated AUTO runs on the same measurement.
Results & export
- Export summary now includes room mode information alongside the existing correction details.
[4.3.2] - 2026-05-03
Automatic mode
- Performance upgrade with wider search range
[4.3.1] - 2026-04-26
Automatic mode / Diagnostics
- Added excess phase strength and residual peak polish details to export summary text and results sections so those winner polish decisions are visible after each AUTO run.
- Enhanced diagnostics logging in auto flow for improved traceability of filter parameter decisions.
Automatic mode / Scoring
- Enhanced residual peak metrics and scoring so candidates with excessive in-band residual peaks are filtered more aggressively before final AUTO mode selection.
- Updated auto mode filter priors (source and phase limits) for improved search quality.
DSP / Performance
- Added caching for preprocessing and smoothing functions with runtime cache statistics, reducing redundant FFT and smoothing passes in repeated auto mode runs.
- Optimized slope limiting functions for improved DSP algorithm throughput.
- Added
include_response_arraysoption togenerate_filterandgenerate_filter_pairfor callers that need response data alongside the generated filter. - Enhanced
apply_adaptive_fdwwith profiling support and refactored smoothing cache handling.
Config / Auto mode
- Updated auto mode filter smoothing to a fixed 1/96-octave value across all configurations; removed from Optuna search space.
- Disabled low bass cut as default across auto mode configurations.
- Adjusted slope options and filter configuration parameters for improved stability.
Build / Packaging
- Enhanced build process with 7zip compression for release archives.
- Updated PyInstaller hidden imports and added NiceGUI hook for data file collection to improve packaged build completeness.
Tests
- Added robust RMS helper functions with corresponding tests.
- Extended test coverage for TDC metrics, boost limit telemetry, and auto mode caching mechanisms.
- Added unit tests for adaptive FDW filtering functionality.
[4.3.0] - 2026-04-24
Automatic mode / Stereo policy
- Added automatic stereo policy refinement stage so AUTO mode can evaluate L/R coherence, stereo width (IACC), and per-channel improvement together and apply a final stereo-aware polish pass.
- Added
stereo_policy_refinemodule with dedicated scoring for stereo coherence, stability, and IACC penalty metrics. - Exposed stereo auto policy configuration through
StereoAutoPolicyConfigmodel for inspectable and tunable stereo behavior.
Automatic mode / Scoring
- Added residual peak metrics to hard-gate pooling and winner polish so candidates with excessive in-band residual peaks are filtered before final selection.
- Added bass boost metrics and target tracking metrics to scoring ranking, with dedicated penalty columns in the winner summary.
- Added TDC-aware scoring metrics so AUTO mode scoring accounts for temporal decay correction quality alongside magnitude and phase scoring.
- Updated rank score calculations with improved display metrics across orchestrator, materialize, and winner polish stages.
- Adjusted auto scoring range and penalty weights for bass integration, phase limits, and excursion penalties.
- Best metrics from target selection are now carried into the target selection result for more consistent scoring context in refine and finalize stages.
Automatic mode / Winner polish
- Added low bass cut winner polish so AUTO mode can fine-tune
low_bass_cut_hzpost-search when that improves the final winner rank. - Added HPF winner polish so the selected winner’s HPF state is re-evaluated and refined as part of the finalization pass.
- Added target tracking enrichment in winner polish so the applied winner carries richer context for export and reporting.
Automatic mode / Misc
- Changed default
auto_target_modefromadaptivetoauto. - Fixed
filter_smoothto a fixed 1/96 octave value in candidate generation and removed it from the Optuna search space to reduce unnecessary search dimensions. - Improved Optuna trial payload clarity by removing unused constants from trial parameters.
- Added runtime cache clearing functions for auto mode and analysis modules so stale cached state can be reset cleanly between runs.
DSP / TDC
- Extended TDC with telemetry support so TDC reduction metrics are available for auto mode scoring and plot summary reporting.
- Improved TDC scoring integration in correction baseline and auto mode scoring metrics.
DSP / Bass integration
- Refactored filtered branch caching to be bundle-scoped so per-bundle bass integration caches do not bleed across measurement bundles.
DSP / Smoothing
- Refactored DSP smoothing to improve numerical consistency across mag shape, mag stage, and phase residual modules.
- Improved target synthesis high-frequency break point calculation for more accurate HF slope behavior.
Measurement
- Improved measurement session saving logic to capture room position data and session summaries alongside standard IR exports.
- Extended per-device output in measurement session dialog for clearer diagnostics.
Config / Models
- Added
StereoAutoPolicyConfigmodel for stereo auto policy tuning parameters. - Added quality metrics helpers including band filter peak boost calculation.
Reporting / Export
- Updated export summary text to include low bass cut adjustments, HPF winner polish decisions, stereo auto policy diagnostics, and TDC scoring details.
- Enhanced plot summary to reflect TDC metrics and improved winner display fields.
- Fixed default value for
min_worst_channel_improvement_dbin cache signature.
[4.2.3] - 2026-04-19
Plots
- Enhanced prediction plot with confidence-region visualization and a shaded low-frequency guard area so measurement reliability is visible at a glance.
- Refined prediction plot axis configurations and improved error-line width for better readability.
Measurement / RT60
- Integrated RT60 measurement handling and persistence so built-in measurement sessions can extract and carry RT60 data through to DSP and AUTO mode scoring.
- RT60 and harmonic curve data are now propagated into the DSP pipeline and AUTO mode so room-acoustic context is available for candidate ranking.
Automatic mode
- Added
hpf_enablecontrol for AUTO mode so the HPF gate can be managed explicitly during automatic runs. - Implemented adaptive output tilt bounds so AUTO mode tilt search range scales with measurement content.
- Improved error handling in filter pre-correction so marginal edge cases are caught before trial scoring.
- Enhanced logging for pruned trials in cache refine so rejected trials are traceable without adding noise.
Config / DSP
- Updated AUTO mode and DSP processing parameters based on measurement coverage feedback.
- Added advanced manual output tilt handling so manual tilt and auto tilt remain cleanly separated across run modes.
[4.2.2] - 2026-04-18
UI / Workflow
- Added light theme.
Measurement / Diagnostics
- Removed separate measurement audio backend pre-checks from capture/device flows so audibility-test and capture failures now surface from the actual backend or device operation that failed.
[4.2.1] - 2026-04-18
Measurement / Linux
- Improved built-in measurement audio diagnostics so Linux now reports PortAudio/backend failures explicitly instead of collapsing them into a generic missing-
sounddevicemessage. - Added Linux installation guidance that the packaged app still needs the system PortAudio library at runtime for measurement audio.
MacOS
- FIxed starting loop
[4.2.0] - 2026-04-17
Measurement / Workflow
- Added a built-in guided measurement workflow so DecayCore can now play sine sweeps, record Left/Right/Sub captures, reject bad repeats, build spatially averaged results, and save IR WAV bundles ready for the normal filter-generation path.
- The integrated measurement output can feed directly into standard FIR generation and Bass Integration workflows, reducing the need for a separate REW-only capture step when the hardware path allows direct measurement.
Automatic mode / Scoring
- AUTO now carries extracted harmonic curves (
H2/H3) from generated or bundled measurements and uses them as a distortion-aware boost penalty, so candidates that boost already nonlinear bands are ranked more conservatively. - Approx 5x faster compared to earlier versions.
Docs & Tests
- Added regression coverage for harmonic extraction, harmonic-sidecar propagation into AUTO scoring, built-in measurement session/UI flows, and IACC computation/ranking.
[4.1.0] - 2026-04-06
Automatic mode / Subwoofer integration
- Added AUTO-mode Bass Integration for phase-aware subwoofer integration from separate main/sub WAV impulse measurements instead of relying on a manual external crossover workflow.
- Added two AUTO Bass Integration paths:
AVR LFE+Main (decomposed)for receiver bass-management measurements andDirect DAC / CamillaDSP sub outputfor separate main/sub correction. - In AVR mode, AUTO now builds complex predicted totals from
L/R main + L/R subcomponent measurements and keeps the generated output in the normal L/R FIR workflow. - In Direct DAC mode, AUTO can work with one or two subwoofer measurements, recommend a Main/Sub crossover, and generate a dedicated aligned mono Sub FIR alongside the main filters.
UI / Results / Export
- Added Basic-tab Bass Integration controls, profile selection, measurement guidance, and AUTO-only health checks for the new subwoofer workflow.
- Added results/export reporting for the selected integration mode, recommended crossover, cancellation risk, overlap ripple, sub dominance, and crossover group-delay diagnostics.
- Updated AUTO selected-text and summary wording so Direct DAC runs report
Main/Sub XOandSub HPFterminology instead of generic AVR crossover wording.
Measurement handling / Diagnostics
- Added coherent WAV transfer parsing with a shared anchor so separate main/sub measurements keep their relative timing for phase-aware integration analysis.
- Added crossover recommendation logic that avoids inactive main-speaker regions, evaluates acoustic overlap quality, and keeps AUTO cache signatures sensitive to component split changes.
Docs & Tests
- Added regression coverage for coherent WAV parsing, Bass Integration bundle loading, health validation, crossover recommendation, Direct DAC Sub FIR generation/alignment, and summary formatting.
- Updated README release notes and version references for
4.1.0.
[4.0.3] - 2026-04-01
Advanced UI / Workflow
- Added guided preset buttons for Advanced-tab shaping, bass safety, and confidence-pull tuning, with live summaries so the effective settings are visible without opening every fine-tune control.
- Kept the detailed Advanced controls behind collapsible fine-tune sections and blocked guided preset changes while AUTO mode is managing those settings.
- Improved the Files and Target tabs with clearer upload/local-path status cards, preview-source indicators, a target-preview legend hint, and more robust bundled manual/external-link behavior in the NiceGUI app.
Config / Compatibility
- Introduced shared UI-choice normalization helpers so layout, level mode, level algorithm, and related preset selections accept stable keys, legacy English labels, and translated labels consistently.
- Normalized those stable values through UI collection and pipeline handling while still emitting legacy names where runtime config, summary text, and export diagnostics expect them.
- Kept run/results/status text, manual-target summary output, and export diagnostics aligned with the normalized layout and leveling metadata.
Preview / Performance
- Added cached TXT/WAV measurement parsing for target-preview uploads and local file paths so repeated preview refreshes do not keep reparsing unchanged inputs.
Docs & Tests
- Added regression coverage for Advanced guided presets, target-preview caching, file/path status metadata, translation-safe option normalization, and related manual-target/reporting paths.
- Updated README/version references for
4.0.3.
[4.0.2] - 2026-03-31
Target preview / Manual mode
- Added direct Manual-mode target dragging in the Target tab preview, so the displayed target curve can be moved vertically with the mouse to update the manual target level.
- Added a dedicated Manual target tilt control using a fixed
1 kHzpivot, allowing the target curve shape to be tilted intentionally instead of only shifted up/down. - Added a dedicated right-side tilt handle in the preview so Manual target tilt can also be adjusted with the mouse.
- Added preview-side legend/readout entries for both
Manual levelandManual tiltto make the current manual target settings visible at a glance.
Config / Runtime
- Kept manual target level and manual target tilt as explicit source-of-truth settings, so preview interaction, saved config, and runtime target loading stay aligned.
- Applied Manual target tilt consistently to preview and runtime house-curve loading, instead of leaving it as a visual-only preview effect.
Docs & Tests
- Updated README release notes and version references for
4.0.2. - Added regression coverage for manual target tilt transforms and preview interaction parsing.
[4.0.1] - 2026-03-31
Automatic mode
- Continued the AUTO-mode speed-up work by splitting the search flow more clearly into target, refine, finalize, and materialization stages.
- Added lightweight AUTO-mode profiling and separated Optuna telemetry helpers to make performance tuning and troubleshooting easier without changing the normal workflow.
Architecture
- Introduced an
application/service layer for run-request assembly, system-health checks, and house-curve loading so UI callbacks stay thinner and module responsibilities remain clearer. - Removed more NiceGUI migration scaffolding and aligned the runtime entry flow around
src/decaycore/__main__.py.
Tests & Docs
- Expanded regression coverage around AUTO-mode selection, stereo leveling, summary/reporting polish, and filter-generation smoke cases.
- Updated README release notes and version references for
4.0.1.
[4.0.0] - 2026-03-29
UI
- Replaced the legacy browser UI built on
PyWebIOwith a newNiceGUIfrontend. The interface is now organized around dedicated NiceGUI tab builders, a shared control registry, NiceGUI-native callbacks, and updated run/results sections. - Added NiceGUI-specific status/toast handling and refreshed results rendering to match the new frontend flow.
Architecture
- Split the old monolithic UI and run orchestration into smaller modules such as
ng_app,ng_controls,ng_mode_controls,ng_results_sections,engine_build,engine_run,engine_summary, and theworkflow/helpers. - Continued the auto-mode modularization by exposing the main runtime surface through a dedicated
auto_mode/package instead of keeping the logic behind legacy import paths. - Broke export/report generation into focused modules (
export_bundle,export_outputs,export_scoring,export_summary_text) and added a bundledUser_Manual.mdfor the new app layout.
Tests & Packaging
- Added targeted regression coverage for the NiceGUI application, controls, mode handling, run section, export layout, packaging, and related UI helpers.
- Updated versioned docs/runtime packaging for the
4.0.0release.
[3.6.6] - 2026-03-29
DSP / Internal
- Centralized DSP config and telemetry into dedicated adapters (
dsp_config,dsp_telemetry,mag_telemetry,phase_ir_contracts) so all DSP modules share a single typed configuration surface. - Added
target_synthesisand_pruningDSP modules to separate target-curve synthesis and Optuna trial pruning from core correction logic.
Automatic mode
- Updated Optuna legacy compatibility in cache signature handling so older stored study data is recognized correctly across optuna version changes.
- Split monolithic automatic-mode logic into focused orchestrator modules:
orchestrator_target,orchestrator_refine,orchestrator_finalize,optuna_backend,scoring_metrics,search_entrypoints,runtime_context,refine_eval,winner_polish,materialize, andprotection_seed.
Architecture / Refactoring
- Extracted process execution from
decaycore.pyinto a dedicatedworkflow/package (process_run_flow,process_support) to separate run orchestration from entry-point logic. - Created a
common/package for shared utilities:acoustic_stats,comparison_stats,house_curves, andresult_postprocess. - Split large UI files (
camillafir_ui,camillafir_ui_helpers,decaycore_plot,layout_sections) into focused modules:controls_ir_window,controls_mode,controls_target_preview,layout_builders,layout_theme,plot_generation,plot_summary,process_run_bridge,results_formatters,results_sections, andui_state. - Added
mode_policyto the config layer for centralized Basic/Advanced mode policy decisions.
Tests
- Added tests for DSP config reader, mag post-limits pipeline, phase IR contracts, and filter-pair smoke checks.
Build & Docs
- Updated release build workflow to Node 24.
- Refreshed
guide.mdwith expanded content and updated version references.
[3.6.5] - 2026-03-23
Automatic mode / Persistence
- Added a dedicated AUTO-mode compatibility version so persistent cache and Optuna study data can be separated from the main program version when persistence compatibility changes.
- Updated automatic-mode cache and Optuna storage paths to use compatibility-version specific filenames when needed, with automatic migration from legacy/unversioned files.
- Hardened AUTO-mode persistence loading so incompatible stored data is ignored safely instead of being mixed into a newer compatibility format.
UI & Config
- Kept AUTO-mode compatibility metadata transient at runtime so it is not written into normal user config files.
- Locked AUTO-mode TDC and A-FDW controls more safely in the UI to prevent unsupported preset/control combinations during automatic runs.
- Continued the START-button layout cleanup by keeping the action in its own clearer section.
Docs
- Updated documentation version references for the
3.6.5release.
[3.6.4] - 2026-03-18
Automatic mode
- Added a new automatic-mode goal
subwoofers. subwoofersbehaves like the other AUTO goals, but forces the Smart Scan leveling range to20-200 Hz.- Kept
subwoofersin the local-refine flow so the new goal still uses the normal automatic-mode search/refinement path.
UI & Docs
- Added the
subwoofersgoal into the automatic-mode goal selector. - Updated automatic-mode preview/reporting so the forced
20-200 HzSmart Scan window is reflected consistently. - Refreshed docs version references for the
3.6.4release and documented the newsubwoofersgoal in the README.
[3.6.3] - 2026-03-16
Automatic mode
- Added a residual-pass tie-break stage for near-top finalists so AUTO mode can re-check close winners with residual processing before locking the final preset.
- Added winner-polish passes for
phase_limitandmag_c_min, allowing the selected winner to be fine-tuned after the main search when that improves the final ranking. - Separated cache-ready winner preset data from the fully applied/materialized preset so final UI/export metadata reflects the actual applied winning settings.
Reporting & UI
- Added phase-limit and
mag_c_minwinner-polish details to the automatic-mode summary export. - Updated automatic-mode best-preset reporting in UI/export so
mixed_freqis shown only for mixed filters andphase_limitonly for linear/asymmetric filters. - Routed final AUTO results through the materialized applied preset so winner details stay consistent across results, summary export, and saved metadata.
Plots & Docs
- Improved prediction-plot low-confidence highlighting by merging short gaps and filtering noisy confidence segments before drawing shaded regions.
- Prefer the bundled local Plotly asset when available, falling back to CDN only when needed.
- Cleaned up README structure by removing outdated version-highlight sections and moving the inspiration section to the documentation area.
[3.6.2] - 2026-03-13
DSP / Stereo link
- Improved stereo-linked leveling with a shared window search and quieter-channel anchoring so linked offset selection stays more stable between channels.
- Exposed stereo leveling window and anchor details in the UI for easier inspection of linked leveling behavior.
Plots
- Updated delay-compensated filter plots to remove IR peak delay from displayed phase/group-delay views and improved the scaling of those plots for clearer reading.
Automatic mode / Reporting
- Unified automatic-mode winner score reporting around a single official winner score so summary/export/UI no longer show conflicting
rank_scorevalues for the same run. - Added structured winner score component metadata for reporting while keeping the existing optimizer selection behavior unchanged.
- Hardened pre-energy metric handling so unreliable cases remain explicitly unavailable instead of looking like internal calculation failures.
- Polished summary wording for unavailable pre-energy metrics and cleaned up duplicate RT60 band entries in report output.
Tests
- Extended stereo-linked leveling tests.
- Added coverage for winner score reporting consistency, pre-energy summary formatting, and RT60 band deduplication in reports.
[3.6.1] - 2026-03-12
Versioning & Export
- Centralized program version resolution in
src/decaycore/version.pyso UI/build version text stays consistent across runtime, packaging, and export paths. - Added program version and automatic-mode winner rank to exported ZIP/YAML filenames and CamillaDSP YAML titles for easier result identification.
- Included automatic-mode winner rank in the chosen-target/export metadata shown after the run.
DSP / Leveling
- Reworked leveling window evaluation to use log-balanced medians and more robust window scoring, improving stable offset selection when narrow nulls or drifting sub-window offsets are present.
- Added extra guards so
trans_width=Noneno longer breaks the correction fade stage.
Config
- Normalized persisted
config.jsonfilter type names back to canonical UI labels such asAsymmetric, fixing legacy/internalasymnaming leakage in saved configs.
[3.6.0] - 2026-03-12
Automatic mode
- AUTO mode now keeps the user’s HPF selection available instead of forcing HPF off.
- Response-fit HPF is only auto-applied when the user has explicitly enabled HPF; otherwise the estimated HPF is reported as a suggestion without changing the run.
DSP / Stereo link
- Stabilized stereo-linked target-shift sharing between left and right channels so linked leveling stays more consistent across channels.
Export
- Added runtime version details (
Python,numpy,scipy,optuna) to the automatic-mode summary export.
UI & Docs
- Updated automatic-mode help text to mention the optional HPF selection workflow.
[3.5.9] - 2026-03-12
Packaging
- Added Optuna submodule collection to the standalone, Linux, and macOS PyInstaller spec files so packaged builds include the automatic-mode Optuna backend more reliably.
Export
- Added
Optimizer backendto automatic-mode summary export so saved results now show whether the run usedbuiltinoroptuna.
[3.5.8] - 2026-03-11
Automatic mode
- Improved phase-1 Optuna search so trial parameters now match the actual evaluated preset values more closely, reducing duplicate/mismatch noise in the sampler model.
- Canonicalized Optuna preset parameter handling for persistent studies, improving duplicate detection and reuse of previously evaluated trials across runs.
- Updated remembered/evaluated trial insertion to prefer Optuna completed-trial style recording before falling back to the older enqueue/ask/tell path.
- Added
max_slope_boost_db_per_oct,max_slope_cut_db_per_oct, andconf_pull_max_hzto the main phase-1/global Optuna search space. - Kept those new secondary parameters restricted to the main/global search after testing showed that letting later refine or micro phases retune them reduced result quality.
- Reduced default phase-3 micro trial count and tightened the micro search shrink range so more of the useful optimization happens earlier in the pipeline.
Export
- Expanded automatic-mode winner summary export so the additional phase-1/global Optuna parameters are visible in the saved best-preset text.
[3.5.7] - 2026-03-10
- Optuna optimization
[3.5.6] - 2026-03-08
UI & Results
- Cleared previous results and plots immediately when starting a new run so stale output no longer remains visible during processing.
- Reworked the results view into clearer collapsible sections for acoustic summary, gain/headroom, filter setup, and phase/crossover diagnostics.
- Expanded automatic-mode results with a dedicated winner summary, best-preset table, target-curve top-3 table, and rank-ordered top-5 comparison.
- Moved the completion message into status notices for a cleaner final status presentation.
Automatic mode
- Fixed exact cache-hit micro-refine finalization so recalculated winner metrics and preset data stay synchronized before saving cache/output metadata.
- Adjusted excursion-penalty waiving so the zero-penalty floor is also honored when automatic excursion protection lands exactly on that floor.
Multi-rate & Runtime
- Fixed automatic tap scaling for higher sample rates by scaling directly from the selected 44.1 kHz base tap count, preserving FIR time length more accurately in multi-rate mode.
- Updated the automatic multi-rate tap info panel to reflect the current base tap setting instead of fixed default values.
- Reduced default console noise by lowering normal console logging to
WARNING, while keeping opt-in debug logging available through environment variables. - Hardened PyWebIO pin access and routed preview/visualization failures through the logger instead of noisy direct console prints.
[3.5.5] - 2026-03-07
Automatic mode
- Added exact cache-hit reuse for same measurements + settings in both target-curve selection and preset search, so redundant target trials can be skipped when a matching cached winner already exists.
- Expanded Optuna-backed candidate generation across main search, local refine, micro-refine, and target-curve trials while preserving seeded presets inside the study.
- Stored
best_metricstogether with cached presets/targets so cached winners keep their ranking context for later reporting and export summaries. - Improved target-selection reporting with clearer method labels (
cache hit,trial comparison,cache wildcard, etc.) in status text, logs, and export metadata. - Kept automatic excursion protection seed/final frequency tracking visible in export summaries.
UI & Defaults
- Simplified automatic-mode result presentation by relying on the winner explanation panel instead of repeating the same winner metrics block.
- Trimmed the automatic-mode top-5 table to emphasize the core comparison columns.
- Updated startup defaults to use
Asymmetricas the default filter type. - Added default Optuna sampler settings to config (
multivariate,group,constant_liar).
Docs & Export
- Extended export summary text with selected target-curve method, target-selection grid details, and cached ranking metadata.
- Refreshed documentation version references for the 3.5.5 release.
[3.5.4] - 2026-03-07
Automatic mode
- Refactored automatic-mode code into smaller modules to improve maintainability and make future changes safer.
- Split automatic-mode logic into clearer parts without changing optimization behavior.
Notes
- No DSP changes in this release.
[3.5.3] - 2026-03-06
Automatic mode
- Added adaptive target-curve preselection scoring (fit, boost demand, slope match, asymmetry, mode-band fit).
- Expanded target shortlist logic with spread-based sizing, optional cache wildcard insertion, and milder-step inclusion guards.
- Added optional Optuna pilot sampler for phase-1 candidate generation with automatic fallback to built-in sampler.
- Added
AutoModeConfigoverrides for auto-mode search tuning (trials, refine, hard-gate, micro phase, optuna settings). - Improved phase-1/phase-2 candidate generation so
mag_c_minandlow_bass_cut_hzare actively optimized (also in local refine). - Added auto-tuned excursion protection finalization from measured zero-penalty floor and propagated seed/final excursion metadata.
DSP / Scoring
- Added
boost_candidate_min_hzmetric to correction outputs and run stats for auto-mode protection heuristics. - Updated auto-mode scoring to derive
auto_exc_zero_penalty_hzand waive excursion-bin penalty component when applicable.
UI
- Improved automatic-mode status UX with compact phase text and a collapsible
Automatic mode detailshistory panel. - Reset automatic-mode status details at run start to avoid stale detail carry-over.
- Added
Target curve top-3results table (best rank, avg rank, fit RMS, preselect and penalty metrics, trials).
Export
- Added automatic-mode excursion protection summary line (
seed -> finalfrequency) to export summary metadata.
Dependencies & Docs
- Added
optunatorequirements.txtandrequirements-linux.txt. - Updated docs version references to
v3.5.3in README and official manual.
Tests
- Expanded automatic-mode tests for config overrides, optimizer backend selection, candidate variability, optional Optuna backend, and excursion-penalty waiving behavior.
[3.5.2] - 2026-03-05
Automatic mode
- Improved automatic mode performance to complete optimization faster.
[3.5.1] - 2026-03-05
Automatic mode
- Added target-curve selection mode.
- Fixed AUTO-only control state handling.
UI
- Fixed status timer flicker by updating status text in place.
- Replaced per-second full scope re-render in
update_status()with a persistent status DOM node and JStextContentupdates. - Kept clear/re-render as fallback if
run_jsis unavailable or fails.
Paths & Export
- Added shared path helpers in
app_paths.py. - Unified default export folder to
Documents/DecayCore/filters/<version>on all platforms. - Kept writable/safe fallback guards for export directory resolution.
- Included program version in export ZIP filename.
- Passed program version into
save_export_bundle()for versioned output paths. - Exposed and showed active automatic-mode cache path in results UI.
- Migrated automatic-mode cache path handling to platform app-data with legacy fallback/migration.
- Localized UI labels (
Paths,Item,Path,Export folder,Automatic mode cache) in EN/FI.
[3.5.0] - 2026-03-04
Automatic mode (core)
- Added deterministic seeding based on measurements + key settings so auto-mode trials are reproducible across runs (same input -> same trial sequence).
- Upgraded auto-mode cache schema to
v=3and made it filter-type aware (separate buckets forlinear,mixed,minimum,asym) to prevent cross-filter contamination. - Added cache version mismatch handling: if cached program version differs, cache is ignored and a fresh search is run (with a clear log line).
- Added filter-specific last-used preset fallback seeding (per
auto_goal) when a signature match is not found.
Automatic mode (search / scoring)
- Added Phase2 hard-gate (pre-Pareto) to remove obvious bad candidates by event severity / ripple before building the Pareto front; improves consistency on difficult data without adding trials.
- Added adaptive search-space shrinking (derived from phase-1 stability) for phase-2 local refinement, plus an optional phase-3 micro-refine pass around the best anchors.
- Added optional dual-mode detection (two dominant LF resonances) and mode-ripple-aware scoring/penalties so secondary room modes don’t slip through.
[3.4.2] - 2026-03-03
Core
- Added persistent automatic-mode cache in
~/.camillafir/camillafir_auto_mode_cache.jsonfor cross-run reuse of best presets. - Automatic mode now stores selected target curve in cache (
best_target_curve/best_hc_mode) together with best preset metadata. - Added measurement-signature based target cache map (
target_by_measurement) so identical measurements can reuse previous target choice and skip repeated target-curve trial optimization. - Extended cache entries with
measurement_sigand bumped cache schema marker tov=2. - Added automatic HPF estimation from measured speaker LF response (AUTO mode), including frequency/slope fit with confidence gating.
- Tuned automatic HPF fitting robustness for real-room responses (trimmed residual fit + conservative slope fallback near LF floor), improving auto-enable and reducing false low-confidence outcomes.
Target Selection
- Added optional one-step milder target preference for built-in bass ladders (
Harman*,BK_*) to avoid consistently biasing toward the bass-heaviest curve. - Milder-step switch is guarded by quality thresholds (
rankdrop andfit_rmsincrease limits), so the selected milder curve is used only when quality remains close. - Added data/config toggle
auto_target_prefer_milder_step(default enabled via constant) for controlling this behavior.
[3.4.1] - 2026-03-02
Core
- Upgraded
DecayCore automatic modeto a two-phase search: phase 1 for broad random exploration, phase 2 for local refinement around top candidates with narrower variation. - Added early-stop logic for non-improving runs to reduce wasted trials and move/finish phases faster.
- Added target preselection (
top-3,10 trials/curve) before main auto optimization. - If the user selects a custom target curve, automatic built-in target comparison is skipped and the selected target is used directly.
- Added carry-over seeding so the best target-selection preset can initialize main phase-1 search.
- Added automatic LF
-6 dBestimation from smoothed response data and used it to drive auto protection/correction defaults. - Added
Harman12and separate built-in B&K target variants (BK_Light,BK_Medium,BK_Strong) for broader automatic target coverage.
Scoring
- Improved automatic ranking robustness to avoid
0.000/100edge cases (notably in Minimum Phase workflows). - Updated boost penalty behavior so penalty starts above
3 dBnet boost. - Added/expanded severity-aware DSP event handling in ranking metadata.
- Excursion penalty is now waived when
exc_freqis auto-derived, so automatic protection frequency selection does not self-penalize.
UI
- Automatic mode progress text now updates on every trial and shows richer context: selected target, estimated
-6 dBpoint, derivedlow_bass_cut_hz, derivedexc_freq, phase/trial counters, best score, and elapsed time. - Improved auto-result transparency by exposing winner metrics (rank components and penalties) in top results view.
Export
- Summary export now includes richer automatic-mode metadata: target selection method and candidates, chosen target and seed preset details, and ranking component breakdown (acoustic average, DSP penalty, excursion penalty, boost, events, severity).
[3.4.0] - 2026-03-02
Core
- Added
DecayCore automatic modeas a first-class mode (AUTO) in the mode system. - Automatic mode executes 100 trial presets, ranks results, and applies the best preset before final export.
- Trial status text now updates on every run (
1/100,2/100, …), improving optimization visibility. - Automatic mode ranking combines acoustic score with DSP quality penalties and stability factors.
UI
- Added
DecayCore automatic modeinto the main mode selector next toBASICandADVANCED. - Removed separate automatic-mode checkbox from Basic page (mode selector is now the single control).
- Set automatic mode as default mode in UI/config flow.
- Updated mode descriptions and guidance text to a three-mode model: Automatic, BASIC, ADVANCED.
Config / Compatibility
- Added compatibility mapping between legacy
camillafir_automatic_modeboolean and newmode=AUTObehavior. AUTOnow follows BASIC-style safety policy for guarded controls while running automatic search.
Export
- Summary export includes automatic-mode metadata (trial counts, best rank score, and selected best preset values).
Docs
- Updated
docs/README.mdto featureDecayCore automatic modeas the main v3.4.0 highlight. - Updated EN/FI translation guide texts for the three-mode workflow.
[3.3.1] - 2026-03-01
Core
- Add unsafe_raw_dsp checkbox visible only in ADVANCED mode
- Add bilingual warning text: FOR TEST USE ONLY / VAIN TESTI KÄYTTÖÖN
- Wire unsafe_raw_dsp through config/model/pipeline persistence
- In engine, enable true guard bypass in ADVANCED + unsafe_raw_dsp:
- bypass MAX_SAFE_BOOST cap and disable major correction guard rails
- Force unsafe_raw_dsp=false in BASIC mode
[3.3.0] - 2026-03-01
Core
- Bumped app version to
v.3.3.0. - Refactored
decaycore.pyinto smaller modules to improve maintainability and code manageability. - Refactored
decaycore_dsp.pyinto smaller modules to improve maintainability and code manageability.
Docs
- Updated documentation version references to
v3.3.0. - Updated citation metadata version to
3.3.0.
[3.2.0] - 2026-02-23
Core
- Bumped app version to
v.3.2.0.
Docs
- Updated documentation version references to
v3.2.0. - Updated citation metadata version to
3.2.0.
[3.1.1.2] - 2026-02-22
Build / CI
- Added startup smoke tests to release workflow for all build targets:
- Linux (
dist/DecayCore/DecayCore->http://127.0.0.1:8080) - Windows (
dist/DecayCore/DecayCore.exe->http://127.0.0.1:8080) - macOS arm64 (
DecayCore.appbinary ->http://127.0.0.1:8080) - macOS x86_64 (Rosetta run ->
http://127.0.0.1:8080)
- Linux (
- Release pipeline now fails early if an artifact builds but does not actually start a web server.
- Added failure log tail output in smoke tests to improve diagnostics in GitHub Actions.
Core
- Bumped app version to
v.3.1.1.2.
[3.1.1.1] - 2026-02-22
UI
- Fixed Chromium/Brave chart rendering regression (
Plotly is not defined) by restoring self-contained embedded Plotly rendering for dashboard and Target Preview - Fixed Linux chart visibility issue by avoiding fragile Plotly loader mode in embedded UI charts
- Fixed Target Preview measurement smoothing input mapping to use
filter_smooth(with legacy fallback tosmoothing_level) - Added live Target Preview refresh on
filter_smoothchanges
Build
- Added
pywebio.platform.tornado_websocketto Linux PyInstaller hidden imports for better websocket backend compatibility
[3.1.1] - 2026-02-22
DSP
- Added WAV-only ripple attenuation around correction upper-edge transition in correction + phase stages, plus final FIR IR post-polish while preserving phase and peak scale
- Added alignment guard between
delay_samplesand impulse-peak alignment; falls back to peak alignment when estimates disagree significantly - Aligned WAV parsing closer to TXT baseline with deterministic window/smoothing policy and higher minimum FFT resolution for more consistent results
IO
- Hardened local path handling by cleaning quoted paths and validating local WAV existence before parsing
- Fixed WAV parser import fallback behavior and added configurable
min_n_fftsupport in WAV IR -> FR conversion - Updated WAV source detection to rely on actual input sources/extensions instead of UI format selection
UI
- Added elapsed-time status updates and a run timing breakdown table (Read, DSP, ZIP/PNG, Render, Total, per sample rate)
- Improved completion status to show the real output directory path
- Centralized toast behavior through System Health helpers (dedupe + edge-trigger warnings for max boost/taps and preset toasts)
System Health
- Added explicit L/R measurement source checks (upload/local pair completeness) with dedicated warnings
- Added phase-limit warning when correction limit is set high (above ~800 Hz)
- Improved health gate notifications with centralized, deduplicated toast summaries
Export & Docs
- Added version stamp to generated summary output (
Version: v.3.1.1) - Updated ZIP dashboard PNG path to use combined Matplotlib export when dashboard image export is enabled
- Updated docs/app version references to
v3.1.1and refreshed EN/FI guide + health translation texts
[3.1.0] - 2026-02-21
DSP
- Reworked Mixed Phase excess-phase correction with configurable LF-to-HF fade (
low_freq_full_correction_hz->high_freq_no_correction_hz) and tunable strength (excess_phase_strength) via config only (no UI controls) - Added Mixed-only safety guards for excess correction: absolute excess-delay limiter (
max_excess_delay_ms) and pre-ringing limiter (max_pre_ringing_db) with adaptive down-scaling and diagnostics - Forced Mixed filters to a fixed startup peak position (90 ms) after window/DC steps for more consistent startup timing
- Changed Manual leveling reference to neutral
0.0 dB(instead of legacy75 dB) and applied manual bias explicitly in correction target shaping
UI
- Expanded Target Preview to optionally overlay speaker curves (L/R/avg), align them to level window, and show correction band + level-window context
- Improved leveling UX: BASIC now behaves as Smart Scan only, Auto/Manual level ranges are preserved separately, and Manual dB has quick
- / +step buttons with a neutral-bias hint - Added dynamic BASIC clamp hints into field help texts so constrained controls clearly show active guard rails
- Refined mode guard rails/defaults (including tighter BASIC boost/phase/FDW limits, forced BASIC stereo-link, and updated default Mixed split/IR-left values)
- Localized System Health issue texts and summary headers through EN/FI translation keys
Core
- Pipeline now enforces BASIC policy for leveling (
lvl_mode=Auto) and reapplies mode clamps at run time - Added config/pipeline model support for Mixed excess-phase tuning fields (
excess_phase_strength, correction fade range, pre-ringing cap, excess-delay cap`) as config-only parameters (not exposed in UI) - Added legacy config migration for manual leveling values saved in old absolute-dB style (auto-converted around
~75 dBbaseline)
Docs
- Bumped docs version references to
v3.1.0
[3.0.6] - 2026-02-20
DSP
- Added true fractional-octave gain smoothing (
1/Non log-frequency axis) and switched non-DF smoothing to use it in correction + phase residual shaping - Added post-shape filter smoothing and clamp-aware final smoothing so
filter_smooth/reg_strengthremain visible even when clamp rails are active - Added clamp-dominance diagnostics (
NONE/LOW/MEDIUM/HIGH) with clipped-bin ratio stats for easier tuning and A/B interpretation - Refined Smart Scan leveling window search to be target-independent and ripple-focused (log-frequency detrended stability scoring)
- Hardened TDC control handling: explicit zero support, safe clamping for
tdc_strength, and no-op behavior when strength/max reduction are disabled - Kept theoretical + minimum phase paths unclamped and limited only excess-phase correction with adaptive per-bin clamp (
15..45 deg) based on confidence and frequency - Improved Minimum+OFF IR export behavior with zero-padded causal peak shift, optional strict-off forcing, short anti-wrap tail taper, and DC-removal skip in OFF mode
- Reworked output gain handling to auto-level model (
auto_global_gain = -(realized max boost + margin)) with normalize left as optional extra safety trim - Added stereo-link shared auto gain override so left/right channels use one common attenuation in linked processing
UI
- Clarified Filter Type help text and Asymmetric note to separate causal filter-type behavior from IR export windowing behavior
- Improved help readability by separating base filter-type help and Asymmetric note with a clear line break
- Renamed
gaincontrol to Auto Headroom Margin and surfaced margin/applied auto gain/headroom/final max diagnostics in results + summary output - Removed manual align toggle from UI (time alignment is now always-on by policy) and kept only stereo-link toggle
- Added plot-only auto-gain compensation so predicted/filter curves remain visually comparable despite output attenuation
- Localized multiple section headers and target preview source labels (EN/FI)
Core
- Updated pipeline parsing to sanitize and clamp
tdc_strengthbefore passing configuration forward - Pipeline now forces
align_opt=True, clamps gain margin to non-negative values, and maps UIgaintoauto_gain_margin_db - YAML export now writes
master_gain_db=0.0and relies on DSP auto-gain path for output level management
Docs
- Bumped docs version references to
v3.0.6and moved UI screenshots/TDC image paths underdocs/pics/
[3.0.5] - 2026-02-18
DSP
- Removed unused imports
- Changed A-FDW smoothing 2/3 –> 1/3 to make more precise correction on bass
- Fixed summary export fallback error handling (
except Exception as e) in DSP effective params block
UI
- Clarified summary.txt content
- Added an Executive Summary section (Score, Match, Confidence, RT60, Worst Event) at the top
- Reduced settings noise by showing only core settings in Summary
- Removed duplicate acoustic events section from Summary
- Standardized Summary output to English-only wording
- Replaced symbol-heavy labels with plain text (
dt,Path delta,n/a) for cleaner cross-platform text output
[3.0.4] - 2026-02-18
DSP
- Refactored DSP pipeline into focused modules for preprocessing, correction, phase/IR, and shared utilities
- Improves maintainability and separation of concerns
- Preserves existing processing flow while reducing monolithic engine complexity
- Reworked Mixed Phase blend implementation
- Replaced crossover-FIR convolution blend with frequency-domain blending
- Added smooth raised-cosine transition around split frequency
- Added zero-padded peak alignment (no circular wrap-around)
- Reduces blend artifacts and improves transition stability
UI
- Added Mixed Phase blend diagnostics to DSP info
- Shows per-channel blend split frequency
- Shows per-channel blend transition width
- Expanded system health checks
- Adds sanity checks for leveling range, HPF settings, and Mixed Phase parameters
- Handles latency messaging for Min/Asym low-latency modes
- Improves correction-range and safety messaging clarity
Core
- Updated default IR window fallbacks when UI values are missing
ir_window: 500 msir_window_left: 120 ms
[3.0.3] - 2026-02-16
UI
- Added warnings if correction range is too wide
macOS
- Switched to universal2 build (Intel + Apple Silicon support)
- Fixes “Bad CPU type in executable” on older Intel Macs
[3.0.2] - 2026-02-15
UI
- Simplified and reorganized UI structure for clearer workflow
- Added real-time house curve preview
- Added project logo to the interface
[3.0.1] - 2026-02-14
DSP
- GD-gradient limiter redesigned
- Bass-focused (20–250 Hz)
- Soft limiting (tanh) replaces hard clipping
- Relaxed slope limit: 8 → 30 ms/oct
- Conditionally enabled (bypassed when A-FDW + Bass-first stabilization are active, except in high-risk windowing modes)
UI
- Fixed A-FDW plot rendering issue with measurement sample rates >48 kHz
[3.0.0] - 2026-02-11
Major DSP engine update and smoothing redesign.
UI
- Renamed Psychoacoustic smoothing to DecayCore Reference
- Clarifies that this smoothing is a DecayCore-specific reference/safety view
- Not equivalent to REW-style psychoacoustic smoothing
- View-only (does not affect DSP calculation)
- Added user-configurable parameters for Confidence Pull
- Available in Advanced mode only
- Floor threshold
- Max frequency limit
- Cut aggressiveness
- Boost conservativeness
- Recommended defaults included in help text
DSP
- Replaced legacy fixed 1/24 octave smoothing in filter calculation
- New adaptive smoothing:
- 0–230 Hz: 1/48 octave
- 230–500 Hz: gradual transition
-
500 Hz: 1/3 octave
- Improves LF precision while stabilizing mid/high frequency correction
- New adaptive smoothing:
- Improved Bass-first behavior
- Better alignment with confidence weighting
- More predictable low-frequency correction shaping
- Refined confidence pull handling
- More stable behavior in low-confidence regions
- Reduced over-aggressive boosts in uncertain bands
Build
- Linux build switched to
onedirdistribution- Improves portability and runtime reliability
- Avoids common single-file extraction issues
Behavior changes
- Adjusted default Confidence Floor (0.15 → 0.07)
- Correction operates more freely before safety pull engages
[2.9.5] - 2026-02-08
UI
- Low-bass cut is now toggleable (ON/OFF)
- Added an enable checkbox for
low_bass_cut_hz. - When disabled, the Hz input remains visible but is greyed out (locked) and cannot be edited.
- Disabled state uses an empty value for the cutoff field to represent “off” (instead of
None), improving UI → pipeline compatibility. - UI logic lives in a dedicated helper (
update_low_bass_cut_ui) and renders inside a scope for clean updates.
- Added an enable checkbox for
[2.9.4] - 2026-02-08
CFG
- Fixed low_bass_cut_hz value not saving correctly in config.
[2.9.3] - 2026-02-08
UI
- Fixed typo at psychoacoustic plot smoothing code (1/48 / 1/3 —> 1/6 / 1/3)
[2.9.2] - 2026-02-07
UI
- IR windowing hard restrictions clarified and enforced
- In Basic mode, IR export windowing is now always forced to Auto.
- The windowing mode selector is locked and cannot be changed.
- A persistent warning message is shown to explain the restriction.
- When Filter type = Asymmetric, IR export windowing is also locked to Auto in both Basic and Advanced modes.
- Prevents confusing transient UI states where windowing controls appeared editable even though the value was internally forced back to Auto.
- Ensures UI behavior always matches DSP policy and exported configuration.
- In Basic mode, IR export windowing is now always forced to Auto.
[2.9.1] - 2026-02-06
UI
- Mixed Phase crossover frequency is now state-dependent
- The “Mixed Phase crossover frequency (Hz)” field is active only when Filter type = Mixed Phase.
- For other filter types, the field remains visible but is greyed out (locked) to prevent invalid configurations.
- REW Asymmetric IR windowing restricted to Linear Phase filters
- The “Asymmetric” IR windowing option (REW Asymmetric export) is selectable only when Filter type = Linear Phase.
- For other filter types, the option is shown but greyed out, and the UI displays a warning message:
WORKS ONLY WITH LINEAR PHASE FILTERS
[2.9.0] - 2026-02-06
UI
- Windowing mode simplification
- Removed “Symmetric” and “Off” windowing modes.
- Windowing now offers only:
- Auto – REW-based, adaptive windowing selected automatically from the impulse response.
- Asymmetric – REW-based asymmetric windowing with optional latency reduction.
- Simplifies the UI and focuses on the most effective and reliable windowing strategies.
DSP
- High-pass filter (HPF) magnitude fix
- Fixed HPF handling so it is applied as a true magnitude filter in the FIR path.
- HPF is now applied directly to the correction curve (
gain_db += hpf_db), instead of being baked into the target response. - Ensures magnitude and phase consistency.
- Prevents double-HPF behavior, incorrect low-frequency response, and artificial group delay artifacts when HPF is enabled.
[2.8.9] - 2026-02-05
DSP
- REW Asymmetric low-latency bass safety
- Added automatic safety guards for ultra–low-latency REW Asymmetric mode.
- When latency target (Left window) is below 15 ms:
- Bass-first (A-FDW confidence shaping) is automatically limited to low frequencies.
- When latency target is below 10 ms:
- Low-frequency boosts are disabled (cuts remain allowed).
- Prevents unstable bass behavior, excessive ripple, and aggressive FIR boosts when time-domain constraints become too tight.
- Safeguards are automatic, non-configurable, and only active in REW Asymmetric mode.
[2.8.8] - 2026-02-04
DSP
- Phase correction safety clamp (±45°)
- Room / excess-phase correction is now internally limited to ±45 degrees.
- The clamp is applied only to the correction component (measured − target phase), never to loudspeaker minimum-phase or theoretical crossover phase.
- Prevents excessive phase rotations, pre-ringing, and unstable group delay behavior, especially in low-confidence or sparsely measured regions.
- Improves robustness, repeatability, and subjective transient clarity.
- No user-facing control; this is a fixed safety default.
Analysis & Reporting
- Phase correction clamp status is now always reported:
- Logged during processing (e.g.
max=54.5° -> 45.0°). - Included in
summary.txtper channel. - Shown in DSP info section in the UI.
- Logged during processing (e.g.
UI
- Removed slope-limit envelope visualization from magnitude plots.
- Eliminates confusing shaded artifacts without affecting DSP behavior.
Notes
- No changes to magnitude targets, A-FDW, TDC, leveling, or IR export behavior.
- Existing presets and workflows remain fully compatible.
[2.8.7] - 2026-02-04
Fixed
- Psychoacoustic smoothing corrected.
- IR windowing no longer affects filter level.
UI
- Updated UI text strings and help descriptions.
-
Little update to interface look
[2.8.6] - 2026-02-01
### Changed
- Refactored DSP-related code into a clearer, more modular file structure.
- Separated DSP logic from UI and orchestration layers to improve maintainability.
- Clarified responsibility boundaries between filter generation, windowing, and export logic.
- No functional changes to DSP algorithms or generated filters.
Internal
- DSP modules are now organized to allow easier future extensions.
- Reduced implicit cross-dependencies between DSP and UI code.
- Improved long-term stability by making DSP behavior less sensitive to UI-side changes.
[2.8.5] - 2026-02-01
DSP / IR export
- IR export window edge shape selection (Hann / Tukey)
- Added support for selecting IR window edge shape during FIR export.
- Tukey window includes adjustable alpha parameter (0–1, default 0.25).
- Window shape is applied only at IR export stage (WAV generation).
- REW-style asymmetric export placement fix
- When
rew_asymis selected, FIR impulse peak is placed causally (early in the impulse) instead of remaining centered. - Reduces effective playback latency compared to symmetric placement.
- When
UI / Pipeline
- IR window shape & alpha preserved through UI → pipeline → DSP
- Prevents silent fallback to legacy Hann window.
- Selected window shape and alpha are logged immediately after UI collection for traceability.
Notes
- No changes to FIR magnitude targets, phase correction algorithms, A-FDW, TDC, or auto-leveling behavior.
- Differences between Hann and Tukey exports are sample-accurate and produce non-identical FIR WAV files.
[2.8.4] - 2026-02-01
Misc
- Github actions now makes running files.
[2.8.3] - 2026-01-31
DSP update
- REW-style IR windowing enabled in DSP export path
- Adds support for REW-compatible symmetric and asymmetric IR windowing during FIR export.
- Windowing is applied only at IR export stage (WAV generation), not during correction, target fitting, leveling, or scoring.
- Supported modes:
auto– automatic window selection (default)off– no IR windowingrew_sym– REW-style symmetric windowrew_asym– REW-style asymmetric (causal) window
IO update
- IR windowing type is now included in exported filenames
- ZIP and FIR WAV filenames include a short windowing tag for traceability and A/B comparisons.
- Tags:
auto,off,sym,asym - Example:
DecayCore_<type>_sym_<timestamp>.zip - Example:
L_<type>_<fs>Hz_<timestamp>_sym.wav
Notes
- No change to correction targets, phase modes, FDW, TDC, or leveling behavior.
- This update improves reproducibility and comparability between different IR export strategies.
[2.8.2.3] - 2026-01-30
Io-update
- Fixed ZIP output when multi-rate is enabled. Generate a single CamillaDSP .yml using $samplerate$
DSP-update
- More precise leveling tilt used in magnitude calculation
[2.8.2.2] - 2026-01-29
Ui-update
- updated translations and phase plot to be more clear
[2.8.2.1] - 2026-01-28
Nothing changed DSP or UI
- changed file structure to more debug-friendly format
- filters go now to ./filters directory
[2.8.2] - 2026-01-27
Ui-update
- improved robustness of file upload parsing from browser & added xo_help translation
[v2.8.1.2] - 2026-01-27
Fixed
- Bug fix for modes selection, that was not saving ui state correctly
[2.8.1.1] - 2026-01-27
Ui-update
- Added modes selection (Basic & Advanced)
[2.8.1] – 2026-01-25
Fixed
- A-FDW bandwidth limits
- Corrected incorrect or overly permissive A-FDW bandwidth constraints.
- Prevents misleading smoothing widths and improves consistency between analysis and visualization.
Improved
- A-FDW & TDC guides
- Plot guides and annotations now reflect the effective (clamped) A-FDW bandwidth.
- Improves interpretability of confidence masking and decay-based correction limits.
Notes
- No changes to FIR magnitude targets, phase correction modes, or leveling behavior.
- Maintenance update focused on analysis clarity and safety transparency.
[2.8.0] - 2026-01-24
- Plot export robustness (ZIP outputs)
- Fixed a broken Plotly PNG export path caused by an invalid
try/exceptstructure. - ZIP exports now store dashboard plots as static PNG images generated via Plotly’s native Kaleido backend.
- Ensures exported plots exactly match the HTML dashboard “Download plot as PNG” output.
- Eliminates dependency on
.htmlfiles and localplotly.min.jsfor offline ZIP viewing.
- Fixed a broken Plotly PNG export path caused by an invalid
[2.7.9] – 2026-01-24
Fixed
- Custom house curve upload
- Fixed an issue where user-uploaded house curves could fail to load or apply correctly.
- Improves validation and consistency between UI preview and DSP processing.
Notes
- No changes to FIR magnitude, phase, or leveling behavior.
- Safe update focused on UI → DSP data integrity.
[2.7.8] – 2026-01-23
Added
- Stereo-linked auto-leveling (TXT-compatible default)
- SmartScan level window and gain are computed from a shared L/R reference and applied identically to both channels.
- Eliminates channel-dependent gain drift while preserving automatic delay alignment.
- Correction-band visualization
- Active magnitude correction range (
mag_c_min … mag_c_max) is now explicitly carried through DSP stats and visualized in plots. - Makes it immediately clear where correction is applied and where it is intentionally inactive.
- Active magnitude correction range (
- Reliability / confidence visualization
- Low-confidence frequency regions are visually shaded in plots.
- Helps explain why certain bands are protected or only lightly corrected (measurement reliability, A-FDW behavior).
Changed
- Auto-leveling behavior (default)
- Stereo leveling now uses a single shared window and offset instead of independent per-channel SmartScan decisions.
- Results are deterministic and TXT-compatible by default.
- Summary.txt clarity
- Level window and offset method explicitly indicate stereo-linked operation
(e.g.
ForcedOffset (StereoLink)).
- Level window and offset method explicitly indicate stereo-linked operation
(e.g.
Fixed
- Auto-align gain drift
- Fixed cases where left/right channels could diverge by several dB due to independent leveling window selection.
Notes
- Auto-align delay estimation is unchanged and remains fully automatic.
- FIR magnitude and phase are unaffected by alignment-only time shifts.
[2.7.7] – 2026-01-20
Added
- 2058-safe phase mode
- Disables room phase correction (confidence/FDW/excess-phase) and uses only theoretical crossover phase and minimum-phase where applicable.
- Independent slope limits for boost vs cut
- Separate dB/oct limits prevent gentle boosts from being flattened while still constraining aggressive cuts.
- TDC safety brakes
- Hard cap on total Temporal Decay Control reduction.
- Optional slope limit for predictable, stable decay shaping.
- DF smoothing (experimental)
- Gaussian smoothing with approximately constant Hz width across different sample rates and tap counts.
- Comparison mode
- Locks scoring and plots to a fixed analysis grid (fs/taps) for meaningful A/B comparisons.
- Multi-rate auto-taps mapping
- Maintains constant FIR time length across sample rates (44.1 kHz reference).
Changed
- Refactored leveling logic into a dedicated module for robustness and testability.
- Improved guard logic against unstable phase and excessive corrections.
[2.7.6] and earlier
- Initial public releases and iterative improvements to TDC, confidence masking, and the FIR generation pipeline.
- See commit history for detailed technical changes.