I asked ChatGPT for an acid house program. It gave me this. The snare is at least somewhat sensible in terms of a general formula for drum synths, but I have no idea where it’s going with the kick drum. I had to fix a few things to make it actually work, but I mostly left it as it was. I’m very sure it wanted to use \midinote instead of \freq for the acid pbind so you can change it if you want to.
// set up tempo and time signature
TempoClock.default_(TempoClock(128/60));
// set up synthdefs
(
SynthDef(\acid, {
arg freq=440, cutoff=1200, res=0.5, sustain=0.5, amp=0.5;
var sig = LFSaw.ar(freq, 0, 0.5) * EnvGen.kr(Env.sine(sustain), doneAction:2);
sig = LPF.ar(sig, cutoff, res);
Out.ar(0, sig * amp);
}).add;
SynthDef(\bassdrum, {
arg freq=50, decay=0.1, amp=0.5;
var sig = Impulse.ar(freq);
sig = RLPF.ar(sig, 120, 0.5) * EnvGen.kr(Env.perc(decay, 0.5), doneAction:2);
Out.ar(0, sig * amp);
}).add;
SynthDef(\snare, {
arg freq=200, decay=0.1, tone=4000, amp=0.5;
var sig = WhiteNoise.ar();
sig = RLPF.ar(sig, freq, 0.2);
sig = sig + (RLPF.ar(sig, tone, 0.2) * 0.5);
sig = sig * EnvGen.kr(Env.perc(decay, 0.5), doneAction:2);
Out.ar(0, sig * amp);
}).add;
)
(
// define the acid house pattern
~acidPattern = Pbind(
\instrument, \acid,
\freq, Pseq([Pseq([55, 58, 62, 65, 62, 58, 55, 53], 8), Pseq([57, 60, 64, 67, 64, 60, 57, 55], 8)], inf),
\cutoff, Pseq([1000, 1200], inf),
\res, 0.5,
\sustain, Pseq([0.1, 0.5], inf),
\amp, 0.5,
\dur, 0.125,
);
// define the bass drum pattern
~bassDrumPattern = Pbind(
\instrument, \bassdrum,
\freq, 50,
\decay, 0.1,
\amp, Pseq([1, 0.5, 0.5, 0.5], inf),
\dur, Pseq([0.5, 0.25, 0.25, 0.5], inf),
);
// define the snare pattern
~snarePattern = Pbind(
\instrument, \snare,
\freq, 200,
\decay, 0.1,
\tone, 4000,
\amp, Pseq([0, 0.5, 0, 0.5], inf),
\dur, Pseq([0.5, 0.25, 0.25, 0.5], inf),
);
)
Ppar([~acidPattern, ~bassDrumPattern, ~snarePattern]).play