PT-BR/getSoundFFTData

From Multi Theft Auto: Wiki
Revision as of 20:07, 1 April 2023 by LordHenry (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Essa função obtém os dados de Transformada Rápida de Fourier de uma stream de áudio ao qual é uma tabela representando o quadro atual do áudio. Essa função permite a visualização do áudio.

O algorítmo de Transformada Rápida de Fourier gera uma tabela com todas as frequências do quadro atual do áudio começando pelos graves, depois médios e então agudos. Se você tiver algum problema verifique o exemplo localizado no repositório de resources do MTA: Visualizador de áudio.

Basta digitar "startmusic <url-da-stream>" no console e a visualização da música será reproduzida no outdoor do cinema proximo à Area 69. Se o elemento que executar esse comando for um jogador, então essa função usará seu microfone para criar a visualização da stream de áudio.

Sintaxe

table getSoundFFTData ( element audio, int amostras [, int barras = 0 ] )

Sintaxe POO(OOP) Não entendeu o que significa isso?

Método: audio:getFFTData(...)

Argumentos necessários

  • audio: um elemento de áudio criado usando playSound ou playSound3D. Streams também são suportadas.
  • amostras: amostras permitidos são: 256, 512, 1024, 2048, 4096, 8192 and 16384.

Argumentos opicionais

  • barras: uma opção de pós-processamento que te permite separar as amostras na quantidade de bandas ou barras desejadas. Se você precisa apenas de cinco barras, utilizar esse argumento economiza bastante poder de processamento se comparado à tentativa de fazer isso em Lua.

Retorno

Retorna uma tabela de amostras/2 (ou dividido por barras caso barras forem usadas) floats representando o quadro atual do áudio. Retorna false se o áudio ainda não está sendo reproduzido ou ainda não foi carregado no caso de streams.

Exemplo

Click to collapse [-]
Client
local audio = playSound ( "audio.wav" )

function onSoundPlayRender ( )
    if ( audio ) then
        local audioFFT = getSoundFFTData ( audio, 2048, 256 )
	if ( audioFFT ) then
            for i = 0, 255 do -- Os dados começam no índice 0
                dxDrawRectangle ( i, 0, 1, math.sqrt ( audioFFT[i] ) * 256 )
            end
        end
    end
end
addEventHandler ( "onClientRender", root, onSoundPlayRender )

Changelog

Version Description
1.3.2 Added player element to use a players voice

Veja também