Apollo View Modular - Eurorack Modules

Apollo View Modular

‹ DELTASCOPE

Changelog

Release notes for DELTASCOPE

v1.2.4

Fixed

  • Long tooltips wrap onto a second line in the title bar instead of being cut short.
  • The installers now install under a different file name when another vendor's plug-in with the same name is already there: on Windows instead of stopping with an error about a file it could not create, on macOS instead of replacing the other plug-in. Nothing changes when there is no such clash.

v1.2.3

Added

  • Hear the Sum. A new switch beside Hear the Delta in Settings > General, off by default. With it on, the Sum comparison mode sends the two signals added together to the plugin's output. Turn both on and the Sum and Delta buttons become a one-click polarity check: put DeltaScope on the kick, sidechain the bass into it, mute the bass track, and click between Sum and Delta to hear the bass with and without its polarity flipped against the kick.

  • Sums in the offset boxes. Type 256+128 into the main or sidechain offset and press Enter, and it takes the total, so latencies read off your plugin list can be added up in place. + - * / and brackets work in samples and in ms.

  • A colour for each channel. The main and sidechain colour pickers now have L (M) and R (S) tabs. Pick a colour on the R (S) tab and the second channel wears it on the scope and in the analyser; Auto links it back to the first.

Changed

  • Multi FFT's low end moves smoothly. The bass bands now update as often as the rest of the analyser, so the low end no longer moves in visible steps against the mids. The same for the Delta Magnitude view.
  • Multi FFT separates closer bass notes. Two sustained notes in the low end now part company when they're about 15 % closer in frequency than before, so a kick and a bass note a semitone apart separate a little lower down, and a quiet note beside a loud one shows sooner.
  • The analyser's two channels are easier to tell apart. In Stereo and Mid/Side the two curves now sit just either side of your chosen colour, one a little lighter and one a little darker, with the lighter one in front. The side channel no longer vanishes behind the mid as Fill goes up.

Fixed

  • An exported image now draws the Sum+Delta delta lane in the sidechain colour, as the display does.

v1.2.2

Fixed

  • The demo shows the Magnitude view. Without a licence, the analyser's Magnitude view drew a flat line until the plugin was activated. The demo is the whole plugin with a brief periodic interruption, and the Magnitude view now behaves like everything else in it.
  • A licence that is still being checked as the plugin opens no longer briefly flattens the Magnitude view.

v1.2.1

Changed

  • Sum, Delta and Sum+Delta now show the lane with its history the moment they are selected, instead of a blank window (or the previous mode's shape) until a whole sweep has been redrawn.
  • The Mac installer now shows the plug-in formats as a step of its own, so any you don't want can be unticked before installing.

Fixed

  • With an inter-instance sidechain, a loop point in Ableton Live could mute the sidechain lane for a moment at every wrap and make it jump sideways on screen afterwards, at small buffer sizes especially. The same held for any momentary hiccup on the source track. Both are fixed, and a source that is reset mid-session no longer shows a moment of the wrong history.
  • In the Audio Unit, Ableton Live's track names reached the sidechain source picker as "DeltaScope/2 Bass" instead of "2 Bass", and a link saved by the AU stopped resolving once the tracks were reordered. The AU and the VST3 now show and store the same names.

v1.2.0

Added

  • Windows. DeltaScope now runs on Windows 10 or later (64-bit), as VST3, CLAP and AAX. One licence key covers Mac and Windows.

  • Multi FFT. Multiresolution analysis for the analyser: the low end is analysed with progressively longer windows, so close-together bass tones separate cleanly instead of blurring into one lump — while the rest of the spectrum keeps its speed. Settings → FFT → Multi FFT; the trade-off is a low end that responds more slowly while it is on. It applies to Delta's Magnitude view too, where a narrow low boost or cut then reads close to its true height.

  • Export the display as an image. Settings → Export Image renders the current view — waveform lanes and the analyser — as a high-resolution PNG, ready to share. The image is the display exactly as laid out on screen: the same lanes, grid, labels and lettering, the analyser's curves layered as on screen and its peak-hold lines included, without the controls.

  • Settings export and import. Save the plugin's settings to a file and load them anywhere — move your setup between machines, or share it.

  • Cycle framing in frequency units. A ×1/×2/×4 button between the free-run value and its units sets how many cycles of the dialled frequency fill the window — two by default, so a dialled tone shows its repetition instead of one cropped cycle. Existing projects keep their exact view.

  • Note units for the free-run timebase. The units button now steps ms → Hz → note. Pick a note, C0 to C8 in semitones, and the window holds ×1, ×2 or ×4 cycles of it, exactly as Hz units do for a typed frequency. Click the value to type a note name; type a frequency instead and the nearest note is chosen. Alt-click resets to A4.

  • Colour by Frequency (scope). Settings → Scope → Colour by Frequency tints a trace by its frequency content, red at the bass through green to violet at the top, the same colours the analyser wears at those frequencies, and a kick under hats shows both at once, so you can see where in the spectrum each part of the waveform lives. Main and sidechain have their own switches; a lane's colour swatch keeps colouring the analyser until that is coloured by frequency too, then shows the spectrum.

  • Colour by Frequency (FFT). Settings → FFT → Colour by Frequency colours a spectrum curve by frequency, red at the bass through green to violet at the top, peak hold included; the colours keep their place on the axis when you zoom. Main and sidechain have their own switches.

  • CLAP format. The installers now include a CLAP plugin alongside VST3 and AU (VST3 on Windows), for CLAP-capable hosts such as Bitwig Studio and REAPER.

  • AAX format. DeltaScope loads in Pro Tools, on macOS and Windows. Pro Tools sends every plugin a mono key input, so for a true stereo delta link a second DeltaScope by track name; the key input is the route for mono references.

Changed

  • The analyser's Delta view can be set at any time. Settings → FFT → View (Difference or Magnitude) used to be greyed unless Delta was the comparison mode when Settings opened. It is always live now and takes effect whenever Delta is on.
  • Alt-click on Gain returns to -3 dB. The reset used to go to 0 dB, the one slider that did not return to its starting value. It now goes back to the -3 dB a new instance opens with, where a signal that goes over 0 dBFS is still drawn as a shape inside the border.
  • A bigger handle between the scope and the analyser. The pill you drag to resize the two is now a long grab bar, like the handle on a phone's sheet, so it is easy to find and easy to hit.
  • The divider settles on an even split. Drag the pill near the middle and it holds there, so an exact half-and-half is easy to hit and two instances line up. Move a little further and it follows the mouse again. An even split is also the new starting layout: the analyser appears sooner as you make a new instance taller, and shares the display evenly with the scope. Saved projects and saved defaults keep their own split.
  • The analyser's second curve is a darker main colour. In Stereo or Mid/Side with the sidechain off, the right or side channel used to borrow the sidechain colour; it now takes a darker shade of the main colour, so each curve wears the colour of the signal it shows, the two stay apart without washing each other out where they overlap, and the sidechain swatch only ever colours the sidechain (it greys out with SC off, like the rest of its row). The darker curve sits behind the first, so the first channel keeps its full colour at any Fill and the second shows where it rises above it.
  • The analyser's peak-hold lines sit on top of both curves. They were drawn beneath the other channel's fill, so at a high Fill a channel's held peaks vanished wherever the other channel was louder.
  • A finer trace on Retina displays. The trace is now drawn at the screen's real pixel resolution instead of being enlarged from a smaller image.
  • The display is much lighter to draw, and no longer hitches. The per-frame cost of the scope is roughly halved at any window size, the analyser costs a fraction of what it did and nothing at all while the input is silent, and the clip border indicator is free whether or not the signal is clipping. Zooming, timebase changes and band-filter drags no longer stall a frame, and several instances share the display far more comfortably.
  • Settings now open inside the plugin window. A category list down the left, everything laid out to fit whatever size the window is, no more floating panel to drag around or lose off the bottom of a small screen. Close it with the × or Escape.
  • About lives in Settings, and the licence in General. About has the version and build stamp with the update check under them, the manual and the feedback emails. General's License section shows the email the plugin is licensed to, with Activate or Deactivate as appropriate.
  • Delta mode is now one signal everywhere. The scope trace, the FFT, the measurement readout and the Hear Delta output always agree exactly — what you see is what you hear.
  • Delta's Magnitude view follows reverbs and delays. Processors with a long tail used to read as a flat line. The view now draws their overall tonal balance; expect that line to move more than an EQ's curve does.
  • The analyser now reads a pure tone at its true level at every frequency, at any FFT size and window width — high-frequency tones previously read several dB low, and the error changed with the plugin's size.
  • Inter-instance sidechain links are far more robust. Play starts, transport stops, loop points and position jumps no longer cause pops, flashes or stale displays, and the delta stays accurate through them.
  • The sample-offset lock now shows an open padlock while unlocked.
  • The waveform trace is drawn very slightly heavier, so it stays legible at small window sizes and in captures.
  • The −∞ label at the centre of the dB axis is drawn a step heavier, so it no longer gets lost against the grid.
  • Demo mode now interrupts for about five seconds in every twenty-five, at a moment that varies, instead of three seconds in every forty.

Removed

  • Overlap setting. Settings → FFT no longer offers an Overlap choice. The analyser already updates every display frame, so the setting never changed what you saw.

Fixed

  • Delta's Magnitude view draws a hard low boost as a peak. Pushing a low-frequency EQ boost far enough could flatten the very top of its peak, so the curve dipped exactly where it should have been tallest. It now keeps rising with the gain.
  • The measurement readout stays on pitch next to the write cursor. A drag selection or an Alt-hover cycle taken within a few milliseconds of the cursor could read a few percent sharp. It reads true anywhere in the window now.
  • Rolling mode keeps scrolling through a restart. Starting playback again from an earlier position, or looping a section, used to rotate the whole rolling trace back in time. It now rolls on without a jump, with the newest audio always entering from the right. Only the sweep display snaps to the beat.
  • Rolling mode no longer pulses. The trace's brightness breathed slightly as it scrolled; it is steady now.
  • The trace's weight follows the window length smoothly. Past a certain length (two bars at 120 BPM on a large window) the line used to thin and dim in one jump; it now thins gradually as the window grows, by timebase or by zoom, with no step anywhere.
  • The band filter keeps a minimum width. The two thumbs could be dragged onto each other and close the band to nothing; a thumb now stops short of the other with enough track showing between them to grab and move the band as a whole.
  • Mouse-wheel direction on sliders is the same with every mouse. A slider now follows the wheel the way a page does: with natural scrolling on, pushing the wheel away lowers the value. Logitech mice running Options+ with smooth scrolling previously moved sliders the opposite way to a Magic Mouse or trackpad.
  • The analyser's axis labels its ends. The 20 Hz and 20 kHz marks at the default range, and the ends of any range that lands on a marker, had no label; they now sit flush with the borders.
  • The analyser's peak-hold line now falls as one envelope. After a hit had passed, some frequency bands would start dropping well before their neighbours, tearing the held line into flat steps with vertical edges, and the main and sidechain lines could hold the same signal differently. Every band now holds for the set time and then falls together at the set rate.
  • The scope no longer goes blank when the window is shrunk to its minimum height.
  • Moving the plugin window to a monitor with a different scale no longer leaves the display blank or mis-sized until the window is resized.
  • A project reloaded with the plugin window closed now restores Hear Delta and the linked sidechain immediately.
  • Inter-instance links survive deleting and undoing the source track, track reordering and renaming — reconnecting automatically, including for projects saved by earlier versions.
  • The scope now nulls correctly in Delta mode with an inter-instance sidechain.
  • Brief gaps no longer appear in the sidechain lanes around loop points, transport stops and restarts.
  • The Δ lane badge is no longer squashed.
  • Fixed a crash when dragging a Mid-Side measurement after a Sum or Delta measurement.
  • Fixed a potential crash when leaving the settings panel via About or Deactivate License.
  • Fixed a rare crash when the host saved the project in the background while the sidechain source was being changed.
  • A bad audio buffer from an upstream plugin can no longer permanently blank the FFT Delta view or corrupt the crosshair's held readings — displays now recover on their own, on Apple silicon and Intel alike.
  • After a buffer-size or sample-rate change the scope refills cleanly instead of briefly showing stale audio.
  • Changing Tilt while the spectrum is frozen now moves the curve by the full dialled amount.
  • Hiding and re-showing the spectrum pane no longer leaves it blank.
  • The crosshair's held Max/Min/RMS values reset when the readout switches between curves, so readings never mix two signals.
  • Leaving the Delta Magnitude view no longer drops the out-of-band dimming on the second curve.
  • Hovering the control buttons no longer has side effects: no more marking the project as modified, or discarding an ADC detection in progress.
  • Double-clicking the LUFS headline now resets the integrated measurement.
  • Very short free-run time windows no longer reset to the default when a project is reloaded.
  • The free-run rate control now shows the saved value after a project reload when using frequency units above 100 Hz — the display itself was always correct, only the readout was wrong.
  • MIDI note-lock now holds the waveform still at every octave offset — at 0 and positive offsets the display could jitter or drop its lock.
  • The waveform measurement now grabs the wave you see in MIDI note-lock mode — its selection edges could land at the wrong screen positions.
  • The sample offset now covers its full one-second range in the Sum, Delta and S+D modes — the comparison used to stop lining up beyond about a third of a second.
  • Typing a value into the sidechain offset now locks it at once, as the main offset always has.
  • A saved default no longer carries a closed offset padlock: new instances open with the offset at zero and unlocked.
  • A project saved with the spectrum hidden by an older version no longer reopens with blank space reserved for it — the pane comes back cleanly collapsed, and the divider reopens it.
  • Unreadable settings data is rejected on load instead of being applied.
  • A stored license that could not be read when the plugin loaded now restores itself automatically within a few minutes.
  • Activation now warns when the license cannot be saved to disk.
  • The demo-mode spoiler now blanks the spectrum correctly.
  • Changing Glow re-thickens the whole trace at once, and window resizes while playback is stopped update the sidechain lanes immediately.
  • The waveform measurement's frequency/note readout is more accurate on noisy, inharmonic material.
  • Reopening plugin windows many times no longer slowly accumulates memory.
  • Turning the sidechain off reliably switches the correlation overlay off, including while Rolling mode is active.
  • Resizing the plugin window while the About screen is open no longer lets the scope show through.
  • Hosts that deliver unusually large audio blocks no longer shift the scope's timeline.
  • Changes made in the settings cog now mark the host project as modified, so they are always saved.
  • Sidechain and Stacked views now stay clean when an offset is dialled in. With a sidechain offset set — for example compensating a latent plugin between two linked DeltaScope instances — a band trailing the write cursor could show the sidechain and main waveforms out of step, or one of them glitching. The two lanes now end at the same cursor and agree everywhere, at any offset.

v1.1.1

Added

  • A build identifier in About. Settings → About now shows exactly which build you are running, underneath the version number, and bug reports and feature requests include it automatically — so a report pins down the precise build it came from, not just the version.

Changed

  • The power buttons now switch the FFT as well as the scope. Toggling the main or sidechain power button hides that signal in the spectrum analyser too, so you can A/B two overlaid spectra by flicking them on and off. The analysis keeps running while a curve is hidden, so switching it back on is instant — no averaging ramp. Where a curve carries a combined signal (Sum, Delta, Sum+Delta, or the Delta Magnitude view) the buttons behave exactly as they do on the scope. As before, the buttons are not saved with your session; they always come back on.

Fixed

  • An inter-instance sidechain could fall permanently silent until playback was stopped and restarted. With the sidechain fed from another DeltaScope instance, switching the source while the transport ran could leave the sidechain as a flat line on the scope and absent from the analyser. The timing alignment between the two instances accepted a nonsense value from the just-switched source and, once wrong, had no way to correct itself — only a transport stop reset it. The alignment now rejects impossible values, is cleared whenever you change source, and, as a final safety net, relearns automatically if reads ever fail repeatedly. Switching sources mid-playback is now seamless.
  • The sidechain power button now stays where you put it. Switching the sidechain display off could be silently undone — changing the sidechain mode, or the host restoring plugin state (a preset load, a project revert, an undo), reset the button back on without telling you. The button now keeps your choice; switching the sidechain itself off still hides its display, and switching it back on restores what you last chose.
  • The FFT measurement crosshair could read a hidden curve. With the main signal powered off while a sidechain was overlaid, the crosshair readout and Option-snap still measured the hidden main spectrum. It now follows the curve you can actually see.

v1.1.0

Changed

  • Sliders: click to type, Alt-click to reset. Every value slider now opens an inline editor on a plain click — type a value (units understood, e.g. "250 ms", "1.5 s", or "2k" in Hz mode) and press Enter to commit; Esc cancels. Typed values clamp to the slider's range. Alt-click resets a slider to its default, replacing the old double-click-to-reset gesture. The main and sidechain offset sliders — which already opened an editor on a click — gain the Alt-click reset to 0.

Fixed

  • Slider hover highlights no longer stick. The main and sidechain offset sliders could keep their hover highlight after the pointer moved away because the value box intercepted the mouse; every slider now tracks hover correctly.
  • The VST3's default program is now named. The plugin exposed a single unnamed program, which strict hosts and validators (e.g. Steinberg's VST3 validator / pluginval) flagged as an error. The program is now named "Default", so DeltaScope passes validation cleanly. No change to how the plugin behaves in use.
  • Saved defaults now live in the standard location. The defaults file moves from a nonstandard folder directly under ~/Library into ~/Library/Application Support/ApolloView/, beside the licence file. A defaults file saved by an earlier build is migrated automatically the first time it is looked up.
  • The Slope tooltip quoted the wrong pink-noise figure. The FFT tab's Slope tooltip claimed +4.5 dB/oct flattens pink noise; the engine tilts per-bin power, so the correct (and default) value is +3 dB/oct. Tooltip wording corrected; the behaviour was always right.
  • Tidied the peak-hold Hold tooltip punctuation. Wording only, no functional change.

v1.0.1

Fixed

  • The VST3's default program is now named. The plugin exposed a single unnamed program, which strict hosts and validators (e.g. Steinberg's VST3 validator / pluginval) flagged as an error. The program is now named "Default", so DeltaScope passes validation cleanly. No change to how the plugin behaves in use.

v1.0.0

Added

  • Demo mode. Without an active licence, DeltaScope now runs as a demo — the full plugin with a brief periodic interruption of the display and audio and a "DEMO MODE" banner — until you activate. Click the banner any time to open the activation screen.
  • A "Deactivate License" button in Settings. The About section gains a fourth row — About / License Agreement / Deactivate License / Check for Update — that signs this machine out of your license and returns to the activation screen.

Changed

  • Rebuilt, hardened licensing. DeltaScope's licensing moved to a stronger scheme that can't be reverse-engineered from the plugin. Existing customers receive a new licence key by email and re-activate once; your current install keeps working until you update, so nothing breaks today — see the email we sent for the two-minute steps.
  • The FFT spectrum analyser is now GPU-rendered — much lower CPU use and a smoother, higher frame rate, especially on Retina / HiDPI displays. The spectrum curves, peak-hold lines, out-of-band dimming and grid are now drawn directly on the GPU instead of being re-rasterised on the CPU every frame. On a large window on a Retina display this took the analyser from a stutter to fluid and freed CPU for the rest of the plugin. The view is visually identical; if the GPU path is unavailable on your system it falls back to the previous CPU rendering automatically.
  • The activation screen's "Activate" button now reads as a gold-filled primary button. It previously drew as a flat grey button — its intended gold styling was silently dropped by the look-and-feel — so the main action now stands out clearly.

Fixed

  • The write cursor stays visible while frozen. Freezing now holds the cursor at its freeze-instant position instead of hiding it, and the clip border strips hold their freeze-instant content exactly.

  • Roughly half the display-chrome CPU cost during playback eliminated. The write cursor was repainting both full scope lanes at Retina resolution every frame; it now repaints only the strip it actually moved across, and the grid labels no longer re-render for no-op layout updates. Profiled at about half the previous UI-rasterisation load, with the freed headroom going to smoother frame delivery.

  • The FFT crosshair only repaints when a displayed value changes. On a steady signal the readout was re-rendering identical pixels every frame.

  • The settings menu's website link now reads "Check for Update" (was "Check for Upgrade").

  • Fixed a crash when "Hear the Delta" was active on a mono track with a linked sidechain source. The delta output tried to write a second audio channel that doesn't exist on a mono bus, taking the host down as soon as Delta mode engaged. The output now writes only the channels the track actually has — on a mono track you hear the left (or mid) delta lane.

  • Fixed a possible crash when re-linking or unlinking a sidechain instance while audio is running — most likely after deleting the linked source track. The audio engine could briefly keep reading the previous source's buffer after it had been freed; retired buffers are now held until the audio engine has provably finished with them.

  • Fixed a possible crash when closing the editor (or switching the phase display off) while a long correlation analysis was still running. With big windows the analysis could outlive its half-second shutdown grace period and be force-killed mid-pass; the analysis is now cancellable and shutdown waits for a clean exit instead.

  • Fixed a subtle race where the phase display's analysis could read a waveform snapshot while the renderer was already rewriting it. Snapshots still being read are now left untouched and a fresh one is handed out instead.

  • A collapsed FFT pane no longer ghost-renders over the scope. After an instant collapse — a window resize that squeezes the pane away, or loading a project saved with the FFT hidden — the spectrum could keep drawing over the full-height scope at its old position. A hidden pane now stops publishing to the GPU and is cleared, including across a host hide/show of the plugin window.

  • A frozen FFT no longer goes blank when the scope has nothing to draw. Several of the scope's internal early-outs skipped the spectrum pass entirely, leaving a cleared (empty) FFT pane — most visibly when freezing with the scope lane collapsed and then expanding it. The FFT now renders on every frame regardless of the scope's state.

  • Frozen sidechain lanes now follow size changes. With the display frozen, resizing the editor or revealing the scope from a full-size FFT left the sidechain overlay (and Sum / Delta / Stack) waveforms rendered at their old geometry — most visibly a tiny squished strip pinned to the top of each lane. Frozen sidechain lanes now re-render on every size change, exactly like the main channels.

  • The FFT pane now tracks live window resizing in lockstep with the rest of the UI. Since the switch to GPU rendering, the spectrum's on-screen geometry only updated once per display refresh, so during a resize drag it visibly lagged the scope and even its own axis labels. It now updates with every resize event.

  • A hidden FFT pane no longer does any work, and a visible one wastes less. The full analysis pipeline (ring copies, FFTs, GPU uploads, crosshair bookkeeping) used to keep running at display rate while the pane was collapsed; it now idles until reopened. While the GPU draws the curves, the (invisible) CPU curve components also no longer force the render thread to re-rasterise their region at Retina resolution on every fresh FFT frame.

  • Sample-offset sliders now show restored offsets correctly when the editor opens before audio starts. The slider range was built from a not-yet-known sample rate, displaying restored offsets clamped to 1 sample (and never recovering); the range now follows the live rate, including mid-session sample-rate changes.

  • The FFT Delta no longer shows brief garbage right after the transport starts. While the audio buffer refilled after a start or sample-rate change, the sidechain capture could feed partially-written memory into the Delta analysis, polluting the averaged curves for several seconds.

  • Fixed possible audio glitches when SysEx data rides the MIDI track routed in for the MIDI timebase. Long MIDI events allocated memory on the audio thread; the note tracker now parses raw bytes allocation-free.

  • The MIDI timebase behaves correctly for very high notes. Trigger windows under 16 samples (extreme pitches with a positive octave offset) hit undefined behaviour in the crossing search; the search is now exact down to the minimum window.

  • Lower CPU on Intel Macs during and after silence. The analysis workers' filters and averaging could wander into denormal float territory on quiet passages, where every operation costs 10-100x; all workers now run with denormals flushed.

  • Crosshair polish at deep zoom. Held Max / Min peaks now survive zooming out (the hold history previously skipped pixels when expanding the view, silently dropping held extremes); newly revealed edge pixels no longer flash huge placeholder values; frequency labels no longer float in the gutter for gridlines that are off-screen at high zoom; and switching the FFT Delta between Difference and Magnitude clears the readout's holds instead of blending the two incompatible scales for several seconds.

  • Lower display overhead across the board. The FFT gridlines now draw in one GPU batch instead of ~39 separate calls per frame; the spectrum only re-uploads its geometry data when something actually changed (a frozen FFT now costs near zero); the curve geometry builds in one pass instead of two; the crosshair's per-frame accounting and tooltip text are far cheaper; and idle level meters no longer repaint at display rate.

  • A frozen FFT no longer jumps or decays while you adjust settings. Ticking Floor or Ceiling made the frozen curve jump, and changing the tilt made the held peaks decay a step per slider movement. Axis changes now simply re-scale the frozen content; tilt re-slopes the cached spectrum and its held peaks exactly, history preserved, with no decay.

  • The sidechain offset lock is now saved with the session. It was derived from the offset value on reload, so an explicitly unlocked non-zero SC offset always reopened locked; it now persists exactly like the main offset lock, including for older sessions.

  • FFT settings changes now apply while the display is frozen. Adjusting tilt, smoothing, averaging or peak-hold with Freeze engaged silently deferred the change until playback resumed (a zoom while frozen then re-rendered with stale settings); the analysis worker now wakes and re-renders the frozen spectrum immediately. A mid-session sample-rate change also no longer snaps a zoomed FFT back to the full frequency range behind its own gridlines.

  • One bad audio buffer can no longer kill the FFT until reload. A NaN burst from a misbehaving upstream plugin permanently latched the spectrum's temporal smoothing (and the crosshair's Max / Min / RMS holds), leaving a dead display; non-finite input is now flushed at every accumulator. The FFT Delta's averaging is also floored against digital silence, removing a hidden CPU cost on Intel machines during quiet passages.

  • The FFT measurement crosshair's Max / Min / RMS readout no longer resets when you zoom or pan the spectrum. The held per-frequency history now follows each frequency across a zoom instead of being cleared, so the readout stays put rather than blanking and slowly rebuilding.

  • Settings changed after a project's last save are no longer lost on close. The plugin never told the host its state had changed, so anything adjusted after the final save — most visibly the sample-offset auto-lock engaging a few seconds after saving — silently vanished when the project closed. The host is now notified on every settings change.

  • Your saved settings are no longer lost when upgrading to a version that adds new settings. Loading a project or preset saved by an older plugin version used to silently reset every stored setting to its default the moment a release introduced a new one; now the new settings simply start at their defaults and everything the session does contain is restored.

  • Settings at the edges of their ranges now reload exactly as saved. A negative FFT tilt, a ceiling above +12 dB, a 0 % spectrum fill, a 0 dB meter ceiling or a 0 ms meter release was silently changed back to a default or older limit when the project reloaded; every stored value the sliders can produce now round-trips exactly.

  • Corrupt project values for gain and time window are clamped on load. Hand-edited or damaged session data could push non-finite or absurd values straight into the display engine; both now clamp to their slider ranges.

  • Loading a preset or reverting a project now updates an open editor immediately. Host-restored state previously only appeared after closing and reopening the plugin window — and the first control you touched wrote its stale value back over the freshly loaded preset. State loading is also safe against hosts that restore from a background thread.

  • Window sizes now restore exactly as saved. Restoring a project bumped any window narrower than the default back to 900 px wide (most noticeable with narrow saved layouts), and corrupt saved sizes were applied without limits; the saved size now restores within the window's real min/max bounds.

  • Hardened the audio-to-display handoff against a subtle memory-ordering race on Apple Silicon. In rare timing windows the display could accept a partially-updated audio snapshot — at worst a one-frame visual glitch; the lock-free handoff now issues the full memory fence the protocol requires.

  • The activation screen's "Buy license" link now opens the shop's product page for the plugin. It previously pointed at the old website address.

  • The activation screen's "Lost your key?" link now opens the licence portal. It previously pointed at a support page that no longer exists; it now goes straight to the portal where you can retrieve or resend your key.

v0.9.4

Added

  • FFT Delta can now show a Magnitude view. Alongside the default Difference view (the spectrum of the residual the scope draws), the FFT can show the magnitude transfer of main relative to the sidechain in dB, on a ±24 dB scale centred on 0. It compares per-channel magnitudes, so a pure phase or alignment move — even a stereo one where L and R shift differently — reads flat: proof you changed phase, not tone. A real EQ change still shows its curve. The Smoothing and Averaging knobs trade detail for a steadier reading (a stable read off program material wants more averaging; an EQ you are tweaking wants less). Choose it under Settings ▸ FFT ▸ Delta.
  • The FFT Delta now shows each channel on its own curve in Stereo and Mid-Side. Both the Difference and Magnitude views previously summed the two channels to mono before analysis; they now draw two curves — Left and Right in Stereo, Mid and Side in Mid-Side — matching the oscilloscope's per-lane Delta (Left / Mid in the main colour, Right / Side in the sidechain colour). A stereo phase or alignment difference that affects only one side is now visible on that side instead of averaging away. Mono, Left and Right remain a single curve.
  • The FFT measurement crosshair stays on as you hover, reads Max / Min / RMS, and has a smarter Option-snap. A Crosshair switch (Settings ▸ FFT ▸ Display, on by default) keeps the readout under the pointer as you move across the spectrum — switch it off to show it only while Option is held. Alongside the live frequency / note / dB, it now reports each frequency's Max and Min over a rolling window plus a steady RMS average, so you can read how much a band moves, not just its level at this instant. Hold Option to snap to the nearest peak: it picks the closest prominent peak to your cursor — by proximity, not loudness, so a quieter peak beside a louder one is still reachable — locates it on a denoised curve so the lock-on stays steady instead of chattering, and reaches quiet high-frequency peaks the old fixed threshold ignored.

Changed

  • The sample offset now locks the instant you press Enter, and remembers whether it's locked. Committing a typed value — including setting it back to 0 — locks the offset immediately; wheel and drag edits keep the existing 10-second auto-lock. The locked/unlocked state is saved with your settings, so unlocking a non-zero offset survives a reload.
  • The band-filter view toggle is now "Filters » FFT" / "Filters » Phase" (previously "Filter Display"), and the FFT page of the settings panel lists its switches above its sliders to match the Peak Hold section.

Fixed

  • Scope and FFT channel labels (L/R/M/S) read as a uniform gold. At their small size, the thinner letters rendered through the GL display at a slightly different apparent shade than the denser ones; the label size is nudged up so every letter reads as the same gold.
  • Sidechain Delta now nulls in the FFT, not just the scope. With a latency offset dialled in, the spectrum analyzer kept showing energy where the oscilloscope cancelled to silence. The FFT had aligned the sidechain by rotating it within the analysis window, so the offset left a large uncancelled remainder smeared across the spectrum; it now lines the two signals up over real samples and collapses to the floor like the scope.
  • The oscilloscope Delta now holds its null at the write cursor and through transport start/stop. With a large alignment offset (such as a linked sidechain's automatic latency correction), the Delta left a band of un-cancelled signal riding just ahead of the sweep cursor, and flashed a burst of the full signal on play, on stop, and on window resize. The renderer had aligned the sidechain by rotating it within the display window, which wrapped unrelated samples across the hidden cursor seam; it now splices in the real earlier audio so the null holds across the entire sweep. It also holds a clean null while a linked sidechain's alignment is still settling at play-start, instead of momentarily flashing the un-aligned signal.
  • Sliders respond consistently and precisely to the mouse wheel and drag. Every slider now shares one feel: the wheel is velocity-sensitive — fine (one step per notch when you scroll slowly, so you can land on an exact value) and coarse when you flick — and is no longer tied to the slider's range, so wide-range sliders (such as the sample-offset sliders) no longer jump by hundreds of steps per notch, which high-resolution mice and trackpads made worse. Click-drag is uniformly responsive across the main, sidechain and settings panels.
  • The level-meter "−∞" readouts read consistently. The LUFS, Peak and RMS infinity values now share one size and weight — the LUFS one previously rendered much smaller than the others — and the enlarged ∞ glyphs on the dB axis and meters use a lighter weight so they no longer look bold.

v0.9.3

Changed

  • Band slider thumbs now have a soft drop shadow, lifting them off the track.
  • Smoother scope / spectrum transitions. Collapsing or expanding the split between the oscilloscope and the spectrum analyzer — for example showing or hiding the analyzer, or dragging the divider past the snap point — now animates smoothly over a fraction of a second: the panes ease into place and the oscilloscope cross-fades as it shrinks, rather than snapping instantly. Reloading a session still opens at its saved split with no animation.
  • The band filter no longer redraws the whole waveform every frame. With the band filter engaged, the scope used to re-rasterise the entire waveform on every frame because the filter rewrites the whole buffer — cheap at small sizes, but very expensive on a wide plugin window (a stretched-out scope could drop from ~60 fps to ~10 fps with the filter on). The renderer now redraws only the columns that actually changed since the previous frame — the same approach already used with the filter off — so filtered viewing stays smooth even on a large display, with no change to how the waveform looks. The once-per -bar sweep wrap, which briefly touches both edges of the window, is handled without a full redraw too.
  • Long-window viewing is dramatically lighter on CPU. Every frame used to copy the entire visible window of audio from the ring buffer into the renderer — about 6 MB per frame per instance at 16 bars, scaling linearly with window length. The renderer now copies only the audio that arrived since the previous frame (typically a few KB), reusing the rest of the window from the previous frame's state. With multiple instances open at long windows, this roughly halves the scope's CPU use; combined with the band-filter change, 16-bar viewing with three instances and the band filter engaged now runs at full frame rate where before it dropped to a stutter.
  • Band filter at long windows no longer stalls the scope. With the band filter engaged at 8 or 16 bar windows — especially across multiple instances — the scope used to drop to ~10 fps and the UI could freeze for around two seconds the first time you turned the filter on. The filter now runs on a background worker thread and uses a lighter zero-phase implementation, so the scope stays fluid at full frame rate, the first-toggle freeze is gone, and the filter response feels immediate. Filtering remains true zero-phase — what you see still lines up with the unfiltered waveform sample-for-sample.
  • Lighter-weight oscilloscope rendering. The scope's GPU view no longer uses hardware multisampling; the waveform is already drawn with antialiased paths, so there is no visible difference, but each redraw costs noticeably less CPU. This eases the load when several instances are open or you are viewing long windows on older machines.
  • Clip indicators simplified to two on/off toggles. The Scope settings now expose plain "Clip Overlay" and "Clip Border" switches, both on by default. The previous "True Peak Clip" setting — which changed the border detector between true-peak and sample-peak rather than turning it on or off — is gone; the border now uses straightforward threshold detection and can be hidden entirely with the new switch. Toggling either takes effect on the next frame.
  • Labels and readouts lifted closer to white. The grey used for text throughout the UI — the grid axis labels (dB, time, and frequency), the level-meter readouts, and the settings, button, and slider text — was brightened for better legibility against the dark background.
  • Spectrum curve and peak-hold line are now easy to tell apart. The analyzer's main curve was drawn with a full-opacity outline that read the same as the peak-hold line, so the two blended together when peak hold was engaged. The curve now shows as a filled shape with a faint edge, and the peak-hold line is drawn a touch thicker and at full opacity on top — so peak hold stands out as a distinct line.
  • Loudness meter now reads true LUFS. The level meter's LUFS value is now a single, standards-correct (ITU-R BS.1770 / EBU R128) measurement for the whole stereo program, shown as one number at the top of the readout with Peak, RMS, and crest factor per channel below it — instead of a per-channel figure. Because loudness sums both channels the way the standard defines, a centred stereo signal now reads about 2.3 dB higher than before, and a −23 LUFS reference tone reads −23.0. Momentary, Short-term, and Integrated remain selectable. Under the hood the signal is now K-weighted continuously the way hardware loudness meters work, so the reading is gapless and steadier and the meter is lighter on CPU during long sessions and with several instances open. The secondary meter bar is now always RMS — the LUFS-M / LUFS-S bar option has been removed, since LUFS is a single program value rather than something to show per channel.
  • Spectrum analyzer movement is now consistent across FFT sizes. The separate Attack and Release controls are replaced by a single "Averaging" knob (0–100). It speeds up or slows down every FFT size — previously the response varied wildly with size (some sizes danced erratically, others crawled). The engine now compensates for each FFT window, so the perceived movement stays close across sizes and the knob always has an effect. Larger FFTs still respond a little slower (a long window is inherently a long average), but the jumpy mid-size behaviour is gone.
  • Spectrum analyzer defaults to a more responsive FFT size, and the range is trimmed. The default FFT size is now 8192 (was 32768) for a snappier analyzer out of the box, and the maximum is now 65536 — the old 131072 option added no useful detail and was unusably sluggish.
  • Spectrum peak hold now holds before it falls. Peak hold gained a "Hold" time (in the FFT settings, above the decay control; default 1.5 s) so peaks stay put briefly before decaying, and the decay rate was eased. The top of the Hold slider reads Infinite — the peaks never fall, so you can capture the maximum a signal ever reaches. Peak hold is now on by default, so transients are visible out of the box.
  • New spectrum smoothing controls. A "Smoothing" slider (0–100%) in the Display section applies fractional-octave smoothing to the live curve for a cleaner shape (off by default — full detail). A separate "Smooth" slider in the Peak Hold section smooths the peak-hold line so it reads as an average level; it defaults to 20% and keeps a modest built-in smoothing floor even at 0%, since a raw peak-hold is inherently grainy.

Fixed

  • Frozen spectrum can now be zoomed and panned. With the display frozen, the spectrum analyzer ignored zoom (scroll) and pan (Cmd-drag) — only the scope responded. The FFT now reframes the frozen spectrum the same way: it re-maps the captured curve to the new range without re-analysing, so the frozen content stays put (no drift or peak-hold decay) while you explore it.
  • Settings-panel hover highlights now track the mouse. Sliders and drop-down menus could fail to highlight on hover, or stay stuck highlighted after the mouse moved away (and stack up across several controls), because the value text drawn over each control was swallowing the mouse-over. They now highlight only while hovered. The settings panel also opens already active, so hover works immediately instead of only after switching tabs, and each tab's Reset button now matches the other buttons' width and height.
  • Spectrum curve vanished at zero fill. Turning the Fill amount down to 0 hid the whole curve, not just the shaded area — the fill slider was also driving the line's opacity. The curve line now stays visible at any fill amount; Fill controls only the shaded area beneath it.
  • Delta output and spectrum didn't null when the scope did. With Delta engaged on a sidechain — for example one instance feeding another's sidechain with latency compensation dialed in — the scope waveform nulled as expected, but the heard delta and the spectrum analyzer still showed the signal, an audible doubling of out-of-phase copies. The audio and spectrum paths aligned the sidechain to main in the wrong direction (or not at all); all three paths now share one alignment, so the delta you hear and the spectrum null exactly like the scope.
  • Octave slider too sensitive when dragging. In MIDI mode, the ±4-octave slider used velocity-based dragging, so a quick flick could jump several octaves at once. It now uses a controlled relative drag (roughly one octave per deliberate drag); the scroll wheel is unchanged.
  • Scope axis labels fainter than the spectrum labels. The oscilloscope's dB and time axis labels are drawn through the GPU view, which thinned their strokes so they read dimmer than the spectrum analyzer's labels. They now render at a matching brightness.
  • Peak hold time now persists. The level meter's peak-hold time was silently reset to its 2000 ms default on every session reload; it is now saved and restored correctly.
  • Spectrum peak-hold line no longer floats above the curve. Peak hold tracked the raw FFT bins instead of the smoothed display curve, so on transients it could sit above the visible spectrum; it now follows the curve you actually see.
  • No hitch on the first MIDI note (MIDI timebase). The first note in a session could briefly stall the audio thread while a note-frequency table built lazily; that table is now prepared up front.
  • Scope and spectrum analyzer now resize as one. The oscilloscope and the FFT analyzer below it were drawn on two separate surfaces that resized at slightly different rates, so dragging the window edge — or the divider between them — made the gap between the panes pump and the gold divider grip jump or get briefly covered. They now share a single drawing surface: the two panes resize together, the grip stays put, and dragging the divider tracks the cursor one-to-one.
  • Spectrum peaks no longer appear to change speed. The analyzer's attack/release smoothing and peak-hold fall were derived from a measured frame rate that fluctuated with display timing, so the peaks could visibly speed up and slow down — updating unevenly even with a single instance open. They are now driven by the actual time elapsed each frame, so the spectrum moves evenly and the attack/release/decay times stay accurate regardless of frame-rate jitter.

v0.9.2

Fixed

  • Sidechain waveform jitter between linked instances. When sidechaining one instance to another, the sidechain waveform could visibly jitter back and forth by one block each frame — worse at larger buffer sizes — on multi-core hosts that vary their per-block processing order. The linked read now stays phase-stable regardless of processing order.
  • Sidechain input dropdown showing the placeholder after reopening the editor. When an instance was linked to another instance, closing and reopening the plugin window would leave the picker reading "Sidechain Input" even though the scope was still tracking the correct linked instance. The picker label now matches the active link.
  • Auto delay compensation (ADC) was unreliable. Detection could either miss the transient entirely or always report a 50 ms offset, depending on whether the calibration window happened to overlap the transient. The detector now fires on the first sample whose absolute level exceeds −40 dBFS from the moment playback starts, so the reported offset matches the real transient position.

Changed

  • Brighter grid and labels. The grey used for gridlines, labels, and readouts was lifted for better contrast against the dark background.
  • Settings cog: defaults section now labelled. The Save / Restore / Factory buttons sit under a "Defaults" heading, matching the other grouped sections in the panel.

v0.9.1

Added

  • MIDI timebase mode. The scope timebase can now follow the frequency of incoming MIDI notes. Play a note into the track and the display shows a whole number of cycles of whatever pitch you're holding, phase-locked to the detected zero crossing at the left edge of the viewport — no horizontal drift, no jitter between notes.
  • Octave offset (MIDI mode). A ±4-octave slider changes how many cycles are shown without changing the played note. Useful for switching between single-cycle detail and multi-cycle comparison.

Fixed

  • Waveform stopping after extended use. Fixed an issue that could cause the scope to stop rendering during longer sessions. No action needed — the fix applies automatically on this update.
  • Spectrum-hidden state not persisting across DAW reloads. If you dragged the spectrum panel fully closed, reopening the session would silently re-open it. The hidden state now persists as expected.

v0.9.0

Initial Release