local sg=soundgen local waves={} local function sign(n) return n>0 and 1 or (n<0 and -1 or 0) end for n=1,32 do local a=sg:noise(0):phase(n):freq(50*2^(n^0.8*2)):amp(0.5^(n/2)^1.2) local b=sg:noise(0):freq(50*n) waves[n]=sg:new(function(self,t) local aa=(n)/100 local t=t local y=a:sample(t^(0.15*((n-1)^1.1/30+1))+b:sample(t)*aa) return math.abs(y)^2*sign(y) end) end local wave=sg.add(unpack(waves)):amp(1.2) wave=wave:fade(0.001,0) wave=wave:fade(0.001,0.5) return wave:compile()