Arduino FFT – Get your freq. on!

Sorry, no cool picture to go along with this. But, we think its pretty cool anyways. We just finished a really fast FFT library for the Arduino platform. This means you can do frequency analysis of your audio data in real time. It can take input from the ADC or from the CodecShield, and output up to 128 real frequency bins at a 7ms update rate. These bins can be set to linear or logarithmic output, and there is even an octave mode, where the frequency bins double in width as they go up the scale (perfect for making a graphic EQ). Check it out, and let us know how it works for you.

http://wiki.openmusiclabs.com/wiki/ArduinoFFT

This entry was posted in updates. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

10 Comments

  1. Posted August 25, 2012 at 9:59 pm | Permalink

    Awesome! Can’t wait to try this.

  2. john LeB
    Posted October 18, 2012 at 1:44 am | Permalink

    Can you explain/show how to do an inverse Transform?? I need to do some noise cancelling…

    Thanks!

  3. guest
    Posted October 19, 2012 at 3:24 am | Permalink

    we didn’t write an IFFT. but, the FHT that we recently finished is it’s own transform! so that would probably work better. we haven’t tested it out, but in theory it should work.

  4. Tom Schmitt
    Posted October 30, 2012 at 2:02 pm | Permalink

    The FFT code is very nice! It has been 20 years since I did any C and nice to see the standard has improved! I have a question regarding display of the data. Should I post it here or on the forum? I want to display the output on a LCD screen. I think I know how to go about it though I am worried regarding if there is enough memory (SRAM) to run a display. There should be but experience usually trumps conjecture.

  5. thatguyoverthere
    Posted November 13, 2012 at 1:32 pm | Permalink

    I tried this on a teensy 2.0 and it didn’t work, i thought this would be ok now that the leonardo uses the same chip? it won’t compile with an error: “r28 cannot be used in asm here” and the same for r29. Otherwise – fantastic! it works on a pro mini and while i’ve yet to test out all the parts the log and octave selections are most welcome. thanks for making this available!

  6. Diego
    Posted December 30, 2012 at 8:24 pm | Permalink

    Hi, thank you for your very nice work. I would like to know the sampling rate, the lowest frequency and the frequency resolution which is achievable.
    Thank you again

  7. Matt
    Posted April 7, 2013 at 8:17 pm | Permalink

    Hey,

    Awesome library! What is the frequency resolution of each bin and what range of frequencies do they map to? Are these adjustable?

  8. austin
    Posted July 24, 2013 at 12:18 am | Permalink

    Thank you so much again for posting this. This seems incredibly helpful.
    I am very new to arduino and I would greatly appreciate if someone could please drop some knowledge on me. I am running the adc code, while reading analog input at A0 from a photoresistor. I am attempting to determine the frequency at which a strobe light is blinking. I load the code and and it appears to upload fine, but i do not understand how to actually view the frequencies that are present. when I open the serial monitor it only displays characters. I would be very very greatful to anyone who can explain to me how to view the actual primary numeric frequencies (HZ) that are present, or even the single most dominant frequency would be extremely useful as well.
    This would really help me out, and I greatly appreciate all input.

  9. brian
    Posted July 24, 2013 at 12:27 am | Permalink

    Thank you so much again for posting this. This seems incredibly helpful.
    I am very new to arduino as well and I would greatly appreciate if someone could please drop some knowledge on me. I am running the adc code, while reading analog input at A0 from a photoresistor. I am attempting to determine the frequency at which a strobe light is blinking. I load the code and and it appears to upload fine, but i do not understand how to actually view the frequencies that are present. when I open the serial monitor it only displays characters. I would be very very greatful to anyone who can explain to me how to view the actual primary numeric frequencies (HZ) that are present, or even the single most dominant frequency would be extremely useful as well.
    This would really help me out, and I greatly appreciate all input.

  10. brian
    Posted July 24, 2013 at 12:29 am | Permalink

    oops i thought my first failed and accidentally double posted, feel free to respond to either email . thank you very much for any wisdom you can offer

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>