Skip to content

An audio plugin for modulating playback rate to create slowdowns, speedups, reversals, and tape-style transport effects

License

Notifications You must be signed in to change notification settings

dpezdirc/PlaybackRateModulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Playback Rate Modulator

Playback Rate Modulator is an audio effect plugin that dynamically alters the playback rate of an incoming signal by recording it into a buffer and playing it back at a user-controlled, automatable rate.

Example use cases include:

  • Gradually slowing down or speeding up audio over time
  • Simulating analog tape effects (power-down, fast-forward, rewind)
  • Creative time manipulation and reverse playback effects

How It Works

The plugin continuously records the input signal into an internal buffer. The output is generated by reading from this buffer at a rate defined by the Rate control.

Because the effect relies on previously recorded audio, some rate settings inherently introduce latency between the input and output. This behavior is fundamental to how playback-rate modulation works and is explained further below.

Controls

Buffer Length

Sets the maximum duration of recorded input audio stored in the internal buffer.

  • Longer buffer lengths provide more history of the input signal
    • Enables longer slowdowns, reversals, or other time-based effects without running out of data
  • Shorter buffers reduce memory usage but limit how long the effect can remain active

In the event of insufficient buffer size, the plugin is bypassed. For more information, see: Buffer Limitations & Fallback Behavior.

Rate

Controls the playback rate of the recorded input signal.

  • Rate = 1

    • Normal playback speed.
  • 0 < Rate < 1

    • Slows down playback.
    • This introduces latency with the output gradually lagging more and more behind the input the longer this rate is active.
  • Rate > 1

    • Speeds up playback.
    • This is only possible if the output is currently lagging behind the input (for example, after some time running at a rate < 1).
    • The plugin cannot speed up current input audio, since future samples do not exist yet.
  • Rate < 0

    • Plays the recorded input signal in reverse.
    • Reverse playback consumes buffer history quickly and therefore requires sufficient buffer length.

The Rate parameter is designed to be safely automated for smooth time-based effects.

Buffer Limitations & Fallback Behavior

When running the plugin at a non-unity rate, over time the input and output will gradually fall out of sync. Eventually, the read pointer will be trying to access data that was too far in the past (and has already been overwritten with new data) or data that does not yet exist (future data). When this happens, the fallback behavior is to bypass the plugin's processing, so the current input is sent directly to the output.

Resetting Latency

In the event that the plugin has been bypassed due to the output lagging too far behind the input, the latency can be reset by briefly setting the Rate to its maximum value, allowing the playback position to catch up to the input. This effectively resets the plugin to its initial state.


Installation

Prebuilt Binary (Windows Only)

Currently, prebuilt binaries are provided for Windows only.

  1. Download the latest VST3 binary from the Releases page.
  2. Copy the .vst3 file to: C:\Program Files\Common Files\VST3
  3. Rescan plugins in your DAW if necessary.

macOS / Linux

Prebuilt binaries are not currently available for macOS or Linux.

To use Stutter on these platforms, you must build the plugin from source.

Building from Source

JUCE is included with the respository as a git submodule, therefore building the plugin is possible without an existing JUCE installation.

Prerequisites

  • Projucer executable
    • The JUCE repository does not contain a prebuilt Projucer executable; you must build from source or download it separately in a JUCE release.
  • A supported IDE (e.g. Visual Studio or Xcode)

Steps

  1. Clone the repository with submodules:

    • git clone --recurse-submodules https://github.com/dpezdirc/PlaybackRateModulator.git
  2. Open the .jucer file in Projucer.

    • The project is preconfigured to reference the JUCE modules from the included submodule directory; no modification of the .jucer file is required.
  3. Generate the project files for your platform (e.g. Visual Studio / Xcode).

  4. Build the plugin in your IDE of choice.


License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).
See the LICENSE file for full license terms.

This plugin is built using the JUCE framework, which is included in this repository as a git submodule.
JUCE is dual-licensed under the AGPLv3 and a commercial license. This project uses JUCE under the terms of the AGPLv3, in accordance with JUCE’s licensing requirements.
See the JUCE submodule and its accompanying license file for detailed information.

About

An audio plugin for modulating playback rate to create slowdowns, speedups, reversals, and tape-style transport effects

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages