Tutorial:Audio (Polski)

W środowisku LÖVE, dźwięk jest domeną modułu love.audio. Moduł ten używa biblioteki OpenAL do odtwarzania dźwięków. love.audio ma tylko jeden rodzaj obiektów audio Source_(Polski) (ang. żródło). Można łatwo załadować i odtwarzać dźwięki w następujący sposób:

efekt = love.audio.newSource("pling.wav", "static") -- "static" mówi LÖVE, by załadować (i przechowywać) plik do pamięci, dobre dla krótkich, często używanych dźwięków
muzyka = love.audio.newSource("techno.ogg") -- jeżeli "static" jest pominięte, LÖVE będzie ładował plik z dysku w trakcie odtwarzania, właściwe dla podkładów muzycznych
love.audio.play(efekt)
love.audio.play(muzyka)

Formaty

LÖVE obsługuje wiele formatów dźwiękowych dzięki modułowi love.sound, który odpowiedzialny jest za ich dekodowanie. Obsługiwane formaty obejmują:

  • mp3
  • Ogg Vorbis
  • WAVE
  • i chyba każdy format modułów (muzycznych), jaki jest w stanie przyjść do głowy - XM, MOD, i ponad dwadzieścia innych.

Zalecanym formatem jest Ogg Vorbis. Pozostałe mogą mieć drobne osobliwości. Na przykład, decoder formatu WAVE dodaje kilka sekund (?) ciszy na końcu a dekoder mp3 może dopełniać niektóre sample, w zależności od tego, jaki program został użyty do zakodowania. Te problemy mają swoje żródło w bibliotekach, z których korzysta LÖVE do dekodowania plików audio i nie mogą być naprawione po stronie samego frameworka.

Statyczne kontra Strumieniowanie

Miej na uwadze, że podanie "static" jako drugiego parametru do funkcji love.audio.newSource "static", spowoduje, że dźwięk ten zostanie zdekodowany w pamięci do 'pełnej' postaci. Tak więc, załadowanie skompresowanego pliku .ogg o wielkości 5MB, może pochłonąć ~50MB pamięci. W takich przypadkach dobrze się zastanów nad użyciem "static".

Jeśli ominiesz "static", dźwięk będzie strumieniowany z dysku w trakcie odgrywania. Pozwala to na zaoszczędzenie pamięci w przypadku dużych plików audio.

Kontrola dźwięków

By spauzować, zatrzymać, zmienić głośność, zapętlić itp., itd., wystarczy wywołać odpowiednie metody obiektu Source_(Polski).

src1 = love.audio.newSource("bang.wav", "static")
src2 = love.audio.newSource("bgm.mp3")
 
src1:setVolume(0.9) -- 90% of normalnej głośności
src1:setPitch(0.5) -- obniż o oktawę
src2:setVolume(0.7)
 
love.audio.play(src1)
love.audio.play(src2)

Więcej szczegółów znajdziesz w dokumentacji obiektu Source.

Zobacz również

Other Languages