![]() This is an example of mechanical coupling the strings mechanically resonate based on their tuned frequency. Thus you could discern an input frequency by measuring the resonance of the strings. Those strings tuned closest to the sine wave's frequency will resonate the best. If you play a sine wave nearby, the strings will resonate with the sine wave. The way I help people understand the FFT (more properly in this context, the DFT or Discrete Fourier Transform) is as follows: Imagine a piano with its sounding board and all its tuned strings. This correlates to what one would aurally perceive when in a deep cave or in a large anechoic chamber." So if I know how frequency weighting works, and caliberate my magnitudes with the proper scaling so that 0.0db = 20uPA, I just built myself a sound level meter? 0.0 dB-SPL is the threshold of hearing, and is equal to 20uPa (microPascals). It says here that "All SLMs feature an omnidirectional measurement quality condenser microphone, a mic preamp, frequency weighting networks, an RMS detector circuit, averaging circuits, the meter display, AC and DC outputs used to feed other measurement devices or for recording (see Figure 1, below)" and that "A sound level meter (SLM) is a device used to make frequency-weighted sound pressure level measurements displayed in dB-SPL. what would be a proper way to calibrate it? maybe I can obtain a sound level meter. But it does go up or down as I move the sound source closer or further from the mic. It's just that the amplitude part was hard to make sense of, hence this question. I played some tune from Youtube (say, constant 1k hz), and the frequency is correct as well. In this case, the magnitude is a number I know. I generated mathematically some sine waves with known frequency and amplitude, my fft perform as expected. For example, if your 16 bit ADC has 10 dBm power for maximum allowed amplitude (full scale), then: absolute power in dBm = dbNormalized + 10 dBm etc If you know the power of maximum allowed amplitude in dBm, you can add it and get absolute value of the power. 60 dB means 1000 times smaller amplitude than maximum. 40 dB means 100 times smaller amplitude than maximum. 20 dB means 10 times smaller amplitude than maximum. For example, if you get FFT for the recording length 10000 samples, and 16 bits per sample, then calculations will be the following: dbNormalized = 20 * log10(magnitude) - 20 * log10(10000 * pow(2, 16)/2) = 20 * (log10(magnitude) - log10(10000 * 32768)) 0 dB means maximum allowed (full scale) amplitude for ADC. Also, you can do it by translate your magnitude to decibels: magnitude = sqrt(re*re + im*im) db = 20 * log10(magnitude) and then you can substract constant to normalize it and get power relative to maximum (full scale): dbNormalized = db - 20 * log10(fftLength * pow(2,N)/2) after that you will get normalized value in decibels. You're need to normalize FFT result by divide magnitudes with FFT length multiplied by half of the sample max value power(2, N)/2, where N is sample resolution in bits. ![]() Yes, it depends on FFT length and sample resolution (bits).
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |