Skip to content

Repository files navigation

VCVRipplerX

A VCV Rack plugin port of RipplerX, the physically modeled synth capable of sounds similar to AAS Chromaphone and Ableton Collision.

This project shares the license of the upstream RipplerX project: it is released under the same GPL-3.0 license (see LICENSE). The upstream engine is included as a git submodule pinned at e9f6537 (v1.5.19).

Status: BETA. This port is under active development and may contain bugs or change behavior between releases. Feedback, bug reports and feature ideas are very welcome — please open an issue or PR on the repository.

Features

  • Dual resonators with serial and parallel coupling.
  • 12 models of acoustic resonators: String, Beam, Squared, Membrane, Plate, Drumhead, Marimba, Marimba2, Bell, Djembe, Open tube, Closed tube.
  • Inharmonicity, Tone, Ratio, Material, HitPos and partials (up to 64 per resonator) to shape the timbre.
  • Noise and mallet generators, including stock mallet samples bundled as a header (no external sample loading required).
  • Velocity mapping: 21 velocity-mappable knobs (mallet mix/res/stiffness, noise mix/res/filter/env, A/B decay/hit/inharm/damp/tone) with an optional "Vel Map" UI mode.
  • Polyphonic, with a V/OCT + Gate + Velocity voice input.

Differences from upstream RipplerX

  • No JUCE. A minimal include/JuceHeader.h substitute provides the few types RipplerX expects; the DSP is built directly into the VCV Rack SDK. (The JUCE-only Sampler.cpp is excluded.)

  • Widgets slightly rearranged to fit the VCV panel layout.

  • No built-in preset browser on the panel. Presets are handled by VCV Rack's own Preset system (factory .vcvm files are shipped in presets/).

  • No pitchbend. The module receives pitch directly from the V/OCT input, so a MIDI-style pitch-bend control is not required. (The upstream bend_range param exists only for parity and is hidden.)

  • No external mallet sample loading from file. Stock file samples (Click, Metal, Wood, ...) are bundled as a merged header (src/RipplerXSamples.h); the upstream "Load File" / user-sample path is deferred. As an alternative, an experimental Mallet Sample input lets you feed a live mallet sample from any external sampler or generator.

  • More inputs and outputs for precise control of the audio flow:

    Inputs — Pitch (V/OCT), Trigger, Velocity, Sample (experimental: feed a live mallet sample from any external sampler or generator), Sidechain (excites both resonators A and B), Sidechain A / Sidechain B (directly excite the A/B resonators individually), Filter in (feeds the comb).

    Outputs — Left/Right (stereo out), Mallet sample / Direction / processed, Noise, Resonator A, Resonator B, Total, Comb 0, Comb 1.

Building

Requires the VCV Rack SDK (Rack 2). Standard plugin build:

make dep
make dist

This initializes the nested submodules automatically (RipplerX and its MTS-ESP dependency). The built plugin appears in dist/.

CI builds for Windows, Linux and macOS are provided via .github/workflows/build-plugin.yml.

License

GPL-3.0 — see LICENSE. This applies to the ported code as well as the bundled upstream engine; both are covered under the same license as the RipplerX project.

About

A VCV Rack plugin port of RipplerX, the physically modeled synth.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages