← Back to Finito

Release Notes

Current release 1.13.3 · 16 August 2026

Everything that has changed in Finito, newest first.

Version 1.13.3

Current
16 August 2026 · build 20260816.1

A regular track no longer keeps the Stems card

Opening a stereo file after a stem session now drops that session. The Stems tab, card and “trim each submix” subtitle no longer stay up on a 2-track load.

Version 1.13.2

15 August 2026 · build 20260815.4

Playback no longer stutters after a waveform click

A click on the wave was rebuilding the seek gesture every frame and clearing the live DSP each time, so playback stuttered. The first click still jumps, and a drag still scrubs.

Version 1.13.1

15 August 2026 · build 20260815.3

Impact shows live gain

Each Impact band has a centre-zero meter under the ATK and SUS knobs. It is envelope gain on the current hit, up to ±6 dB. The knobs are the setting; the meter is whether this kick or snare is actually moving. It is not gain reduction and it is not Color Density.

Color Density, Multiband glow, per-band 2× Drive

Single-band Color shows a live Density meter: how much of Color's residual is in the mix right now, against the dry path. Multiband keeps column height as Drive and uses that same residual as a glow on each band. 2× Drive is per band, not a global tone control.

The first click on the waveform seeks

A click that landed while a buffer was already rendering was being overwritten by the old playhead, so it took several tries. The seek now sticks on the first click, and a drag still scrubs.

Light-mode plots use ink

Color band names and drive sit on a small chip instead of the same-hue wash. Stereo L/R and CORR captions, and the Smoothness and Cuts Hz ticks, use the same ink so they stay readable in Light.

Version 1.13.0

15 August 2026 · build 20260815.2

Cuts is its own Character tab

Static Cuts left Smoothness. Analyze proposes permanent notches for resonances that stay put; nothing is applied until you press Cut. Listen plays only what a notch removes, monitoring, never exported. Applied cuts have Depth and Q, plus a mute. A frequency strip on the same log axis as Smoothness shows proposals as dashed ticks and applied cuts as solid ones; click either to listen. The scan no longer offers wide tonal humps, requires a matching harmonic partner before it excludes a peak, and honours the waveform trim.

Versions on the transport

Save up to four master variations and flip A / B / C / D next to Original / Mastered / Reference. Each slot has its own colour. Recalling one returns you to live processing so you hear that version, not the last export bounce.

Direction is a thin strip

Intent, Recheck and Boundaries sit on one row. Empty Reference and Versions cards are gone from that tab. Why These Settings is an info dot on the recommended tiles.

Stereo fields sit on the card

The graticule blends with the tile in both appearances. In Dark the L/R and CORR rails use black wells; in Light they stay clear. Stopped or gated bands draw empty L/R columns. Light uses ink-style particles; Dark uses phosphor.

Also in this release

Character is four tabs: Cleanup, Smoothness, Cuts, Air. Its processing-tab icon is now distinct from Direction. Selected capsules use black type on the accent gradient. Delta is the same amber Listen chip everywhere. Starting Point chips stay selected while Smoothness still matches that point. The in-app help and info cards cover Cuts, Versions, and how to read the stereo tiles.

Version 1.12.0

13 August 2026 · build 20260813.1

Air takes the flutter Smoothness cannot

Air is its own Character tab. It removes fluttering roughness above 6 kHz, the metallic shimmer generative masters leave, without treating a smooth cymbal decay or steady hiss as a problem. Hats are held back for a moment after a broadband hit. The Flutter meter under the knobs shows how much of the 6–20 kHz top is being pulled right now. Character bypass turns it off; monitoring Delta is never exported.

An Adaptive limiter, and Classic stays the default

Adaptive splits the ceiling across four bands so a kick does not duck the whole mix, then a linked true-peak pass keeps the delivery safe. Classic, the original linked limiter, remains the default and the value older sessions restore.

What you hear is what you export

Preview, export, album and the background worker now send one shared render request, so adding a control is a build error until every path fills it. Static Cuts, Color Mix, Smoothness Response and Fixed Dynamic EQ bands were audible live and missing from one or more renders; they travel now. Live limiting uses the same 2.5 ms lookahead as export. Color uses the same antialiasing model live as it does on the file. Live loudness carries the last render’s makeup so the audition is no longer about a decibel quieter than the bounce.

Stereo fields that read like a goniometer

Each band is a square Lissajous field: mid is up, side is left and right, level is calibrated to 0 dBFS so a quiet band stays a small cloud. The display is a particle cloud, not a scribble; brightness is density. Matching L/R level and correlation rails sit on every tile. In Light the tiles use a pale paper well; in Dark they stay a phosphor instrument.

Dark, Light, or System

Finito ▸ Appearance switches the window. Dark is still the default. Cards, overlays, knobs, plots and type follow, including the Summing Stems and export progress cards that used to stay dark on a light window.

Processed Stems + Master

Stem sessions can export each stem after its own chain, plus the stereo master. The stems you hear soloed in the editor are the files you get.

The per-stem suppressor now runs before that stem’s compressor

It used to run after, so a ringing band drove the compressor into ducking the whole stem. The chain is now trim, EQ, resonance suppressor, compressor, then sum. A session that used both resonance and compression together will render slightly differently on reopen. Sessions saved before the move restore the old order.

Also in this release

Mixed phase under the Tone graph keeps kicks minimum-phase below 250 Hz and runs the rest linear. Bypass / Enable sits next to Reset instead of a full-width banner. Uncompress Preview now auditions a 20 second window with the most section movement. Applying a repair no longer deletes the new working file. The in-app help covers the new fields, Air, Mixed phase, section bypass, and Processed Stems.

Version 1.11.2

10 August 2026 · build 20260810.1

Clearer Tone guidance

The in-app help and Tone guidance now separate two ideas that are easy to conflate: the magenta curve is the EQ response, while the colored spectrum is captured audio energy. Pre shows audio before the Tone stage, Post shows it after the active Tonal and Dynamic EQ stages, and Both overlays the two with Post in front.

Smoother processing, better explained

The guide now explains that normal Tone and Dynamic EQ moves glide during playback, and that Linear Phase changes transition smoothly while preserving its phase-aligned behavior. Per-stem guidance now also makes clear that stem EQ changes are smooth in playback and included in the exported master.

Version 1.11.1

7 August 2026 · build 20260807.1

Per-stem processing reaches your exported master

If you master stems, this is the important one. Per-stem EQ, compression and resonance suppression were audible while you worked and then absent from the file you exported — the export was handed the summed audio without the individual stems. Anything you exported from a stem session in 1.10.0 or 1.11.0 carries none of its per-stem settings, and is worth exporting again.

Two further faults in the same area were found and fixed while tracking that down. Per-stem resonance suppression had never reached an exported file since it shipped, because the settings were dropped between the app and the render. And a per-stem change no longer leaves the export quietly out of date: it now marks the master stale in about a second rather than twenty, so exporting straight after an edit gives you the edit.

Per-stem saturation

Harmonic colour for one source before it joins the sum — drive the drums without the vocal following them into the same circuit. Four characters, a parallel Mix control, and a Trim, with the same 2× oversampled waveshaper the bus Color uses.

It is now band-limited to each character’s own range. Shaping the whole spectrum pulled the sub and the air down by about 3 dB and pushed a great deal of intermodulation into the low mids; that is fixed, and the harmonic content you actually want is untouched. Auto Gain compensates the level the circuit costs — roughly 1 dB on Tape and 8 dB on Hot — so an A/B compares tone rather than loudness.

Reaching the controls without a mouse

Knobs, the character selectors, the transport and the meters now report their name and value to VoiceOver, and knobs can be adjusted with the arrow keys. An adjustment made that way lands on the undo stack exactly like a drag.

macOS 14 Sonoma is now the minimum

Finito moved to the current SwiftUI observation system, which the app needs to keep large sessions responsive as more per-stem tools arrive. That requires macOS 14. If you are on macOS 13 Ventura, 1.11.0 remains available and the updater will not offer you this release.

Version 1.11.0

4 August 2026 · build 20260804.1

Smoothness shows you where it is working

The tool watched 24 bands, worked out a reduction for every one of them, and then averaged the lot into a single “dB GR” number. That number cannot tell you the difference between working subtly and doing nothing at all, which cost real time to establish more than once. Every band now draws its own bar on the focus graph while you play, so a ring at 4 kHz lights up the bar at 4 kHz. It is metering only; the audio path is unchanged.

Click any bar to solo that band and hear what the detector hears. The bars tell you where something is happening; they cannot tell you whether a tall bar at 4 kHz is a ring worth removing or a cymbal worth keeping, and the only way to settle that is to listen to it.

Smoothness reaches the top of the spectrum

Two separate causes, both found by measurement. Each band was compared against a reference that mixed in a flat whole-spectrum average, which on any real mix sits tens of decibels above where a high band actually lives, so high bands almost never qualified. The reference now follows the mix instead of fighting it: at 11.6 kHz that change alone takes a band from firing 21% of the time to 51%.

The detection threshold also falls with frequency now, by 35% across the range. Music slopes downwards, so a ring at 12 kHz stands above its neighbours by fewer decibels than an equally annoying one at 1 kHz, and there is less masking up there to hide it. Pink noise — smooth material with no rings in it — is left alone by the change, so this sharpens the tool rather than simply turning the top end down.

Static Cuts: the resonances that never go away

Smoothness reacts in milliseconds, which is right for a ring that comes and goes with the programme and wrong for a room mode, a boxy cabinet or a ringing shell that sits at one frequency for the whole song. Those are better removed once, with a fixed narrow cut. Scan track searches the whole track and proposes one for each; nothing is applied until you press Cut.

It will not cut your music. The first working version returned four hits on every mix and they were always the same thing — 246, 369, 492 and 738 Hz on one track, 275 and 551 on another. Harmonic series: the key the song is in. The test that fixed it is physical rather than statistical. An instrument radiates a harmonic series, so a played note arrives with proud partners at twice and three times its pitch; a resonance generates no harmonics of its own. Each proposal tells you how far the peak stands above its neighbours and what fraction of the track it is there for, so the judgement stays yours.

Starting points named for the problem

Harsh top, Sibilance, Cymbal glare, Boxy low mids and Whole mix, each showing the frequency range it aims at. The previous set described mix decisions rather than mastering ones. None of them start in Gentle any more: measured on a dense mix, Gentle at full amount removes hundredths of a decibel, and a starting point that appears to do nothing is worse than no starting point.

Versions and undo were losing settings

A saved version did not store the six per-section Bypass switches or any Static Cuts. Save a version with Tone bypassed, load it back, and Tone was on again. Undo works from the same record, so the same gap meant toggling a Bypass did not even register as a change. Both are fixed, and the record now refuses to compile if a future control is added without being captured.

Opening a session is immediate

Reopening a saved session ran a full Smart Analysis pass, applied the recommendation to every control, let your saved settings overwrite it, and then discarded the analysis in favour of the one stored in the session — all behind the blocking “Creating Smart Master” overlay, so reopening your own work looked like importing a new track. Settings and analysis are now restored immediately with playback available at once, and the export master renders quietly in the background.

Version 1.10.0

Previous
30 July 2026 · build 20260730.1

A resonance suppressor on every stem

A new tab beside EQ, Compression and Repair. It ducks a frequency band only while that band stands proud of the rest of the spectrum, so a ringing snare, a boxy guitar or a honky room comes down without dulling a source that is simply bright. Gentle, Balanced and Deep set how far above the spectral average a band has to sit before it is touched.

It is seven dynamic bands from 200 Hz to 8 kHz rather than the per-bin approach the bus Smoothness control uses. Per-bin is sharper, but it cannot run in the playback engine without adding latency, which is why bus Smoothness is the one control whose playback only approximates its export. This one is built from the same constants and the same filter in both engines, so what you hear while adjusting a stem is what gets exported, by construction rather than by checking afterwards.

With nothing standing proud it does nothing at all: measured on flat noise the level change is 0.00 dB, and at zero it passes the audio through untouched. On a 684 Hz resonance sitting in noise it removes 3.6 dB while broadband content 3 kHz away moves 0.1 dB.

Colour no longer aliases during playback

Colour is a nonlinear stage, so it has to run oversampled or the harmonics it creates fold back into the audible band as non-harmonic grit. Export always did this properly. Playback used a cheap approximation: a 9 kHz tone at full Colour produced a fold product only 32 dB below the fundamental, against 46 dB for the same test on export.

Playback now uses a proper 47-tap half-band filter pair. Worst-case aliasing across 6.5 to 12 kHz inputs improves from 32 dB down to 45 dB down, which is what the export engine measures on the same test. On real music the improvement is smaller but real, between 4 and 7 dB depending on how far Colour is pushed. The filter adds a constant 0.52 ms of monitoring latency, well under a single audio buffer.

Stem trims reach 24 dB

The per-stem trim range is now plus or minus 24 dB, up from 12, for the cases where a stem genuinely arrives that far out. The headroom trim already protects the sum, so a stem pushed hot moves the bus trim rather than clipping the master.

Progress no longer stalls at 95%

Creating Smart Master reached 95% and sat there for nearly half the wait on a stem session. The estimate behind the bar was a flat fraction of the track length and took no account of stems, which are far slower: measured on the same 41 seconds of audio, the initial master takes 2.5 s as a 2-track and around 10 s as a stem session. Both that estimate and the analysis one now account for stems, and the summing bar introduced in 1.9.1 has been refitted to the app's own timings rather than a command line measurement.

Version 1.9.1

Previous
29 July 2026 · build 20260729.3

Choosing stems no longer looks like nothing happened

Between picking your stems and the analysis appearing, Finito sums them into one piece of audio. The progress overlay only appears once there is an input file, and a stem session has none until that sum finishes, so the whole phase ran behind an unchanged import screen. Twelve four-minute stems meant about seven seconds of a window that looked like it had ignored the click.

There is now a Summing Stems stage showing the stem count, the session name and a progress bar, handing straight over to Analyzing Audio. Feedback is unbroken from the moment you choose the files to the finished master. Undo, the transport and the menu commands are held during the sum, as they already were during analysis and export.

Version 1.9.0

Previous
29 July 2026 · build 20260729.2

Saved stem sessions reopen

Saving a stem session recorded the summed temporary working file as the session's audio, and stored no stems at all. Reopening asked you to locate a file in a system temporary folder that you never had, could not produce, and which would not have restored your stems even if you had found it. This is fixed, but honestly: a stem session saved before this release cannot be recovered, because there was nothing in the file to recover it from.

Sessions now record the stems themselves, meaning the files you dropped along with their names, trims, per-stem EQ and compression, and the monitor headroom. Reopening rebuilds the sum from them and puts every setting back. Baked repairs travel as sidecar files next to the session, because the cache they were rendered into gets pruned and macOS may purge it; a stem whose sidecar has gone opens unrepaired and says so.

A stem that has moved is asked for by name, "Locate the 03 Music stem", rather than as a bare path. Skipping is not offered, because every stem is part of the audio: a session missing one is different audio, not the same audio with something switched off. Reopening also runs the same memory check a new session gets, so a session saved on a larger machine cannot force itself open on a smaller one. Sessions saved by earlier versions keep opening exactly as before.

A stem session has a name

A stem session had no name, because it has no single input file to take one from. The window title, both export panels and the Save Session sheet were all showing the internal working filename instead. A stem session now carries its own name, worked out from the stems: a shared filename prefix where there is one, so Song_Drums and Song_Bass give "Song", otherwise the enclosing folder, skipping folders like Downloads that say nothing about the music.

Double-click the name in the window header to change it, the same way you rename a stem. It titles the window, fills in Save Session, and names both the exported master and the summed mixdown.

A level meter on every stem

Each stem row now carries a small meter showing what that stem is actually sending into the sum. Green up to −3 dBFS, amber to −0.5, red above it, using the same thresholds and colours as the Final Output meter so a stem and the master never disagree about what counts as hot.

It reads the level after that stem's trim, EQ and compressor, which means a muted or un-soloed stem reads silent. Across a row of twelve, one glance tells you which stems are playing and which have not come in yet.

A stem session that will not fit is refused rather than attempted

Stems stay decoded in memory for the life of the session, which is what makes a trim audible on the next buffer instead of after a re-sum. The cost is therefore the total length of the material rather than the length of the song: twelve four-minute stems measure about 1.25 GB, and nothing used to check before allocating it, so a session that did not fit simply pushed the machine into swap and stayed there.

Finito now estimates the cost from the file headers before decoding anything, which takes milliseconds, and refuses a session needing more than 85% of free memory, with both figures and what to do about it. A session that fits but takes more than 55% loads with a dismissible warning. Adding and replacing stems are checked the same way, against the set they would produce rather than the incoming file alone.

Also in this release

Open Stems is now offered on the import screen, under Browse for a file. Opening a stem session was only ever available under the File menu, which is not where anyone looks at a blank window.

Version 1.8.0

Previous
29 July 2026 · build 20260729.1

A session holds twelve stems

The ceiling has moved from eight stems to twelve, which is where a real multitrack bounce tends to land once the drums arrive as more than one file. The engine, the real-time render loop and the shared parameter snapshot all carry the same limit, so there is no arrangement of twelve stems that any one part of Finito disagrees about.

Stem warnings can be dismissed

The warnings on a stem session are advice (a stem that clips on its own, a set with wildly different sample rates), and advice you have read and decided against should not keep taking up the panel. Each warning now has a dismiss control, with Clear all when there are several. They come back if the condition returns on a later analysis, because at that point it is a new warning about new material.

File ▸ Close Session

⌘W closes the current session and returns to the import screen without quitting Finito: the stems, the analysis, any preview, the undo history and the meters all go. Until now the only way back to the import screen was to quit and relaunch, and the only way into a second session was to open it on top of the first.

Stability

A stem index could reach the render loop's fixed-size parameter array unclamped through the compression path, reading and writing past the end of it, silently rather than as a crash. That is fixed, along with a per-stem meter that had been sized for eight stems by hand, a repair preview superseded by a newer one being reported as a failure when it was only an answer nobody was waiting for, and a stem whose right channel is shorter than its left.

Version 1.7.3

Previous
28 July 2026 · build 20260728.4

The stem repair preview loops what it is auditioning

Preview renders only the passage you are listening to, so playing past it meant hearing completely unprocessed audio while the panel still claimed to be auditioning. It now loops, which makes that impossible, and looping is how you want to dial a repair in anyway: the same defect, over and over, while you turn the knob.

With a passage selected, the loop is that passage. With none, it follows the playhead, and clicking the waveform moves the audition there and re-renders around it. A passage shorter than two and a half seconds widens the loop rather than stuttering; the repair still applies only to what you selected.

Clicking a waveform no longer clears the selection

In both Repair tabs a click seeks and leaves the region alone. It used to drop the region when the click landed outside it, so simply moving the transport threw away work, and with a stem preview running it silently changed what was being rendered. Clear on the main Repair tab, and Whole stem on a stem, remain the deliberate ways to drop a selection.

Version 1.7.2

Previous
28 July 2026 · build 20260728.3

Click a stem's waveform to move the transport

In a stem's Repair tab, clicking its waveform now seeks playback to that point. Dragging still selects the passage to repair, so the region picker is unchanged. A click without a drag was simply doing nothing, which meant you could see where you were on the stem but not go there. It matches the main Repair tab, including clearing the selected passage when you click outside it.

Version 1.7.1

Previous
28 July 2026 · build 20260728.2

Stem rows line up again

The gear button on a stem row grows when it carries a count badge, and because it sits after the flexible trim slider, that extra width came out of the slider, so a stem with processing on it pulled its own dB readout, and every column after it, out of line with the rows above. The button now sits in a fixed-width slot sized for the widest case, so the pill's right edge and everything to the left of it stay put whether the badge is there or not.

Version 1.7.0

Previous
28 July 2026

Stem mastering

Drop 2 to 8 stems instead of a single file and Finito sums them, then masters the sum as one piece of audio. Everything downstream (the analysis, the meters, the master itself) sees the sum, so nothing about the mastering changes. What stems add is the handful of decisions a finished 2-track cannot offer: pull 300 Hz out of the guitars without touching the kick that shares it, compress the drums without the sustained bass triggering the detector, de-ess the vocal without dulling the cymbals.

Each stem gets a trim, a full parametric EQ, a compressor, and its own repair tools. The trim, EQ and compression are heard on the next audio buffer rather than after a re-render, and are applied identically in the exported master. There is deliberately no pan, no sends and no automation: Finito masters, it does not mix.

Per-stem repair

Eight tools on a single source: De-Click, De-Crackle, De-Plosive, De-Hum, De-Clip, De-Noise, De-Ess and De-Reverb. Drag across that stem's own waveform to repair one passage, or leave it alone for the whole stem.

De-Plosive and De-Reverb are new. De-Plosive identifies a breath thump by its absence of mid-band energy, which is what separates it from a kick drum or a bass note. Measured on synthetic cases, it removes 6.6 dB from a plosive while leaving a kick and a bassline untouched. De-Reverb estimates the late energy in each frequency band from what that band was doing one early-reflection window earlier, pulling a room back 8 dB while the source itself loses under 3.

De-Hum now lets you name the mains frequency instead of only finding it. Automatic detection is reliable on a quiet source but cannot pick a 60 Hz tone out from under a bass guitar, and a bass DI is exactly the source that hums. On a musical bass, automatic removed nothing at the hum frequencies where naming 60 Hz took out 16.5 dB.

Preview that keeps up

Preview auditions a repair in place without committing it, and re-renders itself as you move a control. It renders only the passage you are listening to, so it stays responsive on a full-length song rather than getting slower as the track gets longer.

Three ways to listen: Repaired, Original for an A/B, and Removed, which plays only what the tool is taking out. Removed is the one to trust: if you hear music there rather than the defect, the amount is too high. The panel also reports how much is actually being removed, in dB.

Also in this release

Mute and solo on every stem, with several soloable at once; both are monitoring only, and the exported master always contains every stem. Stems can be added, replaced, removed and renamed mid-session, and all of it undoes with ⌘Z. Each open stem EQ draws its own live spectrum of that stem alone. Changing the stems after Smart Analysis has run now prompts you to re-check it, and the prompt clears itself if you undo back to what was measured. The Edit menu sits next to File, where macOS puts it.

Version 1.6.0

Previous
27 July 2026 · build 20260727.4

Delivery Check

A new panel on the Loudness tab that measures the finished master against what each streaming service actually does to it. Spotify, Apple Music, YouTube, Tidal, Amazon Music, Deezer, SoundCloud and CD are each checked for playback level and peak headroom.

Most services play every track at their own reference level, so a master pushed louder than that is simply turned back down, and the limiting used to reach it buys nothing while costing dynamics. Each row now says how much the service will turn the track down and what that costs, and offers to set the loudness target to match. It stays collapsed to a single summary line until you open it.

Apple Music is also a loudness target now. Its Sound Check plays tracks about 2 dB quieter than the other services, so a −14 master is turned down there and until now there was no way to aim at it.

What you hear while adjusting now matches what you export

Finito processes audio twice: a real-time engine for playback and a separate offline engine for the finished file. Both were audited stage by stage against each other, and several had drifted apart, so the master you were auditioning was not quite the master you exported.

The compressor was the largest. Playback applied up to two and a half times the gain reduction of the exported file on the Glue setting, so mixes sounded more squashed while you worked than they did on delivery. The Low-End Leveler behaved differently depending on where you started playback: seeking to a chorus could apply nearly 3 dB more low-end reduction than playing into it, and neither matched the file. Harshness was taming about a sixth less than it should, the limiter's three release styles all recovered too slowly, and Color was putting 12 dB more sub bass through its saturator than the exported version, so the audition sounded thicker underneath than the file.

All of these now agree with the exported result, in most cases exactly. Compression in particular will sound less squashed during playback than it used to; that is the correction, and the exported file has not changed.

Dynamic EQ, Impact and the Stereo Imager were checked and already matched. Smoothness is the one exception: it uses a genuinely different method during playback than on export, so treat its audition as an indication rather than a preview until that is addressed.

Also in this release

Engine errors are readable. A damaged or non-audio file used to report internal bootloader text; it now says what is actually wrong. Files open from Finder by double-click, "Open With", or a drop on the Dock icon, and saved sessions open by double-click too.

Version 1.5.0

27 July 2026 · build 20260727.3

Opening files from Finder

Finito now registers as a handler for audio files, so a mix opens by double-clicking it, through "Open With ▸ Finito", or by dropping it on the Dock icon. None of these worked before. Saved .finito sessions open by double-click too, and now show a proper name in Finder instead of "document".

Finito registers as an alternate handler rather than taking over, so it appears in "Open With" without displacing whatever already opens your WAV files.

Clearer errors

When the mastering engine failed, the message you saw was internal bootloader text rather than the reason. Opening a damaged file reported "[PYI-5652:ERROR] Failed to execute script 'master' due to unhandled exception!", which says nothing useful. The same file now reports that it is not in a format Finito can read, or is damaged. Files that have moved, files Finito cannot read, folders picked by mistake, and running out of memory are all explained in plain language.

This release also contains everything listed under 1.4.1, which was built but never published.

Version 1.4.1

27 July 2026 · built, superseded by 1.5.0

Smart Analysis

Each band's stereo correlation now measures its own frequency range. The four readings were derived in a way that let a lot of each neighbouring band through, and because bass is the most reliably mono part of a mix, that pulled every band's reading toward the bass. Those numbers drive Mono Bass, the four band widths, and the Tonal EQ's automatic Mid/Side routing, so the old readings were making real decisions: one mix had its low-mids narrowed and routed to Side when they needed neither.

Across nine real mixes the resulting recommendations are unchanged, so this corrects the pathological cases without moving ordinary material.

Repair

The third Repair tab is now called Diagnose. It was the only noun among verbs and did not say what the tab was for.

Fixed the Uncompress readout contradicting itself: the verdict and the suggested amount came from two constants that had drifted apart, so a track could read "Healthy dynamics" and still be asked to apply 11%. Both now come from one boundary.

Version 1.4.0

27 July 2026

MP3 export fixed on Macs without Homebrew

The bundled MP3 encoder referenced a library outside the app, so it could not start at all unless you happened to have Homebrew and mpg123 installed, which is almost nobody. The library now ships inside the app. The build refuses to produce a release if any shipped binary reaches outside the bundle again.

New Diagnose tab in Repair

Reports what your incoming file actually is: bandwidth, true peak, clipped samples, and channel correlation. It flags a lossy-sourced file only on unambiguous evidence, and always shows the measured cutoff so borderline material can be judged by eye.

It also detects the two channel faults that width controls cannot fix: an inverted polarity and an L/R timing offset. Corrections are proposed rather than applied, because a deliberately wide mix can read low correlation without being broken.

Version 1.3.1

26 July 2026

The Uncompress Re-measure button ran correctly but showed no sign of it, so it looked dead for the second or so it took. It now shows progress while measuring and confirms when the reading lands.

Applying Uncompress flags the Smart Analysis as predating the repair, with a note beside Recheck Analysis. It does not re-run on its own, so nothing you have tuned by ear is discarded.

Version 1.3.0

26 July 2026

Uncompress

A new Repair tool that restores the level contrast between sections on a mix that arrived over-compressed. It reads the source's loudness range, reports a plain verdict and a suggested amount, and offers a level-matched Original / Repaired audition so you are comparing dynamics rather than loudness.

It is a bounded expander, not a true de-compressor, and does not claim to be: the original compressor's settings cannot be recovered from the audio, and an unbounded inverse diverges. This one is gentle by construction and cannot reach that regime.

Stereo scopes rebuilt

The band scopes now composite additively, so overlapping samples accumulate and density reads as brightness, which is the thing that gives a vectorscope its bright core. The trace is drawn as connected segments rather than loose points, and the feed carries three times as many samples, so the figure reads as a shape instead of a scatter.

Each band is now a proper 24 dB/oct band-pass, so a tile shows its own frequency range and little else. Fixed the empty space below Band Width on the Stereo tab.

Corrected the Mono Bass description, which overstated how deeply it removes side content.

Version 1.2.0

26 July 2026

Smart Analysis tonal reference corrected

The spectral balance measurement read flat for white noise, but music is roughly pink, so every normal mix reported a large downward tilt that Smart then corrected at full strength. A mix tilted dark and one tilted bright received near-identical treatment. Smart's decisions now scale with the actual material, and it is noticeably gentler on the low end.

Tonal EQ

A sixth shaping node, Presence, so the two shelves no longer consume two of the available bands. Per-node width, by ⌥-dragging a node vertically or with the Q knob. Gain range extended to ±24 dB. A new node editor with Freq, Gain, and Q, a per-node bypass, and a Pre/Post switch that places a node before or after the compressor. The curve is now drawn from the real filter response rather than an approximation that rendered every bell about twice as wide as it was.

Dynamic EQ and Dynamics

The Dynamic EQ's cut is drawn into the tonal curve rather than a second trace, so the tone stage reads as one curve, and bands can be switched from Dynamic to Fixed. Compression now runs as two stages in series, each with its own amount and Punchy/Glue character, with the second optional and off by default.

Finito updates itself: it checks about once a day and tells you when a new version is available. You can also check any time from Finito ▸ Check for Updates…