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.
40 lines
958 B
40 lines
958 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],
|
|
),
|
|
)
|