ES/getSoundFFTData: Difference between revisions
DiegoxxDDD (talk | contribs) (Created page with "__NOTOC__ {{Client function}} Esta función obtiene flujos de audio de un sonido y los transforma a tabla de números decimales que representan la trama de audio actual. Esto pe...") |
mNo edit summary |
||
(19 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{Client function}} | {{Client function}} | ||
Esta función obtiene flujos de audio de un sonido y los transforma a tabla de números decimales que representan la trama de audio actual. Esto permite | Esta función obtiene flujos de audio de un sonido y los transforma a una tabla de números decimales que representan la trama de audio actual. Esto permite hacer cosas como visualizaciones. | ||
Genera una tabla de todas las frecuencias de la trama de audio actual, que se inicia en el extremo bajo del espectro de frecuencias, medias y altas en ese orden. | Genera una tabla de todas las frecuencias de la trama de audio actual, que se inicia en el extremo bajo del espectro de frecuencias, luego medias y altas en ese orden. | ||
En caso de tener algún problema existe un recurso que puede servir como ejemplo: [https://code.google.com/p/mtasa-resources/source/browse/#svn%2Ftrunk%2F%5Bgameplay%5D%2FVisualiser Visualiser] | En caso de tener algún problema existe un recurso que puede servir como ejemplo: [https://code.google.com/p/mtasa-resources/source/browse/#svn%2Ftrunk%2F%5Bgameplay%5D%2FVisualiser Visualiser] | ||
Line 9: | Line 9: | ||
Sólo escribe "startmusic mystreamurl" en la consola y lo reproducirá en la cartelera de cine cerca del Área 51 (drvin_screen). | Sólo escribe "startmusic mystreamurl" en la consola y lo reproducirá en la cartelera de cine cerca del Área 51 (drvin_screen). | ||
Si el elemento es un jugador, esta función utilizará la voz jugadores. | Si el elemento es un jugador, esta función utilizará la voz de los jugadores. | ||
== Sintaxis == | == Sintaxis == | ||
Line 16: | Line 16: | ||
=== Argumentos obligatorios === | === Argumentos obligatorios === | ||
*'''Sonido:''' Un sonido que se creó utilizando las funciones [[playSound]] o [[playSound3D]]. | *'''Sonido:''' Un sonido que se creó utilizando las funciones [[playSound]] o [[playSound3D]]. | ||
*'''Muestras:''' Las muestras que | *'''Muestras:''' Las muestras que utilizará la función para crear la tabla. Las muestras permitidas son 256, 512, 1024, 2048, 4096, 8192 y 16384. | ||
=== Argumentos opcionales === | === Argumentos opcionales === | ||
*'''Bandas:''' La cantidad de bandas o barras a las cuales las muestras | *'''Bandas:''' La cantidad de bandas o barras a las cuales las muestras se van a dividir. Si sólo se necesitan 5 barras, esto ahorra una gran cantidad de energía del CPU en comparación con tratar de hacerlo con 500 barras. | ||
=== Devoluciones === | === Devoluciones === | ||
Devuelve una tabla de '''Muestras'''/2 (o '''Bandas''' - 1 si son utilizadas) con números decimales representando la trama de audio actual. Devuelve ''false'' si el sonido no se está reproduciendo o no hay suficiente información en buffer en el caso de | Devuelve una tabla de '''Muestras'''/2 (o '''Bandas''' - 1 si son utilizadas) con números decimales representando la trama de audio actual. Devuelve ''false'' si el sonido no se está reproduciendo o no hay suficiente información en buffer en el caso de streams. | ||
== | == Ejemplos == | ||
<section name="Ejemplo 1" class="client" show="true"> | |||
<section name=" | Este ejemplo hace una visualización simple en el centro superior de la pantalla | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
local Musica = playSound ("Musica.mp3", true) -- Reproducir la música | |||
local PantallaX = guiGetScreenSize () -- Obtener la resolución X de la pantalla | |||
function Visualizacion () | |||
local TbFFT = getSoundFFTData (Musica, 4096, 20) -- Obtener la trama de audio en 4096 muestras y 20 barras | |||
for X, FFT in pairs (TbFFT) do -- Procesar todas las barras | |||
local FFT = math.sqrt (FFT/6)*128 -- Ajustar las barras | |||
local FFT = FFT <= 13 and FFT or 13 -- Limitar las barras a que no se estiren más de 13 pixeles | |||
dxDrawRectangle (PantallaX/2 - 97.5 + X*10, 0, 5, FFT, tocolor (0, 255, 0)) -- Dibujar el rectángulo que representa las barras y ajustarlas a la pantalla | |||
end | |||
end | end | ||
addEventHandler (" | addEventHandler ("onClientRender", root, Visualizacion) | ||
</syntaxhighlight> | |||
</section> | |||
local PantallaX = guiGetScreenSize () -- Obtener la | <section name="Ejemplo 2" class="client" show="true"> | ||
function Visualizacion () -- | Este otro ejemplo hace una visualización en forma de rueda en medio de la pantalla | ||
<syntaxhighlight lang="lua"> | |||
for X | local PantallaX, PantallaY = guiGetScreenSize () -- Obtener la resolución X y Y de la pantalla | ||
FFT | function Visualizacion () | ||
local Musica = getElementsByType ("sound") [1] -- Detectar si se reproduce un sonido | |||
if not Musica then return end -- Parar la función aquí si no se reproduce ningún sonido | |||
local TbFFT = getSoundFFTData (Musica, 4096, 90) -- Obtener la trama de audio en 4096 muestras y 90 barras | |||
for X, FFT in pairs (TbFFT) do -- Procesar todas las barras | |||
local FFT = math.sqrt (FFT/6)*128 -- Ajustar las barras | |||
local FFT = FFT <= 13 and FFT or 13 -- Limitar las barras | |||
local PX, PY = math.sin (math.rad (X*4))*100, math.cos (math.rad (X*4))*100 -- Calcular la posición X y Y | |||
local LX, LY = math.sin (math.rad (X*4))*(100 + FFT), math.cos (math.rad (X*4))*(100 + FFT) -- Calcular el lado hacia el que deben mirar | |||
dxDrawLine (PX + PantallaX/2, PY + PantallaY/2, LX + PantallaX/2, LY + PantallaY/2, tocolor (0, 255, 0), 4) -- Dibujar las líneas ajustadas a la pantalla | |||
end | end | ||
end | end | ||
addEventHandler ("onClientRender", root, Visualizacion) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
Line 53: | Line 66: | ||
== Vea también == | == Vea también == | ||
{{Client_audio_functions}} | {{Client_audio_functions}} | ||
[[EN:getSoundFFTData]] | [[EN:getSoundFFTData]] | ||
[[AR:getSoundFFTData]] | [[AR:getSoundFFTData]] | ||
[[PT-BR:getSoundFFTData]] |
Latest revision as of 19:13, 15 August 2021
Esta función obtiene flujos de audio de un sonido y los transforma a una tabla de números decimales que representan la trama de audio actual. Esto permite hacer cosas como visualizaciones.
Genera una tabla de todas las frecuencias de la trama de audio actual, que se inicia en el extremo bajo del espectro de frecuencias, luego medias y altas en ese orden.
En caso de tener algún problema existe un recurso que puede servir como ejemplo: Visualiser
Sólo escribe "startmusic mystreamurl" en la consola y lo reproducirá en la cartelera de cine cerca del Área 51 (drvin_screen).
Si el elemento es un jugador, esta función utilizará la voz de los jugadores.
Sintaxis
table getSoundFFTData (element Sonido, int Muestras [, int Bandas = 0])
Argumentos obligatorios
- Sonido: Un sonido que se creó utilizando las funciones playSound o playSound3D.
- Muestras: Las muestras que utilizará la función para crear la tabla. Las muestras permitidas son 256, 512, 1024, 2048, 4096, 8192 y 16384.
Argumentos opcionales
- Bandas: La cantidad de bandas o barras a las cuales las muestras se van a dividir. Si sólo se necesitan 5 barras, esto ahorra una gran cantidad de energía del CPU en comparación con tratar de hacerlo con 500 barras.
Devoluciones
Devuelve una tabla de Muestras/2 (o Bandas - 1 si son utilizadas) con números decimales representando la trama de audio actual. Devuelve false si el sonido no se está reproduciendo o no hay suficiente información en buffer en el caso de streams.
Ejemplos
Este ejemplo hace una visualización simple en el centro superior de la pantalla
local Musica = playSound ("Musica.mp3", true) -- Reproducir la música local PantallaX = guiGetScreenSize () -- Obtener la resolución X de la pantalla function Visualizacion () local TbFFT = getSoundFFTData (Musica, 4096, 20) -- Obtener la trama de audio en 4096 muestras y 20 barras for X, FFT in pairs (TbFFT) do -- Procesar todas las barras local FFT = math.sqrt (FFT/6)*128 -- Ajustar las barras local FFT = FFT <= 13 and FFT or 13 -- Limitar las barras a que no se estiren más de 13 pixeles dxDrawRectangle (PantallaX/2 - 97.5 + X*10, 0, 5, FFT, tocolor (0, 255, 0)) -- Dibujar el rectángulo que representa las barras y ajustarlas a la pantalla end end addEventHandler ("onClientRender", root, Visualizacion)
Este otro ejemplo hace una visualización en forma de rueda en medio de la pantalla
local PantallaX, PantallaY = guiGetScreenSize () -- Obtener la resolución X y Y de la pantalla function Visualizacion () local Musica = getElementsByType ("sound") [1] -- Detectar si se reproduce un sonido if not Musica then return end -- Parar la función aquí si no se reproduce ningún sonido local TbFFT = getSoundFFTData (Musica, 4096, 90) -- Obtener la trama de audio en 4096 muestras y 90 barras for X, FFT in pairs (TbFFT) do -- Procesar todas las barras local FFT = math.sqrt (FFT/6)*128 -- Ajustar las barras local FFT = FFT <= 13 and FFT or 13 -- Limitar las barras local PX, PY = math.sin (math.rad (X*4))*100, math.cos (math.rad (X*4))*100 -- Calcular la posición X y Y local LX, LY = math.sin (math.rad (X*4))*(100 + FFT), math.cos (math.rad (X*4))*(100 + FFT) -- Calcular el lado hacia el que deben mirar dxDrawLine (PX + PantallaX/2, PY + PantallaY/2, LX + PantallaX/2, LY + PantallaY/2, tocolor (0, 255, 0), 4) -- Dibujar las líneas ajustadas a la pantalla end end addEventHandler ("onClientRender", root, Visualizacion)
Cambios
Version | Description |
---|
1.3.2 | Agregado el elemento jugador para usar la voz de los jugadores |
Vea también
- 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