Go Down

Topic: Frequency Domain Monitor (Read 187 times) previous topic - next topic

asturkoglu

Hi,

I've I2S MEMS Microphone breakout and Mkr1000.
By using ArduinoSound library, I'm able to get FFT representation of my audio output.
My purpose is demonstrate it in frequency domain monitor. I guess serial plotter is not available for this kind of tasks. It only show continuous data which is not approptiate for me. I checked a few projects usually they use led strips or OLED screens to get frequency visualizer, but I want to to it in my computer, by using modified serial plotter or etc.
If you help me, I will be glad.

DVDdoug

#1
Oct 17, 2018, 03:20 am Last Edit: Oct 17, 2018, 03:21 am by DVDdoug
Quote
but I want to to it in my computer,
In that case, you don't need an Arduino.  ;) I don't have the programming skills to do this (at least not without a lot of study) but your computer has a soundcard, and if it's a laptop it also has a microphone.   If you have a desktop computer you'll need a microphone, but that's all the hardware you'd need.

Your computer also has much more processing power than an Arduino.

There are spectrum analyzer applications, or Audacity can analyze the spectrum of a WAV file after you've recorded.   But, in most cases those are visual and that may not give you the "raw numbers" you're looking for.

MATLAB (and maybe some of the free MATLAB clones) can do FFT on WAV files.   I'm not sure if it can read the soundcard in real time.

Coding Badly


@asturkoglu, do not cross-post.  Other thread removed.


Grumpy_Mike

Quote
I guess serial plotter is not available for this kind of tasks. It only show continuous data which is not approptiate for me.
The serial plotter will show 250 samples before scrolling. So just limit your display to this many samples. You will have a pause between one display and the next as data is gathered and so long as the display is in chunks of 250 samples it will look like a static display as you want. You might have to pad out any short fall with zero values if you do not have enough.

Also set the baud rate to the fastest it will go. I used 250000 baud but I think it can go to 500000 baud these days.

asturkoglu

The serial plotter will show 250 samples before scrolling. So just limit your display to this many samples. You will have a pause between one display and the next as data is gathered and so long as the display is in chunks of 250 samples it will look like a static display as you want. You might have to pad out any short fall with zero values if you do not have enough.

Also set the baud rate to the fastest it will go. I used 250000 baud but I think it can go to 500000 baud these days.
Can you explain more about limiting the frame? As I know, serial plotter adds new values to the last column which is not okay for me.
I choose 110k baud rate.

In that case, you don't need an Arduino.  ;) I don't have the programming skills to do this (at least not without a lot of study) but your computer has a soundcard, and if it's a laptop it also has a microphone.   If you have a desktop computer you'll need a microphone, but that's all the hardware you'd need.

Your computer also has much more processing power than an Arduino.

There are spectrum analyzer applications, or Audacity can analyze the spectrum of a WAV file after you've recorded.   But, in most cases those are visual and that may not give you the "raw numbers" you're looking for.

MATLAB (and maybe some of the free MATLAB clones) can do FFT on WAV files.   I'm not sure if it can read the soundcard in real time.
I want to make an embedded system, so doing this by only using PC components is not okay. Later, I will show this data in web interface etc. So in my project I want to do this, by instead OLED screen, I want to use arduino interface or another.
https://www.youtube.com/watch?v=5RmQJtE61zE

Grumpy_Mike

Quote
Can you explain more about limiting the frame
Just print out a maximum of 250 samples, even if you have more. You need not start at the beginning of your data, you could just start from 250 from the end. Or indeed any other position.
You don't want to print the first bin anyway because that has data that will not change.

Quote
I choose 110k baud rate
Bad choice go as fast as you can.

Quote
I know, serial plotter adds new values to the last column which is not okay for me
No it adds them to the first column and shuffles the rest over to the right. It is what you want.

Go Up