// 1. Define SynthDef with evolving spectral content
SynthDef(\spectralPad, { |freq = 440, amp = 0.5, dur = 1, spread = 0.2|
var env = EnvGen.ar(Env.perc(0.01, dur), doneAction: 2);
var partials = 1 + (0..10).collect { |i| SinOsc.ar(freq * (1 + spread * i), 0, 0.1) };
var sig = (SinOsc.ar(freq) + partials.sum) * env * amp;
sig = FreeVerb.ar(sig, 0.8, 0.5, 0.8);
Out.ar(0, sig ! 2);
}).store;
// 2. Create evolving pattern with spectral shifts
p = Pbind(
\instrument, \spectralPad,
\dur, Pseq([0.5, 0.25, 0.75, 0.125], inf),
\degree, Pseq([0, 2, 4, 7, 9, 12], inf),
\amp, 0.7,
\spread, Pwhite(0.1, 0.5) // Random spread for spectral content
);
// 3. Render via NRT
p.asScore(20).recordNRT(
outputFilePath: "~/output.wav".standardizePath,
headerFormat: "WAV",
sampleFormat: "int16",
sampleRate: 44100,
duration: 20
);