giuliomoro
Hey, thanks for the quick answer. Full code is underneath for reference, I didn't think it'd be relevant sorry. Increasing the blocksize probably means increasing latency, right?
s = Server.default;
s.options.numAnalogInChannels = 2;
s.options.numAnalogOutChannels = 2;
s.options.numDigitalChannels = 16;
s.options.blockSize = 16; // to do: find out how low this can go
s.options.numInputBusChannels = 2;
s.options.numOutputBusChannels = 2;
s.options.bindAddress = "0.0.0.0";
s.waitForBoot({
SynthDef(\freeze, { |override = 1, freezeMod = 0.75|
var sig, in, chain, freeze;
in = SoundIn.ar(0) * override;
freeze = Amplitude.ar(SoundIn.ar(0), 0.1, 3) + TRand.ar(-0.5, 0.5, Dust.ar(freezeMod)); // freeze is tracked to amplitude of signal but also randomized
chain = FFT({LocalBuf(128)}, in, hop: 0.25);
PV_BinScramble(chain, 0.05, 0.1, 1.0);
//PV_SpectralEnhance(chain, 8, 2, LFDNoise3.kr(0.3).linlin(-1, 1, 0.1, 0.5));
chain = PV_Freeze(chain, freeze);
sig = sig + (IFFT(chain) * (1 - (0.5 * Amplitude.ar(SoundIn.ar(0), 0.1, 3))));
sig = Limiter.ar(sig);
Out.ar(0, sig);
}).add;
SynthDef(\bitcrusher, { |bitRate = 24, sampleRate = 32000, chaos = 0, chaosRate = 0.3|
var sig, input, steps;
input = SoundIn.ar(0);
sig = (input * 1.dbamp).clip2;
// sample rate reduction
sig = Latch.ar(sig, Impulse.ar(sampleRate * TRand.ar(0.01, 1, Dust.ar(chaosRate))));
// bit rate reduction
steps = 2 ** (bitRate * TRand.ar(0.25, 1, Dust.ar(chaosRate)));
sig = (sig * steps).round;
sig = sig / steps.postln;
sig = MoogFF.ar(sig, 8000, 0) * 5.dbamp;
sig = Limiter.ar(sig);
sig = sig;
Out.ar(0, sig);
}).add;
});
ServerQuit.add({ 0.exit }); // quit if the button is pressed