thanks! it wasn't there...
On Sat, 2009-12-12 at 20:17 +0100, ypatios wrote: > #N canvas 167 -7 580 617 12; > #X text 42 4 sigmund~ - sinusoidal analysis and pitch tracking; > #N canvas 432 117 573 597 using-with-tables 0; > #X obj 29 368 print peak; > #N canvas 0 0 450 300 (subpatch) 0; > #X array insignal 1024 float 2; > #X coords 0 1 1023 -1 200 140 1; > #X restore 83 426 graph; > #X obj 314 513 phasor~; > #X obj 294 429 loadbang; > #X obj 314 461 440; > #X floatatom 313 488 5 0 0 0 - - -; > #X obj 305 544 tabwrite~ insignal; > #X obj 290 516 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 > -1 -1; > #X text 114 11 Using sigmund~ on arrays; > #X text 42 33 If invoked with the "-t" flag (as a creation argument) > \, sigmund~ analyzes waveforms stored in arrays. Instead of an > incoming > signal \, feed it "list" messages with the following arguments:; > #X text 37 118 table name (a symbol); > #X text 38 137 number of points; > #X obj 29 342 sigmund~ -t -npeak 10 -maxfreq 5000 peaks; > #X msg 29 316 list insignal 1024 0 44100 0; > #X text 37 158 index of first point; > #X text 39 179 sample rate; > #X text 38 200 debug flag (print debugging info if nonzero); > #X text 23 232 In this mode \, only the "env" \, "pitch" \, and > "peaks" > outputs are meaningful.; > #X text 31 294 click here to test:; > #X connect 2 0 6 0; > #X connect 3 0 4 0; > #X connect 4 0 5 0; > #X connect 5 0 2 0; > #X connect 5 0 7 0; > #X connect 7 0 6 0; > #X connect 12 0 0 0; > #X connect 13 0 12 0; > #X restore 330 553 pd using-with-tables; > #X obj 40 512 phasor~; > #X obj 40 425 loadbang; > #X floatatom 40 471 5 0 120 0 - - -; > #X floatatom 39 561 5 0 0 0 - - -; > #X floatatom 245 563 5 0 0 0 - - -; > #X obj 40 490 mtof; > #X obj 40 448 69; > #X text 38 579 pitch; > #X text 222 582 envelope; > #X text 13 28 Sigmund~ analyzes an incoming sound into sinusoidal > components > \, which may be reported individually or combined to form a pitch > estimate. > Possible outputs are specified as creation arguments:; > #X text 56 95 pitch - output pitch continuously; > #N canvas 518 74 588 728 setting-parameters 0; > #X msg 182 66 print; > #X floatatom 192 92 5 0 0 0 - - -; > #X msg 192 113 minpower \$1; > #X obj 182 139 sigmund~ -minpower 40; > #X text 39 14 You can set parameters either by creation arguments \, > or else using messages. The "print" message gives you the current > values > of all the parameters:; > #X text 28 169 npts: number of points used in an analysis. Must be > a power of two \, at least 128 The minimum frequency that can be > tracked > is about 2(sample_rate)/npts.; > #X text 26 219 hop: number of points between analyses. Must be a power > of two \, at least the DSP vector size (usually 64). This regulates > the number of analyses done per unit of time.; > #X text 28 271 npeak: maximum number of sinusoidal peaks to look for. > The computation time is quadratic in the number of peaks actually > found > (this number only sets an upper limit). Use it to balance CPU time > with quality of results.; > #X text 30 336 maxfreq: maximum frequency of sinusoidal peaks to look > for. This can be useful in situations where background noise creates > high-frequency \, spurious peaks..; > #X text 37 388 vibrato: maximum deviation from "pitch" to accept as > normal vibrato (affects "notes" output only). If the value is too > small. > vibratos will appear as trills. If too large \, very small melodic > intervals may not be reported as new notes.; > #X text 33 457 stabletime: time period to wait before reporting a note > (affects "notes" output only). The "pitch" must be present and must > not vary more than "vibrato" for this entire period to report a note. > If too large \, the "notes" will be unnecessarily delayed. If too > small > \, spurious notes get output.; > #X text 31 551 minpower: minimum measured RMS level to report a pitch > (affects "pitch" and "notes" output only). Signals quieter than this > will be assumed to be crosstalk and ignored.; > #X text 32 602 growth: minimum measured RMS growth to report a new > note (affects "notes" output only). The RMS level must rise by this > many dB (within a time period given by "stabletime") to report a > repetition > of a note at or near the previously output pitch.; > #X connect 0 0 3 0; > #X connect 1 0 2 0; > #X connect 2 0 3 0; > #X restore 330 531 pd setting-parameters; > #N canvas 67 29 641 815 sinusoid-tracking 0; > #X obj 124 267 sigmund~ -npeak 10 peaks; > #X obj 124 214 phasor~; > #X obj 124 144 loadbang; > #X floatatom 124 190 5 0 120 0 - - -; > #X obj 124 295 route 0 1 2 3 4 5 6 7 8 9; > #X obj 82 339 unpack 0 0 0 0; > #X floatatom 82 461 5 0 0 0 - - -; > #X floatatom 122 431 5 0 0 0 - - -; > #X floatatom 162 406 5 0 0 0 - - -; > #X obj 124 167 440; > #X floatatom 203 380 5 0 0 0 - - -; > #X obj 322 349 unpack 0 0 0 0; > #X floatatom 322 471 5 0 0 0 - - -; > #X floatatom 362 441 5 0 0 0 - - -; > #X floatatom 402 416 5 0 0 0 - - -; > #X floatatom 443 390 5 0 0 0 - - -; > #X text 385 475 frequency (Hz.); > #X text 419 442 peak amplitude (linear); > #X text 464 416 cosine component; > #X text 499 390 sine component; > #X text 79 505 loudest partial; > #X text 332 508 quietest partial; > #X text 36 4 You can ask for sinusoidal peaks in decreasing order of > amplitude or arranged into maximally continuous tracks for > resynthesis. > (Or you can ask for both.) If you ask for peaks \, out come lists of > five numbers \, one for each sinusoid at each analysis period. The > first is the index number of the sinusoid (so you can use "route" to > claw them apart). The other four are as shown:; > #X obj 204 611 osc~ 440; > #X obj 204 635 *~; > #X obj 205 689 unpack 0 0 0 0; > #X floatatom 205 782 5 0 0 0 - - -; > #X floatatom 245 760 5 0 0 0 - - -; > #X floatatom 285 737 5 0 0 0 - - -; > #X floatatom 326 713 5 0 0 0 - - -; > #X obj 246 638 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 > 1; > #X text 43 535 If you ask for "tracks" \, the output is four numbers: > index \, frequency \, and amplitude as before \, and finally a flag > which is one for a new track \, zero for a continuation \, minus one > for an empty track.; > #X obj 205 662 sigmund~ -npts 16384 -hop 8192 -npeak 1 tracks; > #X connect 0 0 4 0; > #X connect 1 0 0 0; > #X connect 2 0 9 0; > #X connect 3 0 1 0; > #X connect 4 0 5 0; > #X connect 4 9 11 0; > #X connect 5 0 6 0; > #X connect 5 1 7 0; > #X connect 5 2 8 0; > #X connect 5 3 10 0; > #X connect 9 0 3 0; > #X connect 11 0 12 0; > #X connect 11 1 13 0; > #X connect 11 2 14 0; > #X connect 11 3 15 0; > #X connect 23 0 24 0; > #X connect 24 0 32 0; > #X connect 25 0 26 0; > #X connect 25 1 27 0; > #X connect 25 2 28 0; > #X connect 25 3 29 0; > #X connect 30 0 24 1; > #X connect 32 0 25 0; > #X restore 330 508 pd sinusoid-tracking; > #X text 52 165 tracks - output sinusoidal peaks organized into tracks > ; > #X text 56 111 notes - output pitch at the beginning of notes; > #X text 339 485 more details:; > #X text 10 184 Parameters you may set (in creation arguments or > messages): > ; > #X text 60 207 npts - number of points in each analysis window (1024) > ; > #X text 60 225 hop - number of points between each analysis (512); > #X text 60 242 npeak - number of sinusoidal peaks (20); > #X text 61 279 vibrato - depth of vibrato to expect in 1/2-tones (1) > ; > #X text 60 298 stabletime - time (msec) to wait to report notes (50) > ; > #X obj 39 535 sigmund~ -hop 4096 pitch env; > #X text 62 316 minpower - minimum power (dB) to report a pitch (50) > ; > #X text 62 335 growth - growth (dB) to report a new note (7); > #X text 54 147 peaks - output all sinusoidal peaks in order of > amplitude > ; > #X text 11 356 The npts and hop parameters are in samples \, and are > powers of two. The example below specifies a huge hop of 4096 (to slow > the output down) and to output "pitch" and "env". (Those are the > default > outputs.); > #X text 61 260 maxfreq - maximum sinusoid frequency in Hz. (1000000) > ; > #X text 55 128 env - output amplitude continuously; > #X text 380 596 updated for Pd v0.41; > #X connect 2 0 24 0; > #X connect 3 0 8 0; > #X connect 4 0 7 0; > #X connect 7 0 2 0; > #X connect 8 0 4 0; > #X connect 24 0 5 0; > #X connect 24 1 6 0; > > _______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
