Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:26:47 +08:00
commit ba28d2ddd8
53 changed files with 7766 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
---
name: managing-sound-effects
description: Manages sound effects and audio for user feedback (correct/wrong sounds, music, volume). Use when adding new sounds or managing audio
allowed-tools: Read, Write, Grep, Glob, Bash
---
# Sound Effect Manager
Gère effets sonores et feedback audio pour meilleure expérience utilisateur.
## Quand utiliser
- Ajout de nouveaux effets sonores
- Gestion du volume et mute
- Musique de fond pour jeux
- Feedback audio utilisateur
- Optimisation chargement audio
## AudioManager (js/core/audio.js)
**API :**
- `playSound(soundName, options)` - Jouer son
- `setVolume(volume)` - Volume global (0.0-1.0)
- `toggleMute()` / `isMuted()` - Mute control
**Sons disponibles (examine audio.js) :**
correct, wrong, victory, click, coin, levelup
## Ajouter un nouveau son
1. **Compresser :** < 50 KB (96 kbps pour effets, 128 kbps musique)
2. **Formats :** MP3, OGG, WebM (fallback)
3. **Placer :** assets/sounds/
4. **Enregistrer :** SOUND_CATALOG dans audio.js
5. **Utiliser :**
```javascript
import { playSound } from './core/audio.js';
playSound('yourSound');
```
## Patterns essentiels
- **Préchargement :** Sons critiques avant utilisation
- **Pool audio :** Instances multiples pour chevauchement
- **Musique fond :** Volume 0.3, loop activé, cleanup dans destroy
- **Mobile :** Autoplay nécessite interaction utilisateur
- **Accessibilité :** Respecter prefers-reduced-motion
## Gestion du lifecycle
**Mode avec musique :**
```javascript
// Lancer musique
playSound('background-music', { loop: true, volume: 0.3 });
// cleanup() → stopper musique
```
Examine QuizMode/ChallengeMode pour patterns existants.
## Checklist ajout son
- [ ] Fichier compressé < 50 KB
- [ ] Formats multiples (MP3, OGG, WebM)
- [ ] Ajouté au SOUND_CATALOG
- [ ] Volume testé
- [ ] Mute fonctionne
- [ ] Cleanup musique si loop
- [ ] Mobile autoplay OK
## En cas de doute
**Règles absolues :**
1. Utiliser audio.js API (jamais créer Audio directement)
2. < 50 KB par fichier
3. Stopper musique dans cleanup()
4. Pas d'autoplay sans interaction utilisateur
5. Volume par défaut ≤ 0.7
**Référence :**
- `js/core/audio.js` - API complète
- `assets/sounds/` - Catalogues existants
- Modes (QuizMode, ChallengeMode) - Exemples d'utilisation