GetSoundWaveData: Difference between revisions
Jump to navigation
Jump to search
("if ( waveData )" in for?) |
|||
(17 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{Client function}} | {{Client function}} | ||
This function gets the wave form data for an audio stream which is a table of floats representing the current audio frame as a wave. | This function gets the wave form data for an audio stream which is a table of floats representing the current audio frame as a wave. | ||
This allows things like visualisations. | This allows things like visualisations. | ||
{{ | {{New feature/item|3.0132|1.3.2|| | ||
If the element is a player, this function will use the players voice. | If the element is a player, this function will use the players voice. | ||
}} | }} | ||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua">table getSoundWaveData ( element sound, int iSamples )</syntaxhighlight> | <syntaxhighlight lang="lua">table getSoundWaveData ( element sound, int iSamples )</syntaxhighlight> | ||
{{OOP||[[sound]]:getWaveData}} | |||
===Required Arguments=== | ===Required Arguments=== | ||
*'''sound:''' | *'''sound:''' a [[sound]] [[element]] that is created using [[playSound]] or [[playSound3D]]. Streams are also supported | ||
*'''iSamples:''' | *'''iSamples:''' allowed samples are 256, 512, 1024, 2048, 4096, 8192 and 16384. | ||
===Returns=== | ===Returns=== | ||
Returns a table of floats representing the current audio frame waveform. | Returns a [[table]] of '''iSamples''' ''floats'' representing the current audio frame waveform. | ||
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 example creates a sound visualizer on the top left corner of the screen. | |||
<section name="Client" class="client" show="true"> | |||
<syntaxhighlight lang="lua"> | |||
soundHandler = playSound ( "sound.wav" ) | |||
function onSoundPlayRender ( ) | |||
if ( soundHandler ) then | |||
local waveData = getSoundWaveData ( soundHandler, 256 ) | |||
if ( waveData ) then | |||
for i=0,255 do | |||
dxDrawRectangle ( i, 128, 1, waveData[i] * 128) | |||
end | |||
end | |||
end | |||
end | |||
addEventHandler ( "onClientRender", getRootElement(), onSoundPlayRender ) | |||
</syntaxhighlight> | |||
</section> | |||
This example creates a sound viewer, but only with bars down. | |||
<section name="Client" class="client" show="true"> | |||
<syntaxhighlight lang="lua"> | |||
soundHandler = playSound ("audio.mp3") | |||
local samples = 256 | |||
function renderWave () | |||
if (isElement (soundHandler)) then | |||
local waveData = getSoundWaveData (soundHandler, samples) | |||
if (waveData) then -- Avoid NaN values. | |||
for i=0, samples-1 do | |||
dxDrawRectangle (i, 128, 1, math.abs (waveData[i]) * 128) | |||
end | |||
end | |||
end | |||
end | |||
addEventHandler ("onClientRender", root, renderWave) | |||
</syntaxhighlight> | |||
</section> | |||
This example creates a sound viewer, but only with bars up. | |||
<section name="Client" class="client" show="true"> | |||
<syntaxhighlight lang="lua"> | |||
soundHandler = playSound ("audio.mp3") | |||
local samples = 256 | |||
function renderWave () | |||
if (isElement (soundHandler)) then | |||
local waveData = getSoundWaveData (soundHandler, samples) | |||
if (waveData) then -- Avoid NaN values. | |||
for i=0, samples-1 do | |||
dxDrawRectangle (i, 128, 1, math.abs (waveData[i]) * -128) | |||
end | |||
end | |||
end | |||
end | |||
addEventHandler ("onClientRender", root, renderWave) | |||
</syntaxhighlight> | |||
</section> | |||
This example creates a sound viewer on the bottom right corner of the screen. | |||
<section name="Client" class="client" show="true"> | <section name="Client" class="client" show="true"> | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
-- | soundHandler = playSound ("audio.mp3") | ||
local x, y = guiGetScreenSize () | |||
local samples = 256 | |||
function renderWave () | |||
if (isElement (soundHandler)) then | |||
local waveData = getSoundWaveData (soundHandler, samples) | |||
if (waveData) then -- Avoid NaN values. | |||
for i=0, samples-1 do | |||
dxDrawRectangle ((x-samples)+i, y-128, 1, waveData[i] * 128) | |||
end | |||
end | |||
end | |||
end | |||
addEventHandler ("onClientRender", root, renderWave) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
Line 34: | Line 103: | ||
==See Also== | ==See Also== | ||
{{Client_audio_functions}} | {{Client_audio_functions}} | ||
[[ | |||
[[ | [[hu:getSoundWaveData]] | ||
[[ar:getSoundWaveData]] | |||
[[pt-br:getSoundWaveData]] |
Latest revision as of 06:09, 3 January 2023
This function gets the wave form data for an audio stream which is a table of floats representing the current audio frame as a wave. This allows things like visualisations.
If the element is a player, this function will use the players voice.
Syntax
table getSoundWaveData ( element sound, int iSamples )
OOP Syntax Help! I don't understand this!
- Method: sound:getWaveData(...)
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.
Returns
Returns a table of iSamples floats representing the current audio frame waveform. Returns false if the sound is not playing yet or hasn't buffered in the case of streams.
Example
This example creates a sound visualizer on the top left corner of the screen.
Click to collapse [-]
ClientsoundHandler = playSound ( "sound.wav" ) function onSoundPlayRender ( ) if ( soundHandler ) then local waveData = getSoundWaveData ( soundHandler, 256 ) if ( waveData ) then for i=0,255 do dxDrawRectangle ( i, 128, 1, waveData[i] * 128) end end end end addEventHandler ( "onClientRender", getRootElement(), onSoundPlayRender )
This example creates a sound viewer, but only with bars down.
Click to collapse [-]
ClientsoundHandler = playSound ("audio.mp3") local samples = 256 function renderWave () if (isElement (soundHandler)) then local waveData = getSoundWaveData (soundHandler, samples) if (waveData) then -- Avoid NaN values. for i=0, samples-1 do dxDrawRectangle (i, 128, 1, math.abs (waveData[i]) * 128) end end end end addEventHandler ("onClientRender", root, renderWave)
This example creates a sound viewer, but only with bars up.
Click to collapse [-]
ClientsoundHandler = playSound ("audio.mp3") local samples = 256 function renderWave () if (isElement (soundHandler)) then local waveData = getSoundWaveData (soundHandler, samples) if (waveData) then -- Avoid NaN values. for i=0, samples-1 do dxDrawRectangle (i, 128, 1, math.abs (waveData[i]) * -128) end end end end addEventHandler ("onClientRender", root, renderWave)
This example creates a sound viewer on the bottom right corner of the screen.
Click to collapse [-]
ClientsoundHandler = playSound ("audio.mp3") local x, y = guiGetScreenSize () local samples = 256 function renderWave () if (isElement (soundHandler)) then local waveData = getSoundWaveData (soundHandler, samples) if (waveData) then -- Avoid NaN values. for i=0, samples-1 do dxDrawRectangle ((x-samples)+i, y-128, 1, waveData[i] * 128) end end end end addEventHandler ("onClientRender", root, renderWave)
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