reaper-jsfx-core

Foundation for REAPER JSFX plugin development. Use when writing any JSFX plugin - covers EEL2 language syntax, code sections, special variables, performance optimization, and reusable library patterns. Triggers on requests for JSFX, JS effects, EEL2, or Reaper plugin development.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "reaper-jsfx-core" with this command: npx skills add mthines/jsfx-agent-skills/mthines-jsfx-agent-skills-reaper-jsfx-core

REAPER JSFX Core

Foundation skill for writing JSFX audio plugins in REAPER. This skill covers the EEL2 language, code structure, and performance optimization patterns essential for any JSFX plugin.

Always load this skill when working with JSFX. Other JSFX skills (audio, synth, midi, ui) build upon this foundation.

Rules

RuleDescription
languageEEL2 syntax, operators, math functions, loops, strings, user-defined functions
sectionsCode sections (@init, @slider, @block, @sample, @gfx, @serialize) and execution flow
variablesSpecial variables, slider definitions, transport state, PDC, shared memory
performanceCPU optimization, denormal handling, branchless patterns, memory efficiency
librariesCreating and using .jsfx-inc include files, namespacing, code organization

Official Documentation

Key Principles

1. Performance First

JSFX runs in real-time audio context. The @sample section executes thousands of times per second (e.g., 44,100 times/sec at 44.1kHz). Every operation matters:

// BAD: Branch in sample loop
@sample
condition ? (
  spl0 *= gain1;
) : (
  spl0 *= gain2;
);

// GOOD: Branchless - compute gain once in @slider
@slider
gain = condition ? gain1 : gain2;

@sample
spl0 *= gain;

2. Precompute in Appropriate Sections

Move calculations to the earliest possible section:

SectionRunsUse For
@initOnce on load/resetMemory allocation, lookup tables, constants
@sliderOn parameter changeCoefficient calculation, derived values
@blockPer audio block (~1-10ms)Tempo sync, MIDI preprocessing
@samplePer sample (44100+/sec)Only essential sample processing

3. Variables Are Global by Default

EEL2 variables don't need declaration and are global. Use meaningful names and conventions:

// Slider-derived values: prefix with slider name
slider1:volume_db=0<-60,12,0.1>Volume (dB)
@slider
volume_db_lin = 10^(volume_db/20);  // Linear gain from dB

// State variables: descriptive names
filter_z1 = 0;  // Filter state (z^-1)
env_current = 0;  // Envelope current value

// Constants: UPPER_CASE or prefix
TWO_PI = 2 * $pi;
MAX_DELAY_SAMPLES = 192000;

4. Use Memory for Buffers, Variables for State

@init
// Buffers in memory (addressable array)
delay_buffer = 0;  // Start at memory offset 0
delay_length = 48000;
freembuf(delay_buffer + delay_length);  // Inform memory manager

// State in named variables (faster access)
delay_write_pos = 0;
delay_read_pos = 0;

@sample
// Memory access for buffer
delay_buffer[delay_write_pos] = spl0;

// Variable access for state
delay_write_pos += 1;
delay_write_pos >= delay_length ? delay_write_pos = 0;

Quick Reference

TaskRule
Understanding EEL2 syntaxlanguage
Structuring plugin codesections
Using sliders and special varsvariables
Optimizing CPU performanceperformance
Creating reusable codelibraries

Minimal Plugin Template

desc:My Effect
tags:effect utility

slider1:gain_db=0<-24,24,0.1>Gain (dB)

in_pin:left input
in_pin:right input
out_pin:left output
out_pin:right output

@init
// Initialize state here

@slider
// Recalculate coefficients when sliders change
gain_lin = 10^(gain_db/20);

@sample
// Process audio
spl0 *= gain_lin;
spl1 *= gain_lin;

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

reaper-jsfx-ui

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

Rdk X5 Media

RDK X5 多媒体处理:音频录制/播放(arecord/aplay/PulseAudio)、hobot_codec 视频编解码、RTSP 拉流/推流、HDMI 分辨率配置、MIPI LCD 触摸屏适配、VNC 远程桌面服务端安装与配置。Use when the user wants to record or p...

Registry SourceRecently Updated
760Profile unavailable
Coding

ContextClaw Plugin Usage

Manage and analyze OpenClaw sessions by checking usage, pruning old sessions, cleaning orphaned files, and viewing stats via CLI or dashboard.

Registry SourceRecently Updated
4330Profile unavailable
Coding

notebooklm-cli

Command-line interface to manage Google NotebookLM notebooks, sources, and generate audio, quizzes, reports, presentations, and visual study materials progra...

Registry SourceRecently Updated
2.6K1Profile unavailable