Aller au contenu

Système Audio

Vue d'ensemble du système audio R-Type.

Composants

flowchart TB
    subgraph AudioSystem
        AM[AudioManager]
        VCM[VoiceChatManager]
    end

    subgraph Sources
        Music[🎵 Musique]
        SFX[💥 Effets]
        Voice[🎤 Voice Chat]
    end

    subgraph Output
        Mix[Mixer]
        Out[🔊 Sortie]
    end

    Music --> AM
    SFX --> AM
    Voice --> VCM
    AM --> Mix
    VCM --> Mix
    Mix --> Out

    style AM fill:#7c3aed,color:#fff
    style VCM fill:#f59e0b,color:#000

Technologies

Composant Technologie Usage
SFX/Music SDL2_mixer / SFML Audio Effets et musique
Voice Capture PortAudio Capture micro
Voice Codec Opus Compression audio
Voice Transport UDP Temps réel

Architecture

AudioManager

Gère la musique de fond et les effets sonores.

class AudioManager {
    std::map<std::string, Sound> sounds_;
    Music* currentMusic_ = nullptr;
    float masterVolume_ = 0.8f;
    float musicVolume_ = 0.6f;
    float sfxVolume_ = 1.0f;

public:
    void loadSound(const std::string& name, const std::string& path);
    void playSound(const std::string& name);
    void playMusic(const std::string& path, bool loop = true);
    void stopMusic();

    void setMasterVolume(float vol);
    void setMusicVolume(float vol);
    void setSfxVolume(float vol);
};

VoiceChatManager

Gère la capture, l'encodage Opus et la transmission UDP.

class VoiceChatManager {
    OpusEncoder* encoder_;
    OpusDecoder* decoder_;
    PaStream* inputStream_;
    PaStream* outputStream_;
    UDPSocket& socket_;

public:
    void startCapture();
    void stopCapture();
    void processIncoming(const VoicePacket& packet);
    void setMode(VoiceMode mode);  // PTT or VAD
    void setMuted(bool muted);
};

Documentation

🎤 Voice Chat

Opus, PortAudio, UDP

🎵 SFX & Musique

AudioManager, formats