RaveMorph

May 28, 2026 · View on GitHub

A JUCE instrument plugin (VST3 + Standalone) that morphs between two sounds in the latent space of a RAVE model. Tempo-synced, MIDI-gated, with stereo width and dry/wet — all parameters are host-automatable / MIDI-mappable.

Features

  • RAVE model combo box — scans a folder created on first launch (<Documents>/RaveMorph/Models). Drop your .ts models there and hit Rescan.
  • Sound A / B — load two audio files (wav/aiff/flac), summed to mono.
  • BPM sync (optional) — detects each source's tempo (MiniBPM) and stretches it to the project BPM (Signalsmith Stretch) before encoding. Detected BPM is shown and manually editable per source (needed for ambient/drone material where detection is unreliable).
  • Morph A-B (xfade) — RAVE latent interpolation (slerp). MIDI-mappable.
  • Width (wide) — stereo widener (opposed detune). MIDI-mappable.
  • Dry/Wet (mix) — 0 = raw (tempo-aligned) sources crossfaded, 1 = RAVE morph. MIDI-mappable.
  • MIDI gate — any held note plays; no notes = silence (~5 ms anti-click fade).
  • State — model, sample paths, manual BPMs and sync state are saved.

Build

CMake ≥ 3.22, C++17. JUCE, LibTorch, MiniBPM and Signalsmith Stretch are all fetched automatically.

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --parallel

Options: -DLIBTORCH_VERSION=..., -DLIBTORCH_LOCAL=/path/to/libtorch, -DRAVEMORPH_USE_TORCH=OFF. CI builds Windows/macOS/Linux via GitHub Actions.

Dependency licenses

  • JUCE — GPL or commercial.
  • LibTorch — BSD.
  • MiniBPM — GPL (copyleft; OK for an AGPL-3.0 non-commercial project; no App Store distribution without a commercial license).
  • Signalsmith Stretch — MIT.
  • RAVE models — CC-BY-NC (non-commercial). Not bundled: users supply their own.

Intended as a free, copyleft (AGPL-3.0) project.

Notes

  • Stretching happens before RAVE encoding (offline, on load). Changing the project BPM live triggers a re-stretch + re-encode (costly; debounce for real use).
  • Signalsmith sounds best for modest stretch ratios (~0.75x–1.5x).
  • MiniBPM may pick the wrong tempo octave — hence the manual override.
  • Internal resampling is linear (fine for a POC).

Windows users: add <your-build-folder>\_deps\libtorch-src\lib to your system PATH environment variable so the standalone and DAW can locate LibTorch's DLLs at runtime (e.g. C:\Users\you\source\repos\raveMorph\build\_deps\libtorch-src\lib).