Skip to content

cyberdude/hypnoloop

HypnoLoop

A stereo audio effect plugin that transforms any incoming signal into a hypnotic, tempo-locked evolving loop. Capture moments, create seamless loops, and add subtle drift and morphing while preserving the recognizable identity of your source material.

Demo

Watch the walkthrough on YouTube: HypnoLoop demo.

Documentation

Features

  • Tempo-Locked Looping: Syncs to host BPM for musical loop lengths (1/16, 1/8, 1/4, 1/2, 1 bar, 2 bars)
  • Click-Free Playback: Advanced crossfade algorithm with ADSR envelope shaping ensures seamless looping with no clicks or pops
  • Drift Modulation: Slow sine LFO (0.1 Hz) modulates loop start position to create evolving textures without pitch artifacts
  • Stereo Motion: Independent L/R drift offsets for spatial movement
  • Morph Stage: Tilt EQ and soft saturation for tone shaping without losing source identity
  • Hypnosis Macro: Single control that scales drift, morph, and motion for instant hypnotic effects
  • ADSR Envelope Controls: Adjustable attack and release times (0-50ms) for smooth loop boundaries
  • Real-Time Capture: Continuous recording to ring buffer with instant lock capability
  • Smart Re-Lock: Automatically re-locks with new length when loop length is changed while locked

Formats

  • VST3 - Compatible with all major DAWs
  • AU - Native macOS Audio Unit support
  • Standalone - Run as a standalone application

Building

Requirements

  • macOS 10.13 or later
  • CMake 3.22 or later
  • Xcode Command Line Tools
  • JUCE (included as submodule)

Build Instructions

# Clone the repository
git clone https://github.com/cyberdude/hypnoloop.git
cd hypnoloop

# Initialize submodules (if JUCE isn't already present)
git submodule update --init --recursive

# Create build directory
mkdir build
cd build

# Configure with CMake
cmake .. -DCMAKE_BUILD_TYPE=Release

# Build
cmake --build . --config Release -j$(sysctl -n hw.ncpu)

# The plugins will be installed to:
# - VST3: ~/Library/Audio/Plug-Ins/VST3/HypnoLoop.vst3
# - AU: ~/Library/Audio/Plug-Ins/Components/HypnoLoop.component
# - Standalone: build/HypnoLoop_artefacts/Release/Standalone/HypnoLoop.app

Usage

Basic Workflow

  1. Load the plugin on an audio track in your DAW
  2. Select loop length from the dropdown (1/16 to 2 bars)
  3. Play audio through the plugin - it continuously records to the buffer
  4. Press LOCK when you want to capture the current moment
  5. Change loop length while locked - automatically re-locks with the new length
  6. Adjust parameters to shape the loop:
    • Hypnosis: Macro control for overall hypnotic effect
    • Drift: Amount of position modulation (no pitch change)
    • Morph: Tone shaping and saturation
    • Motion: Stereo width and movement
    • Color: Tilt EQ (-1 = dark, +1 = bright)
    • Attack: Fade-in time at loop start (0-50ms)
    • Release: Fade-out time at loop end (0-50ms)
    • Mix: Dry/wet blend
    • Output: Gain control (-24 to +12 dB)

Tips

  • Drums: Use shorter loops (1/16, 1/8) with moderate drift to create evolving grooves
  • Vocals: Try 1/4 or 1/2 bar loops with low drift to maintain intelligibility
  • Pads/Synths: Longer loops (1-2 bars) with higher hypnosis for ambient textures
  • Field Recordings: Experiment with different loop lengths and high morph for textural effects

Parameter Details

Parameter Range Description
Lock Toggle Freezes the current loop region. Changing length while locked automatically re-locks
Loop Length 1/16 - 2 bars Musical length of the loop (tempo-synced)
Hypnosis 0.0 - 1.0 Macro control scaling drift, morph, and motion
Drift 0.0 - 1.0 Depth of loop position modulation (slow LFO, no pitch change)
Morph 0.0 - 1.0 Amount of tone shaping and saturation
Motion 0.0 - 1.0 Stereo motion and spatial width
Color -1.0 - 1.0 Tilt EQ (negative = darker, positive = brighter)
Attack 0.0 - 50.0 ms Fade-in time at loop start to prevent clicks
Release 0.0 - 50.0 ms Fade-out time at loop end to prevent clicks
Mix 0.0 - 1.0 Dry/wet blend
Output -24 - +12 dB Output gain

Technical Details

Architecture

  • RingBuffer: 8-second stereo circular buffer with linear interpolation
  • GrainLooper: 2-window crossfade looper with Hann windowing (20ms default) and ADSR envelope shaping
  • MorphStage: Tilt EQ and soft saturation processing
  • HypnoLoopEngine: Main orchestrator handling capture, playback, drift, tempo sync, and envelope control

DSP Features

  • Click-Free Looping: Uses two read heads with 180° phase offset and crossfade windowing
  • ADSR Envelope: Precomputed attack/release envelopes (sine curves) applied at loop boundaries to prevent clipping
  • Drift Modulation: Slow sine LFO (0.1 Hz) modulates loop start position. Drift updates only at loop boundaries to prevent pitch artifacts. Max drift: 5% of loop length or 20ms (whichever is smaller)
  • Parameter Smoothing: All continuous parameters smoothed at 20-100ms to prevent zipper noise
  • Real-Time Safe: No heap allocation in audio thread, pre-allocated buffers and envelope tables

Performance

  • Optimized for 48kHz / 512 sample buffer sizes
  • CPU usage: < 5% on Apple Silicon at default settings
  • No denormal handling issues (uses ScopedNoDenormals)

Known Limitations (V1)

  • No FFT spectral processing
  • No multi-voice granular synthesis
  • No MIDI control
  • No sidechain input
  • Free length mode (ms-based) not implemented (V1.1 planned)

License

HypnoLoop is licensed under the GNU Affero General Public License v3.0 or later — see LICENSE.

This project uses JUCE as a Git submodule. JUCE is dual-licensed under the AGPLv3 and the commercial JUCE licence. If you build or distribute this software under the open-source path, you must comply with the AGPL (including for combined works with JUCE). See JUCE/LICENSE.md and NOTICE for third-party terms and attributions.

Building VST3 or AU binaries may require additional SDKs and acceptance of their respective vendor terms (for example Steinberg VST3, Apple Audio Unit). This repository does not redistribute those SDKs.

Credits

Built with the JUCE framework.


Version: 1.0.0
Platform: macOS (Universal Binary: arm64 + x86_64)

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors