Reaper Scripts and FXs

A collection of REAPER plugins and scripts developed for specific compositional and performance needs. JSFX plugins are real-time audio/MIDI processors; Lua scripts are utility actions for project management. All free to use and modify.

These plugins and scripts are provided as-is. If you find any bugs or issues, please report them.


JSFX Plugins

MIDI Sustain Pedal Handler JSFX

Emulates sustain pedal behaviour for any MIDI-triggered plugin that doesn’t natively respond to CC64. When the sustain pedal is pressed, the plugin intercepts Note Off messages and holds them in a buffer. When the pedal is released, all held Note Off messages are sent, stopping the sustained notes. Useful, for example, with ReaSamplOmatic5000 or other samplers that ignore the sustain pedal. The plugin also blocks CC64 from passing downstream, preventing conflicts with other effects in the chain.

HOW IT WORKS

CC64 ≥ 64 → holds Note Offs · CC64 < 64 → releases all held notes · CC64 blocked in output

DOWNLOAD

MIDI Saw Generator JSFX

A minimal audio oscillator controlled by MIDI. Generates a sawtooth wave at a configurable frequency, activated by a specific MIDI note. When the chosen note is pressed the saw wave plays; when the note is released, it stops. All other MIDI notes are ignored. Designed for sub-audio and low-frequency applications but works across the full spectrum.

PARAMETERS

MIDI Note trigger — which note activates the oscillator (0–127)
Frequency — saw wave frequency in Hz (0.1–200)

DOWNLOAD

Audio to MIDI Gate JSFX

Converts audio input level into MIDI Note On/Off messages. When the incoming signal exceeds the threshold, the plugin sends a Note On; when it drops below, it sends a Note Off after a configurable hold time. Includes a fade envelope via CC7 (volume) for smooth attack and release transitions, making it ideal for sidechain-triggered samplers or any setup where audio energy should control MIDI instruments.

PARAMETERS

MIDI Note — note to send (0–127)
Threshold — gate open level in dB
MIDI Channel — output channel (1–16)
Velocity — Note On velocity
Hold time — minimum gate duration in ms

DOWNLOAD

Audio to Sine — Pitch Follower JSFX

Detects the pitch of the incoming audio signal via autocorrelation and generates a sine wave that follows it in real time. The output is a clean sinusoid at the detected frequency, with an optional pitch shift of up to ±24 semitones. An audio gate controls when the sine is active, based on input level. Designed for monophonic sources — voice, single instruments, feedback systems.

PARAMETERS

Threshold — gate level in dB
Hold time — gate hold in ms
Pitch Shift — ±24 semitones
Smoothing — pitch tracking smoothness (0–1)
Min / Max Freq — detection range in Hz
Output Volume — sine output level

DOWNLOAD

MIDI Random Rhythm Generator JSFX

Listens for a specific MIDI input note and, while it is held, generates a rhythmic stream of Note On/Off messages on a different output note. The rhythm can range from perfectly metronomic to completely chaotic. Includes an integrated sustain pedal handler, so the generated pattern continues correctly even when using a sustain pedal. The input note is blocked from output — only the generated pattern passes through.

PARAMETERS

Input Note — which note triggers the pattern (0–127)
Input Channel — 0 = all, or specific channel
Output Note — note sent in the pattern
Output Channel — output MIDI channel
Velocity — output note velocity
Speed — base tempo (slow ↔ fast)
Irregularity — rhythmic chaos (metronomic ↔ chaotic)

DOWNLOAD

Hyperbass Pitch Detector BETA JSFX

A pitch detector optimised for very low frequencies, down to 10 Hz. Uses zero-crossing detection with a 4-pole lowpass filter and sub-sample interpolation for accurate frequency measurement of signals that behave more like individual pulses than continuous waveforms. Includes a real-time graphical display showing detected frequency (3 decimal places), note name with octave, cents deviation with a tuner-style bar, detection confidence, filtered waveform, and a reference row with octave 0 note frequencies.

PARAMETERS

Gate — on/off with threshold in dB
Min / Max Freq — detection range (default 10–80 Hz)
Analysis Window — number of cycles for analysis
Smoothing — reading stability (0.5–0.99)
Audio Output — passthrough or muted

DOWNLOAD


Lua Scripts (ReaScript)

Fix all items into new project sub-folderLua

Collects all media files used in the current project — even if scattered across different folders and drives — and copies them into a single subfolder inside the project directory. Automatically updates all internal references so the project points to the new file locations. Useful for archiving, transferring, or cleaning up projects that pull media from many sources.

DOWNLOAD

Rename items from DAW

Renames the media file of the selected item both in the DAW display and on disk. Updates all references within the project so nothing breaks. Select an item, run the action, type the new name — the file on disk and every reference in REAPER are updated simultaneously.

DOWNLOAD

Scans all available drives to find and relink media files associated with offline items in the current project. When a project is opened and some items appear offline because the files have been moved or the drive structure has changed, this script searches recursively across all mounted volumes, matches files by name, and restores the connections automatically.

DOWNLOAD

Check Media Paths Lua

Checks whether all media files referenced by the project are located within the project folder or its subfolders, and reports the full path of every file that lives outside the project directory. Available in two versions:

Basic — Scans media items on the timeline only. Fast and straightforward: checks every audio/video file loaded in the arrange view and flags those stored outside the project folder.

DOWNLOAD — Basic

Extended — In addition to timeline items, inspects the internal state of every plugin/FX on every track, looking for file references embedded in their configuration — for example, samples loaded in ReaSamplOmatic5000 or other samplers. Catches files that wouldn’t appear as regular items in the arrange view.

DOWNLOAD — Extended


Installation

JSFX Plugins

Copy the .jsfx file into REAPER’s Effects folder. To find it: Options → Show REAPER resource path, then open the Effects directory. After copying, the plugin will appear in the FX browser — search by name. If it doesn’t show up, right-click the FX list and select Rescan.

Lua Scripts

In REAPER, go to Actions → Show action list → New action → Load ReaScript, then select the .lua file. The script will be available as an action — you can assign it to a toolbar button or keyboard shortcut.


All plugins and scripts are provided as-is, free to use and modify. If you find them useful or build something with them, I’d be happy to hear about it.