convert infrasound into audible sound

blue wave's icon

to clarify more to you i intend to ( concentrate on the frequencies of 1:20 hz only and eliminate all the other frequencies above it / then convert those (1:20 hz) into audible sound ) for that i thought to use max to ( generate the data (infrasound) that captured by iepe accelerometer directly in real time and convert it into (audible sound). beside i noticed by the help of the support center that the software could do that but im not familiar enough with max for that i thought to discuss you this issue may be your expertise could i benefit from it by a drawing for the suitable objects and the right connection as a symbol to achieve this purpose . LOT OF THANKS , WAITING FOR YOUR REPLY

dnk777's icon

hard question.

playing it faster wouldn't work, while you seem to want the output to play in realtime.

I would use FFT for this, but you need to beware that it's exremely inaccurate for low frequencies, so you'll probably need to downsample the data used for analysis (don't need 44,1 sample rate if you want only 0-20Hz ... even 128x downsampling would be still enough for you) and count the FFT analysis using enough samples.... and then take the data and reproduce the sound from them into the audible range.
this way it would be real-time, but the delay/latency would be probably big, because filling reasonably big buffer for FFT in 128x downsampled samplerate will take long. you will have to look for a compromise between the latency and quality (amount of samples used for FFT)

k9's icon

if frequency division works for ultrasound on bat detectors, wouldn't frequency multiplication work for infrasound?

blue wave's icon

(dnk 777) as i understand from and correct me if i wrong that using the fft function will require reducing in the sample rate and increasing in thecount of the (fft sample ) to reach the convesion. beside a delay you refered to it in sound arriving from the real event could i clarify more from you what you value the delay will be . THANKS

blue wave's icon

(k-9) if you refering to a frequency multiplier as a device i think it could not help much because as i know it doesnt have a filtering system to use it for concetrating on those frequencies but if you refering to it as a function in the software in this case using it to multiply the frequencies up to the audible level will help enough. so hope i could clarify from you.THANKS

dnk777's icon

blue wave: first of all i have to say, that i never played with this in max in practice and i started studying the theory of DFT/FFT only recently, so take it all with a grain of salt... but,

yes, to get reasonable precision of FFT for 0-20 Hz audiosignal, you need to downsample the audiosignal a lot.
in 44100 Hz samplerate, even if you'd use 4096 samples buffersize, the FFT would only give you information about 0 Hz (DC offset), 5,383 Hz, 10,776 Hz, 16,150 Hz and 21,533 Hz.
shifting that into audible range would give you 4 sinewaves at best. quite useless.
the steps between frequencies on output of FFT are sample rate / buffersize / 2 ...

downsampling the audio 128x would give you 345 Hz sample rate, then using even only 1024 buffersize would give you 118 sinewaves (not much but enough) from 0-20Hz range, so you could shift those into audible range and do inverse fft in 44100 sample rate to take a listen.
but the latency would be 3 seconds (in 345 Hz sample rate it takes almost 3 seconds to fill 1024 buffer with samples)...

by the way, how are you getting the 0-20Hz signal into the computer? probably not using a soundcard

i'm not sure (don't know much about it yet), but maybe also a Frequency Shifter could work instead of that fft thing? (totally different thing than pitch shifter. http://www.cim.mcgill.ca/~clark/nordmodularbook/nm_spectrum_shift.html

Peter McCulloch's icon

There are several different ways of doing this. Here's two slightly weird approaches, one using wave shaping via Chebyshev polynomials (noisy!), and one using envelope following.

Max Patch
Copy patch and select New From Clipboard in Max.

It is theoretically possible to do this via FFT; if you keep track of the running phase, you can determine the frequency of a sound within the bin. I'm also not quite sure what you're wanting to do with it. Do you want an exactly transposed version? The other thing you should probably look into is a phase-locked loop. There's an implementation floating around on the forum. Fair bit of math to it, though.

The waveshaping is cascaded because I was lazy and didn't want to figure out higher order polynomials. You will definitely need to save first, then reopen as there are lots of loadbangs...

blue wave's icon

(dnk 777) i will take your notes in concideration and about transfering the data to the pc .im using for it an high sensetivity accelerometer connected to vibrometer have connection port to the pc so if you found in anytime anything you found it useful i will be happy to know it from you .THANKS

blue wave's icon

(pete mcCulloch) appreciate your help , hope i could consult you again in the near future.THANKS