Skip to content

RusovDmitriy/oscilloscope

Repository files navigation

Multichannel Oscilloscope

A professional real-time multichannel oscilloscope plugin for audio visualization, built with JUCE.

Multichannel Oscilloscope Multichannel Oscilloscope Overlay

Features

Beat Sync Mode (Default)

  • DAW tempo synchronization: Waveform display aligns to beat/bar boundaries
  • Sync Units: 1/4 Bar, 1/2 Bar, 1 Bar, 2 Bars, 4 Bars
  • Beat grid overlay: Visual beat markers synced to DAW transport
  • Perfect for analyzing transients relative to the beat

Free Mode

  • Manual timebase: 1ms to 10 seconds adjustable time window
  • Traditional oscilloscope behavior

Display

  • Two display modes:
    • Vertical: Stacked channels with individual control strips (solo/mute)
    • Overlay: All channels overlaid with color-coded legend
  • Three drawing styles: Line, Filled, or Both
  • dB scale: Adjustable amplitude range (Min/Max dB)
  • Peak hold indicators: Visual peak markers with decay

Multi-Track Support

  • Up to 16 simultaneous plugin instances
  • Track Groups: Organize tracks into groups (0-15)
  • Mix to Mono: Combine multi-channel input to mono display
  • Color-coded tracks with automatic palette

Performance

  • Adaptive decimation: Efficient rendering at any timebase
  • HiDPI/Retina support: Crisp text on high-resolution displays
  • Pass-through audio: Zero latency, no audio processing

Terminal Theme

  • Classic green phosphor on black background
  • High contrast for studio environments

Controls

Control Description
Sync Mode Beat Sync (default) or Free mode
Unit / Timebase Bar divisions (Beat Sync) or ms (Free)
Min/Max dB Visible amplitude range
Display Vertical or Overlay mode
Style Line, Filled, or Both
Mix to Mono Combine channels
Group Track group filter (0-15)
Decimation Rendering quality (128-4096)
Freeze Capture current waveform

Building

Requirements

  • CMake 3.24+
  • C++17 compiler
  • JUCE framework (automatically downloaded via CPM)

Build Commands

# Configure and build (Debug)
cmake -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug
cmake --build cmake-build-debug

# Build Release
cmake -B cmake-build-release -DCMAKE_BUILD_TYPE=Release
cmake --build cmake-build-release

Output Formats

  • VST3
  • AU (macOS)
  • Standalone

Plugins auto-install to system folders after build.

Usage

  1. Load plugin in DAW or run standalone
  2. Route audio (supports up to 16 channels per instance)
  3. Beat Sync mode (default): Display auto-aligns to DAW tempo
  4. Adjust Unit to see different bar lengths
  5. Switch to Free mode for manual timebase control
  6. Use Min/Max dB to adjust visible amplitude range
  7. Use Track Groups to organize multiple instances
  8. Vertical mode: Use solo/mute buttons on each track
  9. Freeze to capture current waveform

Architecture

The plugin uses a lock-free multi-instance architecture:

  • TrackDataStore: Global shared audio buffer storage (up to 16 tracks)
  • TrackMetadataStore: Track names, colors, and group assignments
  • WaveSnapshotBuilder: Creates immutable snapshots for GUI rendering
  • Beat Sync: Time-mapped buffers align to DAW transport position

See CLAUDE.md for detailed architecture documentation.

License

MIT License. Uses JUCE framework - see https://juce.com/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published