You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bmSClib/DSP/synths/perc_gen/instr.scd

37 lines
1000 B

(
name: 'perc_gen',
func: {
|freq, gate|
var pitchEnv = Env([0, \pitchMultiplier.kr(2.0), 1.0], [0, \pitchDecay.kr(0.01)], [-2]).kr(gate: gate);
var f = freq * pitchEnv;
var ff = f * (\fRatio1.kr(1) / \fRatio2.kr(1));
var mod = SinOsc.ar(ff) * f * \modIndex.kr(0.0);
var body = SinOsc.ar(f + mod) * \toneGain.kr(1.0);
var noise = WhiteNoise.ar;
var noiseEnv = Env([0.0, 1.0, 0.0], [0, \noiseRelease.kr(0.01)], [-2]).kr(gate: gate);
var tick = LPF.ar(noise * noiseEnv, \noiseFilter.kr(1000)) * \noiseGain.kr(-12.dbamp);
var sig = Mix([body, tick]);
sig;
},
useSaturation: true,
saturationSteps: 4,
useEnv: true,
defaults: (attack: 0.01, decay: 0.05, curve: -4),
specs:(
attack: [0.0, 1.0],
envCurve: [-6, 6],
noiseFilter: [80, 20000],
noiseGain: [0.0, 1.0],
noiseRelease: [0.01, 2.0],
pitchDecay: [0.01, 4.0],
pitchMultiplier: [0.01, 2.0],
release: [0.01, 2.0],
toneGain: [0.0, 1.0],
fRatio1: [1.0, 10.0],
fRatio2: [1.0, 10.0],
modIndex: [0.0, 1.0]
)
)