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/spectral/fft_freeze.scd

40 lines
962 B

(
name: 'fft_freeze',
func: {
var sig = 0;
var in = In.ar(\in.kr(0), 1);
var gate = \freezeGate.kr(0);
var amp = Amplitude.kr(in, 0.01, 0.05);
var above = amp > \ampThresh.kr(0.02);
var chain = FFT(
LocalBuf(2048),
in
);
// set: фронт «гейт взведён И амплитуда выше порога» (0 -> 1)
var set = HPZ1.kr(gate * above) > 0;
// reset: снятие гейта (1 -> 0)
var reset = HPZ1.kr(gate) < 0;
var isOn = SetResetFF.kr(set, reset);
chain = PV_Freeze(chain, isOn);
//chain = PV_RandComb(chain, \wipe.kr(0.7), \reshuffle.kr(0.5));
//chain = PV_BinShift(chain, \binShift.kr(0), \stretch.kr(1));
sig = IFFT(chain) * isOn;
sig;
},
inChannels: 1,
outChannels: 2,
requiresBuffer: true,
usePan: true,
panning: \pan,
useSaturation: false,
saturationSteps: 4,
specs: (
freezeGate: [0, 1, \step, 1, 0],
phaseJitter: [0, 1, \lin, 0.01, 0.1],
ampThresh: [0, 1, \lin, 0.001, 0.02],
),
)