[PD] noise floor: median in audio signals, for peak extraction

Alexandre Torres Porres porres at gmail.com
Wed Dec 21 03:57:28 CET 2011


here's my patch by the way.

I can't attach files to the list, right? I'm sending the code in the body
of the message.

I guess one way would be to write an external that would give me back this
block of audio with the median of each section. I'd replace it in the
[avg~] object in the patch bellow. Cheers.

noise-floor_filter.pd
=========================

#N canvas 1374 303 359 446 12;
#X obj 52 128 readsf~;
#X obj 52 46 openpanel;
#X obj 52 73 symbol;
#X msg 52 101 open \$1 \, start;
#X obj 52 26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 142 288 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 70 286 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 86 347 +~;
#X obj 78 387 dac~;
#X obj 179 112 noise~;
#X floatatom 117 142 5 0 0 0 - - -;
#X obj 52 166 *~ 1;
#X text 187 178 floor level;
#X floatatom 196 262 5 0 0 0 - - -;
#X text 239 264 floor (average);
#X text 74 24 open sample;
#X obj 179 142 *~ 0.01;
#X text 60 264 dirty;
#X text 133 263 clean;
#N canvas 222 138 574 729 noise-floor_filter 0;
#X obj -38 635 *~;
#X obj -98 78 *~;
#X obj 3 503 *~;
#X obj -98 50 inlet~;
#X obj -38 504 *~;
#X obj -99 107 rfft~;
#X obj -38 534 rifft~;
#X obj -38 665 outlet~;
#X obj -263 221 block~ 1024 4;
#X obj -57 78 tabreceive~ \$0-hann;
#X obj -20 597 tabreceive~ \$0-hann;
#X text -42 104 real Fourier transform;
#X obj -151 638 *~;
#X obj -110 506 *~;
#X obj -151 507 *~;
#X obj -151 537 rifft~;
#X obj -151 665 outlet~;
#X obj -151 566 /~ 1536;
#X obj 1 194 expr~ ($v1*$v1+$v2*$v2);
#X obj 118 258 avg~;
#X obj 118 226 bang~;
#X obj -251 255 loadbang;
#X obj 236 51 inlet;
#X obj 165 286 outlet;
#X obj -38 564 /~ 1536;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-hann 1024 float 1;
#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
0.00685418 0.00634828 0.00587955;
#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
#X coords 0 1 1023 0 110 40 1;
#X restore -269 169 graph;
#X obj 1 318 expr~ if( $v1 <= $v2 * $f3 \, 1 \, 0) \; if( $v1 <= $v2
*$f3 \, 0 \, 1);
#X obj 118 285 sig~;
#X msg -251 286 \; pd dsp \$1;
#X text 11 360 dirty;
#X text 150 356 clean;
#X text -146 686 dirty;
#X text -33 687 clean;
#X connect 0 0 7 0;
#X connect 1 0 5 0;
#X connect 2 0 6 1;
#X connect 3 0 1 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 5 0 14 0;
#X connect 5 0 18 0;
#X connect 5 1 2 0;
#X connect 5 1 13 0;
#X connect 5 1 18 1;
#X connect 6 0 24 0;
#X connect 9 0 1 1;
#X connect 10 0 0 1;
#X connect 10 0 12 1;
#X connect 12 0 16 0;
#X connect 13 0 15 1;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 17 0 12 0;
#X connect 18 0 19 0;
#X connect 18 0 26 0;
#X connect 19 0 27 0;
#X connect 19 0 23 0;
#X connect 20 0 19 0;
#X connect 21 0 28 0;
#X connect 22 0 26 2;
#X connect 24 0 0 0;
#X connect 26 0 13 1;
#X connect 26 0 14 1;
#X connect 26 1 4 1;
#X connect 26 1 2 1;
#X connect 27 0 26 1;
#X restore 52 228 pd noise-floor_filter;
#X obj 52 312 *~;
#X obj 124 313 *~;
#X obj 196 201 nbx 5 14 1 100 0 1 empty empty empty 0 -8 0 10 -262144
-1 -1 1 256;
#X connect 0 0 11 0;
#X connect 0 1 2 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 1 0;
#X connect 5 0 21 1;
#X connect 6 0 20 1;
#X connect 7 0 8 0;
#X connect 7 0 8 1;
#X connect 9 0 16 0;
#X connect 10 0 11 1;
#X connect 11 0 19 0;
#X connect 16 0 19 0;
#X connect 19 0 20 0;
#X connect 19 1 21 0;
#X connect 19 2 13 0;
#X connect 20 0 7 0;
#X connect 21 0 7 1;
#X connect 22 0 19 1;

2011/12/20 Alexandre Torres Porres <porres at gmail.com>

> Hi there, this is a technique for calculating the noise floor of a
> spectrum, and extracting the peaks.
>
> It'd be used pretty much like I04.Noie Gate Miller's example, that has the
> "mask" table with a constant multiplier. We'd have instead this
> "noise-floor" block of audio, also multiplied by a constant.
>
> To get the noise floor, we take the magnitude (or power) spectrum and get
> the median of small bits of it, like every 32 samples. So the values of
> every 32 samples would be the median of that section...
>
> this is where I got this from, check page 4 and 5
> http://homepages.cae.wisc.edu/~sethares/software/SpectralTools.pdf
>
> this would be kinda like using the [median] or [median_n] objects, but
> over audio blocks and not number lists.
>
> Since there's the need of calculating this in and using the result back in
> the same block round into the audio chain, I can't put the spectrum into a
> table, and then calculate the median over bits of it.
>
> But then, how to do it? Should I be able to pull this out only if I write
> a "median~" or [noise_floor~] external?
>
> Or somehow there's another way to do this with some existing external, or
> a similar technique, or even some audio math trick using [fexpr~] or
> something?
>
> This has to do with the other post I did about a project that attempts to
> isolate notes into a chord in a spectrum, something like melodyne is does.
>
> thanks
> Alex
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20111221/3d123d82/attachment-0001.htm>


More information about the Pd-list mailing list