aboutsummaryrefslogtreecommitdiff
path: root/pd/extra/bonk~/bonk~-help.pd
blob: e4bbb82782a452bbce162db994c6cea9a1701346 (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
#N canvas 304 143 967 599 12;
#X obj 358 544 spigot;
#X msg 442 397 bang;
#X obj 428 508 bonk~;
#X msg 442 214 learn 1;
#X msg 442 274 learn 0;
#X msg 446 451 print;
#X obj 390 437 adc~;
#X msg 613 558 \; pd dsp 1;
#X obj 276 544 spigot;
#N canvas 366 126 604 404 synth 0;
#X obj 112 24 r bonk-cooked;
#X obj 112 49 unpack;
#X obj 112 99 * 12;
#X obj 112 124 div 7;
#X obj 112 74 + 1;
#X obj 112 174 mtof;
#X obj 112 224 osc~;
#X obj 112 249 cos~;
#X obj 112 149 + 47;
#X obj 209 247 line~;
#X obj 209 272 *~;
#X obj 209 297 lop~ 500;
#X obj 112 274 *~;
#X obj 103 361 dac~;
#X obj 253 165 dbtorms;
#X obj 253 115 * 0.5;
#X obj 253 140 + 50;
#X obj 211 189 f;
#X msg 173 159 bang;
#X obj 258 83 inlet;
#X obj 111 307 hip~ 5;
#X msg 34 24 0 60;
#X obj 112 199 sig~;
#X msg 209 222 \$1 \, 0 200;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 8 0;
#X connect 4 0 2 0;
#X connect 5 0 18 0;
#X connect 5 0 22 0;
#X connect 6 0 7 0;
#X connect 7 0 12 0;
#X connect 8 0 5 0;
#X connect 9 0 10 0;
#X connect 9 0 10 1;
#X connect 10 0 11 0;
#X connect 11 0 12 1;
#X connect 12 0 20 0;
#X connect 14 0 17 1;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 17 0 23 0;
#X connect 18 0 17 0;
#X connect 19 0 15 0;
#X connect 20 0 13 1;
#X connect 20 0 13 0;
#X connect 21 0 1 0;
#X connect 22 0 6 0;
#X connect 23 0 9 0;
#X restore 845 575 pd synth;
#X floatatom 845 552 0 0 0 0 - - -;
#X msg 845 522 0;
#X msg 442 244 learn 10;
#X msg 442 304 forget;
#X msg 442 334 write templates.txt;
#X msg 442 364 read templates.txt;
#X msg 876 522 90;
#X msg 442 81 thresh 6 50;
#X text 8 56 The Bonk object takes an audio signal input and looks
for "attacks" defined as sharp changes in the spectral envelope of
the incoming sound. Optionally \, and less reliably \, you can have
Bonk check the attack against a collection of stored templates to try
to guess which of two or more instruments was hit. Bonk is described
theoretically in the 1998 ICMC proceedings \, reprinted on http://man104nfs.ucsd.edu/~mpuckett.
;
#X text 601 524 click here;
#X text 602 537 to start DSP;
#X text 8 377 In this patch \, after starting DSP \, you can print
out the raw or cooked output using the two "spigots" or listen to a
synthesizer output by raising its volume.;
#X text 746 521 output volume;
#X text 760 539 (0-100);
#X msg 442 150 mask 4 0.7;
#X msg 442 184 debounce 0;
#X text 8 309 Bonk's analysis is carried out on a 256-point window
(6 msec at 44.1 kHz) and by default the analysis period is 128 samples.
The analysis period can be specified as Bonk's creation argument but
must be a multiple of 64;
#X text 532 185 Minimum time (msec) between attacks;
#X text 526 136 Describes how energy in each frequency band masks later
energy in the band. Here the masking is total for 4 analysis periods
and then drops by 0.7 each period.;
#X text 530 214 Forget all templates and start learning new ones. The
argument gives the number of times you will hit each instrument (10
recommended.) Turn on the output volume above for audible feedback
as you train Bonk. "Learn 0" exits learn mode.;
#X text 530 298 Forget the last template. In Learn mode \, use "forget"
to erase and record over a template.;
#X text 595 334 Write templates to a file in text-editable format.
;
#X text 596 364 Read templates from a file.;
#X text 514 450 Print out all settings and templates.;
#X msg 442 120 minvel 10;
#X text 514 392 Poll the current spectrum via "raw" outlet \, You can
set a very high threshold if you don't want attacks mixed in.;
#X msg 437 426 debug 0;
#X text 514 426 turn debugging on or off.;
#X obj 325 545 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 407 545 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 358 574 print cooked;
#X obj 276 574 print raw;
#X text 158 545 enable printout:;
#X text 530 121 Minimum "velocity" to output (quieter notes are ignored.)
;
#X obj 461 533 s bonk-cooked;
#X text 218 12 BONK~ - an attack detector for small percussion instruments
;
#X text 8 174 Bonk's two outputs are the raw spectrum of the attack
(provided as a list of 11 numbers giving the signal "loudness" in the
11 frequency bands used) \, and the "cooked" output which gives only
an instrument number (counting up from zero) and a "velocity". This
"velocity" is the sum of the square roots of the amplitudes of the
bands \, normalized so that 100 is an attack of amplitude of about
1 The instrument number is significant only if Bonk has a "template
set" in memory.;
#X text 531 47 Set low and high thresholds. Signal growth must exceed
the high one and then fall to the low one to make an attack. The unit
is the sum of the proportional growth in the 11 filter bands. Proportional
growth is essentially the logarithmic time derivative.;
#X text 238 27 (NOTE: this documentation does not yet describe new
features for Pd 0.42).;
#X msg 446 479 print 1;
#X text 514 481 print out filterbank settings;
#X connect 0 0 40 0;
#X connect 1 0 2 0;
#X connect 2 0 8 0;
#X connect 2 1 0 0;
#X connect 2 1 44 0;
#X connect 3 0 2 0;
#X connect 4 0 2 0;
#X connect 5 0 2 0;
#X connect 6 0 2 0;
#X connect 8 0 41 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 12 0 2 0;
#X connect 13 0 2 0;
#X connect 14 0 2 0;
#X connect 15 0 2 0;
#X connect 16 0 10 0;
#X connect 17 0 2 0;
#X connect 24 0 2 0;
#X connect 25 0 2 0;
#X connect 34 0 2 0;
#X connect 36 0 2 0;
#X connect 38 0 8 1;
#X connect 39 0 0 1;
#X connect 49 0 2 0;