aboutsummaryrefslogtreecommitdiff
path: root/reanimator~-help.pd
blob: 3e67bf0b642b5d9555d606dca3c3d38e2a9f52c5 (plain)
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#N canvas 17 365 720 517 10;
#N canvas 132 212 480 321 reanimator-block 0;
#X obj 15 170 block~ 256;
#X obj 19 30 inlet~;
#X obj 154 33 inlet~;
#X obj 217 34 inlet;
#X obj 19 105 outlet~;
#X obj 86 105 outlet~;
#X obj 154 106 outlet~;
#X text 17 128 args: size of texture analysis(ms.) \, overlap factor
\, window factor;
#X obj 19 78 reanimator~ 5000 4 1;
#X connect 1 0 8 0;
#X connect 2 0 8 1;
#X connect 3 0 8 0;
#X connect 8 0 4 0;
#X connect 8 1 5 0;
#X connect 8 2 6 0;
#X restore 96 87 pd reanimator-block;
#N canvas 536 186 752 534 driver-sound 0;
#X text 13 300 try a vocal sound or other sound with strong formant
structure;
#X obj 31 194 soundfiler;
#X obj 31 160 openpanel;
#N canvas 0 22 450 300 graph1 0;
#X array reanimator-sound1 4e+06 float 2;
#X coords 0 1 4e+06 -1 200 140 1;
#X restore 237 13 graph;
#X msg 31 131 bang;
#X obj 227 284 outlet~;
#X msg 227 244 bang;
#X obj 348 228 spigot;
#X obj 385 205 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X text 133 244 then play it;
#X text 304 190 loop if you like;
#X msg 31 177 read -resize \$1 reanimator-sound1;
#X obj 227 268 tabplay~ reanimator-sound1;
#X text 63 132 open the driver sound;
#X connect 2 0 11 0;
#X connect 4 0 2 0;
#X connect 6 0 12 0;
#X connect 7 0 6 0;
#X connect 8 0 7 1;
#X connect 11 0 1 0;
#X connect 12 0 5 0;
#X connect 12 1 7 0;
#X restore 96 30 pd driver-sound;
#N canvas 349 43 518 368 texture-sound 0;
#X text 13 300 try a vocal sound or other sound with strong formant
structure;
#X obj 31 194 soundfiler;
#X obj 31 160 openpanel;
#N canvas 0 22 450 300 graph1 0;
#X array reanimator-sound2 1.25363e+06 float 2;
#X coords 0 1 1.25363e+06 -1 200 140 1;
#X restore 237 13 graph;
#X msg 31 131 bang;
#X obj 227 284 outlet~;
#X msg 227 244 bang;
#X obj 348 228 spigot;
#X obj 385 205 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X text 133 244 then play it;
#X text 304 190 loop if you like;
#X msg 31 177 read -resize \$1 reanimator-sound2;
#X obj 227 268 tabplay~ reanimator-sound2;
#X text 63 132 open the texture sound;
#X connect 2 0 11 0;
#X connect 4 0 2 0;
#X connect 6 0 12 0;
#X connect 7 0 6 0;
#X connect 8 0 7 1;
#X connect 11 0 1 0;
#X connect 12 0 5 0;
#X connect 12 1 7 0;
#X restore 160 49 pd texture-sound;
#X msg 499 356 \; pd dsp \$1;
#X obj 499 337 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X obj 96 269 dac~;
#X obj 160 150 snapshot~;
#X floatatom 160 172 5 0 0 0 - - -;
#X obj 324 167 snapshot~;
#X floatatom 324 189 5 0 0 0 - - -;
#X obj 324 134 metro 50;
#X obj 324 113 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X text 324 201 analysis sync;
#X text 158 184 matched frame;
#N canvas 913 441 569 496 messages 0;
#X obj 128 229 outlet;
#X msg 24 181 analyze;
#X msg 128 117 topbin \$1;
#X floatatom 128 81 5 0 0 0 - - -;
#X msg 206 117 inverse \$1;
#X obj 206 84 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X text 189 163 texture sound must be playing during analysis;
#X text 194 183 otherwise: crash!!!;
#X text 223 84 matches with *least* good frame;
#X text 128 39 top bin to match: lower means less CPU;
#X text 128 54 different (perhaps worse) matching;
#X obj 36 39 loadbang;
#X msg 36 65 20;
#X obj 231 213 fftease-system;
#N canvas 0 22 454 304 more-info 0;
#X text 18 60 How does this work? First load up a texture sound and
play it into the right inlet of reanimator~. While the texture sound
is playing \, send an "analyze" message and the texture sound will
be captured (5 seconds worth in this example patch). Once you see the
message "data acquisition completed" in the Pd window \, play any sound
into the left inlet and reanimator~ will output the best match from
the texture sound. If the input and output are the same sound \, the
match should be identical. Otherwise the result is "texture mapping"
the texture sound onto the driver sound. The key to effective use of
reanimator~ is in smart selections of driver and texture sounds.;
#X restore 382 225 pd more-info;
#X text 5 163 get texture sample;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 11 0 12 0;
#X connect 12 0 3 0;
#X connect 13 0 0 0;
#X restore 255 71 pd messages;
#X text 51 287 reanimator performs spectral reanimation \, AKA audio
texture mapping. An online paper descripts this process in greater
detail. Essentially reanimator~ captures input from its rightmost inlet
and uses this as material to reconstitute sound coming in on the left.
Since this is done by searching all stored spectra \, there are limits
to how much sound may be recorded before overloading your computer's
CPU. Start with a small amount of sound \, say 5 seconds \, and gradually
increase until you find your practical limit. Once the texture sound
has been recorded \, it may be driven by unlimited amounts of material
in the leftmost inlet. Your driver should have a clear rhythmic profile.
A drum loop would be a good place to start.;
#X text 80 470 http://tinyurl.com/9324v;
#X text 57 450 more info below or google "spectral reanimation";
#X text 261 31 <- load sounds into both buffers;
#X obj 122 202 hsl 128 15 0 4 0 0 empty empty empty -2 -6 0 8 -176298
-1 -1 11100 1;
#X floatatom 119 225 5 0 0 0 - - -;
#X obj 96 246 *~ 1;
#X text 165 223 gain;
#X connect 0 0 21 0;
#X connect 0 1 6 0;
#X connect 0 2 8 0;
#X connect 1 0 0 0;
#X connect 2 0 0 1;
#X connect 4 0 3 0;
#X connect 6 0 7 0;
#X connect 8 0 9 0;
#X connect 10 0 8 0;
#X connect 10 0 6 0;
#X connect 11 0 10 0;
#X connect 14 0 0 2;
#X connect 19 0 20 0;
#X connect 20 0 21 1;
#X connect 21 0 5 0;
#X connect 21 0 5 1;