Files
pmomusic/INSTALL_NOTES.md
Claude 8076ed5a48 Replace rodio with cpal for AudioSink
- Replace rodio dependency with cpal in pmoaudio/Cargo.toml
- Add AudioSink node using cpal for direct hardware access
- Add SharedBuffer for async/callback communication
- Convert all audio formats to F32 for cpal
- Improve latency and control over audio stream
- Add WHY_CPAL.md explaining the technical choice
- Update INSTALL_NOTES.md with ALSA requirements
- Export AudioSink in lib.rs and mod.rs

Benefits:
- Minimal latency (no extra layers)
- Direct hardware control
- Lighter binary (~3.8 MB less)
- Same ALSA dependency as rodio on Linux
- Cross-platform (ALSA/JACK on Linux, CoreAudio on macOS, WASAPI on Windows)
2025-11-05 18:04:08 +00:00

1.8 KiB

Notes d'installation pour PMOMusic

Prérequis système

libsoxr (obligatoire pour pmoaudio - resampling)

La bibliothèque libsoxr est requise pour le resampling audio dans pmoaudio.

libasound2/ALSA (obligatoire pour pmoaudio - lecture audio sur Linux)

La bibliothèque ALSA est requise pour AudioSink via cpal sur Linux. Sur macOS et Windows, aucune dépendance externe n'est nécessaire (CoreAudio et WASAPI sont utilisés).

Installation :

# Debian/Ubuntu
sudo apt-get install libsoxr-dev libasound2-dev

# Fedora/RHEL
sudo dnf install libsoxr-devel alsa-lib-devel

# Arch Linux
sudo pacman -S libsoxr alsa-lib

# macOS (Homebrew) - ALSA non nécessaire sur macOS
brew install libsoxr

# Alpine Linux
apk add soxr-dev alsa-lib-dev

Sans privilèges root : Si vous n'avez pas les droits sudo, consultez INSTALL_LIBSOXR.md pour l'installation locale de libsoxr et libasound2.


Nouveaux composants

PlaylistSource (pmoaudio-ext)

Source audio qui lit une playlist pmoplaylist et diffuse les pistes en continu.

Feature : playlist

# Compiler avec la feature playlist
cargo build --package pmoaudio-ext --features playlist

⚠️ Important : Cette source émet du PCM avec sample_rate et bit_depth variables. Pour un flux homogène, ajoutez dans le pipeline :

  • ResamplingNode (normalise le sample_rate)
  • ToI24Node / ToI16Node (normalise la profondeur de bits)

ResamplingNode (pmoaudio)

Nœud générique qui normalise le sample_rate vers une valeur cible fixe.

Usage :

let mut resampler = ResamplingNode::new(48000); // Force 48kHz

Compilation

# Compiler tout le workspace (nécessite libsoxr)
cargo build

# Compiler sans pmoaudio (si libsoxr manque)
cargo build --package pmoplaylist
cargo build --package pmoaudiocache
# etc.