Tutoriel 4 — Sons et musique

$this->sound() (le SoundManager) joue les effets et la musique, sur le bureau comme dans le navigateur. Sans carte son, tout est silencieux, jamais une erreur.

Des sons fabriqués en PHP

Synth crée des sons rétro sans aucun fichier :

use JumPHP\Audio\Synth;

if (!$this->sound()->hasSfx('jump')) {                        // une seule fois
    $this->sound()->synth('jump', Synth::sweep(250, 600, 0.12));               // une fréquence qui monte
    $this->sound()->synth('coin', Synth::sequence([[988, 0.05], [1319, 0.12]])); // deux notes
    $this->sound()->synth('hit', Synth::noise(0.15));                          // un bruit
    $this->sound()->synth('bass', Synth::tone(110, 0.3, 'triangle'));          // square, triangle, sine, saw
}
$this->sound()->playSfx('jump');

Des fichiers

$this->sound()->loadSfx('explosion', 'assets/sfx/explosion.wav');     // wav, ogg, mp3
$this->sound()->loadMusic('level', 'assets/music/level.ogg');
$this->sound()->playMusic('level');
$this->sound()->stopMusic();

Le volume

setSfxVolume(0.8), setMusicVolume(0.5), setMuted(true) : ces réglages sont enregistrés avec les options du joueur. Un menu d'options en fait des lignes ['VOLUME', fn () => ..., null, fn (int $dir) => ...] (voir les menus).

Le son en 3D (positionné dans l'espace) existe aussi : $this->engine->audio3d().