SuperCollider Synth Resampling
Let a SuperCollider Synth run at its own block size and sample rate, reblocking and resampling audio at its boundaries so feedback loops and oversampled algorithms work.
Results
Each square represents one run. Score is the percentage of runs that pass: 0, 25, 50, 75, or 100 for four runs.
| # | Model | Rollouts | Pass@1 | Score | Time |
|---|---|---|---|---|---|
| 1 | GPT-6.1 Sol max | 3/4 | 2.8h | ||
| 2 | Claude Sonnet 5.5 max | 2/4 | 3.7h | ||
| 3 | GPT-6 Astra xhigh | 1/4 | 2.6h | ||
| 4 | Claude Opus 5.5 max | 0/4 | 3.6h | ||
| 5 | GPT-5.6 Sol max | 0/4 | 1.7h | ||
| 6 | Gemini 3.8 Flash high | 0/4 | 4.0h | ||
| 7 | Qwen3.8 Max xhigh | 0/4 | 3.8h | ||
| 8 | GLM 5.3 Flash max | 0/4 | 4.0h | ||
| 9 | Muse Spark 1.3 max | 0/4 | 3.9h | ||
| 10 | Kimi K3 max | 0/4 | 4.0h | ||
| 11 | Grok 4.7 xhigh | 0/4 | 3.7h |
Background
SuperCollider is a platform for real-time audio synthesis: its language describes synthesis graphs as SynthDefs, and a server runs them as Synths sharing audio and control buses in fixed blocks. Some algorithms need a smaller block or a higher sample rate (a feedback loop is one block long, so Karplus-Strong needs block size 1), but until upstream #7402 the only option was to change the whole server. The agent makes block size and sample rate per-SynthDef properties, adding two class library objects, extending the SynthDef format, and in both servers running each Synth at its own rates while every bus, control and trigger at its boundary behaves unchanged.
Task
Reblock(blockSize) and Resample(factor) each take a power of two or a Synth control read once at creation, reject anything else when the SynthDef is built, and add pinned fields to the SynthDef format. Inside the Synth, rate queries, control-rate UGens and feedback loops follow the Synth's own rates, including in third-party plugins. From outside, every bus I/O UGen and mapped, lagged or trigger control behaves as on a normal Synth: zero-order hold on upsampling, keep-first-sample on downsampling. Invalid values fall back with a warning, supernova implements the same semantics for constant values, and existing SynthDefs and tests keep working.
Workspace
The offline sandbox (4 CPUs, 8 GB, 4 hours) holds the SuperCollider repository at the parent of the upstream merge, built and installed with both servers, class library linked for live edits. A dummy JACK backend stands in for a sound card. The upstream unit tests and generated rendering cases are held out.
Verification
The committed tree is rebuilt from a clean checkout with existing tests restored. C++ server tests and class library unit suites must not regress, plain Synth graphs must render as before, upstream unit tests must pass, and SynthDef bytes are checked field by field. Hidden scores render non-realtime on both servers: rate queries, every bus UGen, graphs where a reblocked Synth must match its plain twin, triggers and invalid factors. Samples are compared within 1e-4, and each feature family must reach 90%.
Environment
- Toolchain
- C++
- Compute
- 4 CPUs · 8 GB RAM
- Network
- Offline
- Time limit
- 4 hours
References
- SuperCollider: The platform the agent extends, checked out at the parent of #7402, which added per-Synth reblocking and resampling.
- SuperCollider Synth Definition File Format: The binary SynthDef format whose version 3 the task extends with block size and resampling fields.