-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathsc-foxdot-visual.scd
56 lines (44 loc) · 1.33 KB
/
sc-foxdot-visual.scd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(
FoxDot.start;
s.boot;
// define the OSC function inside the main enviroment
~oscFunc = OSCFunc({
|msg, time, addr, recvPort|
var data_analyzer = NetAddr("localhost", 7089);
var data;
data = msg[3..14];
data_analyzer.sendMsg("/scdata",
"/loud", data[0],
"/flat",data[1],
"/centroid", data[2],
"/eqm", data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10])
},'/tr');
Task ({
SynthDef(\audioAnalyzer, {
| in=0, rate1=1, rate2=1 |
var sig, fft;//, amplitude;
var loud, powers, flat, centroid;
var freq, hasFreq;
var ph, onset;
// we must use a mono source
sig = Mix.ar(In.ar(in, 2));
//amplitude = Amplitude.kr(sig);
fft = FFT(LocalBuf(2048), sig);
loud = Loudness.kr(fft);
powers = FFTSubbandPower.kr(fft, [100, 200, 400, 800, 1600, 3200, 6400], 1, 2);
powers = (powers.log10 * 0.25).max(0.0);
flat = SpecFlatness.kr(fft);
centroid = SpecCentroid.kr(fft);
SendReply.kr(Impulse.kr(rate1),'/tr', [loud, flat, centroid] ++ powers, replyID: 1);
}).add;
3.wait;
// and instantiate it just after the default server group
~listenSynth = Synth(\audioAnalyzer, [\in, 0,\rate1, 10, \rate2, 10],target:Server.default.defaultGroup, addAction:\addAfter);
}).start;
//start proxyspace
p = ProxySpace.push(s);
//start tempo clock
p.makeTempoClock;
//give proxyspace a tempo
p.clock.tempo = 2;
)