Repository navigation
Rendered instrument UI and the shared Affine design language - #3
Merged
Merged
Conversation
Vendor the affine_ui JUCE module, its bundled OFL typefaces and the design language it implements. The folder is identical in every Affine plug-in and renders knobs, faceplates, meters and displays procedurally at the display's physical scale.
Replace the flat editor with the Affine family instrument: IN and OUT LED ladders with clip cells around a backlit high-band reduction meter, calibrated Threshold, Strength and Release knobs, and a latching Listen key. Metering semantics are unchanged: stale data still goes dark, the output column is relabelled while auditioning, and multiband mode still disables the one-split controls. Tests follow the new editor size and component types.
Rewrite the UI design notes for the new editor, refresh the README and state screenshots from the UI test captures, and drop captures of the previous interface.
Add the Broadcast, Hi-Fi and Stealth finishes alongside Laboratory: hammertone, powder-coat and black-glass faceplates; bakelite and polished aluminium knob materials, ribbed skirts and LED rings; piano-key, toggle, polished-square and soft-key buttons; moulded, chrome and flush meter housings with coloured zones and a centre rest; horizontal ladders; alphanumeric Nixie tubes; a tuning dial and illuminated legends; jewel lamps, lit windows, rack ears, name plates, end caps and screen glass. The design language now describes each finish and shows both products in all four.
Matte black hardware with LED-ring knobs, a Listen soft key and one teal screen: six seconds of measured high-band reduction beside input and output bars. The capture test plays plucked notes at real-time pace so the captured history holds readings the processor produced.
Describe the Stealth layout, displays and states in the UI design notes and the README, and replace the screenshots with captures from the UI tests.
This was referenced Sep 28, 2026
Keep the matte black hardware the products use and remove the other three finishes: their panel textures, knob materials, key styles, meters, tubes, dials, panel hardware and two fonts. The Stealth values become the kit defaults, so a product sets only its screen colour. Add screen helpers for captions, lit numerals and segmented bars, and a section title for control groups, and move both editors onto them. The design language is rewritten around the one finish as version 3.0.
The design language now has a single finish, so the notes and screenshot descriptions no longer name one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuilds the Suppressor editor as rendered matte black hardware and introduces the Affine design language, a shared kit that HDN Ring Modulator adopts in affinedsp/hdn-ringmod#38 (companion PR).
Real capture from the UI tests: six seconds of plucked notes processed at real-time pace, suppressing between notes.
This design was chosen from four alternatives (#4, #5 and #6, plus the original design first proposed here). The chosen one, Stealth (#6), is merged into this branch, and the shared kit is reduced to it.
What changed
libs/affine-ui(new, identical in both repos): theaffine_uiJUCE module (v3.0), bundled OFL fonts, andDESIGN_LANGUAGE.md. The powder-coat panel and the knobs are shaded per pixel at the display's physical scale and cached, so they stay sharp from 100% to 200% and on Retina. Only moving parts repaint. A product sets only its screen colour.PluginLookAndFeel.*andassets/fonts(the fonts now live in the shared kit).docs/UI_DESIGN.mdis rewritten for this editor (the previous version still described an older 1000×640 layout with 20 controls), and the README and state screenshots are refreshed from the UI test captures.Preserved behaviour
--and the plot breaks. Multiband mode still disables Threshold and Strength. The status strings and the accessible meter summary are the same.Verification (macOS, arm64)
ctest: 2/2 pass. The UI suite has 8 cases and 435 assertions. It covers bundled fonts and contrast (including the screen colour), the native VST3 and CLAP editor embedding and lifecycle, exact entry, gestures, state recall, truthful live, stale, bypass, audition and learning states, clip reporting, and rendering at 100–200%.SUCCESSfor the VST3.ui-evidence-*artifacts.Notes for review
affinedsp/affine-uirepo, moving the folder there is mechanical.