Logarithmic sonograph

…how on earth?

i found tonfims ‘3d music’ module very helpful, but was surprised to find that there wasn’t any logarithmic graphs around.

the attached jpeg shows what i have at the moment.
the middle sets the high and low limits of a band filter. works pretty well… this is useless, though, when all of the action is between 50hz and 500hz, which covers only a few millimetres on the graph.

please help… i thought it’d be quite easy.

linear sonograph.JPG (12.9 kB)

hi, some time ago i have done some days of research about that issue and unfortunately its not easy. there are several parameters which interact with each other:

  • most important is the window or buffer lenght, this parameter gives you the lower frequency bound but also the delay and computing speed. with a sampling rate of 44100Hz and a buffersize of 1024 the lowest freq you can detect is 44100/1024 = 43Hz, with a stereo signal it would be 86Hz.

  • EVERY transform into the frequency domain which is done with a FFT algorithm is linear. the speed of the FFT is based on the equidistant filter band distribution in the frequency domain. so every frequency sonograph done with the FFT algorithm cannot have more information than the FFT has. if they look logarithmic they are fake, they are just using some scaling and multiplication.

so what you can do in vvvv is increasing the buffer size to get better resolution at low frequencies, and after do some tricky spread resampling…

“tricky spread resampling” - Sounds tough.

I could handle only seeing down to 43hz, though.

I think i’ll give up. I can pretty much guess what frequencies I’m hearing, I was just thinking of users with less experienced ears.

Thanks tonfilm.

how about a logarithmic slider, then? that’d make life easier… can’t be that difficult, but I can’t seem to get it.

…how on earth?

i found tonfims ‘3d music’ module very helpful, but was surprised to find that there wasn’t any logarithmic graphs around.

the attached jpeg shows what i have at the moment.
the middle sets the high and low limits of a band filter. works pretty well… this is useless, though, when all of the action is between 50hz and 500hz, which covers only a few millimetres on the graph.

please help… i thought it’d be quite easy.