Skip to main content

Organisms (components/organisms/)

Self-contained UI blocks that compose atoms and molecules into functional sections of the DAW interface.

Components

ComponentDescription
MixerChannel.tsxFull channel strip — volume fader, pan, mute/solo, send knobs, plugin slots, level meter, record strip. One instance per audio track.
MasterChannel.tsxMaster bus channel strip — master fader, stereo meters, spectrum analyzer, stereo width/phase/balance displays.
TrackHeader.tsxTrack lane header (left side of arrangement view) — track name, color dot, mute/solo.
TrackLane.tsxTrack lane content area (right side of arrangement view) — renders MIDI clips, sections, and playhead.
TimelineRuler.tsxBar/beat ruler at the top of the arrangement view. Shows bar numbers and beat grid.
ChatInputBar.tsxChat input textarea with send button and model selector.
ChatMessageList.tsxScrollable list of chat messages with auto-scroll-to-bottom.
LoadingScreen.tsxFull-screen loading overlay shown during initial plugin scanning and project load.
layout/ExportStatusIndicator.tsxInline export progress widget mounted in the bottom StatusBar. Listens for notifications:export_progress / :export_done and shows a small label + bar + percent while a background export runs.
PluginCompatibilityModal.tsxPost-load modal for resolving missing plugins in collaborative projects. Shows per-plugin cards with “Best Match” / “Disable” / “Keep Missing” options. Substitutions are runtime-only (never saved to disk). Uses findFallbackPlugin() for category-based matching.

Design Conventions

  • Composition — Organisms compose molecules/atoms, they don’t reimplement their logic. MixerChannel renders VolumeFader + PanControl + MuteSoloButtons etc.
  • Self-contained state — Each organism reads directly from Zustand stores via selectors. No prop drilling from parent panels.
  • Track-scopedMixerChannel and TrackLane receive a trackIndex and select all their data from useMixerStore.