TEsound (Español)

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.

Directo de Dropbox

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.

  1. Pon TEsound.lua en la carpeta de tu juego
  2. Al principio de main.lua añade la línea require"TEsound"
  3. 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), donde sound 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), donde list 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 esta TEsound.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 usar TEsound.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 pones TEsound.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