AudioSource.GetSpectrumData

function GetSpectrumData (samples : float[], channel : int, window : FFTWindow) : void

Description

Returns a block of the currently playing source's spectrum data.

Number of values (numSamples) must be a power of 2. (ie 128/256/512 etc). Min = 64. Max = 8192. Use window to reduce leakage between frequency bins/bands. Note, the more complex window type, the better the quality, but reduced speed.

JavaScript
    function Update () {
var spectrum : float[] = audio.GetSpectrumData (1024, 0, FFTWindow.BlackmanHarris);
for (var i = 1; i < 1023; i++) {
Debug.DrawLine (new Vector3 (i - 1, spectrum[i] + 10, 0),
new Vector3 (i, spectrum[i + 1] + 10, 0), Color.red);
Debug.DrawLine (new Vector3 (i - 1, Mathf.Log(spectrum[i - 1]) + 10, 2),
new Vector3 (i, Mathf.Log(spectrum[i]) + 10, 2), Color.cyan);
Debug.DrawLine (new Vector3 (Mathf.Log(i - 1), spectrum[i - 1] - 10, 1),
new Vector3 (Mathf.Log(i), spectrum[i] - 10, 1), Color.green);
Debug.DrawLine (new Vector3 (Mathf.Log(i - 1), Mathf.Log(spectrum[i - 1]), 3),
new Vector3 (Mathf.Log(i), Mathf.Log(spectrum[i]), 3), Color.yellow);
}
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Update() {
float[] spectrum = audio.GetSpectrumData(1024, 0, FFTWindow.BlackmanHarris);
int i = 1;
while (i < 1023) {
Debug.DrawLine(new Vector3(i - 1, spectrum[i] + 10, 0), new Vector3(i, spectrum[i + 1] + 10, 0), Color.red);
Debug.DrawLine(new Vector3(i - 1, Mathf.Log(spectrum[i - 1]) + 10, 2), new Vector3(i, Mathf.Log(spectrum[i]) + 10, 2), Color.cyan);
Debug.DrawLine(new Vector3(Mathf.Log(i - 1), spectrum[i - 1] - 10, 1), new Vector3(Mathf.Log(i), spectrum[i] - 10, 1), Color.green);
Debug.DrawLine(new Vector3(Mathf.Log(i - 1), Mathf.Log(spectrum[i - 1]), 3), new Vector3(Mathf.Log(i), Mathf.Log(spectrum[i]), 3), Color.yellow);
i++;
}
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

def Update():
spectrum as (single) = audio.GetSpectrumData(1024, 0, FFTWindow.BlackmanHarris)
i as int = 1
while i < 1023:
Debug.DrawLine(Vector3((i - 1), (spectrum[i] + 10), 0), Vector3(i, (spectrum[(i + 1)] + 10), 0), Color.red)
Debug.DrawLine(Vector3((i - 1), (Mathf.Log(spectrum[(i - 1)]) + 10), 2), Vector3(i, (Mathf.Log(spectrum[i]) + 10), 2), Color.cyan)
Debug.DrawLine(Vector3(Mathf.Log((i - 1)), (spectrum[(i - 1)] - 10), 1), Vector3(Mathf.Log(i), (spectrum[i] - 10), 1), Color.green)
Debug.DrawLine(Vector3(Mathf.Log((i - 1)), Mathf.Log(spectrum[(i - 1)]), 3), Vector3(Mathf.Log(i), Mathf.Log(spectrum[i]), 3), Color.yellow)
i++