Agent skill

claude-collider

Use when live coding music with SuperCollider via ClaudeCollider MCP server.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/claude-collider

SKILL.md

SuperCollider Live Coding with ClaudeCollider

This skill enables live music synthesis using SuperCollider via the ClaudeCollider MCP server.

Quick Reference

Key Rules

  1. Drums need \freq, 48 - IMPORTANT Without it, drums sound wrong
  2. Use Pdef for rhythms - Patterns that repeat
  3. Use Ndef for continuous - Pads, drones, textures
  4. Symbols not strings - \kick not "kick"
  5. Semicolons between statements - No trailing semicolon
  6. NEVER Synth() inside Ndef - Causes infinite spawning

CC API Reference

The main entry point stored in ~cc. Access subsystems via ~cc.synths, ~cc.fx, ~cc.midi, ~cc.samples, ~cc.recorder, ~cc.state.

CC - Main Class

Method Description
tempo(bpm) Get/set tempo in BPM
stop Stop all Pdefs and Ndefs
clear Full reset: free all synths, patterns, effects, samples
status Get formatted status string
reboot(device, numOutputs, onComplete) Restart the server

~cc.synths - Synth Definitions

27+ pre-built synths with cc_ prefix.

Method Description
list Comma-separated list of synth names
describe Detailed descriptions with params
play(name, ...args) One-shot synth playback

Usage

supercollider
~cc.synths.play(\cc_kick, \freq, 48, \amp, 0.8);

~cc.fx - Effects System

18 built-in effects with routing, chaining, and sidechaining.

Method Description
load(name, slot) Load effect (slot defaults to fx_<name>)
set(slot, ...args) Set effect parameters
bypass(slot, bool) Bypass/re-enable effect
remove(slot) Remove effect
route(source, target) Route Pdef/Ndef to effect
connect(from, to) Chain effect output to another effect
sidechain(name, threshold, ratio, attack, release) Create sidechain compressor
routeTrigger(source, sidechainName, passthrough) Route trigger to sidechain
routeToOutput(source, channels) Route to hardware outputs
list Available effect names
describe Effect descriptions with params
status Current effects and routing

Usage

supercollider
~cc.fx.load(\reverb);
~cc.fx.route(\bass, \fx_reverb);
~cc.fx.set(\fx_reverb, \mix, 0.5, \room, 0.9);

~cc.midi - MIDI Control

Method Description
listDevices List available MIDI devices
connect(device, direction) Connect device (\in or \out)
connectAll Connect all MIDI inputs
disconnect(direction) Disconnect (\in, \out, or \all)
play(synthName, channel, mono, velToAmp, ccMappings) Play synth via MIDI
stop Stop current MIDI synth
status Get MIDI status

Usage

supercollider
~cc.midi.connectAll;
~cc.midi.play(\lead, nil, false, true, (
  1: \cutoff,                           // CC1 -> cutoff
  74: (param: \res, range: [0.1, 0.9])  // CC74 -> res with range
));

~cc.samples - Sample Management

Samples from ~/.claudecollider/samples.

Method Description
load(name) Load sample buffer into memory
at(name) Get buffer (nil if not loaded)
play(name, rate, amp) One-shot playback
free(name) Free buffer
reload Rescan directory for new files
names Array of sample names
list Comma-separated list

Usage

supercollider
~cc.samples.load(\kick);
~cc.samples.play(\kick, 1, 0.8);
Pdef(\samp, Pbind(\instrument, \cc_sampler, \buf, ~cc.samples.at(\kick), \dur, 1)).play

~cc.recorder - Audio Recording

Records to ~/.claudecollider/recordings.

Method Description
start(filename) Start recording (auto-names if nil)
stop Stop recording, returns path
status Recording status
isRecording Boolean

~cc.state - Bus Management

Named control/audio buses stored in current environment.

Method Description
bus(name, numChannels, rate) Get or create bus (also sets ~name)
setBus(name, value) Set bus value
getBus(name) Get bus by name
freeBus(name) Free bus
clear Free all buses

Usage

supercollider
~cc.state.bus(\cutoff, 1, \control);
~cc.state.setBus(\cutoff, 2000);
Synth(\cc_acid, [\cutoff, ~cutoff.asMap]);  // Map bus to param

Didn't find tool you were looking for?

Be as detailed as possible for better results