Anemos Sonore on the Rocks


16 June 2011

After some hearing experience and filter testing, I build this Anemos Sonore setup. I like about it that it does not alter the existing landscape too much, since it is based upon available material: stones that I collected around the installation. Everything else is completely reversible in about 10 minutes.

Not only the hardware setup is minimal but also the sonic alteration, a combination of pitch shifting and a bank of resonators. I discovered that the existing soundscape (waves, birds, trees, etc.) is a vital part of the experience. Therefore I plan to use a pair of open headphones for the actual installation. Also, Ben mentioned that the created soundscape changes the view into a cinematographic experience. I like that idea.

code

q = ();

(
NdefMixer(s)
Ndef(anemos)		.fadeTime = 5;
Ndef(anemosKlank)	.fadeTime = 15;

Spec.add(spread, [0.000001, 0.5, exp]);
Spec.add(baseFreq1, [25, 500, exp]);
Spec.add(baseFreq2, [25, 500, exp]);
)

(
Ndef(anemos, {
	var src;
	src = SoundIn.ar([0, 1]).tanh;

	src = [src] ++ src.collect{|in, i| PitchShift.ar(in, (i*0.5)+ 0.2, [0.5, 1.75, 2.4, 4.7].reverse)}.postln;

	Splay.ar(src.flat.scramble.tanh)
});

Ndef(anemosKlank, {|spread = 0.2, baseFreq1 = 50, baseFreq2 = 50|
	var src, num = 10;
	src = SoundIn.ar([0, 1]).tanh;

	q.refs = [baseFreq1, baseFreq2].collect{|baseFreq| `[
		//(baseFreq * (1..10))
		(baseFreq * [0.5, 1, 2, 4, 8, 16, 32])
			.collect{|item| {item * ExpRand(1 - spread, 1 + spread)}!num}.flat,
		(rrand(0.1, 1)!(num*7)).sort.reverse,
		(rrand(0.05, 1)!(num*7)).sort
	]};
	src = q.refs.collect{|ref|
		DynKlank.ar(ref, src * 0.0125);
	};
	Splay.ar(src.flop.flat.tanh)
})
)

Ndef('anemosKlank').xset('baseFreq1', 301.98457308393, 'baseFreq2', 371.66798511884, 'spread', 0.18870315546458, 'fadeTime', 5);

Ndef('anemosKlank').xset('baseFreq1', 256.52907163039, 'baseFreq', 130.0, 'baseFreq2', 108.53592737668, 'spread', 0.0012688185147951, 'fadeTime', 5);