Tutorial:Audio (Русский)

В LÖVE, звук управляется в модуле love.audio, который использует OpenAL для проигрывания. love.audio имеет только один тип звукового объекта - Source. Вы можете загрузить аудио и проиграть его как в этом примере:

sound = love.audio.newSource("pling.wav", "static") -- команда "static" говорит LÖVE загрузить файл в память, подходит для коротких звуковых эффектов
music = love.audio.newSource("techno.ogg") -- если "static" не указано, LÖVE будет проигрывать файл с диска, подходит для длинных музыкальных треков
sound:play()
music:play()

Форматы

LÖVE поддерживает множество аудио-форматов, благодаря модулю love.sound, который осуществляет кодирование. Поддерживаемые форматы:

  • MP3
  • Ogg Vorbis
  • WAVE
  • а также любой формат "трекерной" музыки, который только захотите - XM, MOD, и свыше 20 других.

Ogg Vorbis и 16-bit WAVE рекомендуемые форматы. Другие могут иметь незначительные проблемы. Например, MP3 декодер может дополнять несколькими сэмплами в зависимости от использованного кодера. Эти проблемы от библиотек, что использует LÖVE для декодирования аудиофайлов, и не могут быть исправлены в LÖVE напрямую.

Static vs. Streaming

Помните, что если вы пишете love.audio.newSource "static" как второй аргумент, то файл будет увеличен в памяти, поэтому если вы загрузите 5 мегабайтный сжатый аудио-файл в формате .ogg, он займёт около ~50 мегабайт RAM когда будет распакован. Советуем не использовать параметр "static" в таких случаях.

Если вы пропустите параметр "static", звук будет проигрываться из файла непосредственно, иногда это это помогает освободить достаточно большое количество памяти, когда вы работаете с большими файлами.

Управление звуками

Чтобы поставить на паузу, остановить, изменить громкость, зациклить, изменить высоту и т. д., просто вызовите соответствующий метод из Source.

src1 = love.audio.newSource("bang.wav", "static")
src2 = love.audio.newSource("bgm.mp3")

src1:setVolume(0.9) -- 90% громкости
src1:setPitch(0.5) -- на октаву ниже
src2:setVolume(0.7)

src1:play()
src2:play()

Больше деталей можно найти в Source documentation.

Смотрите также

  • TEsound - Аудио-менеджер который делает работу со звуковыми эффектами и музыкой значительно проще
  • Minimalist Sound Manager - Сниппет который делает использование love.audio проще и автоматически управляет объектами Source

На других языках