I wanted to learn from your code @shiihs so I broke it down a little to undestand what is happening:
(
Ndef(\bits,
{
var t, u, sig, sig2, sum;
t = PulseCount.ar(Impulse.ar(8e3));
u = PulseCount.ar(Impulse.ar(7009));
sig = (
((t * 15) & (t >> 5)) |
((t * 5) & (t >> [3, 4])) |
((t * 2) & (t >> 9)) |
((t * 8) & (t >> 11)) |
(((t*t) & t) | (t >> 3))
- 3 % 256
) / 127-1 * 3 ;
sig = HPF.ar(sig, 20) * 0.1 ;
sig2 = gcd(t*u, u+t);
sig2 = HPF.ar(sig2, WhiteNoise.ar() * 2000 + 1000);
sig2 = LPF.ar(sig2, 20);
sig2 = sig2 * sig;
sum = Greyhole.ar(sig2, sig, 0.5, sig);
sum = Limiter.ar(sum, 1);
sum = sum.softclip;
sum = sum * 0.5;
}
).play;
)
I really like the sound and I want to figure it out how it comes about to it. So I feel there’s couple of components that seem to be working together in an interesting way, but there are some thing I cannot quite understand.
So, if I undestand correctly, the source signal - last sig2, that goes into Greyhole has some huge spikes going up to highlevels. This creates tails in the Greyhole reverberator that are brought up by Limiter.
What I don’t quite understand is the modulation of delayTime:
and size:
arguments to Greyhole with sig
- which is the bytebeat. A very small delayTime & size at the same time seem to produce this long running resonance. The sig is a signal in the range of -0.5 and 0.5, but it’s moving very fast (relative to more LF signals used for modulation usually.
Concretely I have two questions: is there a minimum (towards 0) below which Greyhole refuses to accept for delayTime and size? And what happens if the (signal at) these arguments is negative?
I have managed to create a relatively similar effect but with more control over the signal:
(
Ndef(\aix, {
var snd, revt;
snd = Pulse.ar(freq: LFNoise0.ar([2,3]).exprange(50,5000));
snd = snd * LFPulse.ar(
freq: LFNoise0.ar(1).exprange(0.5,8),
width:0.02,
mul: LFNoise1.ar(3).exprange(0.01,1000));
snd = HPF.ar(snd, 50);
// reverb time - various optons:
revt = LFNoise0.ar(1).exprange(0.0001,0.01);
//revt = XLine.ar(1, 0.0001,30);
//revt = LFTri.ar(1/10, 1).range(0.01, 0.0001);
//revt = 0.000001;
snd = Greyhole.ar(snd, revt, 0.5, revt);
snd = Limiter.ar(snd, 0.9);
}).play)
EDIT: also previewable here: https://sonomu.club/@luka/105312490713667784