Saltar al contenido
Docs

Servicio sonido

Referencia del servicio sonido. Sonidos sintetizados: predefinidos, tonos, ruido y secuencias de notas.

Corresponde aFormato 1, API 1 Para quien escribe código Esta página se genera desde las fuentes del SDK.

En esta página

Sonidos sintetizados: predefinidos, tonos, ruido y secuencias de notas.

Los tipos que aparecen en las firmas (Vec3, Texto, el selector) están en la referencia de la API.

Funciones y propiedades de sonido#

sonido.tocar#

ts
sonido.tocar(nombre: SonidoPredefinido, opciones?: { volumen?: number; tono?: number; para?: Jugador }): void

Toca un sonido predefinido.

De docs/EJEMPLOS.md, «sonido»:

ts
mundo.alTocar('#moneda', (_m, j) => sonido.tocar('moneda', { para: j }));

sonido.tono#

ts
sonido.tono(def: { frecuencia: number; duracion: number; onda?: 'seno' | 'cuadrada' | 'sierra' | 'triangulo'; hasta?: number; volumen?: number; para?: Jugador }): void

Sintetiza un tono.

De docs/EJEMPLOS.md, «sonido»:

ts
mundo.alTocar('#laser', () => sonido.tono({ frecuencia: 900, hasta: 120, duracion: 0.3, onda: 'sierra' }));

sonido.secuencia#

ts
sonido.secuencia(notas: { nota: string | number | null; pulsos?: number }[], opciones?: { pulsosPorMinuto?: number; repetir?: boolean; onda?; volumen?: number; para?: Jugador }): number

Toca una secuencia de notas. Devuelve un id para detenerla.

De docs/EJEMPLOS.md, «sonido»:

ts
const musica = sonido.secuencia(
  [{ nota: 'do4' }, { nota: 'mi4' }, { nota: 'sol4' }, { nota: null }, { nota: 'la4', pulsos: 2 }],
  { pulsosPorMinuto: 240, repetir: true, onda: 'triangulo', volumen: 0.3 }
);

sonido.detener#

ts
sonido.detener(id: number): void

Detiene una secuencia. Recibe el id que devolvió sonido.secuencia.

De docs/EJEMPLOS.md, «sonido»:

ts
mundo.alEntrar('meta', () => sonido.detener(musica));

sonido.ruido#

ts
sonido.ruido(def: { duracion: number; volumen?: number; filtro?: number; hasta?: number; ataque?: number; para?: Jugador }): void

Ruido (explosión, viento, lluvia, pasos). filtro, en Hz, lo hace más grave; hasta desliza el filtro.

De docs/EJEMPLOS.md, «mundo: luces, ambiente y zonas creadas por el script»:

ts
// Anochece en 20 segundos y se encienden los faroles (luces con "id" en la escena).
reloj.despues(30, () => {
  mundo.ambiente({ cielo: 'noche', luzAmbiente: 0.25, sol: { intensidad: 0.1 }, niebla: { desde: 10, hasta: 60 } }, 20);
  for (const luz of mundo.luces()) luz.encendida = true;
  sonido.ruido({ duracion: 3, filtro: 600, volumen: 0.4, ataque: 1 });
});

sonido.muestra#

ts
sonido.muestra(id: string, opciones?: OpcionesSonido): void

Reproduce un sonido grabado del juego (sonidos/<id>.wav o .mp3). Agregado en la versión 1.2.

Notas de comportamiento#

sonido.tono admite además ataque y caida (segundos de la envolvente). sonido.ruido es ruido filtrado: filtro en Hz lo hace más grave y hasta desliza el filtro (explosión: { duracion: 0.6, filtro: 2000, hasta: 100 }).

Todo el sonido es sintetizado. Predefinidos: moneda, salto, golpe, caida, control, victoria, derrota, clic, alerta, tic, luz, poder. Las notas se escriben 'do4', 'fa#5', 'la3'; null es silencio.

Ejemplos completos#

Scripts completos de docs/EJEMPLOS.md. Cada uno supone una escena con lo que nombra, y las claves de texto (interfaz.t('...')) deben existir en textos de juego.json.

sonido#

scripts/principal.ts
import { juego, mundo, sonido } from '@greengames/sdk';

juego.alIniciar(() => {
  mundo.alTocar('#moneda', (_m, j) => sonido.tocar('moneda', { para: j }));
  mundo.alTocar('#laser', () => sonido.tono({ frecuencia: 900, hasta: 120, duracion: 0.3, onda: 'sierra' }));

  const musica = sonido.secuencia(
    [{ nota: 'do4' }, { nota: 'mi4' }, { nota: 'sol4' }, { nota: null }, { nota: 'la4', pulsos: 2 }],
    { pulsosPorMinuto: 240, repetir: true, onda: 'triangulo', volumen: 0.3 }
  );
  mundo.alEntrar('meta', () => sonido.detener(musica));
});

Sigue con#