Skip to content

dev-dhg/orbit-looper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Orbit Looper

🎡 Vibe-Coded Plugin β€” This entire project was built with Claude Opus 4.6 using the audio-plugin-coder framework. I (the author) have no development experience β€” I provided the ideas and instructions, and AI wrote every line of code. This is a vibe project and will continue to be developed this way.

Contributions welcome! Feel free to report issues, request features, or submit pull requests. Just know that all future development will continue through AI-assisted vibe coding.


A guitar looper audio plugin with a modern WebView UI. Record, layer, and loop with a minimal, musician-friendly interface.


MIDI / Key Mapping

Metronome

Default UI

VST3 AU LV2 Standalone License JUCE 8


Features

Core Looper

  • Loop Level Knob β€” Controls how much of the previous loop is retained during overdub. 100% = fully additive, lower values = gradual decay
  • Multi-Layer Overdub β€” Up to 8 independent loop layers with non-destructive recording. Each layer can extend beyond the original loop length
  • Non-Destructive Undo β€” Remove the last overdub layer instantly. Undo from overdub cancels the active layer
  • Ditto-Style Footswitch β€” Single CC for full looper control:
    • 1Γ— Tap: Record β†’ Play β†’ Overdub β†’ Play (cycle)
    • 2Γ— Tap: Stop playback
    • Hold: Undo last layer (playing) / Clear all (stopped)
  • Overdub Arm β€” Queue overdub to engage at the next loop boundary instead of immediately. Blue visual indicator while armed
  • WAV Export β€” Export your loop mixdown as a 24-bit stereo WAV file
  • State Persistence β€” Loop buffer, all settings, MIDI/key mappings saved and restored with the plugin state

Metronome / Click Track

  • C++ DSP Metronome β€” Sample-accurate click synthesized in the audio thread. Routes through your audio interface (not OS speakers)
  • Time/Bars Mode β€” Manual max loop length OR auto-calculated from BPM Γ— Bars Γ— Beats
  • Rhythm Pattern Editor β€” Step-sequencer-style matrix for accent/regular beat patterns (up to 16 beats per bar)
  • Pre-Count β€” Configurable count-in bars before recording starts. Works with all trigger methods (button, key, MIDI, footswitch)

MIDI & Keyboard Control

  • 10 Mappable Actions β€” Record, Overdub, Stop, Clear, Undo, Footswitch, Bar Mode, Click, Pre-count, Arm Overdub
  • MIDI Learn β€” Press Learn, twist any CC on your controller β€” done
  • Key Bindings β€” Bind any keyboard key to any action. Auto-exclusive: one key per action
  • Edge-Triggered CC β€” Rising-edge detection (CC β‰₯ 64) for clean momentary footswitch/pedal use

Interface

  • WebView UI β€” Dark, responsive interface rendered via native WebView (WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux)
  • Resizable Window β€” Drag to resize with locked aspect ratio. UI scales via CSS zoom
  • Visual Feedback β€” Ring flash on undo (orange) and clear (red), pulsing state text, beat highlighting
  • Loop Timer β€” Real-time elapsed position display inside the knob (M:SS.t format)
  • Input/Output Gain β€” 0–12 dB boost on input and output with visual sliders

Supported Platforms & Formats

Platform Formats WebView Backend Architectures
Windows VST3, Standalone WebView2 x64, ARM64
macOS VST3, AU, Standalone WKWebView Universal (x64 + Apple Silicon)
Linux VST3, LV2, Standalone WebKitGTK x64, ARM64

Building from Source

Prerequisites

Tool Version Notes
CMake β‰₯ 3.22
C++ Compiler C++20 support MSVC 2022, Clang 14+, GCC 12+
Git Any recent For fetching JUCE via FetchContent

Platform-specific:

  • Windows: Visual Studio 2022 with "Desktop development with C++" workload
  • macOS: Xcode 14+ with command-line tools (xcode-select --install)
  • Linux: Development packages:
    # Ubuntu/Debian
    sudo apt-get install -y \
      build-essential cmake git \
      libasound2-dev libjack-jackd2-dev \
      libfreetype6-dev libx11-dev libxrandr-dev libxinerama-dev \
      libxcursor-dev libxcomposite-dev \
      mesa-common-dev libglu1-mesa-dev \
      libwebkit2gtk-4.1-dev libgtk-3-dev \
      libcurl4-openssl-dev
    
    # Fedora
    sudo dnf install -y \
      gcc-c++ cmake git \
      alsa-lib-devel jack-audio-connection-kit-devel \
      freetype-devel libX11-devel libXrandr-devel libXinerama-devel \
      libXcursor-devel libXcomposite-devel \
      mesa-libGL-devel \
      webkit2gtk4.1-devel gtk3-devel \
      libcurl-devel

Build Steps

JUCE 8.0.12 is fetched automatically via CMake FetchContent β€” no submodules or manual downloads needed. ASIO support is included out of the box (JUCE 8.0.11+ bundles the ASIO headers).

Windows

cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

macOS

cmake -S . -B build -G Xcode -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
cmake --build build --config Release

Linux

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

Build Output

After building, plugin binaries are located in:

build/OrbitLooper_artefacts/Release/
β”œβ”€β”€ VST3/
β”‚   └── Orbit Looper.vst3
β”œβ”€β”€ AU/                         # macOS only
β”‚   └── Orbit Looper.component
β”œβ”€β”€ LV2/                        # Linux only
β”‚   └── Orbit Looper.lv2/
└── Standalone/
    └── Orbit Looper[.exe]

Installation

VST3: Copy Orbit Looper.vst3 to your system's VST3 folder:

  • Windows: C:\Program Files\Common Files\VST3\
  • macOS: ~/Library/Audio/Plug-Ins/VST3/
  • Linux: ~/.vst3/

AU (macOS): Copy Orbit Looper.component to ~/Library/Audio/Plug-Ins/Components/

LV2 (Linux): Copy Orbit Looper.lv2/ to ~/.lv2/


Usage

Quick Start

  1. Load the plugin in your DAW or run the standalone version
  2. Connect your instrument (guitar, synth, etc.)
  3. Press Record β€” play your loop
  4. Press Record again β€” loop plays back, overdub starts
  5. Press Stop β€” loop continues playing (press again to resume)
  6. Turn the Loop Level knob to control how much previous audio is retained

Transport Controls

Button Action
Record Start recording / toggle overdub
Stop/Play Stop playback (keeps loop) / Resume if stopped
Clear Delete the entire loop
Undo Remove last overdub layer
Export Save loop as 24-bit WAV file

Metronome Setup (Bars Mode)

  1. Open the Metronome panel
  2. Toggle BARS mode
  3. Set BPM, Bars, and Beats per Bar
  4. Customize the rhythm pattern (accent/regular beats)
  5. Enable Click to hear the metronome
  6. Enable Pre-count for a count-in before recording

MIDI / Key Mapping

  1. Open the MIDI / Key Mapping panel
  2. Click Learn next to any action
  3. Press a CC on your MIDI controller or a key on your keyboard
  4. The binding is saved automatically with the plugin state

Parameters

Parameter Range Default Description
Loop Level 0–100% 95% Playback volume / decay per pass
Max Loop Length 10–600s 60s Maximum recording duration
Input Gain 0–12 dB 0 dB Boost input signal
Output Gain 0–12 dB 0 dB Boost output signal

License

This project is licensed under the MIT License.


Credits

Built with:

  • JUCE 8 β€” the leading framework for audio application and plugin development.

  • Audio Plugin Coder (APC) β€” A groundbreaking, open-source framework that enables musicians, producers, sound designers, and developers to create professional VST3/AU audio plugins using natural language and AI assistance.

About

Orbit Looper Plugin

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •