Объект "XAudio2"

XAudio2 — это главный плагин для проигрывания звуков и музыки в Construct. Назван в честь Microsoft's XAudio2 API, на котором XAudio и основан.

XAudio2 имеет два варианта проигрывания звуков: как музыку (действия под категорией музыки) или как один из нескольких каналов (действия под всеми другими категориями). Музыка может проигрывать только одну мелодию в одно и то же время, например фоновый музыкальный трек. Но также существует множество каналов, которые используются для одновременного проигрывания большого количества звуков. Вы можете проигрывать звуковые файлы и музыку, как из внешних источников, так и с бинарных ресурсов.

Глобальное использование

Пометьте объект XAudio2 как Global (глобальный) во вкладке Common properties (общие свойства), и поместите его копию на первый Layout — объект появится на всех уровнях, и будет нужна только одна копия для всего приложения. Это также позволяет вам беспрерывно (бесшовно) воспроизводить музыку между уровнями.


Если вы не используете глобально объект XAudio2, тогда используйте только один на каждый уровень. Один объект XAudio2 может проигрывать 64 звука по умолчанию. Если вы создаете много аудио объектов, то каждый из них обращается к звуковому движку несколько раз, что очень ресурсоемко и нагружает систему.

Поддерживаемые форматы файлов

Каналами и музыкой поддерживаются разные форматы файлов.

Поддерживаемые каналами форматы файлов:

  • WAV со следующими форматами:
  • PCM
  • ADPCM
  • xWMA
  • OGG файлы.

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

Форматы, перечисленные вверху, имеют встроенную поддержку и не нуждаются в установке дополнительных кодеков. Также вы можете узнать, как проверить формат WAV и переконвертировать его в PCM Audio.

Поддерживаемые музыкой форматы файлов:

XAudio2 может проигрывать форматы, похожие на Windows Media Player, потому что они имеют похожий музыкальный движок. Они включают в себя (но не ограничиваются этим списком):

  • MP3
  • WMA
  • WAV

Как правило, вы не можете проигрывать OGG файлы как музыку, потому что они требуют специальный кодек Windows Media Player для OGG. Однако если вы будете распространять и устанавливать этот кодек вместе с вашей игрой, вы всё еще сможете играть музыку с помощью действия Play Music (играть музыку).

Кэширование

XAudio2 кэширует звуки в память, чтобы улучшить быстродействие (не относится к музыке). Это предотвращает ненужное обращение к файлам на диске снова и снова во время игры — звуки могут проигрываться быстро из памяти, как только они загрузились.

По умолчанию, звуки меньше 3 мб кэшируются в первый раз, как только проигрываются, в то время как файлы больше 3 мб удаляются из памяти, после того как проигрались. Вы можете изменить это в свойствах Cache (кэш) у объекта XAudio2. Кэширование может занять некоторое время, пока звук загрузится в первый раз в течение игры. Вы можете изменить это — используйте действия Cache file (кэшировать файл) или Cache directory (кэшировать директорию), чтобы загрузить звуки в память еще при старте игры. Кэш может занимать много памяти, если ваша игра имеет большое количество аудио. В этом случае вы можете выключить кэширование или использовать действие Free cache (освободить кэш), чтобы выгрузить всё из кэша. Для большинства игр это не должно быть проблемой, но будет более полезно, если вы оставите юзеру возможность проигрывать файлы с диска.

Автопроигрывание

XAudio2 обеспечивает определенное количество каналов (channels), которые проигрывают звуки. Автопроигрывание звука означает проигрывание его в любом свободном канале. Это удобный способ назначить звуки на каналы.
Если вы резервируете канал (reserve), это означает, что автопроигрывание звука никогда не займет его. Полезно, если вы хотите сделать что-нибудь типа фоновой музыки, которая не должна прерываться основными звуковыми эффектами игры.

Master channel (Главный канал)

The Master channel — это специальный канал, через который проигрываются все звуки.

Он представляет собой конечный результат того, что вы слышите. Вы можете отключить звук и изменить громкость этого канала, и это затронет все звуки всех каналов. Этот канал не затрагивает Музыку.

Вы можете получить текущий уровень выхода (output) используя выражения Get RMS level (получить уровень RMS) или Get peak level (получить пиковый уровень). Запомните, если пиковый уровень превышает 1.0 (полномасштабную волну), звук обрезается и становится искаженным.

Ограничитель (limiter) в свойствах этого объекта динамически регулирует уровень главного канала в зависимости от того, насколько громкий выход звука.

Звук будет неприятно искажаться, если уровень выходного звука будет слишком высок, поэтому рекомендуется использовать ограничение чтобы держать уровень ниже точки искажения.

Позиционированные звуки

XAudio2 позволяет звукам проигрываться в 2D пространстве. То есть. Он просто автоматически устанавливает левый/правый динамик и громкость звука в зависимости от того, где он находится относительно слушателя. Вы можете установить позицию слушателя или объекта, и проигрывать звуки в определенном месте с помощью действий в категории Positioned Sound (расположение звуков). Читайте далее, чтобы узнать больше информации об этих действиях.

Свойства объекта XAudio2

XAudio2, как и все объекты, имеет общие свойства — Common Properties.

Properties (Свойства)

Channels (каналы) — количество каналов, которое использует XAudio2. Автопроигрывание звука будет использовать эти каналы, чтобы проигрывать на одном из них, поэтому вы сможете проигрывать несколько звуков одновременно. Значение по умолчанию — 64 (рекомендуется).

Max frequency ratio (максимальный коэффициент частоты) — максимальный соотношение, которое вы можете допустить в действии Set frequency (установить частоту). Использование меньших значений уменьшает кол-во используемой памяти. Значение по умолчанию — 4 , означает, что вы не можете играть звук быстрее, чем в 4 раза относительно его оригинальной частоты.

Master volume (мастер громкости) — громкость главного канала (общая громкость всех каналов), в децибелах. -3 или -6 — небольшое снижение, но оно помогает уменьшить искажение многих звуков, которые играют в одно и то же время.

Cache (кэш) — установка кэша по умолчанию. Опции:

  • Off (выключить) — ничего не будет кэшироваться. Файл всегда будет проигрываться с диска.
  • Sounds under 3mb (звуки меньше 3 мб) — звуки меньше 3 мб будут (при декомпрессии) кэшироваться. Это предотвращает кэширование больших файлов и перегрузки памяти.
  • All but OGG (всё кроме ogg) — OGG файлы полностью декомпрессируются перед проигрыванием или кэшированием. Поэтому, если вы используете большие OGG файлы для музыки, эта опция не будет их кэшировать.
  • All (всё) — будут кэшироваться все звуки в независимости от их размера.

Positioned sounds (позиционированные звуки)

Max volume (максимальная громкость) — максимальная громкость проигрываемого звука в пределах минимального расстояния до слушателя.

Minimum volume (минимальная громкость) — минимальная громкость позиционированного звука.

Minimum distance (минимальное расстояние до зрителя) — в пределах этого расстоянии звуки воспроизводятся с максимальной громкостью. Звук только начинает утихать за пределами его расстояния.

Rolloff factor (коэффициент избирательности) — насколько быстро звуки утихают с расстоянием. Используйте высокие значения, чтобы сделать звук более тихим более быстро.

Max pan (максимальный сдвиг) — максимально, насколько звук, может быть, сдвинут, в децибелах. С 18 ДБ точка, с которой идет звук, будет находиться либо полностью справа, либо слева, это значение по умолчанию.

Pan distance (расстояние сдвига) — горизонтальное расстояние между звуком и слушателем, где достигается максимальный сдвиг.

Limiter (Ограничитель)

Limiter enabled (включить ограничитель) — если слишком много звуков играют одновременно, выходной звук может неприятно искажаться. Ограничитель, когда включен, эффективно динамически понижает громкость главного канала (master channel), не допуская искажений. Очень рекомендуется, чтобы ограничитель был включен.

Release (освобождать) — это время, в миллисекундах, за которое ограничитель сменит громкость. Значение может быть между 1 и 20.

Threshold (порог) — пороговый уровень, при котором ограничитель ослабляет свое влияние. Он выражается в произвольных единицах от 1 до 1800.

Условия объекта XAudio2

Channel (Канал)

Any channel is playing? (играет какой-нибудь канал?) — срабатывает, если один из каналов XAudio2 что-то проигрывает.

Channel is muted? (у канала выключен звук?) — правда, если у одного из каналов выключен звук.

Channel is playing? (канал проигрывает звук) — правда, когда выбранный канал проигрывает аудио.

Channel is reserved? (канал зарезервирован) — правда, если выбранный канал был зарезервирован с помощью действия Set reserved (резервировать).

Master (Главный канал)

Master is muted? (когда звук главного канала выключен) — правда, если выходной звук был выключен действием Set master muted (выключить звук главного канала).

Действия объекта XAudio2

Cache (Кэширование)

Cache directory (кэшировать директорию) — загрузить все WAV, XWM и XWMA файлы из заданной директории в память. Полезно при старте уровня, чтобы предварительно загрузить аудио.

Cache file (кэшировать файл) — загружает выбранный аудио файл в память.

Free cache (освободить кэш) — удаляет всё аудио из кэша, чтобы освободить память.

Set cache limit (установить лимит кэша) — когда в свойствах XAudio2 включена опция Sounds under 3mb (звуки меньше 3 мб), то данное действие меняет лимит загружаемого в кэш, в Мб.

Channel (Канал)

Exit loop (прекратить Loop (зацикленное проигрывание)) — если канал зацикленно играл звук, то это действие приведет к тому, что звук остановится, как только проиграется до конца.

Play (проиграть) — начнет проигрывание канала.

Set frequency ratio (установить соотношение частоты) — регулирует частоту, с которой канал играет звук. 2.0 – двойная скорость, 0,5 – половина нормальной скорости. Полезно для звуковых движков.

Set muted (выключить звук) — включает/выключает звук.

Set pan (установить сдвиг) — меняет баланс левого-правого каналов.

Set position (установить позицию) — устанавливает текущую позицию воспроизведения в канале звукового файла, в секундах.

Set reserved (зарезервировать) — резервирует канал. Такие каналы не могут быть заняты автопроигрыванием звука.

Set volume (установить громкость) — устанавливает громкость канала, в децибелах. Позитивные значения усиливают, отрицательные понижают громкость.

Stop (остановить) — прекращает воспроизведение канала.

Stop all channels (остановить все каналы) — прекращает воспроизведение всех каналов, останавливает всё аудио.

Unreserve all channels (открыть все каналы) — помечает все каналы как незарезервированные, поэтому автопроигрывание звука сможет использовать любой из каналов.

Files (Файлы)

Auto play files (автоматически проигрывать файлы) — загружает аудио файл в любой канал (который не зарезервирован и ничего не играет в данный момент) и начинает проигрывание.

Load files (загрузить файл) — загружает аудио файл в определенный канал. Но он будет остановлен, пока вы не включите действие Play (играть).

Master (Главный канал)

Set muted (выключить звук) — включает/выключает главный выходной звук.

Set volume (установить громкость) — устанавливает громкость общего звука.

Music (Музыка)

Pause music (поставить на паузу) — ставит музыку на паузу.

Play music from file (играть музыку из файла) — загружает музыкальный файл с диска и начинает проигрывать. Смотрите описание объекта XAudio2, чтобы узнать поддерживаемые форматы.

Play music from resource (играть музыку из ресурсов) — загружает музыкальный файл из ресурсов игры (resource) и начинает проигрывать.

Resume music (снять с паузы) — снимает музыку с паузы.

Set music looping (сделать музыку зацикленной) — включает/выключает зацикливание музыкального файла.

Set volume (установить громкость) — устанавливает громкость проигрываемой музыки. Это не влияет на громкость основного звука (master channel). Единицы громкости для музыки другие, это промежуток 0—100, в отличие от громкости звука, который измеряется в децибелах.

Positioned sounds (Позиционированные звуки)

Attach channel to object (прикрепить канал к объекту) — прикрепляет уже играющий канал к объекту. Громкость канала, и сдвиг обновляются в соответствии с тем, где объект находится относительно слушателя.

Autoplay file at object (автоматически проигрывать файл около объекта) — загружает и играет аудио файл на любом канале, который не занят и не зарезервирован. Сдвиг канала, и громкость обновляются в соответствии с тем, где объект находится относительно слушателя.

Autoplay file at position (автоматически проигрывать файл на позиции) — загружает и играет аудио файл на любом канале, который не занят и не зарезервирован. Сдвиг канала, и громкость обновляются в соответствии с тем, где объект находится относительно слушателя.

Autoplay resource at object (автоматически проигрывать ресурс около объекта) — загружает и проигрывает ресурс на любом канале, который не занят и не зарезервирован. Сдвиг канала, и громкость обновляются в соответствии с тем, где объект находится относительно слушателя.

Autoplay resource at position (автоматически проигрывать ресурс на позиции) — загружает и проигрывает ресурс на любом канале, который не занят и не зарезервирован. Сдвиг канала, и громкость обновляются в соответствии с тем, где объект находится относительно слушателя.

Set listener object (установить объект слушателя) — устанавливает объект, который как бы представляет собой слушателя. Все позиционированные звуки (их сдвиг и громкость) меняются в зависимости от расстояния до слушателя.

Set listener position (установить позицию слушателя) — установить X и Y координаты слушателя. Все позиционированные звуки (их сдвиг и громкость) меняются в зависимости от расстояния до слушателя.

Resources (Ресурсы)

Autoplay resource (автопроигрывание ресурса) — загружает ресурс в любой канал, который не занят и не зарезервирован, и начинает проигрывание.

Load resource (загрузить ресурс) — загружает аудио файл в заданный канал. Но он будет остановлен, пока вы не включите действие Play (играть).

Settings (Настройки)

Эти действия просто настраивают свойства позиционированных звуков.

Выражения объекта XAudio2

Audio statistics (Аудио статистика)

Get RMS level (получить уровень RMS) — получает уровень RMS аудио выхода. RMS — это тип среднего уровня с течением времени. Впишите 1 для левого канала и 2 - для правого. Значения варьируются от 0.0 до 1.0.
(RMS (root-mean-square) — означает среднеквадратическое)

Get active channels (получить активные каналы) — получает количество каналов, которые активно читают данные с источника.

Get audio CPU usage% (получить % использования КПУ) — получает, сколько времени CPU тратит на обработку аудио.

Get latency (получить задержку) — получить задержку воспроизведения звука.

Get memory usage (получить использование памяти) — получает число используемой памяти и кэша объектом XAudio2.

Get peak level (получить пиковый уровень) — получает пиковый уровень аудио выхода. Варьируется от 0.0 до 1.0. 1.0 — это уже уровень искажения аудио, т.е. если уровень достигает 1.0, то аудио обрезается и начинает искажаться. Вы должны избегать таких ситуаций, поскольку это значительно снижает качество звука. Впишите 1 как параметр для получения пикового уровня левого канала, и 2 — для правого.

Autoplay (Автоматическое проигрывание)

Get last channel auto played (получить последний канал автопроигрывания) — получает номер канала, который последним использовал действие автопроигрывания. Полезно, если вы хотите использовать автоматическое проигрывание, а потом изменить канал, на котором играл звук.

Channel (Канал)

Get length (получить длину) — длина звука загруженного в выбранный канал, в секундах.

Get position (получить позицию) — текущая позиция проигрывания звука в выбранном канале, в секундах.

Master (Главный канал)

Get master volume (получить громкость канала) — получает громкость главного канала, в децибелах.

Positioned sounds (Позиционированные звуки)

Get listener X (получить Х координату слушателя) — получает Х координату слушателя.

Get listener Y (получить Y координату слушателя) — получает Y координату слушателя.

Get max pan (получить максимальный сдвиг) — получает максимальную настройку сдвига.

Get max volume (получить максимальную громкость) — получает максимальную настройку громкости.

Get min distance (получить минимальное расстояние) — получает минимальную настройку расстояния.

Get min volume (получить минимальную громкость) — получает минимальную настройку громкости.

Get pan distance (получить расстояние сдвига) — получает настройку расстояния сдвига.

Get Rolloff (получить Rolloff factor) — получает настройку Rolloff factor (коэффициент избирательности).



Автор перевода: Mary Jane

Опубликовано: 3 июня, 2010

Категория: Объекты