GetSoundFFTData: Difference between revisions
No edit summary |
No edit summary |
||
Line 17: | Line 17: | ||
===Required Arguments=== | ===Required Arguments=== | ||
*'''sound:''' A sound element that is created using [[playSound]] or [[playSound3D]]. Streams are also supported | *'''sound:''' A sound element that is created using [[playSound]] or [[playSound3D]]. Streams are also supported | ||
*'''iSamples:''' Allowed samples are 256, 512, 1024, 2048, 4096, 8192 and 16384 | *'''iSamples:''' Allowed samples are 256, 512, 1024, 2048, 4096, 8192 and 16384. | ||
===Optional Arguments=== | ===Optional Arguments=== | ||
*'''iBands:''' Post processing option allows you to split the samples into the desired amount of bands or bars so if you only need 5 bars this saves a lot of cpu power compared to trying to do it in Lua | *'''iBands:''' Post processing option allows you to split the samples into the desired amount of bands or bars so if you only need 5 bars this saves a lot of cpu power compared to trying to do it in Lua. | ||
===Returns=== | ===Returns=== | ||
Returns a table of floats representing the current audio frame. | Returns a table of '''iSamples'''/2 (or '''iBands'''-1 if '''iBands''' is used) floats representing the current audio frame. | ||
Returns false if the sound is not playing yet or hasn't buffered in the | Returns false if the sound is not playing yet or hasn't buffered in the | ||
case of streams. | case of streams. | ||
==Example== | ==Example== | ||
This code creates vertical spectrum analyzer with thin lines in center of screen from top to bottom. | This code creates vertical spectrum analyzer with thin lines in center of screen from top to bottom. [http://imageshack.com/a/img543/79/i4oz.png] Key '''9''' - start, key '''0''' - stop. | ||
<section name="Client" class="client" show="true"> | <section name="Client" class="client" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
Line 70: | Line 70: | ||
==See Also== | ==See Also== | ||
{{Client_audio_functions}} | {{Client_audio_functions}} | ||
[[AR:getSoundFFTData]] | [[AR:getSoundFFTData]] |
Revision as of 18:44, 14 December 2013
This function gets the fast fourier transform data for an audio stream which is a table of floats representing the current audio frame. This allows things like visualisations.
a fast fourier transform generates a table of all the frequencies of the current audio frame which starts at the bass end of the spectrum to mids to highs in that order
Should you have any problems there is an example resource located on the resource svn here: Visualiser
just type "startmusic mystreamurl" in your console and it will play on the cinema billboard near A51 If the element is a player, this function will use the players voice.
Syntax
table getSoundFFTData ( element sound, int iSamples [, int iBands = 0 ] )
Required Arguments
- sound: A sound element that is created using playSound or playSound3D. Streams are also supported
- iSamples: Allowed samples are 256, 512, 1024, 2048, 4096, 8192 and 16384.
Optional Arguments
- iBands: Post processing option allows you to split the samples into the desired amount of bands or bars so if you only need 5 bars this saves a lot of cpu power compared to trying to do it in Lua.
Returns
Returns a table of iSamples/2 (or iBands-1 if iBands is used) floats representing the current audio frame. Returns false if the sound is not playing yet or hasn't buffered in the case of streams.
Example
This code creates vertical spectrum analyzer with thin lines in center of screen from top to bottom. [1] Key 9 - start, key 0 - stop.
local handl = nil local sx,_ = guiGetScreenSize() function clientRenderFunc() if(handl) then local bt = getSoundFFTData(handl,2048,257) for i=1,256 do bt[i] = math.sqrt(bt[i])*128 --scale it (sqrt to make low values more visible) dxDrawRectangle(sx/2-bt[i]/2,i-1,bt[i],1) end end end function musicStartFunc() if(not handl) then handl = playSound('btr.mp3') addEventHandler("onClientRender",root,clientRenderFunc) end end function musicStopFunc() if(handl) then stopSound(handl) handl = nil removeEventHandler("onClientRender",root,clientRenderFunc) end end bindKey("9","down",musicStartFunc) bindKey("0","down",musicStopFunc)
Changelog
Version | Description |
---|
1.3.2 | Added player element to use a players voice |
See Also
- getRadioChannel
- getRadioChannelName
- getSFXStatus
- getSoundBPM
- getSoundBufferLength
- getSoundEffectParameters
- getSoundEffects
- getSoundFFTData
- getSoundLength
- getSoundLevelData
- getSoundMaxDistance
- getSoundMetaTags
- getSoundMinDistance
- getSoundPan
- getSoundPosition
- getSoundProperties
- getSoundSpeed
- getSoundVolume
- getSoundWaveData
- isSoundLooped
- isSoundPanningEnabled
- isSoundPaused
- playSFX3D
- playSFX
- playSound3D
- playSound
- setRadioChannel
- setSoundEffectEnabled
- setSoundEffectParameter
- setSoundLooped
- setSoundMaxDistance
- setSoundMinDistance
- setSoundPan
- setSoundPanningEnabled
- setSoundPaused
- setSoundPosition
- setSoundProperties
- setSoundSpeed
- setSoundVolume
- stopSound
- Shared
- playSoundFrontEnd