TEsound (Español)
Contents
Acerca de
TEsound es un administrador de sonido para el framework Love2D. TEsound pretende hacer más fácil usar sonidos y musica en tu juego.
Está bajo la licencia ZLIB. Si usas la biblioteca y tu juego acaba haciendo un montón de dinero, sus creadores educadamente pedirán que consideres enviarles una parte pequeñita de dicho dinero.
Descarga
El enlace original de Dropbox está muerto; lo pondré acá en el próspero caso vuelva. Hasta que lo haga, aquí está el enlace de GitHub.
Contacto
- Forum Thread
- Ensayia - Ensayia@gmail.com
- Taehl - SelfMadeSpirit@gmail.com
Instalación
Todo en el módulo está contenido en el espacio de nombre TEsound, así que no te preocupes de que haga un desastre con tus variables globales. La memoria y el manejo de canales es automático.
- Pon TEsound.lua en la carpeta de tu juego
- Al principio de main.lua añade la línea
require"TEsound"
- En love.update() añade la línea
TEsound.cleanup()
Preguntas Frecuentes
- P) ¿Como le hago para reproducir un sonido?
- R) Todo lo que tienes que poner es
TEsound.play(sound)
, dondesound
puede ser un SoundData o un string de la ruta al archivo de sonido (como"sounds/boom.ogg"
).
- P) Tengo tres sonidos de salto diferentes, ¿Cómo reproduzco uno al azar?
- R)
TEsound.play(list)
, dondelist
es una tabla como esta:{"jump1.ogg", "jump2.ogg", "jump3.ogg"}
.
- P) ¿Puedo hacer que reproduzca constantemente música aleatoria?
- R) ¡Claro!
TEsound.playLooping(list)
. Cuando una canción termina, una nueva de la lista empezará a reproducirse automáticamente.
- P) ¿Y ahora como paro la música? / ¿Que son las sound tags?
- R) La mejor manera es usar la característica de “tagging” (etiquetado) de TEsound. Para ponerlo simple, TEsound te deja añadir una o más etiquetas a cada sonido que se reproduzca y puedes llamar varias funciones en todos los sonidos con dicha etiqueta. Así que podrías hacer esto:
TEsound.playLooping("song1.ogg", "music")
TEsound.stop("music")
- Los sonidos pueden tener múltiples etiquetas si lo deseas (usando una lista:
TEsound.play(sound, {"something", "whatever", "lol"})
), y múltiples sonidos pueden compartir etiquetas (si haces una llamada a una función como estaTEsound.pitch("sfx", .5)
, todos los sonidos con la etiqueta “sfx” bajaran de tono inmediatamente). Las etiquetas pueden ser únicas también, en caso de que quieras trabajar con un sonido específico. - P) ¿Y si quiero cambiar el volumen/tono de todos los sonidos?
- R) Para eso es la etiqueta especial “all” (todos). No necesitas darle esta etiqueta a los sonidos, se les aplica automáticamente. Así, si quieres bajar el volumen de todo a la mitad solo necesitas poner
TEsound.volume("all",.5)
.
- P) Quiero que el jugador elija diferentes niveles de volumen para efectos de sonido, música, y voces. ¿Puede TEsound administrar eso?
- R) ¡Sip! Puedes establecer un multiplicador de volumen para cada etiqueta con
TEsound.volume(tag, volume)
. Los cambios de etiqueta-volumen se efectúan de inmediato (¡incluso en sonidos que están reproduciendose!). Por lo que podrías usarTEsound.volume("voice", .75)
, y cualquir sonido con la etiqueta “voice” (voz) se reproducirá a 0.75 de volumen. Esto se multiplica por el propio volumen del sonido y por el volumen establecido para la etiqueta “all”. O sea, si ponesTEsound.play("splat.ogg", "sfx", .5)
, y estableciste las etiquetas “sfx” y “all” a 0.6 y 1 de volumen, respectivamente, entonces el sonido se reproducirá a 0.3 de volumen.
- P) ¿Como pronuncio el nombre del módulo? ¿Ti i saund?
- R) Sirve, pero, personalmente, yo digo “Te saund” ;)
Funciones
Funciones de Reproducción
TEsound.play
TEsound.play(sound, tags, volume, pitch, func)
Reproduce un sonido. Devuelve el número del canal en que se reproduce el sonido o nil y un mensaje de error.
table sound
- Puede se un SoundData o una string de la ruta al archivo de sonido (ejemplo: "sounds/jump.ogg"), o una lista de estos.Si se usa una lista se reproducirá un sonido aleatorio de esa lista.
table tags ({})
- Una o más etiquetas que pueden ser usadas para identificar un sonido (Ejemplo, único: "music". Ejemplo, múltiple: {"sfx", "gun", "player"}). Múltiples sonidos pueden compartir etiquetas o las etiquetas pueden ser únicas.Si se omite no se asignan etiquetas. Pasar una string es más corto que pasar una tabla con un solo elemento.
number volume (1)
- Un numero entre 0 y 1 que especifica que tan fuerte es un sonido. Si el sonido tiene una etiqueta con un volumen que le ha sido especificado, se le multiplicará estw número (o sea, si usas la etiqueta “sfx” y un volumen de 0.5 y “sfx” tiene el volumen en 0.6, entonces el sonido se reproducirá a 0.3 de volumen).
number pitch (1)
- Un número que especifica la velocidad/tono del sonido al reprodicirce. Si el sonido tiene una etiqueta cuyo tono se ha especificado se le multiplicará este número.
function func (no callback)
- Una función que será llamada cuando el sonido termine de reproducir (se le pasa un parametro: una lista con el volumen y tono de los sonidos). Si se omite, no se usará ninguna función.
TEsound.playLooping
TEsound.playLooping(sound, tags, n, volume, pitch)
Reproduce un sonido que se repetirá n veces. Si n no se pasa, se repetirá hasta ser detenido manualmente con TEsound.stop. Devuelve el número del canal en que se reproduce el sonido o nil y un mensaje de error.
table sound
- Ver TEsound.play. si se usa una lista, en cada repetición se elegirá al azar un elemento de la lista. Excelente para música de fondo aleatoria.
table tags
- Ver TEsound.play
number n
- El número de veces que se repetirá el sonido. Si se omite el sonido se repetira para siempre.
number volume
- Ver TEsound.play
number pitch
- Ver TEsound.play
Funciones Para Modificar Sonido
TEsound.volume
TEsound.volume(channel, volume)
Establece el volumen del canal o etiqueta y sus repeticiones (si las hay).
number channel
- Determina cuál canal será afectado. Ya que los canales de audio no son estáticos generalmente se recomienda usar el método para etiquetas (ver más abajo).
number volume (sin cambios)
- Ver TEsound.play. Si se omite el volumen el sonido no cambiará (inútil en la mayoría de los casos).
TEsound.volume
TEsound.volume(tag, volume)
Establece el volumen del canal o etiqueta y sus repeticiones (si las hay).
string tag
- Determina cuál canal será afectado. Todos los canales reproduciendo un sonido con la etiqueta pasada serán afectados. Ya que los canales de audio no son estáticos generalmente se recomienda usar el método para etiquetas.
number volume (sin cambios)
- See TEsound.play. Si se omite el volumen el sonido no cambiará (inútil en la mayoría de los casos).
TEsound.pitch
TEsound.pitch(channel, pitch)
Establece el tono del canal o etiqueta y sus repeticiones (si las hay).
number channel
- Ver TEsound.volume
number pitch (sin cambios)
- Ver TEsound.play. Si se omite el tono el sonido no cambiará.
TEsound.pitch
TEsound.pitch(tag, pitch)
Establece el tono del canal o etiqueta y sus repeticiones (si las hay).
string tag
- Ver TEsound.volume
number pitch (sin cambios)
- See TEsound.play. Si se omite el tono el sonido no cambiará.
TEsound.pause
TEsound.pause(channel)
Pausa un canal o etiqueta. Usa TEsound.resume para reanudar.
number channel
- Ver TEsound.volume
TEsound.pause
TEsound.pause(tag)
Pausa un canal o etiqueta. Usa TEsound.resume para reanudar.
string tag
- Ver TEsound.volume
TEsound.resume
TEsound.resume(channel)
Reanuda un canal o etiqueta que esté pausado.
number channel
- Ver TEsound.volume
TEsound.resume
TEsound.resume(tag)
Reanuda un canal o etiqueta que esté pausado.
string tag
- Ver TEsound.volume
TEsound.stop
TEsound.stop(channel, finish)
Detiene un canal de sonido o etiqueta, ya sea inmediatamente o cuando finaliza y evita que se repita.
number channel
- Ver TEsound.volume
boolean finish (false)
- Si es true, el sonido podrá finalizar en vez de detenerse inmediatamente. Esto se usa principalmente para terminar la repetición del sonido.
TEsound.stop
TEsound.stop(tag, finish)
Detiene un canal de sonido o etiqueta, ya sea inmediatamente o cuando finaliza y evita que se repita.
string tag
- See TEsound.volume
{{param|boolean|finish (false)|Si es true, el sonido podrá finalizar en vez de detenerse inmediatamente. Esto se usa principalmente para terminar la repetición del sonido.}
Funciones de Utilidad
TEsound.cleanup
TEsound.cleanup()
Libera memoria al borrar sonidos finalizados. Es altamente recomendable que llames a esta función en love.update(). Si no se llama, la memoria y los canales no se liberarán y los sonidos no se repetirán.
TEsound.volume
TEsound.volume(tag, volume)
Cambia el nivel de volumen para una etiqueta específica. Los cambios en el volumen se efectúan inmediatamente y duran hasta que se cambie otra vez. Esto se recomienda para cambiar categorías de sonido enteras, así puedes ajustar independientemente el volumen de todos los efectos de sonido, música, etc. (pero no olvides etiquetar tus sonidos adecuadamente). Si un sonido tiene múltiples etiquetas, con sus respectivos volumenes, el primero (en el orden de la lista de etiquetas) será utilizado.
string tag
- La etiqueta a la que se establece el volumen. Hay una etiqueta especial llamada “all” (todos) con el que se multiplicará el volumen de todos los sonidos (junto con etiquetas regulares, si están presentes). Úsalo como control de volumen maestro. No hace falta asignarle a los sonidos la etiqueta “all” para que esto suceda.
number volume (optional)
- Ver TEsound.play. Si se omite la etiqueta ya no afectará el volumen de los sonidos correspondientes.
TEsound.tagPitch
TEsound.tagPitch(tag, volume)
Cambia el tono de una etiqueta específica. Los cambios se efectúan inmediatamente y duran hasta que se cambie otra vez. Esto se recomienda para cambiar categorías de sonido enteras. Si un sonido tiene múltiples etiquetas, con sus respectivos volumenes, el primero (en el orden de la lista de etiquetas) será utilizado.
string tag
- See TEsound.volume
number pitch (optional)
- Ver TEsound.play. Si se omite la etiqueta ya no afectará el volumen de los sonidos correspondientes.
Funciones Internas
TEsound.findTag
TEsound.findTag(tag)
Devuelve una lista de todos los canales de sonido con una etiqueta dada.
string tag
- Los canales de todos los sonidos con esta etiqueta serán devueltos.
TEsound.findVolume
TEsound.findVolume(tag)
Devuelve el nivel de volumen para una etiqueta o etiquetas específicas o 1 si el volumen de la(s) etiqueta(s) no se ha establecido. Si se pasa una lista de etiquetas se devolverá el nivel de volumen de la primera etiqueta configurada.
string tag
- Elige la etiqueta para revisarle el volumen. Si se pasa una tabla se revisará solo el primer elemento.
TEsound.findPitch
TEsound.findPitch(tag)
Devuelve la tonalidad para una etiqueta o etiquetas específicas o 1 si el tono de la(s) etiqueta(s) no se ha establecido.
string tag
- Ver TEsound.findVolume
Otros idiomas
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info