quality transient analysis

Mar 12, 2006 at 12:34am

quality transient analysis

END GOAL————————————————-
A program which takes a soundfile.wav, and produces a soundfile.xml
in the same directory. the xml file would have tons of useful
metadata just waiting to be indexed and searched.

WHATS WRONG———————————————-
it seems my detecting of transients and pitches are wavering around
in terms of latency. (15-40 ms) I’m using bonk~ and analyzer~. but I
can’t measure the latency. Also, if my attack happens to be at time
zero bonk~ doesn’t see it.

I’m hoping to generate protools’ beat detective quality
information. maybe this project is over my head…. sob….

Can any know-it-alls advise me on generating quality transient maps?
(in or out of realtime) vector sizes? window shapes? magic objects?

-matt

this is an example of how I’m trying it now.

#P window setfont “Sans Serif” 18.;
#P window linecount 3;
#P comment 419 116 100 196626 3 check recorded transients;
#B frgb 255 25 25;
#P window linecount 2;
#P comment 107 37 100 196626 2 select a sound;
#B frgb 255 25 25;
#P window setfont “Sans Serif” 9.;
#P user number~ 263 160 302 175 9 3 3 2 0. 0. 0 0. 20 0. 0 0 0 221
221 221 222 222 222 0 0 0;
#P user ezdac~ 143 210 187 243 0;
#P window linecount 1;
#P comment 304 161 94 196617 milisecond counter;
#N vpatcher 20 74 620 474;
#P window setfont “Sans Serif” 9.;
#P newex 50 50 81 196617 prepend replace;
#P newex 50 75 98 196617 buffer~ analyzethis;
#P message 129 134 47 196617 reset , 0;
#P newex 172 315 27 196617 *~;
#P newex 129 226 81 196617 loadmess loop 0;
#P message 112 135 14 196617 1;
#P toggle 80 203 15 0;
#P newex 80 225 27 196617 sig~;
#P newex 75 270 110 196617 groove~ analyzethis 4;
#P newex 242 104 68 196617 prepend open;
#P newex 220 74 27 196617 t b l;
#P newex 230 127 79 196617 sfinfo~;
#P inlet 50 30 15 0;
#P outlet 172 337 15 0;
#P outlet 73 333 15 0;
#P connect 2 0 14 0;
#P connect 14 0 13 0;
#P connect 6 3 0 0;
#P connect 6 2 0 0;
#P connect 6 1 0 0;
#P connect 6 0 0 0;
#P connect 12 0 6 0;
#P connect 7 0 6 0;
#P connect 10 0 6 0;
#P connect 9 0 8 0;
#P connect 8 0 7 0;
#P connect 13 1 9 0;
#P connect 13 1 12 0;
#P connect 6 4 11 0;
#P connect 11 0 1 0;
#P connect 3 3 11 1;
#P connect 2 0 4 0;
#P connect 4 0 3 0;
#P connect 5 0 3 0;
#P connect 4 1 5 0;
#P pop;
#P newobj 210 159 52 196617 p playfile;
#P window setfont “Sans Serif” 18.;
#N coll tagstore;
#P newobj 292 113 121 196626 coll tagstore;
#P window setfont “Sans Serif” 9.;
#N vpatcher 10 59 610 459;
#P window setfont “Sans Serif” 9.;
#P newex 171 91 33 196617 r init;
#N counter;
#X flags 0 0;
#P newobj 160 151 66 196617 counter;
#N coll tagstore;
#P newobj 166 274 67 196617 coll tagstore;
#P newex 160 197 144 196617 sprintf store trans%ld %f %f;
#P newex 250 118 40 196617 t b b f;
#P newex 227 152 55 196617 snapshot~;
#P newex 252 92 48 196617 split 0 0;
#P newex 252 65 44 196617 zl nth 2;
#P newex 252 37 40 196617 bonk~;
#P inlet 252 17 15 0;
#P inlet 224 43 15 0;
#P comment 308 202 206 196617 store trans

#24843
Mar 12, 2006 at 2:29pm

#72412
Mar 12, 2006 at 4:50pm

wow this is so helpful and I am so silly for not seeing it. bonk~
uses FFT as well.

maybe what I’ll do is use the fft objects for quantity and
approximate positions of attacks, then focus on those areas and look
for attacks in the time domain.

Nonlinearity rocks!

I’ll post an example if I get it.
-matt

. . . . . . . . . . . .
http://www.EstateSound.com
http://ideasforstuff.blogspot.com
. . . . . . . . . . . .

#72413
Mar 12, 2006 at 7:01pm

If you’re doing off-line analysis, you could use a delay~ equal to the
FFT size (or possibly 2X to account for overlap?)

For quick and dirty approaches, you might try an envelope follower on a
highpass filter. (and looking at thresholds on that)

You also might get something out of zerox~ in combination with an
envelope follower. (multiply the output of the env follower by the
zerox~ sig?) That way it ignores the high values produced by zerox~
produced when nobody is playing.

Peter McCulloch

#72414

You must be logged in to reply to this topic.