[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] SF.net SVN: quarks:[2670] SpeakersCorner



Revision: 2670
          http://sourceforge.net/p/quarks/code/2670
Author:   decampo
Date:     2013-12-26 11:52:50 +0000 (Thu, 26 Dec 2013)
Log Message:
-----------
remove relocated

Removed Paths:
-------------
    SpeakersCorner/Latency.html
    SpeakersCorner/Latency.sc
    SpeakersCorner/MasterFX.html
    SpeakersCorner/MasterFX.sc
    SpeakersCorner/Panning/PanRingTop.html
    SpeakersCorner/Panning/PanRingTop.sc
    SpeakersCorner/Panning/PanRingTopBot.html
    SpeakersCorner/Panning/TorusPanAz.html
    SpeakersCorner/Panning/TorusPanAz.sc
    SpeakersCorner/SpatioScope.html
    SpeakersCorner/SpatioScope.sc
    SpeakersCorner/SpeakerAdjust.html
    SpeakersCorner/SpeakerAdjust.sc
    SpeakersCorner/SpeakersCorner.html
    SpeakersCorner/Spectralyzer.html
    SpeakersCorner/Spectralyzer.sc
    SpeakersCorner/asMapTable.html
    SpeakersCorner/extMapTable.sc

Deleted: SpeakersCorner/Latency.html
===================================================================
--- SpeakersCorner/Latency.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Latency.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #862323; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #862323}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Latency</b></span><b><span class="Apple-tab-span">	</span>measure audio delays for multiple channels</b></p>
-<p class="p2"><br></p>
-<p class="p1">Latency is the time delay between when one initiates something and when it happens.</p>
-<p class="p1">There are several places in the SC architecture where latencies occur:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>1. Interpreter latency:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1">the time between entering a command and the time it is executed in the client (sclang).<span class="Apple-converted-space"> </span></p>
-<p class="p1">This depends on how much code it is and how complex the calculations are.</p>
-<p class="p1">For many cases, it is near zero.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// a function that does nothing runs really fast</p>
-<p class="p4">bench({ nil });<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// filling a big array with random numbers takes a while longer.</p>
-<p class="p4">bench({ Array.rand(100000, 0.0, 1.0) });<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// different operations may take different times</p>
-<p class="p4">bench({ 1000000.do { 3.sqrt.cos } });<span class="Apple-converted-space"> </span></p>
-<p class="p4">bench({ 1000000.do { 12.squared } });<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>2. Network latency:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1">sclang and scserver communicate via network (OpenSoundControl, usually UDP, or also TCP/IP);<span class="Apple-converted-space"> </span></p>
-<p class="p1">until a network packet sent from sclang to the server arrives, an undetermined time passes.<span class="Apple-converted-space"> </span></p>
-<p class="p1">On the same machine, with little other network traffic, this is typically ca. 0.02 seconds, depending mainly<span class="Apple-converted-space"> </span></p>
-<p class="p1">on the server's hardware buffer size.<span class="Apple-converted-space">  </span>This can be measured with:</p>
-<p class="p6"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p7">s.ping(10, 0.1);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// compare</p>
-<p class="p7">s.options.hardwareBufferSize;<span class="Apple-converted-space"> </span></p>
-<p class="p7">s.options.hardwareBufferSize / s.sampleRate</p>
-<p class="p2"><br></p>
-<p class="p1">The order in which packets arrive is not guaranteed, so in the worst case, one can end up sending a command to start a synth process, then set one of its controls to some value; if the order is accidentally reversed, trying to set e.g. frequency on a node which does not exist yet - which will complain (server - Node not found), and then start that node playing at the wrong pitch and staying there forever (because the failed command has happened already).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Therefore, one usually sets a latency value for the server, which is safely greater than the worst value measured/estimated (e.g. with s.ping). The default for this is 0.2 sec.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p9">s.latency;</p>
-<p class="p3"><br></p>
-<p class="p1"><b>3. Audio I/O latency :<span class="Apple-converted-space"> </span></b></p>
-<p class="p1">scsynth passes buffers (one block of numbers per channel) to the audio hardware;<span class="Apple-converted-space"> </span></p>
-<p class="p1">the size of these buffers determines the time it takes between when a synth starts<span class="Apple-converted-space"> </span></p>
-<p class="p1">internally and when it actually is heard.<span class="Apple-converted-space"> </span></p>
-<p class="p1">The same goes for audio input too: input signals are passed to SC as blocks,<span class="Apple-converted-space"> </span></p>
-<p class="p1">so there is some latency between when e.g. a trigger happens at the analog audio input,<span class="Apple-converted-space"> </span></p>
-<p class="p1">and when it is detected with e.g. a Trig Ugen.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">While this latency can be set directly with some utility software for audiocards,<span class="Apple-converted-space"> </span></p>
-<p class="p1">such software may not consider all the factors:<span class="Apple-converted-space"> </span></p>
-<p class="p1">E.g. the operating system itself, firewire or USB connections, and intermediate layers<span class="Apple-converted-space"> </span></p>
-<p class="p1">like Jack may introduce extra buffering and thus extra delay somewhere along the line.</p>
-<p class="p1">For multiple speaker setups, distances to the listening position may also introduce delays.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">So it makes sense to measure audio latency. The *testAudio method generates pulses<span class="Apple-converted-space"> </span></p>
-<p class="p1">on several output channels and measures time until each pulse registers again at an audio input.</p>
-<p class="p10"><br></p>
-<p class="p11">Latency.initClass;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*testAudio(numChans, maxDT, server, inChan)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChans</b>: <span class="Apple-tab-span">	</span>the number of audio channels to be measured</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>maxDT</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the longest expected delay time to be measured</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the server to be generating the test sound on</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>inChan</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the input channel where the returning audio signal comes in,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>typically, the mic input.</p>
-<p class="p11">Latency.testAudio;</p>
-<p class="p10"><br></p>
-<p class="p11">s.scope;</p>
-</body>
-</html>

Deleted: SpeakersCorner/Latency.sc
===================================================================
--- SpeakersCorner/Latency.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Latency.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,70 +0,0 @@
-/* 
-	Latency.testAudio(2, 1);
-	Latency.stop;
-*/ 
-
-Latency { 
-	classvar <syn, <resp, <latencies, <serv, lastTime;
-	classvar <>verbose = false;
-	
-	*initClass { 
-		Class.initClassTree(OSCresponderNode); 
-		
-		// register to receive latency values
-		resp = OSCresponderNode(nil,'/tr',{ arg time,responder,msg;
-			var which = msg[2], exactTime = msg[3], delta; 
-			
-			if ( verbose ) { msg.postln; };
-		//	msg.postcs; 
-		//	[exactTime, which].dump;
-			if ( syn.notNil ){ 
-				// make sure we only listen to the trigger coming from the latency measurement synth
-				if ( msg[1] == syn.nodeID ){ 
-					[ 	{ 	delta = (exactTime - lastTime[1]); 
-						[lastTime[0], delta, delta / serv.sampleRate].postln; 
-						latencies[lastTime[0] - 1] = delta;
-					},
-						{ lastTime = [which, exactTime] }
-					].clipAt(which).value;
-				};
-			};
-		});
-	}
-	
-	*testAudio { |numChans=5, maxDT = 0.2, server, inChan=0|
-		serv = server ? Server.default;
-		latencies = Array.newClear(numChans); 
-		resp.remove;
-		resp.add;
-		syn = { 	var pulses, audIn, phase; 
-			var pulseFreq = (maxDT * 2 * numChans).reciprocal;
-			pulseFreq;
-			
-			phase = Phasor.ar(0, 1, 0, 2 ** 30);	// time in samples
-			audIn = SoundIn.ar(inChan);				// mike input
-			
-			pulses =  Decay2.ar(
-				Impulse.ar( pulseFreq, 
-					0.99 - ((0..numChans - 1) / numChans) // phase
-				), 0.0, 0.002
-			);
-				// send when audioin triggers
-			SendTrig.ar( Trig1.ar(audIn > 0.1, 0.05), 0, phase);
-				// send when each output plays a trigger
-			SendTrig.ar(pulses > 0.1, (1..numChans), phase);
-			(pulses ++ [ Silent.ar, audIn ])
-		}.play(serv);	
-	}
-	
-	*stop { 
-		resp.remove;
-		syn.free; 
-		this.post;
-	}
-	
-	*post { 
-		"// measured latencies:".postln;  
-		"in samples: ".post; latencies.postcs;
-		"in seconds: ".post; (latencies / serv.sampleRate).postcs;
-	}
-}
\ No newline at end of file

Deleted: SpeakersCorner/MasterFX.html
===================================================================
--- SpeakersCorner/MasterFX.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/MasterFX.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #862323}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0023b6}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4d6d13}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1c23b6; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0023b6; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0023b6}
-span.s4 {color: #000000}
-span.s5 {color: #4d6d13}
-span.s6 {color: #1936a7}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MasterFX</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>a highly configurable chain of effects on the main outputs</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>see also: </b><span class="s3"><b>ProxyChain</b></span><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.boot;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>// add a few global filter functions to use - these are then available by name.</p>
-<p class="p6">ProxyChain<span class="s4">.add(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\leakDC</span>,<span class="Apple-converted-space">  </span><span class="s5">\filter</span> -&gt; { <span class="s3">|in, leak=0.99|</span> <span class="s3">LeakDC</span>.ar(in, leak) },</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">\rollClip</span><span class="s4">, </span><span class="s5">\filter</span><span class="s4"> -&gt; { </span>|in, clip=0.99, pole=0.2|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">OnePole</span>.ar(in.clip2(clip), pole ** 0.7);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>},</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">\krush</span><span class="s4">, </span><span class="s5">\filter</span><span class="s4"> -&gt; { </span>|in, bits=16, downsamp=2|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> down;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = in.round(0.5 ** bits);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down = <span class="s3">Latch</span>.ar(in, <span class="s3">Impulse</span>.ar(<span class="s3">SampleRate</span>.ir / downsamp.max(2)));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// below 1/2 downsamp, do xfade:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blend(in, down, (downsamp - 1).clip(0, 1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>},</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">\ampFin</span><span class="s4">, </span><span class="s5">\filter</span><span class="s4"> -&gt; { </span>|in, limDrive=1, ampLimit=0.8, postAmp=1 |<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Limiter</span>.ar(in * limDrive, ampLimit) * <span class="s3">postAmp</span>;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">);</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>// and specs for them fof gui control.</p>
-<p class="p4"><span class="s3">Spec</span>.add(<span class="s5">\leak</span>, [0.5, 0.999, <span class="s5">\exp</span>]);</p>
-<p class="p4"><span class="s3">Spec</span>.add(<span class="s5">\clip</span>, [0.0, 1, <span class="s5">\amp</span>]);</p>
-<p class="p4"><span class="s3">Spec</span>.add(<span class="s5">\pole</span>, [0, 0.95, <span class="s5">\lin</span>]);</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">Spec</span>.add(<span class="s5">\bits</span>, [16, 1]);</p>
-<p class="p4"><span class="s3">Spec</span>.add(<span class="s5">\downsamp</span>, [1, 100, <span class="s5">\exp</span>]);</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3">Spec</span><span class="s4">.add(</span>\limDrive<span class="s4">, </span>\ampx4<span class="s4">);</span></p>
-<p class="p7"><span class="s3">Spec</span><span class="s4">.add(</span>\ampLimit<span class="s4">, </span>\amp<span class="s4">);</span></p>
-<p class="p6">Spec<span class="s4">.add(</span><span class="s5">\</span>postAmp<span class="s4">, </span><span class="s5">\ampx4</span><span class="s4">);</span></p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(server, numChannels, slotNames, busnum)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>server: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the server on which the <span class="s3">MasterFX</span> chain will run;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numChannels: <span class="Apple-tab-span">	</span>the number of channels it will work on,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default is server.numOutputBusChannels</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slotNames: <span class="Apple-tab-span">	</span>the names of the filters/functions to be used, in order of execution;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>busnum: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the busnumber where it will process audio, default = 0.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">m = <span class="s3">MasterFX</span>.new(server: s,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>numChannels: 8,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>slotNames: [</span>\leakDC<span class="s4">, </span>\krush<span class="s4">, </span>\rollClip<span class="s4">, </span>\ampFin<span class="s4">],<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>busIndex: 0);</p>
-<p class="p8"><br></p>
-<p class="p4">g = m.gui;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s6">PinkNoise</span>.ar(0.5) * LFNoise2.kr([5, 8, 13, 21]).max(0); }.play;</p>
-<p class="p4">s.scope(8);</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// kick the effects in at full wet level</p>
-<p class="p4">m.pxChain.add(<span class="s5">\leakDC</span>, 1);</p>
-<p class="p4">m.pxChain.add(<span class="s5">\rollClip</span>, 1);</p>
-<p class="p4">m.pxChain.add(<span class="s5">\dualComp</span>, 1);</p>
-<p class="p4">m.pxChain.add(<span class="s5">\ampFin</span>, 1);</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// make a more specific gui - see also ProxyChainGui</p>
-<p class="p4">(</p>
-<p class="p4">m.gui(<span class="s5">\Mestre</span>, 20, [</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[</span>\leakDC<span class="s4">, </span>\slotCtl<span class="s4">, 1],</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[</span>\rollClip<span class="s4">, </span>\slotCtl<span class="s4">, 1],</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[</span>\krush<span class="s4">, </span>\slotCtl<span class="s4">, 1],</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[</span>\ampFin<span class="s4">, </span>\slotCtl<span class="s4">, 1],</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<span class="s5">\RESET</span>, <span class="s5">\extra</span>, { m.pxChain.add(<span class="s5">\leakDC</span>, 1).add(<span class="s5">\ampFin</span>, 1) }],</p>
-<p class="p4">])</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">m.pxChain.remove(<span class="s5">\leakDC</span>, 1);</p>
-<p class="p4">m.pxChain.remove(<span class="s5">\rollClip</span>, 1);</p>
-<p class="p4">m.pxChain.remove(<span class="s5">\krush</span>);</p>
-<p class="p4">m.pxChain.remove(<span class="s5">\ampFin</span>, 1);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>// removing a MasterFX<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3">MasterFX</span><span class="s4">.all;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all masterFX, one per server, live here.</p>
-<p class="p5"><span class="s3">MasterFX</span><span class="s4">.clear(</span><span class="s5">\localhost</span><span class="s4">); <span class="Apple-tab-span">	</span></span>// clear one specific masterfx</p>
-<p class="p5"><span class="s3">MasterFX</span><span class="s4">.all;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// gone now.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3">MasterFX</span><span class="s4">(</span><span class="s3">Server</span><span class="s4">.internal, 8, [</span>\leakDC<span class="s4">, </span>\rollClip<span class="s4">, </span>\dualComp<span class="s4">, </span>\ampFin<span class="s4">]);</span></p>
-<p class="p6">MasterFX<span class="s4">.all;</span></p>
-<p class="p5"><span class="s3">MasterFX</span><span class="s4">.clear; <span class="Apple-tab-span">	</span></span>// clear all mfxes</p>
-<p class="p6">MasterFX<span class="s4">.all;</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">p = <span class="s3">ProxySpace</span>.push;</p>
-<p class="p4">~pink = { <span class="s3">PinkNoise</span>.ar * <span class="s3">SinOsc</span>.ar };</p>
-<p class="p4">~pink.play;</p>
-<p class="p6">ProxyMixer<span class="s4">(p);</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4">z = </span><span class="s7">MasterFX</span><span class="s4">(s, 8, [</span>\leakDC<span class="s4">, </span>\rollClip<span class="s4">, </span>\dualComp<span class="s4">, </span>\ampFin<span class="s4">]);</span></p>
-<p class="p4">z.gui;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">ToDo:<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>maybe at some point one will want separate MasterFX for different output groups<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>on the same server. in that case, remove storage by server name, and use freely<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>given names.<span class="Apple-converted-space"> </span></p>
-</body>
-</html>

Deleted: SpeakersCorner/MasterFX.sc
===================================================================
--- SpeakersCorner/MasterFX.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/MasterFX.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,137 +0,0 @@
-MasterFX { 
-
-	classvar <all, <maxNumChans = 8;
-	var <group, <numChannels, <busIndex, <server, <pxChain; 
-	var <checkingBadValues = true, <badSynth, badDefName;
-	
-	*initClass { 
-		all = IdentityDictionary.new;
-	}
-	
-	*new { |server, numChannels, slotNames, busIndex=0| 
-		// only one masterfx per server ATM.
-		// could be changed if different MasterFX 
-		// for different outchannel groups are to be used.
-		
-		var fx = all[server.name];
-		if (fx.notNil) { 
-			"// MasterFX for server % exists - use \nMasterFX.clear(%) \n// to make a new one.\n"
-				.postf(server.name, server.name.asCompileString);
-			^fx
-		} { 
-			^this.make(server, numChannels, slotNames, busIndex) 
-		}
-	}
-	
-	*make { |server, numChannels, slotNames| 
-		^super.new.init(server, numChannels, slotNames);
-	}
-	
-	add { |key, wet, func| 
-		pxChain.add(key, wet, func);
-	}
-	remove { |key| 
-		pxChain.remove(key);
-	}
-	
-	bus { 
-		^Bus.new(\audio, busIndex, numChannels, server);
-	}
-
-					
-	cmdPeriod { 
-		group.freeAll; 	// for SharedServers
-						// evil just to wait? hmmm. 
-		defer({ this.wakeUp }, 0.2);
-	}
-	
-	hide { 
-		Ndef.all[server.name].envir.removeAt(pxChain.proxy.key);
-	}
-		// maybe it is useful to see it under some circumstances
-	show { 
-		Ndef.all[server.name].envir.put(pxChain.proxy.key, pxChain.proxy);
-	}
-	
-	init { |inServer, inNumChannels, inSlotNames, inBusIndex| 
-		var proxy;
-		server = inServer ? Server.default;
-		numChannels = inNumChannels ? server.options.numOutputBusChannels;
-		busIndex = inBusIndex ? 0; 
-
-		proxy = Ndef(\zz_mastafx -> server.name); 
-		proxy.ar(numChannels); 
-		proxy.bus_(this.bus);
-		pxChain = ProxyChain.from(proxy, inSlotNames ? []);
-		
-		this.hide;	// hide by default
-		
-		all.put(server.name, this);
-		
-		this.makeGroup; 
-		CmdPeriod.add(this);
-		
-		badDefName = ("BadMasterFX_" ++ server.name).asSymbol;
-		SynthDef(badDefName, {
-			var snd = In.ar(busIndex, numChannels); 
-			var dt = 0.001;
-			var isOK = (CheckBadValues.ar(snd) < 0.001);
-			var gate = (isOK * DelayN.ar(isOK, dt * 2));
-			var outSnd = 	DelayL.ar(snd, dt) * gate;
-			ReplaceOut.ar(busIndex, outSnd)
-		}).add;
-		
-		fork { 
-			0.2.wait; 
-			this.checkBad(checkingBadValues);
-		};
-	}
-	
-	makeGroup { 
-		group = Group.new(1.asGroup, \addAfter).isPlaying_(true);
-		pxChain.proxy.parentGroup_(group);
-	}
-	
-	wakeUp { 
-		"\nMasterFX for server % waking up.\n\n".postf(server.name); 
-			this.makeGroup; 
-			pxChain.proxy.wakeUp;
-			this.checkBad;		
-	}
-	
-	clear { 
-		CmdPeriod.remove(this);
-		pxChain.proxy.clear;
-		all.removeAt(pxChain.proxy.server.name);
-	}
-	
-	*clear { |name| 
-		(name ?? { all.keys }).do { |name| 
-			all.removeAt(name).clear;
-		};
-	}
-	
-	makeName { 
-		^(this.class.name ++ "_" ++ server.name 
-		++ "_" ++ pxChain.proxy.numChannels).asSymbol 
-	}
-	
-	gui { |name, numItems, buttonList, parent, bounds, makeSkip = true|
-			// the effects are all on by default: 
-		buttonList = buttonList ?? { pxChain.slotNames.collect ([_, \slotCtl, 1]) };
-		name = name ?? { this.makeName };
-		numItems = numItems ? 16; 
-		^MasterFXGui(pxChain, numItems, parent, bounds, makeSkip, buttonList)
-			.name_(name);
-	}
-	
-	checkBad { |flag = true| 
-		checkingBadValues = flag;
-		badSynth.free; 
-		if (checkingBadValues) { 
-			badSynth = Synth(badDefName, target: group, addAction: \addAfter);
-		};
-	}
-	
-	*default { ^all[Server.default.name] }
-}
\ No newline at end of file

Deleted: SpeakersCorner/Panning/PanRingTop.html
===================================================================
--- SpeakersCorner/Panning/PanRingTop.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Panning/PanRingTop.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 9.0px Monaco}
-span.s2 {font: 9.0px Monaco; color: #a91616}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PanRingTop</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a panner for a ring with one speaker on top.<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>see also PanRingTopBot, TorusPanAz.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*ar(numChans, in, azi, elev, orientation)</b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span><b>numChans<span class="Apple-tab-span">	</span></b>number of channels in the ring</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span><b>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>input signal to pan</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>azi<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>azimuth, angle in the horizontal ring; from 0 to 2, wraps around.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>elev<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>height above the horizon, toward top speaker; 0 is ring, 1 is top.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>orientation<span class="Apple-tab-span">	</span></b>direction of azimuth 0: orientation 0 means azi 0 is on chan0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>orientation 0.5 means azi 0 is between chan0 and chan1.</p>
-<p class="p4"><br></p>
-<p class="p3">The order of the returned channels is: ring1, ring2 ... ringN, top.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">Server</span>.internal.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>// orientation defaults to 0.5, between first 2 chans.</p>
-<p class="p6">z = { <span class="s3">|azi=0, elev=0|</span> <span class="s3">PanRingTop</span>.ar(4, <span class="s3">Dust</span>.ar(1000, 0.5), azi, elev).postln }.scope;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">z.set(<span class="s5">\azi</span>, -0.25);<span class="Apple-tab-span">	</span><span class="s6">// chan 0</span></p>
-<p class="p6">z.set(<span class="s5">\azi</span>, 0.25);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 1</span></p>
-<p class="p6">z.set(<span class="s5">\azi</span>, 0.75);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 2</span></p>
-<p class="p6">z.set(<span class="s5">\azi</span>, 1.25);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 3</span></p>
-<p class="p8"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, 0.5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// halfway up to chan 5, top.</p>
-<p class="p8"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// chan 5 - last chan is top.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// could also be done with TorusPanAz now.</p>
-</body>
-</html>

Deleted: SpeakersCorner/Panning/PanRingTop.sc
===================================================================
--- SpeakersCorner/Panning/PanRingTop.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Panning/PanRingTop.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,44 +0,0 @@
-PanRingTop : MultiOutUGen { 
-	*ar {|numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		^[numChans, in, azi, elev, orientation ].flop.collect({ |inputs|
-			this.ar1(*inputs) 
-		}).unbubble;
-	}
-	*ar1 { |numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		var down, up; #down, up = Pan2.ar(in, (elev * 2 - 1).clip(-1, 1));
-		^PanAz.ar(numChans, down, azi) ++ [ up ];
-	}
-	*kr {|numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		^[numChans, in, azi, elev, orientation ].flop.collect({ |inputs|
-			this.kr1(*inputs) 
-		}).unbubble;
-	}
-	*kr1 { |numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		var down, up; #down, up = Pan2.kr(in, (elev * 2 - 1).clip(-1, 1));
-		^PanAz.kr(numChans, down, azi) ++ [ up ];
-	}
-}
-		// 1 top and 1 bottom speaker, 
-		// positions azi wraps, elev clips.
-PanRingTopBot : MultiOutUGen { 
-	*ar {|numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		^[numChans, in, azi, elev, orientation ].flop.collect({ |inputs|
-			this.ar1(*inputs) 
-		}).unbubble;
-	}
-	*ar1 { |numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		var down, ring, up; 
-		#down, ring, up = PanAz.ar(3, in, elev.clip(-1, 1) * 2/3, orientation: 1);
-		^PanAz.ar(numChans, ring, azi) ++ [up, down];
-	}
-	*kr {|numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		^[numChans, in, azi, elev, orientation ].flop.collect({ |inputs|
-			this.kr1(*inputs) 
-		}).unbubble;
-	}
-	*kr1 { |numChans=4, in, azi=0.0, elev=0.0, orientation=0.5|
-		var down, ring, up; 
-		#down, ring, up = PanAz.kr(3, in, elev.clip(-1, 1) * 2/3, orientation: 1);
-		^PanAz.kr(numChans, ring, azi) ++ [up, down];
-	}
-}
\ No newline at end of file

Deleted: SpeakersCorner/Panning/PanRingTopBot.html
===================================================================
--- SpeakersCorner/Panning/PanRingTopBot.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Panning/PanRingTopBot.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 9.0px Monaco}
-span.s2 {font: 9.0px Monaco; color: #a91616}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PanRingTopBot</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a panner for a ring with one speaker on top, and one on the bottom.</b></p>
-<p class="p3"><b>see also PanRingTop, TorusPanAz.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*ar(numChans, in, azi, elev, orientation)</b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span><b>numChans<span class="Apple-tab-span">	</span></b>number of channels in the ring</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span><b>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>input signal to pan</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>azi<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>azimuth, angle in the horizontal ring; from 0 to 2, wraps around.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>elev<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>height above the horizon, toward top speaker; 0 is ring, 1 is top, -1 is bottom.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>orientation<span class="Apple-tab-span">	</span></b>direction of azimuth 0: orientation 0 means azi 0 is on chan0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>orientation 0.5 means azi 0 is between chan0 and chan1.</p>
-<p class="p4"><br></p>
-<p class="p3">The order of the returned channels is: ring1, ring2 ... ringN, top, bottom.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">Server</span>.internal.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// orientation defaults to 0.5, between first 2 chans.</p>
-<p class="p5">z = { <span class="s3">|azi=0, elev=0|</span> <span class="s3">PanRingTopBot</span>.ar(4, <span class="s3">Dust</span>.ar(1000, 0.5), azi, elev) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, -0.25);<span class="Apple-tab-span">	</span><span class="s6">// chan 1</span></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, 0.25);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 2</span></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, 0.75);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 3</span></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, 1.25);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 4</span></p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, 0.5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// halfway up to top chan (here chan 5).</p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pan all the way to top chan.</p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, -0.5);<span class="Apple-tab-span">	</span></span>// halfway down to bottom (here chan 6).</p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, -1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pan fully to to bottom chan.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// The bottom speaker can also be virtual, and mixed to the ring speakers:</p>
-<p class="p5">(</p>
-<p class="p5">z = { <span class="s3">|azi=0, elev=0|</span> <span class="s3">var</span> all, ring, top, bot;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>all = <span class="s3">PanRingTopBot</span>.ar(6, <span class="s3">Dust</span>.ar(1000, 0.5), azi, elev);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>ring = all.keep(6);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>top = all[6];<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>bot = all[7];<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(ring + (bot * (1/6))) ++ top;</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, -0.17);<span class="Apple-tab-span">	</span><span class="s6">// chan 1</span></p>
-<p class="p5">z.set(<span class="s5">\azi</span>, 0.5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// chan 3</span></p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pan all the way to top chan.</p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, -0.5);<span class="Apple-tab-span">	</span></span>// bottom is added to ring of 6.</p>
-<p class="p7"><span class="s4">z.set(</span><span class="s5">\elev</span><span class="s4">, -1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fully down is now evenly on all ring speakers.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// could also be done with TorusPanAz now.</p>
-</body>
-</html>

Deleted: SpeakersCorner/Panning/TorusPanAz.html
===================================================================
--- SpeakersCorner/Panning/TorusPanAz.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Panning/TorusPanAz.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>TorusPanAz</b></p>
-<p class="p2"><br></p>
-<p class="p3">a panner for toroidal shaped setups. Can also be used for<span class="Apple-converted-space"> </span></p>
-<p class="p3">cylinders where panning beyond the top wraps back into<span class="Apple-converted-space"> </span></p>
-<p class="p3">the bottom.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*ar(numSpeakers, in, hPos, vPos, level, hWidth, vWidth)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numSpeakers <span class="Apple-tab-span">	</span></b>number of speakers per ring, default is #[ 16, 12, 8, 4 ]</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the input signal to pan</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hPos <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>horizontal position, default is 0 (first speaker in ring)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>vPos<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>vertical position, default is 0 (bottom ring)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>level<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>amplitude control, kr (default 1)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hWidth <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>horizontal width, max number of speakers that sound together (default 2)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>vWidth<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>vertical width, max number of speakers that sound together (default 2)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hOrients <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the orientations where vPos 0 on every ring pan to (cf. orientation for PanAz).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>E.g. 0 means to speaker 0 in that ring, 0.5 is between speaker 0 and 1, etc.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>vOrient<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>vertical orientation, default 0, the first ring specified.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">z = { </span>|hPos=0, vPos=0, hWidth=2, vWidth=2|<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TorusPanAz</span>.ar([8, 4, 4], <span class="s1">Dust</span>.ar(1000), hPos, vPos, 1, hWidth, vWidth);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// If present, check with SpatioScope:</p>
-<p class="p5"><span class="s1">SpatioScope</span>.rings([8, 4, 4]);</p>
-<p class="p7"><br></p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.25);</p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.5);</p>
-<p class="p7"><br></p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0, <span class="s3">\vPos</span>, 0.667);<span class="Apple-tab-span">	</span><span class="s4">// into middle ring</span></p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.5);</p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 1);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0, <span class="s3">\vPos</span>, 1.333);<span class="Apple-tab-span">	</span><span class="s4">// into top ring</span></p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.5);</p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 1);</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\hPos</span><span class="s2">, 0, </span><span class="s3">\vPos</span><span class="s2">, 1.666);<span class="Apple-tab-span">	</span></span>// wrap back into bottom ring: half ...</p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\hPos</span><span class="s2">, 0, </span><span class="s3">\vPos</span><span class="s2">, 2);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ... and fully back</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\hWidth</span><span class="s2">, 4);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// horizontal width</p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.25);</p>
-<p class="p5">z.set(<span class="s3">\hPos</span>, 0.5);</p>
-<p class="p7"><br></p>
-<p class="p5">z.set(<span class="s3">\hWidth</span>, 2);</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\vWidth</span><span class="s2">, 3);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// vertical width; not usually useful.</p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, 0.666);</p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, -0.666);</p>
-<p class="p7"><br></p>
-<p class="p5">z.set(<span class="s3">\vWidth</span>, 2);</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// use for panning gon a sphere:</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">z = { </span>|hPos, vPos|<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TorusPanAz</span>.ar([1, 4, 6, 4, 1], <span class="s1">Dust</span>.ar(1000), hPos, vPos, 1, vOrient: 2);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\vPos</span><span class="s2">, 0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// middle ring</p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, 0.4);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// top ring</span></p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, 0.8);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// top 1</span></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\hPos</span><span class="s2">, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// turn horiz 180 deg</p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\vPos</span><span class="s2">, 0.4);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// top ring, other side</p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, 0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// mid ring</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, -0.4);<span class="Apple-tab-span">	</span><span class="s4">// bottom ring</span></p>
-<p class="p5">z.set(<span class="s3">\vPos</span>, -0.8);<span class="Apple-tab-span">	</span><span class="s4">// bottom 1</span></p>
-<p class="p8"><span class="s2">z.set(</span><span class="s3">\hPos</span><span class="s2">, 0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rotate back.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// to do : demonstrate conversion between xy field and panning on a dome.</p>
-</body>
-</html>

Deleted: SpeakersCorner/Panning/TorusPanAz.sc
===================================================================
--- SpeakersCorner/Panning/TorusPanAz.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Panning/TorusPanAz.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,22 +0,0 @@
-TorusPanAz { 
-	*ar { arg numSpeakers = #[ 16, 12, 8, 4 ], 
-		in, hPos = 0.0, vPos = 0.0, level = 1.0, 
-		hWidth = 2, vWidth = 2, 
-		hOrients=0, vOrient=0;
-
-		 ^PanAz.ar(numSpeakers.size, in, vPos, level, vWidth, vOrient)
-		 	.collect({ arg vChan, i; var numSpk; 
-		 		numSpk = numSpeakers[i];
-		 		if (numSpk == 1, { 
-		 			[vChan] 
-		 		}, {
-					PanAz.ar(numSpk, 
-						vChan, 
-						hPos, 
-						width: hWidth.min(numSpk),
-						orientation: hOrients.asArray.clipAt(i)
-					)
-				});
-		}).flat;
-	}
-}
\ No newline at end of file

Deleted: SpeakersCorner/SpatioScope.html
===================================================================
--- SpeakersCorner/SpatioScope.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/SpatioScope.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9a1d1b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001ebb}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001ebb}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #9a1d1b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SpatioScope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>monitor volume levels on multiple speakers</b></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>// quick first example:<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><span class="s2">z = </span><span class="s3">SpatioScope</span><span class="s2">.new;<span class="Apple-tab-span">	</span></span>// default is 4 speakers<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// 4 chans of sound</p>
-<p class="p3">{ <span class="s3">LFDNoise3</span>.ar([2, 3, 5, 8] * 1000) * <span class="s3">LFNoise2</span>.kr([5, 8, 13, 21] * 0.1).max(0); }.play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// survives cmd-period</p>
-<p class="p5">thisProcess<span class="s2">.stop;</span></p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s3">PanAz</span>.ar(4, <span class="s3">ClipNoise</span>.ar, <span class="s3">LFSaw</span>.kr(<span class="s3">SinOsc</span>.ar(0.03) * 1), 0.1) }.play;</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>// stop and start</b></p>
-<p class="p3">z.stop;</p>
-<p class="p3">z.start;</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(locations, server, parent, bounds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>locations</b>: positions in space of [-1, 1] for x and y</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b>: on which server to watch<span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent</b>: which window or view to show on</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b>: view bounds.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// supply locations by hand - 1@1 is left bottom.</p>
-<p class="p3">z = <span class="s3">SpatioScope</span>([ -0.5 @ -0.7, 0.5 @ -0.4, 0.8 @ 0.8, -0.5 @ 0.5, 0@0 ]);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*gridPos(numx, numy) <span class="Apple-tab-span">	</span></b>// calculate positions for a grid</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numx</b>: number of speakers in the x-direction</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numy</b>: number of speakers in the y-direction</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3">SpatioScope</span>.gridPos(4,6);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*grid(numx, numy radius, angleOffset, server, parent, bounds) <span class="Apple-tab-span">	</span></b>// make a SpatioScope for a grid</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numx, numy</b> as in *<b>gridPos</b></p>
-<p class="p1"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server, parent, bounds </b>as in <b>*new</b></p>
-<p class="p6"><br></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.grid(4,6);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ringPos(num, radius, angleOffset) <span class="Apple-tab-span">	</span></b>// calculate positions for a ring</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>num</b>: number of speakers in the ring</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>radius</b>: radius from center</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>angleOffset</b>: angleOffset of first speaker (0 = right, -0.5pi is top)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3">SpatioScope</span>.ringPos(5);</p>
-<p class="p3"><span class="s3">SpatioScope</span>.ringPos(8);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ring(num, radius, angleOffset, server, parent, bounds) <span class="Apple-tab-span">	</span></b>// make a SpatioScope for a ring</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>num</b>, <b>radius, angleOffset</b> as in *<b>ringPos</b></p>
-<p class="p1"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server, parent, bounds </b>as in <b>*new</b></p>
-<p class="p2"><br></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.ring(5);<span class="Apple-tab-span">	</span><span class="s5">// 1 is right</span></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.ring(8);<span class="Apple-tab-span">	</span>// more speakers</p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.ring(8, 0.8);<span class="Apple-tab-span">	</span>// ring radius</p>
-<p class="p4"><span class="s2">z = </span><span class="s3">SpatioScope</span><span class="s2">.ring(5, 0.5, 0.5pi);<span class="Apple-tab-span">	</span></span>// radius, rotate location clockwise -&gt; bottom</p>
-<p class="p4"><span class="s2">z = </span><span class="s3">SpatioScope</span><span class="s2">.ring(6, 0.5, pi);<span class="Apple-tab-span">	</span></span>// radius, rotate location clockwise -&gt; left</p>
-<p class="p4"><span class="s2">z = </span><span class="s3">SpatioScope</span><span class="s2">.ring(7, 0.5, 1.5pi);<span class="Apple-tab-span">	</span></span>// radius, rotate location clockwise -&gt; top</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// ring + subwoofer in center</p>
-<p class="p3">z = <span class="s3">SpatioScope</span>(SpatioScope.ringPos(6, 0.8, pi) ++ [0@0]);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*rings(nums, radii, angleOffsets, server, parent, bounds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// concentric rings, as in dome-style setups<span class="Apple-converted-space">  </span>(e.g. Animax Bonn, IEM-Cube Graz)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nums</b>: number of speakers in each ring</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>radii</b>: the radii of each ring (nil distributes the radii between 0 and 1)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>angleOffsets</b>: the angle offsets for each ring; if a single value, it applies to all rings.</p>
-<p class="p1"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server, parent, bounds: </b>as above.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="s2">z = </span><span class="s3">SpatioScope</span><span class="s2">.rings([8, 4]);<span class="Apple-tab-span">	</span></span>// 2 rings, outer ring is lower channels</p>
-<p class="p2"><br></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.rings([8, 4], <span class="s3">nil</span>, -0.5pi);<span class="Apple-tab-span">	</span><span class="s5">// 1 on top</span></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.rings([8, 4], [0.4, 0.75]);<span class="Apple-tab-span">	</span><span class="s5">// low chan numbers inside</span></p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.rings([12, 8, 4], <span class="s3">nil</span>, -0.5pi); <span class="s5">// 3 rings</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// roughly the angle offsets for IEM CUBE</p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.rings([12, 8, 4], <span class="s3">nil</span>, (-0.5 + [0, 0.125, 0.25]) * pi);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// roughly the Animax Dome setup in Bonn</p>
-<p class="p3">z = <span class="s3">SpatioScope</span>.rings([16, 12, 8, 4], <span class="s3">nil</span>, (-0.5 + [0.0625, 0.083, 0.125, 0.25]) * pi);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// test with several sources</p>
-<p class="p5"><span class="s2">{ </span>{ Ringz.ar(Dust2.ar(5), exprand(300, 10000), exprand(0.03, 0.1)) }.dup(12)<span class="s2"> }.play;</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>internals:</b></p>
-<p class="p2"><br></p>
-<p class="p3">z.locations<span class="Apple-tab-span">	</span>// knows its locations</p>
-<p class="p3">z.server<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// and its server</p>
-<p class="p3">z.numChannels<span class="Apple-tab-span">	</span>// inferred from number of locations</p>
-<p class="p3">z.offset<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// zero by default, can be set so that outputs to watch begin at higher channels</p>
-<p class="p3">z.proxy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// a proxy does the amp watching</p>
-<p class="p3">z.resp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// a respondernode listen for the incoming amp values</p>
-<p class="p3">z.skipjack<span class="Apple-tab-span">	</span>// a skipjack restarts the spatioscope after thisProcess.stop</p>
-<p class="p3">z.parent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// its view</p>
-<p class="p2"><br></p>
-<p class="p3">z.offset_(8);</p>
-<p class="p3">z.offset_(0);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// closing the gui and reopening does not work yet. hmmm.</p>
-<p class="p3">z.parent.close;</p>
-<p class="p3">z.gui;</p>
-</body>
-</html>

Deleted: SpeakersCorner/SpatioScope.sc
===================================================================
--- SpeakersCorner/SpatioScope.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/SpatioScope.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,212 +0,0 @@
-SpatioScope { 
-	
-	var <locations, <server,  <bounds, <>background, <>foreground; 
-	var <numChannels, <offset = 0; 
-	var <proxy, <resp, <skipjack;
-	var <parent, <startBtn, <stopBtn, <ampViews, <magSlider, <>redLevel=0.95, <>magnify=1;
-
-	var <rate;
-
-	*new { arg locations, server, parent, bounds;
-		locations = locations ?? { [(-0.5 @ -0.5), (0.5 @ -0.5), (0.5@0.5), (-0.5@0.5) ] }; 
-		server = server ? Server.default; 
-		
-		^super.newCopyArgs(locations, server)
-			.init(bounds)
-			.gui(parent)
-			// .start
-	}
-	
-	init { |argBounds|
-		bounds = argBounds ?? { Rect(0,0,410,410) };
-		numChannels = locations.size; 
-		
-		proxy = proxy ?? {  NodeProxy.control(server, this.numChannels) };
-		proxy.source = {
-			Amplitude.kr(InFeedback.ar(this.offset, this.numChannels), 0, 0.5)
-		};
-
-		rate = \audio;
-
-		resp.remove;
-		resp = OSCresponderNode(server.addr, '/c_set', { arg time, r, msg; 
-			var amps;
-			// check if this reply message is for this spatioscope
-			if ( msg[1] == this.proxy.index ){
-				amps = msg.copyToEnd(1).clump(2).flop[1];
-				{  this.amps_(amps * (magnify ? 1)); }.defer;
-			};
-		}); 
-		
-		skipjack = SkipJack( 
-			{ proxy.wakeUp; this.updateViews; }, 
-			0.2, 
-			{ parent.isClosed; },
-			this.class.name, 
-			autostart: false
-		);
-	}
-
-	maxBusNum {
-		^if ( rate == \audio ){
-			server.options.numAudioBusChannels
-		} {
-			server.options.numControlBusChannels
-		} - this.numChannels;
-	}
-
-	offset_ { |inChan=0|
-		if (inChan.inclusivelyBetween(0, this.maxBusNum ) ) { 
-			offset = inChan; 
-			if (skipjack.task.isPlaying) { this.stop.start };
-		}{
-			"new offset out of range of valid busnumbers!".warn;
-		};
-	}
-	
-	gui { |argParent| 
-		var butWidth = 38; 
-		background = background ?? { Color(0, 0, 0.15) }; // dark blue
-		foreground = foreground ?? { Color(0.5, 0.5, 1.0) }; // light blue
-		
-		parent = argParent ?? { 
-			Window(this.class.name, bounds.moveBy(200, 200).resizeBy(10, 30)).front;
-		};
-		parent.view.background_(background); 
-		parent.addFlowLayout;
-		
-		#startBtn, stopBtn = [ \start, \stop ].collect { |name, i| 
-			Button(parent, Rect(i * (butWidth + 2) + 2, 2, butWidth, 20))
-				.states_([[name, Color.white, Color.clear], 
-					[name, Color.white, Color(0,0,0.8)]])
-				.action_({ this.perform(name); });
-		};
-	
-		magSlider = EZSlider(parent, 
-			(bounds.width - (butWidth * 2) - 10) @ 20, 
-			\magnify, 
-			[1, 10, \exp], 
-			{ |sl| magnify = sl.value }, magnify, 
-			labelWidth: 45, numberWidth: 30);
-		magSlider.labelView.stringColor_(foreground);
-		magSlider.numberView.background_(foreground);
-//		magSlider.numberView.resize_(3);
-//		magSlider.sliderView.resize_(2);
-		
-		this.showLocs;
-		this.stop.start;
-	}
-	
-	showLocs { 
-		var ampCont = CompositeView(parent, bounds).background_(Color.clear);
-		var center = bounds.center; 
-		var size = bounds.center.x * 0.2; 
-		
-		ampViews = locations.collect { |point, i| 
-			var left = point.x + 1 - 0.125 * center.x; 
-			var top = point.y + 1 - 0.125 * center.y; 
-			StaticText(ampCont, Rect(left, top, size, size))
-			.string_((i + 1).asString).align_(\center)
-				.stringColor_(foreground)
-			.background_(Color.black);
-		};
-	}
-
-	*ringPos { |num=6, radius=0.7, angleOffset=0| 
-		var angles = { |i| (2pi * (i / num)) + angleOffset }.dup(num); 
-		^angles.collect { |angle| Polar(radius, angle).asPoint };
-	}
-
-	*ring { |num=6, radius=0.7, angleOffset=0, server, parent, bounds|
-		var locs = this.ringPos(num, radius, angleOffset);
-		^this.new(locs, server, parent, bounds);
-	}
-	
-	
-	*rings { |nums, radii, angleOffsets = 0, server, parent, bounds|
-		var locs; 
-		var numrings = nums.size; 
-			// earlier circles are outer 
-			// (assumes dome shape, low channels on bottom, as in IEM CUBE)
-		radii = radii ?? { (numrings .. 1) / (numrings + 1) };
-		angleOffsets = angleOffsets ?? 0;
-		locs = [ nums, radii, angleOffsets ].flop.collect { |list| this.ringPos(*list) }.flat; 
-		
-		^this.new(locs, server, parent, bounds);
-	}
-
-	// grid speaker positions
-	*gridPos{ |numx = 2, numy = 6|
-		
-		^Array.series( numy, 1/(2*numy), 1/numy ).collect{ |y|
-			Array.series( numx, 1/(2*numx), 1/numx ).collect{ |x|
-				Point(x*2-1,y*2-1);
-			}
-		}.flatten;
-	}
-
-	*grid { |numx=2, numy=6, server, parent, bounds|
-		var locs = this.gridPos(numx, numy);
-		^this.new(locs, server, parent, bounds);
-	}
-
-
-	// listen to control buses
-	krListen{
-		rate = \control;
-		proxy.source = {
-			Amplitude.kr(In.kr(this.offset, this.numChannels), 0, 0.5)
-		};
-	}
-
-	// listen to audio rate buses
-	arListen{
-		rate = \audio;
-		proxy.source = {
-			Amplitude.kr(InFeedback.ar(this.offset, this.numChannels), 0, 0.5)
-		};
-	}
-			
-	start {
-		if(server.serverRunning.not) { 
-			"SpatioScope: server not running.".warn; 
-			skipjack.stop; 
-			this.updateViews;
-			^this
-		};
-		proxy.rebuild;
-		fork { 0.4.wait; proxy.send };
-		skipjack.start; 
-		resp.remove.add;
-		this.updateViews;
-	}
-
-	updateViews {
-		var isOn = skipjack.task.isPlaying.binaryValue;
-		if (parent.isClosed.not) { 
-			startBtn.value_(isOn);
-			stopBtn.value_(1 - isOn);
-			server.listSendMsg(["/c_get"] ++ ((_ + proxy.index) ! proxy.numChannels));
-		};
-	}
-	
-	stop { 
-		skipjack.stop;
-		proxy.free;
-		resp.remove;
-		this.updateViews;
-		this.amps_([]);
-	}
-	
-	amps_ { arg vals;
-		var amp, col;
-		// "amps coming in: %\n".postf(vals);
-		if (parent.isClosed.not) { 
-			ampViews.do { |el, i|  
-				amp = (vals[i] ? 0).sqrt; 
-				col = if (amp > redLevel, { Color.red }, { Color.yellow( amp ) });
-				el.background_(col) 
-			} 
-		};
-	}
-}
\ No newline at end of file

Deleted: SpeakersCorner/SpeakerAdjust.html
===================================================================
--- SpeakersCorner/SpeakerAdjust.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/SpeakerAdjust.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #307109}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #622c2c}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #622c2c; min-height: 12.0px}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #000000}
-span.s3 {color: #307109}
-span.s4 {color: #0014bc}
-span.s5 {color: #5e691f}
-span.s6 {color: #622c2c}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SpeakerAdjust</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>adjusts levels, arrival times, and optional eqalisation bands for multichannel signals.</b></p>
-<p class="p3"><b>Typical use is for multichannel speaker setups.<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>See also Spectralyzer.help for a related tool.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*ar(ins, specs, vol) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>// static settings</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>ins <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an array of audio channels to be processed/adjusted</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>specs <span class="Apple-tab-span">	</span></b>the adjustment specifications:</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>one list for each channel consisting of<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ amp, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a multiply factor for this channel,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>delaytime,<span class="Apple-tab-span">	</span></b>(optional) delay time for this channel (in secs)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>eqspec1:<span class="Apple-tab-span">	</span></b>(optional) spec for one eq band to use, with values for:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>[freq,</b><span class="Apple-tab-span">	</span>frequency,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>db</b>, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gain in db,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rq]</b>, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reciprocal of Q: bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1 is wide, 0.1 is narrow).</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>eqspec2,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>...</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>eqspecN</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>vol<span class="Apple-tab-span">	</span></b>master volume for all chans, can be used for muting</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>// Caution:</b> not working yet, because default values with Control.names are not correct yet.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// for the time being, use ar (fix).</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*arDyn ( ins, specs, vol)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>same as above, but with adjustable delay times, level and EQ; to be used for tweaking<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the setup is final.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is slightly more efficient than creating control inputs on all parameters.</p>
-<p class="p4"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>Recommended use: put a function for speaker adjustment in a MasterFX chain,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>where it is guaranteed to run post all other sounds, and wake up after Cmd-period.</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5">s.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// ... full short example here, e.g. 6 chans, amp, delay, 2 bands eq each.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// step by step examples</p>
-<p class="p5">(</p>
-<p class="p7">ProxyChain<span class="s2">.add(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\testSnd</span>, <span class="s3">\mix</span> -&gt; { <span class="s4">Dust</span>.ar(20) + <span class="s4">PinkNoise</span>.ar([0.1, 0.1]) },<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\spkAdj</span>, <span class="s3">\filter</span> -&gt; { <span class="s4">|in, spkVol=1|</span> <span class="s4">SpeakerAdjust</span>.ar(in, [ [0.25], [0.5] ], spkVol) }</p>
-<p class="p5">);</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">Spec</span><span class="s2">.add(</span>\spkVol<span class="s2">, </span>\amp<span class="s2">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// can be used in a proxy chain</p>
-<p class="p8"><span class="s2">c = </span><span class="s4">ProxyChain</span><span class="s2">(2, [</span>\testSnd<span class="s2">, </span>\spkAdj<span class="s2">]);</span></p>
-<p class="p5">c.gui;</p>
-<p class="p5">c.play;</p>
-<p class="p5">)</p>
-<p class="p6"><span class="s2">c.add(</span><span class="s3">\spkAdj</span><span class="s2">, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// kick in compensation</p>
-<p class="p2"><br></p>
-<p class="p5">c.end;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// make some sound that just plays</p>
-<p class="p5">{ <span class="s4">Dust</span>.ar(20) + <span class="s4">PinkNoise</span>.ar([0.1, 0.1]) }.play;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// make a MasterFX - this filters everything on its buses,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// and wakes up after cmd-period.<span class="Apple-converted-space"> </span></p>
-<p class="p5">z = MasterFX(s, 2, [\spkAdj]);</p>
-<p class="p5">z.gui;</p>
-<p class="p5">z.pxChain.add(\spkAdj);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p7">ProxyChain<span class="s2">.add(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\spkAdj<span class="s2">, </span>\filter<span class="s2"> -&gt; { </span><span class="s4">|in, spkVol=1|</span><span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SpeakerAdjust<span class="s2">.ar(in, [<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 0],<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 0.02] <span class="Apple-tab-span">	</span>// right channel slightly late</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], spkVol) }</p>
-<p class="p5">);</p>
-<p class="p5">z.pxChain.add(<span class="s5">\spkAdj, 1);</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// one eq band on each channel, add gain at different freqs</p>
-<p class="p5">(</p>
-<p class="p7">ProxyChain<span class="s2">.add(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\spkAdj<span class="s2">, </span>\filter<span class="s2"> -&gt; { </span><span class="s4">|in, spkVol=1|</span><span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SpeakerAdjust</span>.arDyn(in, [<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//<span class="Apple-converted-space">  </span>amp, dt,<span class="Apple-converted-space">  </span>[freq1, gain1, bw1]<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 0, <span class="Apple-converted-space">  </span>[300, <span class="Apple-converted-space">    </span>8,<span class="Apple-converted-space">    </span>2]],<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 0.02,</span>/* [2800, <span class="Apple-converted-space">    </span>8,<span class="Apple-converted-space">    </span>2]*/<span class="s2">]<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], spkVol) }</p>
-<p class="p5">);</p>
-<p class="p5">z.pxChain.add(<span class="s5">\spkAdj, 1);</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// load test for 24 chans: a MasterFX<span class="Apple-converted-space"> </span></p>
-<p class="p5">(<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s4">MasterFX</span>.clear(s.name);</p>
-<p class="p5">z = <span class="s4">MasterFX</span>(s, 24, [<span class="s3">\spkAdj</span>]);</p>
-<p class="p5">z.gui;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p10">//<span class="Apple-tab-span">	</span>generate random data for 24 chans, 3 bands each, to test load:</p>
-<p class="p5">var data = { [<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>rrand(0.5, 1.0), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// amp<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>0.01.rand ]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// dt, max 10msec =&gt; 3.4m<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>++<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>({ [<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(100, 10000),<span class="Apple-tab-span">	</span><span class="s6">// freq</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(12.0, -12.0),<span class="Apple-tab-span">	</span><span class="s6">// gain in db</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(0.2, 1.0) ]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// rq</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>} ! 3);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">} ! z.numChannels;<span class="Apple-tab-span">	</span><span class="s6">// for 24 chans</span></p>
-<p class="p11"><br></p>
-<p class="p7">ProxyChain<span class="s2">.add(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\spkAdj<span class="s2">, </span>\filter<span class="s2"> -&gt; { </span><span class="s4">|in, spkVol=1|</span><span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SpeakerAdjust</span>.arDyn(in, data, spkVol) }</p>
-<p class="p5">);</p>
-<p class="p5">z.pxChain.add(<span class="s5">\spkAdj, 1);</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-</body>
-</html>

Deleted: SpeakersCorner/SpeakerAdjust.sc
===================================================================
--- SpeakersCorner/SpeakerAdjust.sc	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/SpeakerAdjust.sc	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,100 +0,0 @@
-SpeakerAdjust { 
-
-	classvar <>freqName = \eqFr, <>gainName= \eqGn, <>bwName= \eqBw;
-	var <server, <specs, <vol, <synth, <group; 
-		
-	*addSpecs { |numChans = 8, numBands = 3, dict|
-		var 	freqSpec, gainSpec, bwSpec, threeSpecs; 
-		
-		freqSpec = \freq.asSpec;
-		gainSpec = [-24, 24].asSpec; 
-		bwSpec = [0.01, 2, \exp].asSpec;
-		threeSpecs = [freqSpec, gainSpec, bwSpec];
-		
-		dict = dict ? Spec.specs;
-		dict.put(freqName, freqSpec);
-		dict.put(gainName, gainSpec);
-		dict.put(bwName, bwSpec);
-		
-		numChans.do { |i| 
-			numBands.do { |j| 
-				this.makeNames(i, j).do { |name, i| 
-					dict.put(name, threeSpecs[i]);
-				}
-			}
-		};
-	}
-	
-	*makeNames { |i, j| 
-		var ext = "_c" ++ (j+1) ++ "_" ++ (i+1);
-		^[freqName, gainName, bwName].collect { |nm| (nm ++ ext).asSymbol };
-	}
-		// more efficient, but fixed values for everything
-	*ar { |ins, specs, vol=1|
-
-		vol = vol.lag(0.2); 
-		
-		if (ins.size != specs.size) { 
-			"SpeakerAdjust: number of ins: % and specs: % dont match."
-				.format(ins.size, specs.size).warn;
-			^nil
-		};
-		
-		^specs.collect { |spec, i|
-			var out, amp, dt, eqSpecs; 
-
-			out = ins[i];
-			#amp, dt ... eqSpecs = spec; 
-
-			out = if (amp.notNil, { out * amp }, { out });
-
-			if (dt ? 0 > 0, { out = DelayN.ar(out, dt, dt) });
-		
-			eqSpecs.do { |spec|
-				var freq, db, rq; 
-				#freq, db, rq = spec;
-				out = MidEQ.ar(out, freq, rq, db);
-			};
-			out * vol;
-		};	
-	}
-		// create controls for everything
-	*arDyn { |ins, specs, vol=1|
-		
-		vol = vol.lag(0.2); 
-		
-		if (ins.size != specs.size) { 
-			"SpeakerAdjust: number of ins: % and specs: % dont match."
-				.format(ins.size, specs.size).warn;
-			^nil
-		};
-		
-		^specs.collect { |specList, i|
-			var out, amp, dt, eqSpecs; 
-			var ampCtl, delayCtl;
-			
-			out = ins[i];
-			#amp, dt ... eqSpecs = specList; 
-
-			delayCtl = NamedControl.kr(("eqDt_c" ++ (i+1)).asSymbol, dt ? 0, 0.2);
-			out = DelayN.ar(out, 0.1, delayCtl);
-
-			ampCtl = NamedControl.kr(("eqAmp_c" ++ (i+1)).asSymbol, amp ? 1, 0.2);
-			out * (ampCtl * vol);
-		
-			eqSpecs.do { |specBand, j|
-				var freq, db, rq; 
-				var freqCtl, gainCtl, rqCtl; 
-				var ctlNames = this.makeNames(i, j); 
-				#freq, db, rq = specBand.postcs;
-				
-				freqCtl = NamedControl.kr(ctlNames[0], freq, 0.2);
-				gainCtl = NamedControl.kr(ctlNames[1], db, 0.2);
-				rqCtl   = NamedControl.kr(ctlNames[2], rq, 0.2);
-				
-				out = MidEQ.ar(out, freqCtl, gainCtl, rqCtl);
-			};
-			out
-		};	
-	}
-}
\ No newline at end of file

Deleted: SpeakersCorner/SpeakersCorner.html
===================================================================
--- SpeakersCorner/SpeakersCorner.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/SpeakersCorner.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SpeakersCorner</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>A set of classes for Multi-Speaker setups.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>SpatioScope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- display speaker layout in 2D, show audio levels on the speakers</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Latency<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- measure audio latencies for each channel, to compensate distances<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>to a given listening/microphone location</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Spectralyzer<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- display frequency response of a signal, e.g. a loudspeaker by microphone</p>
-<p class="p4"><br></p>
-<p class="p3"><b>SpeakerAdjust<span class="Apple-tab-span">	</span></b>- adjust delaytime, level and EQ for individual speaker channels</p>
-<p class="p4"><br></p>
-<p class="p3"><b>MasterFX<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- add switchable master effects on the main outputs,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>e.g. using SpeakerAdjust, limiters, etc.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Panning Classes:</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>TorusPanAz<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>for concentric rings of speakers</p>
-<p class="p3"><b>PanRingTop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>for ring + a top speaker</p>
-<p class="p3"><b>PanRingTopBot<span class="Apple-tab-span">	</span></b>for a ring, top and bottom speaker</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">ToDo:</p>
-<p class="p3">* SpatioScope - close and reopen gui is not working yet.</p>
-<p class="p3">* SpeakerAdjust: dynamic eq controls not working yet, so use static EQ for now.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Written by Alberto de Campo, based on work done within the SonEnvir project.</p>
-</body>
-</html>

Deleted: SpeakersCorner/Spectralyzer.html
===================================================================
--- SpeakersCorner/Spectralyzer.html	2013-12-26 11:50:33 UTC (rev 2669)
+++ SpeakersCorner/Spectralyzer.html	2013-12-26 11:52:50 UTC (rev 2670)
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #0014bc}
-span.s5 {color: #307109}
-span.s6 {color: #a91616}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Spectralyzer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>listens to an input and displays its spectrum in equal relative bandwidth steps.<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>This is useful for tuning multichannel speaker setups, e.g. with Latency and SpeakerAdjust.</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// quick first example:</p>
-<p class="p5">(</p>
-<p class="p4"><span class="s1">x = </span><span class="s2">Spectralyzer</span><span class="s1">.new(61); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a spectralyzer,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1">x.makeWindow;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a gui for it</p>
-<p class="p5">x.listenTo({ <span class="s2">PinkNoise</span>.ar });<span class="Apple-tab-span">	</span><span class="s3">// listen to a sound</span></p>
-<p class="p4"><span class="s1">x.start; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start displaying<span class="Apple-tab-span">	</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*new (nBands, minFreq, maxFreq, server)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nBands: </b>number of equal relative width bands to analyse.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default is 60 bands, which creates 1/6th octave bands for 20-20000 Hz.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minFreq:</b> lowest band center freq, default 20Hz.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maxFreq: </b>highest band center freq, default 20000Hz</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>server: </b>the server to run on, default: Server.default.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">x = <span class="s4">Spectralyzer</span>.new(20, 100, 8000); // ca. 3rd octaves, 100, 125, 160, 200</p>
-<p class="p7">x.makeWindow;</p>
-<p class="p7">x.freqs.round(0.1);</p>
-<p class="p2"><br></p>
-<p class="p7">x = <span class="s4">Spectralyzer</span>.new(61, 20, 20000);<span class="Apple-tab-span">	</span>// default ca 1/6 octaves</p>
-<p class="p7">x.freqs.round(0.1);</p>
-<p class="p6"><br></p>
-<p class="p7">x = <span class="s4">Spectralyzer</span>.new(31, 20, 20 * 1024);<span class="Apple-tab-span">	</span>// precise 3rd octaves</p>
-<p class="p7">x.freqs.round(0.1);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>listenTo(src)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>src:</b> set the source to listen to. This can be anything a NodeProxy accepts as a source;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>usually it will be an audio function or maybe an existing proxy.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multichannel sources will be converted to mono.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7">x.listenTo({ <span class="s4">SinOsc</span>.ar });</p>
-<p class="p7">x.listenTo({ <span class="s4">SoundIn</span>.ar(0) });</p>
-<p class="p7">x.listenTo({ <span class="s4">SinOsc</span>.ar([300, 500, 1200]) * 0.1 });</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span>// set middle db value to display</p>
-<p class="p7">x.midDb = -20;</p>
-<p class="p7">x.midDb = -30;</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span>// set range to display (midDb +- rangeDb)</p>
-<p class="p7">x.rangeDb = 15;</p>
-<p class="p7">x.rangeDb = 30;<span class="Apple-tab-span">	</span></p>
-<p class="p7">x.rangeDb = 10;<span class="Apple-tab-span">	</span>// higher resolution</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// average over the last n measured amplitudes</p>
-<p class="p7">x.avgN = 5;</p>
-<p class="p7">x.avgN = 20;</p>
-<p class="p7">x.avgN = 2;</p>
-<p class="p7">x.avgN = 1;</p>
-<p class="p7">x.avgN = 5;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// change time interval</p>
-<p class="p7">x.dt = 0.03;</p>
-<p class="p7">x.dt = 0.1;</p>
-<p class="p7">x.dt = 0.3;</p>
-<p class="p7">x.dt = 1;</p>
-<p class="p7">x.dt = 0.1;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// usage example: adjust frequency response for a speaker.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>// results could then be used e.g. in SpeakerAdjust.</p>
-<p class="p2"><br></p>
-<p class="p7">p = <span class="s4">ProxySpace</span>.push;</p>
-<p class="p2"><br></p>
-<p class="p7">~noyz = { <span class="s4">PinkNoise</span>.ar(1) ! 2 };</p>
-<p class="p7">~noyz.play(vol: 0.5);</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// listen to noise from microphone<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.listenTo({ <span class="s4">SoundIn</span>.ar(0) });</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s1">(<span class="Apple-tab-span">	</span></span>// make two bands of parametric eq filter</p>
-<p class="p10"><span class="s1">~noyz.filter(5, { </span>|in, f1=100,rq1=1,db1=0,f2=5000,rq2=1,db2=0|<span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">MidEQ</span>.ar(<span class="s4">MidEQ</span>.ar(in, f1, rq1, db1), f2, rq2, db2);</p>
-<p class="p7">});</p>
-<p class="p7">)</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// eq for powerbook G4/1.25 speakers:</p>

@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.


_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/