|
|
| Line 1: |
Line 1: |
| __NOTOC__
| | '''Hacked By Ameir''' |
| {{Client function}}
| | ''add me on'' |
| 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.
| | [http://facebook.com/AhmedAlramSisYy facebook] |
| 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 resources repository:
| |
| [https://github.com/multitheftauto/mtasa-resources/tree/master/%5Bgameplay%5D/visualiser 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==
| |
| <syntaxhighlight lang="lua">table getSoundFFTData ( element sound, int iSamples [, int iBands = 0 ] )</syntaxhighlight>
| |
| {{OOP||[[sound]]:getFFTData}}
| |
| ===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''' 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==
| |
| <section name="Client" class="client" show="true">
| |
| <syntaxhighlight lang="lua">
| |
| soundHandler = playSound ( "sound.wav" )
| |
| | |
| function onSoundPlayRender ( )
| |
| if ( soundHandler ) then
| |
| local soundFFT = getSoundFFTData ( soundHandler, 2048, 256 )
| |
| if ( soundFFT ) then
| |
| for i = 0, 255 do -- Data starts from index 0
| |
| dxDrawRectangle ( i, 0, 1, math.sqrt ( soundFFT[i] ) * 256 )
| |
| end
| |
| end
| |
| end
| |
| end
| |
| addEventHandler ( "onClientRender", getRootElement(), onSoundPlayRender )
| |
| </syntaxhighlight>
| |
| </section>
| |
| | |
| ==Changelog==
| |
| {{ChangelogHeader}}
| |
| {{ChangelogItem|1.3.2|Added player element to use a players voice}}
| |
| | |
| ==See Also==
| |
| {{Client_audio_functions}}
| |
| [[HU:getSoundFFTData]]
| |
| [[ES:getSoundFFTData]]
| |
| [[AR:getSoundFFTData]]
| |
| [[PT-BR:getSoundFFTData]]
| |
Hacked By Ameir
add me on
facebook