Skip to content

Replace the tabs with a one-page interface around the plant - #9

Merged
codeskine merged 14 commits into
mainfrom
interface-redesign
Nov 3, 2026
Merged

codeskine merged 14 commits into
mainfrom
interface-redesign

Conversation

@codeskine

Copy link
Copy Markdown
Owner

Replaces the tabbed Rugiada window with one page. Frequency, the plant with Feedback at its heart, and Body share the middle band; one row below holds FILTER, REVERB, PONG and ECHO; a SETUP panel holds Strings, Output and MIDI. The engine does not change, and renders match the reference checksums.

Why

The tabs hid most of the instrument while it played, the plant was decorative more than informative, and each feature added a tab. Drosera is played live first, so everything touched while playing is now on screen at once. Design: docs/superpowers/specs/2026-11-03-interface-redesign-design.md, which replaces the Rugiada spec. Mockup: docs/design/drosera-redesign-mockup.html. Plan: docs/superpowers/plans/2026-11-03-interface-redesign.md.

Interface

  • Symmetric, with no boxes or signal lines. Red marks the controls inside the feedback loop, amber those after it.
  • The plant is a sundew: each tentacle is a band, lowest at the top and clockwise, short and curled at rest, unfurling as its band sounds. Levels show from −54 dBFS. Under POLY the strings' drops get a ring.
  • An arc over Highpass and Lowpass draws the band that survives in the loop; one over Tone draws the echo's band-pass. A dot beside Echo Time blinks at the real time between repeats, two dots in turn with PONG.
  • PONG's four knobs are always shown, dimmed and usable in CLASSIC.
  • Readouts say what sounds: an interval the note range holds back reads as played, tagged LIMIT, and Frequency names the chord under POLY.
  • The header has a PRESET field with a menu and a SETUP field.
  • The window scales from 75 % to 150 % with its proportions. A host that forces another aspect gets the design fitted and centred. The scale is saved in place of the open tab; older projects open at 100 %.
  • Inter and Cormorant Garamond are embedded, under the SIL Open Font License (assets/fonts/, THIRD_PARTY_LICENSES.md).

Parameters and state

IDs, names and order do not change. uiTab is no longer saved; a saved one is ignored. uiScale is new, an atomic like uiTab was.

Testing

  • check_reference.sh passes with no new checksums. render_test, voice_allocator_test and plugin_host_test with the unchanged state-baseline.bin pass.
  • ui_test replaces the tab tests with one-page tests, and adds the arcs, the pulse, the readouts, the header, the setup panel, scaling (persisted, damaged state, proportions, a host-forced wider size, off-thread restore), released voices under MIDI Gate, the plant's band order, how far a sounding tentacle stands out, a played note against the rest, and loud tentacles staying inside.
  • A whole-branch review found no critical issues; its important findings are fixed with tests.
  • A scripted probe drove the real processor and editor via MIDI at 60 fps: the light tracks pitch with a correlation of 1.00 over three octaves, and a plant repaint costs about 5.7 ms at 2× in JUCE's software renderer.
  • By hand, still to do: the mouse and preset menu in a DAW as AU and VST3, GUI CPU below 5 % of a core at 60 Hz, and the plant judged by eye with real sound.

🤖 Generated with Claude Code

codeskine and others added 14 commits November 3, 2026 17:07
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d tentacles inside

A host that sets a wider size than 900:560 cut off the row of controls: the window now fits its design inside, centred,
and saves the scale within 75 % to 150 %. With MIDI Gate on, a released voice was still named and ringed though it is
silent. Loud tentacles were cut flat at the plant's edge; they now shorten until their tip and glow fit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… out

Spreading neighbouring bands around the leaf hid every change of pitch: a partial moving one band jumped to a
tentacle 150 degrees away. Long tentacles at rest left a sounding one only about twice as long as a silent one.
Bands now run from the lowest at the top, clockwise, as in Rugiada, and tentacles rest short, so a sounding one
stands seven times as far from its root on average.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From -72 dBFS the loop's noise and far harmonics kept a third of the tentacles half open under a single note, a
median of 0.18. From -54 dBFS the bands well below the note rest (median 0) while its partial stays open (0.69).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he embedded fonts

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codeskine
codeskine merged commit 4c3826b into main Nov 3, 2026
3 checks passed
@codeskine
codeskine deleted the interface-redesign branch November 4, 2026 07:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant