Legacy Documentation: Version 5.0
Language: English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Obsolete
GetSpectrumData returning a float[] is deprecated, use GetSpectrumData passing a pre allocated array instead.

AudioSource.GetSpectrumData

Switch to Manual
public function GetSpectrumData(numSamples: int, channel: int, window: FFTWindow): float[];

Parameters

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.


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

Parameters

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.

#pragma strict
var audio;
function Start() {
	audio = GetComponent.<AudioSource>();
}
function Update() {
	var spectrum = audio.GetSpectrumData(1024, 0, FFTWindow.BlackmanHarris);
	var 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++;
	}
}