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
- Drums need
\freq, 48- IMPORTANT Without it, drums sound wrong - Use Pdef for rhythms - Patterns that repeat
- Use Ndef for continuous - Pads, drones, textures
- Symbols not strings -
\kicknot"kick" - Semicolons between statements - No trailing semicolon
- 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?