Lo que hace o rompe la inmersión en una novela visual no es el texto ni el arte — es el audio. Un BGM que se corta abruptamente o un efecto de sonido mal colocado te saca de la experiencia por completo.
Esta guía cubre cómo trabajar con BGM, efectos de sonido y voz en Ren'Py 8.5.2 desde cero.
Eligiendo formatos de audio
Ren'Py soporta varios formatos de audio, pero no todos son iguales.
| Formato | Bucle | Tamaño | Uso recomendado |
|---|---|---|---|
| OGG Vorbis (.ogg) | Sin cortes | Pequeño | BGM y SFX (el más probado) |
| Opus (.opus) | Sin cortes | Más pequeño | BGM y SFX (alta compresión) |
| FLAC (.flac) | Sin cortes | Grande | Archival (no ideal para distribución) |
| WAV (.wav) | — | Grande | Solo efectos de sonido cortos |
| MP3 (.mp3) | Salto en el bucle | Pequeño | No recomendado |
WAV no tiene compresión, así que los archivos son grandes. Usarlo para BGM infla tu distribución. Está bien para efectos cortos como sonidos de puertas o pasos.
Reproduciendo música, efectos de sonido y voz
Ren'Py tiene tres declaraciones de reproducción.
play music — Reproducir BGM
# Reproducir BGM (se repite por defecto)
play music "audio/main_theme.ogg"
# Crossfade a una nueva pista
play music "audio/battle.ogg" fadeout 1.0 fadein 0.5
# Reproducir una vez sin repetir
play music "audio/ending.ogg" noloop
# No reiniciar si la misma pista ya está sonando
play music "audio/main_theme.ogg" if_changed
play music usa el canal music. Se repite por defecto.
play sound — Reproducir efectos de sonido
# Reproducir un efecto de sonido (una vez)
play sound "audio/explosion.ogg"
# Ajustar volumen
play sound "audio/rain.ogg" volume 0.3
# Repetir un efecto de sonido (sonidos ambientales)
play sound "audio/rain.ogg" loop
play sound usa el canal sound. No se repite por defecto.
voice — Reproducir líneas de voz
voice "voice/001.ogg"
e "Hello."
voice "voice/002.ogg"
e "Nice weather today."
voice usa el canal voice. Se detiene automáticamente en la siguiente interacción (cuando el jugador avanza el texto). Para juegos con voces, escribe una línea voice antes de cada línea de diálogo.
Deteniendo el audio
# Detener BGM
stop music
# Desvanecer y detener
stop music fadeout 2.0
# Detener efectos de sonido
stop sound
# Detener voz
stop voice
Cómo funcionan los canales
Ren'Py gestiona el audio a través de canales. Cada canal reproduce, detiene y controla el volumen de forma independiente.
Canales por defecto
| Canal | Mezclador | Bucle | Propósito |
|---|---|---|---|
music | music | Sí | BGM |
sound | sfx | No | Efectos de sonido |
voice | voice | No | Actuación de voz (se detiene automáticamente en la siguiente interacción) |
audio | sfx | No | Múltiples sonidos simultáneos (sin queue/stop) |
Reproducir una nueva pista en el canal music detiene automáticamente la anterior. Para reproducir dos pistas simultáneamente, crea un canal personalizado.
El canal audio es especial — cada llamada a play audio crea un nuevo canal automáticamente, permitiendo que múltiples sonidos suenen a la vez. Sin embargo, queue audio y stop audio no son compatibles. Si necesitas reproducción simultánea con control de parada, usa un canal personalizado.
Creando canales personalizados
Para controlar sonidos ambientales (lluvia, viento) independientemente del BGM, registra un canal personalizado.
init python:
renpy.music.register_channel("ambient", "sfx", loop=True)
label start:
play music "audio/main_theme.ogg"
play ambient "audio/rain.ogg"
"The journey continues through the rain."
stop ambient fadeout 2.0
"The rain has stopped."
El segundo argumento de register_channel es el nombre del mezclador. Usar "sfx" significa que el control deslizante de volumen SFX en la pantalla de preferencias controla este canal.
Encolando la siguiente pista
# Reproducir la siguiente pista cuando termine la actual
play music "audio/intro.ogg" noloop
queue music "audio/main_theme.ogg"
queue inicia la siguiente pista cuando la que está sonando termina. Úsalo para transiciones de intro → tema principal.
Desvanecimientos y puntos de bucle
Fade In y Fade Out
# Desvanecer BGM actual en 2s, aparecer nuevo BGM en 1s
play music "audio/battle.ogg" fadeout 2.0 fadein 1.0
# Desvanecer y detener BGM en 3s
stop music fadeout 3.0
fadeout se aplica a la pista que está sonando actualmente. fadein se aplica a la nueva pista. Confundir esta distinción lleva a resultados inesperados.
Estableciendo puntos de bucle
Muchas pistas de BGM tienen una estructura "intro → sección de bucle". Establecer un punto de bucle reproduce la intro una vez y luego repite solo la sección de bucle.
# Repetir desde los 6.333 segundos (todo lo anterior es la intro, se reproduce una vez)
play music "<loop 6.333>audio/main_theme.ogg"
# Reproducir solo una sección específica
play music "<from 5.0 to 30.0>audio/long_track.ogg"
Control dinámico de volumen
# Cambiar volumen del canal (desvanecer en 1 segundo)
$ renpy.music.set_volume(0.3, delay=1.0, channel="music")
# Establecer volumen relativo para un archivo específico
play sound "audio/loud_explosion.ogg" volume 0.5
renpy.music.set_volume() cambia el volumen general del canal. La palabra clave volume establece el volumen relativo para un archivo individual.
Organizando archivos de audio
A medida que crece la cantidad de archivos, escribir rutas directamente se vuelve tedioso. Crea alias en el espacio de nombres audio con define para una gestión más fácil.
El espacio de nombres audio
define audio.main_theme = "audio/bgm/main_theme.ogg"
define audio.battle = "audio/bgm/battle.ogg"
define audio.click = "audio/se/click.ogg"
define audio.explosion = "audio/se/explosion.ogg"
label start:
play music main_theme
play sound click
"The adventure begins."
play music battle fadeout 1.0
play sound explosion
Los alias definidos en el espacio de nombres audio se pueden usar directamente en las declaraciones play. No necesitas escribir rutas de archivo cada vez, y los errores tipográficos se detectan pronto.
Ejemplo de estructura de carpetas
game/
└── audio/
├── bgm/
│ ├── main_theme.ogg
│ ├── battle.ogg
│ └── ending.ogg
├── se/
│ ├── click.ogg
│ ├── explosion.ogg
│ └── door_open.ogg
└── voice/
├── 001.ogg
├── 002.ogg
└── 003.ogg
Separar BGM, SFX y voz en subcarpetas mantiene todo organizado. Ren'Py detecta automáticamente archivos en game/audio/ y sus subdirectorios.
Conclusión
Lo que cubrimos:
- Selección de formato: Usa OGG u Opus para BGM. Evita MP3 por los saltos en el bucle
- Declaraciones de reproducción:
play music(BGM),play sound(SFX),voice(líneas de voz) - Canales: music / sound / voice / audio — cuatro por defecto. Canales personalizados para sonidos ambientales
- Desvanecimientos y puntos de bucle: parámetros
fadeout/fadein, sintaxis<loop>para intro + bucle - Organización de archivos: alias
define audio.xxxen el espacio de nombres audio
Para lo básico de Ren'Py, consulta la guía de inicio. Para la visualización de imágenes, consulta la guía básica de imágenes. Para la interfaz de usuario, consulta la guía de screen language.
Recursos oficiales:
- Audio — referencia oficial de audio
- Voice — detalles de la función de voz
- Audio Formats Guide — comparación de formatos (VNDev Wiki)
- r/RenPy — comunidad