Parte: 0 — Fundamentos y prerrequisitos · Fuente: Teoría de audio digital y documentación de Audio de Godot ⏱️ Duración estimada: 90 min · Nivel: Fundamentos
El sonido da vida a un juego, pero también es una fuente frecuente de decisiones técnicas mal entendidas: qué frecuencia de muestreo usar, cuándo comprimir, cómo controlar el volumen sin que todo suene mal. Entender el audio digital te permite elegir formatos correctos para efectos y música y mezclarlos con buses en lugar de ajustar volúmenes a mano.
En esta clase verás el muestreo (sample rate 44.1/48 kHz), la profundidad de bits, el PCM, los formatos (WAV sin comprimir para SFX, OGG/MP3 para música), mono vs estéreo, los buses de audio y la mezcla, el volumen en dB, la latencia y el audio 2D posicional. Lo aplicarás en Godot importando un WAV y un OGG, configurando buses Master/Music/SFX y reproduciendo desde GDScript.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Muestreo (sample rate) | Determina qué frecuencias se pueden reproducir. |
| 2 | Profundidad de bits / PCM | Define el rango dinámico y la calidad. |
| 3 | WAV vs OGG/MP3 | Sin comprimir para SFX, comprimido para música. |
| 4 | Mono vs estéreo | Uso de canales y coste en memoria. |
| 5 | Buses de audio | Agrupar y mezclar sonidos por categoría. |
| 6 | Volumen en dB | Escala logarítmica del sonido. |
| 7 | Latencia | Retardo entre disparo y sonido. |
| 8 | Audio 2D posicional | El sonido varía según la posición en escena. |
AudioStreamPlayer2D.Usarás Godot 4 (https://godotengine.org/) con dos archivos de audio: un WAV corto para un efecto (SFX) y un OGG para música con bucle. Puedes conseguir sonidos libres en https://freesound.org/ o https://opengameart.org/. Para editar y convertir audio usa Audacity (https://www.audacityteam.org/), que exporta a WAV y OGG. La referencia es la documentación de audio de Godot (https://docs.godotengine.org/en/stable/tutorials/audio/index.html), en concreto los buses (https://docs.godotengine.org/en/stable/tutorials/audio/audio_buses.html) y la reproducción de streams (https://docs.godotengine.org/en/stable/classes/class_audiostreamplayer.html).
Copia los archivos al proyecto, por ejemplo res://audio/salto.wav y res://audio/tema.ogg. Selecciona tema.ogg en FileSystem, abre la pestaña Import y activa Loop para que la música se repita; pulsa Reimport. El WAV puede quedarse sin loop (un efecto no se repite). Godot decodifica el OGG en memoria y reproduce el WAV directamente.
Abre el panel Audio (pestaña inferior junto a Output/Debugger). Verás el bus Master. Pulsa Add Bus dos veces y renómbralos Music y SFX. Deja su salida (Send) hacia Master. Así, bajar el Master baja todo, y puedes controlar música y efectos por separado.
Añade dos nodos AudioStreamPlayer: uno para música y otro para SFX. Asigna sus streams y su bus, o hazlo por código:
extends Node
@onready var musica: AudioStreamPlayer = $Musica
@onready var sfx: AudioStreamPlayer = $Sfx
func _ready() -> void:
musica.stream = load("res://audio/tema.ogg")
musica.bus = "Music" # enruta la música al bus Music
musica.play()
sfx.stream = load("res://audio/salto.wav")
sfx.bus = "SFX" # enruta el efecto al bus SFX
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_accept"): # Enter/Espacio
sfx.play() # dispara el efecto
Ejecuta: la música suena en bucle y al pulsar Espacio se reproduce el efecto.
Controla el volumen de cada bus por su índice en el AudioServer. Recuerda que el volumen es logarítmico: -6 dB es aproximadamente la mitad de sonoridad percibida.
func bajar_musica() -> void:
var idx := AudioServer.get_bus_index("Music")
AudioServer.set_bus_volume_db(idx, -12.0) # baja la música 12 dB
func silenciar_sfx(silenciar: bool) -> void:
var idx := AudioServer.get_bus_index("SFX")
AudioServer.set_bus_mute(idx, silenciar) # silencia solo los efectos
Comprueba que bajar el bus Music no afecta al volumen de los efectos: esa es la ventaja de mezclar por buses en lugar de ajustar cada sonido.
-6 dB y describe el efecto en toda la mezcla.AudioStreamPlayer2D y mueve su nodo para oír el cambio de volumen/paneo posicional.Crea una escena con música en bucle enrutada al bus Music y al menos un efecto enrutado al bus SFX, más un control (por teclado) que baje o silencie solo el bus de música sin afectar los efectos. Los formatos deben ser coherentes: OGG para la música y WAV para el efecto. Criterio de aceptación: la música suena en bucle, el efecto se dispara al pulsar una tecla, y al bajar/silenciar el bus Music los efectos siguen sonando con normalidad.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| La música no se repite | No activaste Loop en el Import del OGG; márcalo y reimporta. |
Invalid bus name o silencio |
El nombre del bus no coincide (mayúsculas); usa el nombre exacto del panel Audio. |
| El efecto suena con retardo | Latencia por decodificar formato comprimido; usa WAV para SFX cortos. |
| Bajar Master no cambia nada | El bus del reproductor no envía a Master; revisa el enrutado Send. |
| Distorsión / clipping | Suma de volúmenes supera 0 dB; baja el nivel de los buses. |
| El audio posicional no cambia | Usaste AudioStreamPlayer (no posicional); usa AudioStreamPlayer2D. |
❓ ¿Por qué WAV para efectos y OGG para música? El WAV no necesita decodificarse, así que dispara efectos con latencia mínima; la música es larga y el OGG la comprime mucho ahorrando memoria y tamaño de build.
❓ ¿44.1 o 48 kHz? Ambas son válidas; 44.1 kHz es el estándar histórico y 48 kHz el habitual en vídeo. Lo importante es mantener coherencia y no sobredimensionar sin necesidad.
❓ ¿Por qué el volumen se mide en dB negativos? La escala en decibelios es logarítmica y 0 dB es el nivel de referencia (sin atenuación); los valores negativos reducen el volumen de forma perceptualmente natural.
❓ ¿Qué gano usando buses en vez de ajustar cada sonido? Controlas categorías completas (música, efectos, UI) con un solo mando, aplicas efectos por grupo y ofreces al jugador ajustes de volumen separados.
Clase 019 - Color, sprites, texturas y formatos de imagen
Clase 021 - Assets y pipeline de contenido: import, compresión y presupuestos