00043. Работа с аудио

Работа с аудио|Начинаем наш новый урок! Эта тема посвящена работе с аудио-файлами.|wmysterio|wmysterio||||Аудио-файлы можно "разбить" на три категории: звук, саундтрек и музыка. Зачем это нужно? Потому, что воспроизводятся они разными опкодами. Рассмотрим по очереди все категории:

Звуки. Отличается короткой длиной и типом файла. Обычно в игре звуки имеют тип "*.wav". Для начала, нужно загрузить звук опкодом:

03CF: load_wav 23000 as 1

Здесь: 23000 - номер ( ID ) звука. Все номера звуков хранятся в файле **AudioEvents.txt**, что в папке "data" 1 - это, так сказать "переменная", в которой будет хранится звук

Потом нужно сделать проверку на загруженность:

03D0: wav 1 loaded

Здесь: 1 - это та самая "переменная", в которую мы записали номер звука

После этого можно воспроизвести сам звук:

03D1: play_wav 1

Здесь: 1 - загруженная "переменная" со звуком

Существует также проверка на окончание воспроизведения звука:

03D2: wav 1 ended

Когда звук больше не нужен, то обязательно выгружаем звук опкодом:

040D: unload_wav 1

Здесь: 1 - загруженная "переменная" со звуком

Существует ещё опкод, который не нуждается в загрузке звука и который сразу проигрывает звук:

018C: play_sound 1052 at 0.0 0.0 0.0

Здесь: 1052 - номер звука. Я пока знаю где найти описание всех номеров, поэтому берите то, что есть в "main.scm" 0.0 0.0 0.0 - точно не знаю зачем эти цифры, так что оставляйте как есть× **Примечание:** следует помнить, что этот опкод воспроизводит не все звуки, так что приходится выбирать и тестировать наугад

Саундтреки. Эта категория аудио, как и звуки, отличается своей длиной и типом. Они имеют расширение "*.ogg" и намного длиннее, чем звуки. Для примера саундтрека: когда входим в интерьер дискотеки играет музыка, на битве лоурайдеров - тоже звучик саундтрек. Саундтреки требуют загрузки:

0952: load_soundtrack 10 // увы, я не помню все номера саундтреков, но вы можете протестировать
0954: start_playing_loaded_soundtrack // воспроизводит саундтрек

× **ВАЖНО:** Одновременно можно проигрывать только 1 сандтрек

Так же можно занести в переменную статус саундтрека:

0953: get_soundtrack_status_to 17@

Здесь: 17@ - переменная, в которую заносится статус.

А вот эта команда прекращает воспроизведение саундтрека:

0955: end_playing_loaded_soundtrack

Музыка. Музыка не требует дополнительной загрузки и её можно воспроизводить когда угодно. Она загружается вместе с игрой. Музыку можно услышать когда вы прошли миссию или купили дом. Опкод, запускающий музыку:

0394: play_music 2

Здесь: 2 - номер музыки: 1 - миссия пройдена, 2 - дом куплен.

С выходом Cleo 4, нам добавилось несколько опкодов для работы с аудио. Теперь можно проигрывать прямо в игре любимый трек. Рассмотрим алгоритм запуска аудио-файла. Сначала кидаем в папку Cleo ( или в другую папку ) нужный трек и переименовуем его на английские символы ( без пробелов ) или числа. Вот например я кинул в папку Cleo трек с названием "1.mp3". Потом в скрипте нужно обязательно проверить: "Существует ли файл?":

0AAB: file_exists "CLEO\1.mp3"

Здесь: "CLEO\1.mp3" - путь к аудио-файлу

После успешной проверки, загружаем аудио:

0AAC: $hMP3 = load_audiostream "CLEO\1.mp3"

Здесь: $hMP3 - переменная, в которой будет хранится аудио "CLEO\1.mp3" - путь к аудио-файлу

После этого запускаем аудио:

0AAD: set_audiostream $hMP3 perform_action 1

Здесь: $hMP3 - переменная, в которой хранится аудио 1 - флаг. ( 1 - запустить проигрывание сначала, 0 - остановить проигрывание, 2 - поставить на паузу, 3 - возобновить проигрывание )

Опкод, регулирующий громкость аудио в игре:

0ABC: set_audiostream $hMP3 volume 1.0

Здесь: $hMP3 - переменная, в которой хранится аудио 1.0 - громкость ( от 0.0 до 1.0 )

Ещё один полезный опкод, который позволяет автоматически начать воспроизведение, если музыка была остановлена:

0AC0: loop_audiostream $hMP3 flag 1

Здесь: $hMP3 - переменная, в которой хранится аудио 1 - флаг. Если поставить 1, то аудио будет повторятся после окончания, если 0 - не будет повторятся

И, наконец, выгрузка звука:

0AAE: release_audiostream $hMP3

Давайте напишем простенький скрипт, чтобы при нажатии кнопки 1` играла музыка "1.mp3". Вот код:

:AUDIO
thread 'AUDIO'
wait 0
if
0AAB: file_exists "CLEO\1.mp3"
jf @AUDIO_END
0AAC: $hMP3 = load_audiostream "CLEO\1.mp3"
0ABC: set_audiostream $hMP3 volume 1.0
0@ = 0

:AUDIO_1
wait 0
if
0@ == 0
then
 if
 0AB0: key_pressed 49 // 1
 then
 0AC0: loop_audiostream $hMP3 flag 1
 0AAD: set_audiostream $hMP3 perform_action 1 // PLAY
 wait 250
 0@ = 1
 end
else
 if
 0AB0: key_pressed 49 // 1
 then
 0AC0: loop_audiostream $hMP3 flag 0
 0AAD: set_audiostream $hMP3 perform_action 0 // STOP
 wait 250
 0@ = 0
 end
end
jump @AUDIO

:AUDIO_END
wait 0
end_thread

Пока не будем кидать этот код в мейн, так как сейсач нет такой необходимости.|2782|1|0||rabota_s_audio|1498947823

Last updated