# Spectrum data to frequency Unity

**URL:** <https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681>\
**Category:** Unity\
**Created:** [May 15, 2019, 12:04pm UTC](https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681 "2019-05-15T12:04:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![amnesiaaa](https://avatars.discourse-cdn.com/v4/letter/a/ad7895/32.png) [@amnesiaaa](https://qa.fmod.com/u/amnesiaaa)\
**Post date:** [May 15, 2019, 12:04pm UTC](https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681/1 "2019-05-15T12:04:02Z")

</div>

Hey,  
I would like to determine the frequencies by the spectrum. Unfortunately I always get wrong values ​​when I compare it with

```
fft.getParameterFloat((int)DSP_FFT.DOMINANT_FREQ, out dominantFreq);

```

I read this contribution to me.  
[https://qa.fmod.com/t/calculate-the-frequency-with-spectrum-data/14042/3](https://qa.fmod.com/t/calculate-the-frequency-with-spectrum-data/14042/3)  
unfortunately I’m still doing something wrong and I can not get it  
This is my Code

```
        float nyquistRate = (44100 / 2);
        float numEntries = (FftWindowSize / 2);
        float hzPerEntry = (nyquistRate / numEntries);
        float entrypower = 0;
        float biggest = 0;
        frequency = new float[(int)numEntries];
        for(int i = 0; i < numEntries; i++)
        {
            entrypower = spectrumData[0][i] * hzPerEntry;
            if (entrypower > biggest)
                biggest = entrypower;
        }
```

---

<div class="post-metadata">

**Author:** ![cameron-fmod](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/cameron-fmod/32/261_2.png) [@cameron-fmod](https://qa.fmod.com/u/cameron-fmod)\
**Post date:** [May 20, 2019, 1:42am UTC](https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681/2 "2019-05-20T01:42:11Z")

</div>

How are the values wrong?  
By stepping through the code, are you see expected values in the other variables?

---

<div class="post-metadata">

**Author:** ![amnesiaaa](https://avatars.discourse-cdn.com/v4/letter/a/ad7895/32.png) [@amnesiaaa](https://qa.fmod.com/u/amnesiaaa)\
**Post date:** [May 21, 2019, 7:32am UTC](https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681/3 "2019-05-21T07:32:35Z")

</div>

I want to calculate the frequency from spectrumData. i compare my value “biggest” with `fft.getParameterFloat((int)DSP_FFT.DOMINANT_FREQ, out dominantFreq);`  
but the value are wrong. As example, the value in “dominantFreq” is 724.3906 and the value in “biggest” is 10.45431.  
What im doing wrong ☹  
pls help!! 😮

---

<div class="post-metadata">

**Author:** ![brett](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/brett/32/261_2.png) [@brett](https://qa.fmod.com/u/brett)\
**Post date:** [May 22, 2019, 3:36am UTC](https://qa.fmod.com/t/spectrum-data-to-frequency-unity/14681/4 "2019-05-22T03:36:45Z")

</div>

just picking one value out of a noisy spectrum is not a good way to find the dominant frequency.  
FMOD finds the value by lookign at the most significant values not just 1 value.

To find the value here is the code

```
    float average = 0.0f;
    float power = 0.0f;

    for (int i = 0; i < nyquist-1; ++i)
    {
        float hz = i * (rate * 0.5f) / (nyquist-1);

        if (spectrum[i] > 0.0001f) // aritrary cutoff to filter out noise
        {
            average += spectrum[i] * hz;
            power += spectrum[i];
        }
    }

    if (power > 0.001f)
    {
        *dominant = average / power;
    }
    else
    {
        *dominant = 0;
    }
```
