-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathosc_unit.pd
136 lines (136 loc) · 3.3 KB
/
osc_unit.pd
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#N canvas 717 137 653 729 10;
#X obj 13 665 *~;
#X obj 13 548 line~;
#X obj 245 356 spigot 0;
#X obj 170 354 spigot 0;
#X obj 422 137 spigot 0;
#X obj 422 114 t f f;
#X obj 363 136 spigot 0;
#X obj 363 113 t f f;
#X obj 304 136 spigot 0;
#X obj 304 113 t f f;
#X obj 245 134 spigot 0;
#X obj 245 111 t f f;
#X obj 221 221 == 0;
#X obj 263 221 == 1;
#X obj 263 244 t b f;
#X obj 221 244 t b f;
#X obj 262 -17 t b a;
#X text 431 47 receives chord ratios;
#X obj 13 60 unpack 0 0 0;
#X text 0 18 <freq mag flag>;
#X obj 13 527 pack 0 20;
#N canvas 465 248 945 368 ramp-amp 0;
#X obj 307 35 inlet;
#X obj -23 190 vline~;
#X msg 67 163 0 10;
#X obj -23 162 pack f 35 10;
#X obj -23 131 t f b;
#X obj 10 81 == 1;
#X obj -23 106 spigot;
#X text 37 111 if a new track/flag;
#X text 37 125 ramp down and up the magnitude;
#X obj 276 127 spigot;
#X obj 309 102 == 0;
#X text 339 125 if continuation ramp to new level;
#X text 343 142 in 20 ms;
#X obj 630 174 line~;
#X obj 276 174 line~;
#X obj 276 149 pack f 20;
#X obj -23 32 inlet;
#X obj 161 295 outlet~;
#X text 689 131 if track is empty;
#X msg 630 147 0 20;
#X obj 629 102 sel -1;
#X connect 0 0 5 0;
#X connect 0 0 10 0;
#X connect 0 0 20 0;
#X connect 1 0 17 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 3 0;
#X connect 4 1 2 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 9 0 15 0;
#X connect 10 0 9 1;
#X connect 13 0 17 0;
#X connect 14 0 17 0;
#X connect 15 0 14 0;
#X connect 16 0 6 0;
#X connect 16 0 9 0;
#X connect 19 0 13 0;
#X connect 20 0 19 0;
#X restore 30 121 pd ramp-amp \$0;
#X obj 13 492 expr int(0.5 + $f1/$f2)*$f2;
#X obj 13 629 osc~ \$1;
#X obj 13 37 r \$1-osc~;
#X obj 134 -21 r freq_multiple;
#X obj 262 -39 r ratios;
#X text 432 61 also tests whether 3 or 4 voice chord is;
#X obj 221 196 r monoORtriad;
#X text 217 177 0 mono \, 1 is triad;
#X obj 333 -16 r init;
#X obj 190 320 f 1;
#X obj 245 19 f 1;
#X obj 72 339 r init;
#X obj 72 361 unpack;
#X obj 289 17 unpack 1 1 1 1;
#X text 185 486 rounds the input (left) \, to the nearest multiple
of the number inserted through right inlet;
#X obj 245 48 expr if (\$1%$f2 == 0 \, $f1 \, 0) \; if (\$1%$f2 ==
1 \, $f1*$f3 \, 0) \; if (\$1%$f2 == 2 \, $f1*$f4 \, 0) \; if (\$1%$f2
== 3 \, $f1*$f5 \, 0);
#X obj 13 696 throw~ main_out;
#X connect 0 0 38 0;
#X connect 1 0 23 0;
#X connect 2 0 22 1;
#X connect 3 0 22 1;
#X connect 4 0 2 0;
#X connect 5 0 4 0;
#X connect 5 1 4 1;
#X connect 6 0 2 0;
#X connect 7 0 6 0;
#X connect 7 1 6 1;
#X connect 8 0 2 0;
#X connect 9 0 8 0;
#X connect 9 1 8 1;
#X connect 10 0 2 0;
#X connect 11 0 10 0;
#X connect 11 1 10 1;
#X connect 12 0 15 0;
#X connect 13 0 14 0;
#X connect 14 1 2 1;
#X connect 15 0 31 0;
#X connect 15 1 3 1;
#X connect 16 0 32 0;
#X connect 16 1 35 0;
#X connect 18 0 22 0;
#X connect 18 1 21 0;
#X connect 18 2 21 1;
#X connect 20 0 1 0;
#X connect 21 0 0 1;
#X connect 22 0 20 0;
#X connect 23 0 0 0;
#X connect 24 0 18 0;
#X connect 25 0 3 0;
#X connect 25 0 31 1;
#X connect 25 0 32 1;
#X connect 25 0 37 0;
#X connect 26 0 16 0;
#X connect 28 0 12 0;
#X connect 28 0 13 0;
#X connect 30 0 35 0;
#X connect 31 0 3 0;
#X connect 32 0 37 0;
#X connect 33 0 34 0;
#X connect 34 0 22 0;
#X connect 34 1 22 1;
#X connect 35 0 37 1;
#X connect 35 1 37 2;
#X connect 35 2 37 3;
#X connect 35 3 37 4;
#X connect 37 0 11 0;
#X connect 37 1 9 0;
#X connect 37 2 7 0;
#X connect 37 3 5 0;