reaper-jsfx-midi

SKILL.md

REAPER JSFX MIDI Processing

Patterns for MIDI utility plugins including note processing, arpeggiators, chord generators, and CC manipulation.

Requires: reaper-jsfx-core for language fundamentals.

Rules

Rule Description
midi-basics MIDI message structure, receive/send, SysEx handling
midi-transform Note transposition, velocity scaling, CC mapping
midi-generate Arpeggiators, sequencers, chord generators
midi-routing Multi-bus routing, channel filtering, splitting

Official Documentation

Key Principles

1. MIDI-Only Plugin Structure

desc:MIDI Utility
tags:midi

in_pin:none
out_pin:none

@block
while(midirecv(offset, msg1, msg2, msg3)) (
  // Process and forward
  midisend(offset, msg1, msg2, msg3);
);

2. Always Forward or Handle All Messages

@block
while(midirecv(offset, msg1, msg2, msg3)) (
  status = msg1 & $xF0;

  status == $x90 || status == $x80 ? (
    // Process notes
    process_note(offset, msg1, msg2, msg3);
  ) : (
    // Pass through everything else unchanged
    midisend(offset, msg1, msg2, msg3);
  );
);

3. Preserve Timing

@block
// Use original offset for timing-critical events
while(midirecv(offset, msg1, msg2, msg3)) (
  // Transform but keep original offset
  midisend(offset, new_msg1, new_msg2, new_msg3);
);

Quick Reference

Use Case Rule
Understanding MIDI midi-basics
Transpose / Velocity midi-transform
Arpeggiator midi-generate
Channel Filter midi-routing
Weekly Installs
2
First Seen
11 days ago
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2