Sons et Musiques¶
Ressources audio du jeu R-Type.
Structure¶
assets/
└── audio/
├── shoot.mp3 # Son de tir
├── hit.mp3 # Son d'impact
├── background.ogg # Musique de fond (optionnel)
└── README.md # Documentation des assets audio
Fichiers Actuels¶
| Fichier | Format | Type | Description |
|---|---|---|---|
shoot.mp3 |
MP3 | SFX | Son de tir du joueur |
hit.mp3 |
MP3 | SFX | Son d'impact (ennemi touché) |
Fichiers Manquants
Le fichier background.ogg est référencé dans le code mais n'existe pas encore dans le dépôt.
Voir assets/audio/README.md pour la liste des fichiers recommandés.
Formats Supportés¶
Le système audio utilise SDL2_mixer.
Musique (Background)¶
| Format | Extension | Recommandé |
|---|---|---|
| OGG Vorbis | .ogg |
Oui |
| MP3 | .mp3 |
Oui |
| FLAC | .flac |
Non (taille) |
| WAV | .wav |
Non (taille) |
Effets Sonores¶
| Format | Extension | Recommandé |
|---|---|---|
| WAV | .wav |
Oui (faible latence) |
| MP3 | .mp3 |
Oui |
| OGG | .ogg |
Oui |
Utilisation dans le Code¶
AudioManager (Singleton)¶
#include "audio/AudioManager.hpp"
// Récupérer l'instance
auto& audio = audio::AudioManager::getInstance();
// Initialiser le système audio
audio.init();
Chargement et Lecture¶
// Effets sonores
audio.loadSound("shoot", "assets/audio/shoot.mp3");
audio.loadSound("hit", "assets/audio/hit.mp3");
// Musique de fond
audio.loadMusic("bgm", "assets/audio/background.ogg");
// Jouer un effet sonore
audio.playSound("shoot");
// Jouer la musique en boucle
audio.playMusic("bgm", -1); // -1 = boucle infinie
Exemple dans GameScene¶
// GameScene.cpp
void GameScene::loadAudio() {
auto& audioMgr = audio::AudioManager::getInstance();
audioMgr.loadMusic("bgm", "assets/audio/background.ogg");
audioMgr.loadSound("shoot", "assets/audio/shoot.mp3");
audioMgr.loadSound("hit", "assets/audio/hit.mp3");
}
void GameScene::onEnter() {
auto& audioMgr = audio::AudioManager::getInstance();
audioMgr.playMusic("bgm", -1); // Musique en boucle
}
void GameScene::shootMissile() {
auto& audioMgr = audio::AudioManager::getInstance();
audioMgr.playSound("shoot");
// ... logique de tir
}
Contrôle du Volume¶
Volumes par Défaut¶
| Canal | Volume | Description |
|---|---|---|
| Master | 100% | Volume principal |
| Music | 70% | Musique de fond |
| Sound | 80% | Effets sonores |
API de Volume¶
auto& audio = audio::AudioManager::getInstance();
// Volume master (affecte tout)
audio.setMasterVolume(100); // 0-100
// Volume musique
audio.setMusicVolume(70); // 0-100
int musicVol = audio.getMusicVolume();
// Volume effets sonores
audio.setSoundVolume(80); // 0-100
int soundVol = audio.getSoundVolume();
// Mute/Unmute
audio.setMuted(true);
bool muted = audio.isMuted();
Contrôle de la Musique¶
auto& audio = audio::AudioManager::getInstance();
// Lecture
audio.playMusic("bgm", -1); // -1 = infini, 0 = une fois
audio.playMusic("bgm", 3); // Jouer 3 fois
// Contrôles
audio.pauseMusic();
audio.resumeMusic();
audio.stopMusic();
// État
bool playing = audio.isMusicPlaying();
Fichiers Recommandés¶
Voir assets/audio/README.md pour la liste complète :
| Fichier | Type | Description |
|---|---|---|
background.ogg |
Music | Musique de fond (loops) |
shoot.wav |
SFX | Tir joueur |
explosion.wav |
SFX | Destruction ennemi/missile |
hit.wav |
SFX | Impact sur joueur |
enemy_shoot.wav |
SFX | Tir ennemi |
player_death.wav |
SFX | Mort du joueur |
Spécifications Techniques¶
Effets Sonores¶
Format recommandé:
- Type: WAV PCM ou MP3
- Canaux: Mono (1 channel)
- Fréquence: 44100 Hz
- Bits: 16-bit
- Durée: < 2 secondes
Musique¶
Format recommandé:
- Type: OGG Vorbis
- Canaux: Stéréo (2 channels)
- Fréquence: 44100-48000 Hz
- Bitrate: 128-192 kbps VBR
Ressources Gratuites¶
Sites recommandés pour les assets audio :
Conversion avec FFmpeg¶
# Convertir en WAV mono 44.1kHz (pour SFX)
ffmpeg -i input.mp3 -ac 1 -ar 44100 output.wav
# Convertir en OGG (pour musique)
ffmpeg -i input.wav -c:a libvorbis -q:a 5 output.ogg
# Convertir en MP3 (alternatif)
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
# Normaliser le volume
ffmpeg -i input.wav -af "loudnorm=I=-16" output.wav