File: trochoid%20curve.scd

package info (click to toggle)
supercollider 1%3A3.10.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 45,496 kB
  • sloc: cpp: 283,513; lisp: 74,040; ansic: 72,252; sh: 23,016; python: 7,175; makefile: 1,087; perl: 766; java: 677; yacc: 314; lex: 175; ruby: 136; objc: 65; xml: 15
file content (69 lines) | stat: -rw-r--r-- 1,017 bytes parent folder | download | duplicates (5)
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
57
58
59
60
61
62
63
64
65
66
67
68
69

(
a = 1.0;
b = 1.8;
x = { |phi, a, b| a * phi - (b * sin(phi)) };
y = { |phi, a, b| a - (b * sin(phi + 0.5pi)) };
)

(
		w = GUI.window.new("Trochoid", Rect(128, 64, 800, 400)).front;
		w.view.background_(Color.white);
		w.drawFunc = {
			Pen.strokeColor = Color.black;
			Pen.moveTo(0 @ 150);
			((0..900) / 50).do { |phi|
				var x0 = x.(phi, a, b);
				var y0 = y.(phi, a, b);
				Pen.lineTo((50 * x0) @ (50 * y0 + 150));
			};

			Pen.stroke
		};
		w.refresh;
);


(
Tdef(\x, {
	loop {
		((0..100) / 25).do { |m|
			b = m;
			defer {w.refresh};
			0.1.wait
		}
	}
}).play
)


// sonification of a trochoid


p = ProxySpace.push(s.boot); // enter
~out.play;

(
~out = {
	SinOsc.ar(500).dup * ~modulation.kr(2) * 0.04

};
)

(
~phi = {
	LFSaw.kr(3).range(0, 2pi)
};

~modulation = {
	var x, y;
	var a, b;
	a = 1.0;
	b = XLine.kr(0.1, 2, 30);
	x = { |phi, a, b| a * phi - (b * sin(phi)) }.value(~phi.kr, a, b);
	y = { |phi, a, b| a - (b * sin(phi + 0.5pi)) }.value(~phi.kr, a, b);
	[x, y]
}
)

p.clear.pop; // exit