Co to jest cpalc

cpal to biblioteka w Rust, która pozwala bezpośrednio komunikować się z kartą dźwiękową.
Nie odtwarza gotowych plików jak MP3, tylko daje ci surowy dostęp do dźwięku – możesz samemu generować fale, nagrywać mikrofon, miksować itd.

🔊 Jak to działa (w skrócie)

  1. Host – systemowy interfejs audio (np. ALSA, CoreAudio, WASAPI).
  2. Device – konkretne urządzenie, np. „głośniki” lub „mikrofon”.
  3. Stream – połączenie z urządzeniem, przez które dane audio „płyną”.

Ty otwierasz taki strumień, a cpal woła twoją funkcję (callback) co chwilę i daje ci:

  • bufor do wypełnienia dźwiękiem (jeśli to wyjście),
  • albo bufor z nagranym dźwiękiem (jeśli to wejście).

Czyli: „tu masz tablicę próbek, zrób z nią co chcesz”.

🧩 Na jakich systemach działa

  • Windows – przez WASAPI/WinMM
  • macOS – przez CoreAudio
  • Linux – przez ALSA lub JACK
  • WASM (przeglądarka) – przez Web Audio API

🧰 Kiedy używać cpal

Używaj, gdy:

  • sam chcesz tworzyć dźwięk (np. syntezator, generowanie fali),
  • chcesz nagrywać audio z mikrofonu,
  • potrzebujesz niskiej latencji i kontroli (np. w DAW, grze, efekcie czasu rzeczywistego).

💡 Gdy nie potrzebujesz tak niskiego poziomu

Jeśli chcesz tylko odtwarzać dźwięk, lepiej użyj:

  • rodio – prostsza biblioteka, działa na cpal, ale sama dekoduje pliki i odtwarza je,
  • kira – bardziej rozbudowany system dźwięku do gier (z efektami i miksem).