Приложение для создания контента для JET Interactive Music Engine
1 Введение
1.1 Обзор
Этот документ содержит руководство пользователя для SONiVOX JET Creator, авторского приложения для создания и прослушивания файлов JET. JET — интерактивный музыкальный проигрыватель для небольших встраиваемых устройств, в том числе под управлением платформы Android. Это позволяет приложениям включать интерактивные музыкальные саундтреки в формате MIDI, которые в режиме реального времени реагируют на игровые события и взаимодействие с пользователем.
JET работает в сочетании со встроенным аудиосинтезатором (EAS) SONiVOX, который является устройством воспроизведения MIDI для Android. Механизмы JET и EAS интегрированы во встроенную платформу Android через класс JetPlayer
, а также встроены в приложение JET Creator. Таким образом, автор контента JET может быть уверен, что воспроизведение будет звучать одинаково как в JET Creator, так и в конечном приложении Android, воспроизводимом на мобильных устройствах Android.
Помимо графического пользовательского интерфейса, в JET Creator есть две основные функции. Первый включает сбор всех исходных данных (MIDI-файлов и файла DLS), добавление атрибутов JET в реальном времени и создание файла JET (.jet), который будет использовать приложение Android. Вторая функция предполагает прослушивание элементов интерактивного воспроизведения в том виде, в каком они будут происходить в приложении Android.
Приложение JET Creator написано на языке программирования Python, поэтому вам необходимо установить текущую версию Python и WXWidgets. Существует версия как для Mac, так и для Windows.
1.2 Сокращения и общие термины
Чтобы свести к минимуму путаницу, важно использовать общий набор терминов. Поскольку JET использует MIDI уникальным образом, обычных отраслевых терминов не всегда может быть достаточно. Вот определения терминов, которые используются на этой странице и в приложении JET Creator:
Канал : MIDI-данные, связанные с определенным MIDI-каналом. Стандарт MIDI допускает 16 каналов MIDI-данных, каждый из которых обычно связан с определенным инструментом.
Контроллер : MIDI-событие, состоящее из номера канала, номера контроллера и значения контроллера. Спецификация MIDI связывает множество номеров контроллеров с конкретными функциями, такими как громкость, экспрессия, педаль сустейна и т. д. JET также использует события контроллера как средство внедрения специальной управляющей информации в MIDI-последовательность для обеспечения синхронизации звука.
DAW : Рабочая станция цифрового аудио. Общий термин для приложений MIDI и аудиосеквенсоров, таких как Logic, SONAR, Cubase и других.
EAS: встроенный MIDI-синтезатор. Название механизма MIDI-синтезатора SONiVOX.
JET : Jet Interactive Engine. Название интерактивного музыкального движка SONiVOX JET.
M/B/T : такты, доли и тики
Сегмент : музыкальный раздел, такой как припев или куплет, который является компонентом общей композиции. В JET сегмент может представлять собой весь MIDI-файл или быть производным от части MIDI-файла.
SMF-0 : стандартный MIDI-файл типа 0, MIDI-файл, который содержит одну дорожку, но может состоять из нескольких каналов MIDI-данных.
SMF-1 : стандартный MIDI-файл типа 1, MIDI-файл, который содержит еще одну дорожку, причем каждая дорожка, в свою очередь, может состоять из одного или нескольких каналов MIDI-данных. По соглашению каждый канал хранится на отдельной дорожке в файле SMF-1. Однако возможно иметь несколько MIDI-каналов на одной дорожке или несколько дорожек, содержащих данные для одного и того же MIDI-канала.
Трек : отдельный трек в DAW, содержащий синхронизированную последовательность событий. Будьте осторожны, не перепутайте треки с каналами. MIDI-файл может содержать множество дорожек, причем несколько дорожек используют один и тот же MIDI-канал.
2. Концепция интерактивной музыки JET
Интерактивную музыку можно определить как музыку, которая меняется в реальном времени в соответствии с непредсказуемыми событиями, такими как взаимодействие с пользователем или игровые события. Таким образом, интерактивная музыка гораздо более привлекательна, поскольку она способна гораздо лучше соответствовать энергии и настроению игры, чем заранее составленная композиция, которая никогда не меняется. В некоторых приложениях и играх интерактивная музыка играет центральную роль в игровом процессе. Guitar Hero — одна из таких популярных игр. Когда конечный пользователь успешно улавливает музыкальные ноты, сходящие с грифа, музыка адаптируется и одновременно ведет учет успехов и неудач. JET также позволяет создавать такие музыкальные игры.
Существует несколько методов создания и управления интерактивной музыкой, и JET — один из таких методов. В этом разделе описаны функции JET и способы их использования в игре или программном приложении. В нем также описывается, как можно использовать JET для экономии памяти в устройствах небольшого размера, таких как мобильные телефоны с поддержкой Android.
2.1.1 Сжатие данных
JET поддерживает гибкий музыкальный формат, который можно использовать для создания расширенных музыкальных последовательностей с минимальным объемом данных. Музыкальная композиция разбивается на сегменты, которые можно соединить в более длинную пьесу. Последовательность может быть фиксирована во время создания музыкального файла или может создаваться динамически под управлением программы.
2.1.2 Пример линейной музыки
Рисунок 1: Линейная музыкальная пьеса
На этой диаграмме показано, как хранятся музыкальные сегменты. Каждый сегмент создается как отдельный MIDI-файл. Инструмент постобработки объединяет файлы в один файл-контейнер. Каждый сегмент может содержать альтернативные музыкальные треки, звук которых можно отключить или включить для создания дополнительного интереса. Примером может служить медный акцент в припеве, который исполняется только в последний раз. Также сегменты можно транспонировать вверх или вниз.
В нижней части диаграммы показано, как можно объединить музыкальные сегменты в линейное музыкальное произведение. В этом примере мост может заканчиваться полутоновой ключевой модуляцией, а оставшиеся сегменты могут быть транспонированы на полтона вверх для соответствия.
2.1.3 Пример нелинейной музыки
Рисунок 2: Нелинейное музыкальное произведение.
На этой диаграмме мы видим нелинейное музыкальное произведение. Сценарий представляет собой шутер от первого лица (FPS), а фоновую музыку предоставляет JET. Вступление воспроизводится во время загрузки уровня, а затем под управлением программы переходит к сегменту поиска. Этот сегмент повторяется бесконечно, возможно, с небольшими вариациями (с использованием функции отключения/включения звука), пока активность в игре не потребует изменения.
Когда игрок приближается к логову монстров, программа запускает синхронный переход к сегменту «Опасность», увеличивая уровень напряжения в звуке. Когда игрок приближается к логову, звук дополнительных треков включается, чтобы усилить напряжение.
Когда игрок вступает в бой с монстром, программа начинает синхронизированный переход к сегменту боя. Сегмент повторяется бесконечно по мере продолжения боя. Бонусный удар временно включает декоративную дорожку, которая уведомляет игрока об успешной атаке, и аналогичным образом временно включается другая дорожка, чтобы указать, когда игрок получает особый урон.
В конце боя музыка переходит к сегменту победы или поражения в зависимости от исхода битвы.
2.1.4 Синхронизация отключения/включения звука
JET также может синхронизировать отключение и включение звука треков с событиями в музыке. Например, в игре FPS, вероятно, было бы желательно разместить музыкальные события, связанные с бонусами и уроном, как можно ближе к реальному игровому событию. Однако простое включение звука дорожки в момент возникновения игрового события может привести к тому, что музыкальный клип начнется с середины. Альтернативно, клип можно запустить с самого начала, но тогда он не будет синхронизирован с другими музыкальными треками.
Однако благодаря механизму синхронизации JET клип можно запустить в следующий подходящий момент и сохранить синхронизацию. Этого можно добиться, разместив несколько коротких музыкальных клипов на декоративной дорожке. MIDI-событие в потоке означает начало клипа, а второе событие означает конец клипа. Когда приложение вызывает функцию JET clip, следующий клип на дорожке может воспроизводиться полностью синхронно с музыкой. При желании трек может быть автоматически отключен вторым MIDI-событием.
Рисунок 3. Синхронизированное отключение/включение звука
2.2 Синхронизация звука
JET предоставляет API синхронизации звука, который позволяет синхронизировать игровой процесс с событиями в аудио. Этот механизм опирается на данные, встроенные в MIDI-файл во время создания контента. Когда механизм JET обнаруживает событие во время воспроизведения, он генерирует обратный вызов прикладной программе. Время обратного вызова можно настроить, чтобы компенсировать любую задержку в системе воспроизведения звука, чтобы можно было синхронизировать звук и видео. На диаграмме ниже показан пример простой музыкальной игры, в которой нужно нажимать стрелки влево и вправо в такт музыке.
Рисунок 4. Музыкальная игра.
Стрелки обозначают события в музыкальной последовательности, где игровые события необходимо синхронизировать. В этом случае синяя стрелка обозначает время, когда игрок должен нажать левую кнопку, а красная стрелка — правую кнопку. Желтая стрелка сообщает игровому движку, что последовательность завершена. Игроку предоставляется определенное временное окно до и после события, чтобы нажать соответствующую клавишу.
Если получено событие и игрок не нажал кнопку, таймер устанавливается на половину длины окна. Если игрок нажимает кнопку до истечения таймера, игра регистрирует успех, а если нет, игра регистрирует неудачу.
Если игрок нажимает кнопку до получения события, таймер устанавливается на половину длины окна. Если событие получено до истечения таймера, игра регистрирует успех, а если нет, игра регистрирует сбой. Игровой процесс также может включать бонусы за приближение к реальному событию.
3 Обзор создания контента JET
Чтобы создавать файлы JET и прослушивать их интерактивное воспроизведение, автор контента будет работать в двух приложениях, которые предназначены для бесперебойной совместной работы. Первое — это любое готовое приложение для MIDI-секвенсора, которое поддерживает плагины VST (для ПК) или AU (для Mac). Здесь автор будет составлять свои музыкальные MIDI-файлы, используя плагин в качестве синтезатора. Второе приложение — это приложение JET Creator. Здесь автор импортирует свои музыкальные файлы MIDI (и, при необходимости, набор звуков DLS2) и устанавливает условия для интерактивного воспроизведения в игре с поддержкой JET. При желании автор контента может создать собственный набор инструментов DLS, используя редактор инструментов, поддерживающий формат DLS Level 2. Одним из таких приложений является Awave от MJSoft.
Дополнительную информацию о создании контента см. в документации JET Content Authoring Guidelines.
4. Установка и запуск JET Creator
JET Creator — это приложение на языке Python, поэтому на вашем компьютере должны быть установлены Python и wxPython.
JetCreator был создан и протестирован с помощью:
Питон версии 2.5.4
wxPython версии 2.8.7.1
Их можно скачать здесь:
ПК:
- http://www.python.org/download/releases/2.5.4/
- http://www.wxpython.org/download.php
МАК:
- http://wiki.python.org/moin/MacPython/Leopard
- http://www.wxpython.org/download.php
После установки Python и wxPython просто разархивируйте или скопируйте все файлы из каталога приложения JET Creator в папку на жестком диске.
Чтобы запустить JET Creator, перейдите в командную строку и укажите каталог, в котором вы установили Python. Затем запустите Python с помощью команды:
python jetcreator.py
5 Использование JET Creator
5.1 Типы файлов
С JET Creator связано несколько различных типов файлов.
.jtc Файл проекта JET Creator. Этот файл содержит всю информацию, связанную с проектом JET Creator. Когда вы сохраняете или сохраняете как из JET Creator, этот тип файла сохраняется.
.jet JET-файл. Этот выходной файл автоматически создается в JET Creator при каждом сохранении проекта JET Creator. Это файл, который объединяет все ресурсы JET в один файл, который будет использовать приложение Android. Передайте этот файл разработчику приложения Android.
Файл .mid. Это стандартный файл MIDI типа 1, который JET Creator будет использовать для создания сегментов.
Файл сегмента .seg. Это файл сегмента JET. Он имеет то же имя, что и MIDI-файл, на который он ссылается, но содержит дополнительную информацию о сегменте.
.zip ZIP-архив. При экспорте архива JET создается zip-файл, содержащий все ресурсы (файлы), необходимые для JET Creator. Используйте это для передачи проектов JET Creator другим людям.
5.2 Открыть диалог
При первом запуске JET Creator вы увидите открытое диалоговое окно, подобное следующему.
Открыть откроет существующий файл .jtc (файл JET Creator). Используйте кнопку браузера, чтобы перейти к каталогу, в котором вы сохранили файл .jtc.
Создать создаст новый файл .jtc.
Импорт импортирует файл архива JET (.zip).
Отмена отменит диалоговое окно и закроет приложение.
5 Главное окно
Главное окно приложения JET Creator выглядит как на картинке ниже. Существует три основных раздела сверху вниз: просмотр сегментов, просмотр событий и временная шкала.
В разделе просмотра сегментов отображается список текущих сегментов, из которых получен каждый из MIDI-файлов и (необязательно) DLS2-файлов. Он также показывает время начала и остановки каждого сегмента, а также настройки квантования, транспонирования, повторения и отключения звука каждого сегмента.
Чуть ниже представления «Сегмент» находится представление событий. В разделе просмотра событий отображаются все события, связанные с данным сегментом. События отображаются только тогда, когда выделен сегмент, которому они назначены. Для каждого события отображается его тип, начальная и конечная точки, назначение трека и MIDI-канала, а также идентификатор события.
Чуть ниже представления «Событие» находится временная шкала. Временная шкала показывает количество измерений в данном сегменте, а также любые события, связанные с этим сегментом. Временная шкала изменится и отобразит текущий выбранный или воспроизводимый сегмент. Вы можете запустить событие в этом окне во время воспроизведения сегмента, просто щелкнув событие на временной шкале.
Главное окно JET Creator
Кнопки в левой части главного окна выполняют следующие действия:
Добавить: отображает окно сегмента или события для добавления нового сегмента или события.
Пересмотреть: отображает окно сегмента или события для обновления существующего сегмента или события.
Удалить: удаляет выбранный сегмент или событие (запрашивается подтверждение).
Переместить: отображает окно перемещения, которое позволяет перемещать выбранные сегменты или события во времени.
В очередь всех: поставить в очередь (выбрать) все сегменты для воспроизведения.
Удалить все из очереди: удаляет из очереди (отменяет выбор) все сегменты.
Воспроизведение: запускает воспроизведение всех сегментов в очереди. Эта кнопка меняется на «Стоп», если воспроизводятся какие-либо сегменты.
Audition: отображает окно Audition (см. ниже).
5.1 Окно сегмента
В окне сегмента назначаются и прослушиваются атрибуты данного сегмента, как показано на рисунке ниже. В левой части окна отображаются атрибуты сегментов, хранящиеся в JET-файле. Правая часть окна позволяет автору устанавливать флажки отключения звука, настройки повтора и транспонирования, а также прослушивать сегмент так, как он будет воспроизводиться в игре JET.
Примечание . Атрибуты прослушивания (флаги отключения звука, повтор и транспонирование) не сохраняются в файле содержимого JET (.jet), а определяются самой игрой или приложением. На языке программирования эти настройки напрямую соответствуют вызовам API механизма JET. Включив их сюда, автор контента JET может смоделировать, как сегмент будет реагировать на команды API приложения во время игры.
Параметры сегмента выполняют следующие действия:
- Имя сегмента — устанавливает имя сегмента.
- MIDI-файл — имя и местоположение MIDI-файла, из которого получен сегмент. Кнопка справа откроет браузер для поиска MIDI-файла на жестком диске.
- Файл DLS — имя и расположение файла DLS2, если таковой имеется, который MIDI-файл использует для этого сегмента.
- Starting M/B/T — начальный такт, доля и тик сегмента.
- Ending M/B/T — конечный такт, доля и тик сегмента.
- Quantize — значение квантования для квантования текущего сегмента во время воспроизведения.
Поля прослушивания следующие:
- Отключение звука трека — показывает MIDI- треки (не каналы) в MIDI-файле. Щелчок по флажку дорожки отключит звук этой дорожки.
- Канал — отображает MIDI-канал, назначенный каждому треку.
- Имя — отображает метасобытие названия трека (если оно есть) для каждого трека.
- Повтор — указывает, сколько раз сегмент должен повторяться во время воспроизведения.
- Транспонирование — указывает транспонирование в полутонах или полушагах, которое сегмент должен транспонировать во время воспроизведения.
- Справа от окна Audition находится несколько дополнительных кнопок. Они делают следующее:
- ОК. Выбор ОК подтверждает все настройки сегмента и закрывает окно сегмента.
- Отмена — выбор «Отмена» отменяет любые изменения и закрывает окно сегмента.
- Реплицировать — отображает окно «Реплицировать сегмент» для одновременного ввода нескольких сегментов. См. ниже.
- Воспроизведение/остановка сегмента — запускает или останавливает воспроизведение сегмента с использованием назначенных атрибутов сегмента.
- Воспроизведение/остановка MIDI-файла — запускает или останавливает воспроизведение MIDI-файла, которому назначен сегмент.
- Пауза/возобновление — приостанавливает или возобновляет воспроизведение.
5.2 Окно событий
В окне событий назначаются и прослушиваются атрибуты события данного сегмента, как показано на рисунке ниже. Чтобы добавить событие в сегмент, автору необходимо сначала выбрать сегмент, который будет содержать событие, а затем нажать кнопку «Добавить». Откроется окно событий.
Окно событий состоит из двух основных разделов. Раздел сегмента в левой части окна событий предназначен только для отображения. Он показывает, каковы атрибуты сегмента для данного сегмента. В разделе «Событие» справа можно назначать события. Доступны следующие параметры:
Имя события — присваивает событию имя.
Тип события — выбирает тип события, которое следует назначить.
Starting M/B/T — устанавливает начальный такт, долю и тик для события.
Ending M/B/T — устанавливает конечный такт, долю и тик события, если применимо.
Трек — устанавливает, к какому треку в данном сегменте будет применяться событие.
Канал — устанавливает, к какому MIDI-каналу будет применено событие. MIDI-канал должен соответствовать MIDI-каналу трека.
Идентификатор события — устанавливает идентификатор события. Одному и тому же сегменту может быть присвоено несколько событий, поэтому для их идентификации используется идентификатор события.
Справа от окна Audition находится несколько дополнительных кнопок. Они делают следующее:
ОК — выбор ОК подтверждает все настройки события и закрывает окно события.
Отмена — выбор «Отмена» отменяет любые изменения и закрывает окно события.
Реплицировать — отображает окно «Реплицировать событие» для одновременного ввода нескольких событий. См. ниже.
Воспроизведение/Стоп — запускает или останавливает воспроизведение сегмента с использованием назначенных атрибутов сегмента. Во время воспроизведения сегмента можно запускать и прослушивать события.
Триггер — запускает назначенное событие. Это копирует команду API, которую игра JET будет использовать для запуска события, тем самым предоставляя автору контента метод для прослушивания поведения события.
Mute/UnMute — Mute/UnMute отключит или включит звук дорожки, на которую назначено событие.
Пауза/возобновление — приостанавливает или возобновляет воспроизведение.
Чтобы прослушать поведение события, вы можете нажать кнопку «Воспроизвести». Это начнет воспроизведение. Кнопка триггера отправит событие триггера при нажатии. Это эквивалентно выбору зеленого события-триггера на временной шкале.
Примечание. Триггерные события предназначены для включения звука одной дорожки сегмента при срабатывании, а затем отключения звука этой дорожки в конце триггерного сегмента. Поэтому вам следует убедиться, что флаг отключения звука установлен для отключения звука трека, звук которого будет включаться при получении события триггера.
Пожалуйста, прочитайте раздел 6 «Под капотом» ниже, чтобы узнать, как работают и ведут себя триггерные события.
5.3 Репликация Windows
Часто при создании файлов JET вам необходимо создать десятки или даже сотни событий. Вам также может потребоваться переместить события. Окна Реплицировать и Переместить позволяют это сделать. Существует два окна репликации для создания нескольких сегментов или событий. Они выглядят следующим образом:
Окно репликации сегмента
Окно репликации событий
Оба окна репликации функционируют одинаково. После создания исходного сегмента или события вы можете нажать кнопку «Реплицировать». Параметры следующие:
Префикс имени — устанавливает префикс для имени каждого созданного сегмента или события.
Начало M/B/T — устанавливает время начала первого сегмента или события.
Приращение M/B/T — устанавливает время между созданными сегментами или событиями.
Число — устанавливает количество сегментов или событий, которые вы хотите создать. Если число превышает длину MIDI-файла (для сегментов) или сегмента (для событий), эти объекты не будут созданы.
Предварительный просмотр. Предварительный просмотр позволяет вам проверить созданные объекты, прежде чем сказать «ОК» для их вставки.
5.4 Перемещение окон
Функция «Переместить» действует аналогично функции «Репликация» в том смысле, что позволяет редактировать несколько сегментов или событий одновременно, в данном случае перемещать их во времени. Как и в случае с репликацией, здесь имеется два окна перемещения: одно для сегментов и одно для событий. Окна выглядят следующим образом:
Переместить окно событий
Чтобы использовать «Перемещение», сначала выберите сегменты или события, которые вы хотите переместить во времени, затем нажмите кнопку «Переместить». Параметры следующие:
Начало M/B/T — устанавливает время начала первого сегмента или события.
Приращение M/B/T — устанавливает время в M/B/T, на которое вы хотите переместить объекты.
Предварительный просмотр. Предварительный просмотр позволяет вам изучить созданные объекты, прежде чем сказать «ОК» для их перемещения.
5.5 Окно прослушивания
Нажатие кнопки «Прослушивание» в главном окне приложения JET Creator откроет окно «Прослушивание». Здесь автор контента или программист приложения может имитировать интерактивное воспроизведение, как оно может происходить в самом мобильном приложении или игре.
Окно прослушивания JET
Окно прослушивания состоит из четырех основных разделов. В крайнем левом разделе отображаются доступные сегменты и их длина в секундах. В средней части отображается текущий список того, какие сегменты поставлены в очередь на воспроизведение и каков их статус воспроизведения. В крайнем правом разделе отображаются флажки отключения звука для текущего воспроизводимого сегмента. Раздел временной шкалы внизу такой же, как и в главном окне. Он отображает воспроизводимый в данный момент сегмент, а также визуальное отображение любых триггеров событий, связанных с этим сегментом.
Окно Audition позволяет вам поставить в очередь любой сегмент в любом порядке для воспроизведения. Для этого просто выберите сегмент, который вы хотите использовать, и нажмите «Очередь». Этот сегмент появится в окне очереди и начнет воспроизводиться (если это первый сегмент). Впоследствии вы можете выбрать любой другой сегмент или сегменты и включить их для воспроизведения. Когда сегменты завершат воспроизведение, начнется воспроизведение следующего сегмента в очереди. Как и в других окнах JET Creator, вы можете отключать и включать звук, запускать клипы событий и т. д. в реальном времени во время воспроизведения каждого сегмента.
В частности, кнопки ведут себя следующим образом:
Очередь — загружает выбранный сегмент в очередь и запускает воспроизведение
Отмена и постановка в очередь — отменяет текущий воспроизводимый сегмент перед постановкой выбранного сегмента в очередь для воспроизведения.
Отменить текущий — отменяет текущий воспроизводимый сегмент в очереди и начинает воспроизведение следующего сегмента.
Стоп — останавливает воспроизведение всех сегментов в очереди.
Mute All — отключает звук всех треков в текущем сегменте.
Mute None — включает звук всех треков в текущем сегменте.
Original Mutes — устанавливает исходные флаги отключения звука для текущего сегмента.
Комбинация этих параметров воспроизведения позволяет автору или программисту приложения прослушивать любое поведение, с которым может столкнуться интерактивное музыкальное приложение.
5.6 Меню JET Creator
Меню JET Creator обеспечивают доступ ко многим параметрам главного окна, а также к нескольким дополнительным параметрам.
5.6.1 Меню «Файл»
Меню «Файл» содержит следующие элементы:
Создать — создает новый файл JET Creator (.jtc).
Открыть — открывает существующий файл JET Creator.
Сохранить — сохраняет открытый в данный момент файл JET Creator.
Сохранить как — сохраняет текущий открытый файл JET Creator в новый файл.
Импорт проекта — импортирует архив JET Creator (.zip).
Экспорт проекта — экспортирует архив JET Creator (.zip).
Выход – выход из приложения.
5.6.2 Меню редактирования
Меню редактирования содержит следующие элементы:
Отменить – Отмена отменит последнее внесенное редактирование.
Redo – Redo вернет последнюю отмену.
Вырезать — скопировать выбранный параметр в буфер обмена и удалить выделение.
Копировать — скопировать выбранный параметр в буфер обмена и сохранить выделение.
Вставить – вставить выбранный параметр.
5.6.3 СТРУЯ
Меню редактирования содержит следующие элементы:
Свойства: вызывает окно приоритетов JET Creator. Это окно позволяет вам установить следующие условия для данного JET-файла:
Информация об авторских правах — содержит информацию об авторских правах, которая будет вставлена в файл JET.
Chase Controllers — возможность преследовать контроллеры (вкл./выкл.). Обычно это должно быть включено.
Удалить пустые дорожки — удаляет все пустые MIDI-треки.
5.6.4 Сегменты
Меню «Сегменты» содержит следующие элементы:
Добавить сегмент — вызывает окно «Сегмент».
Обновить сегмент — обновляет атрибуты сегмента.
Удалить сегмент – удаляет текущий сегмент из списка сегментов.
5.6.5 Помощь
Меню «Справка» будет содержать как минимум следующие элементы:
Справка JET Creator — запуск справочного документа в формате PDF или переход к онлайн-справке.
О программе — номер версии JET Creator, информация SONiVOX.
Объяснение 6 триггерных событий
Разбиение MIDI-файла на отдельные (нелинейные) сегменты и постановка этих сегментов в очередь для воспроизведения в игре на основе событий внутри игры — один из способов сделать музыкальные файлы JET интерактивными. Триггерные события — это дополнительный метод интерактивного воспроизведения. Оба будут использоваться вместе в интерактивной игре или приложении.
Триггерные события позволяют:
- Дорожки внутри MIDI-сегмента можно включать или выключать в зависимости от игровых событий. Например, композитор может написать два барабанных трека: быстрый и медленный. Если действие в игре быстрое, может воспроизводиться быстрая драм-трек. Если действие в игре медленное, может воспроизводиться медленная драм-трек.
- Действия пользователя можно сравнить с триггерными событиями, которые предварительно вставлены в музыкальный файл в музыкально правильных местах. По результатам может происходить подсчет очков или другие игровые действия.
- Музыкальные переходы между уровнями или последовательностями действий можно синхронизировать, чтобы они были музыкально цельными.
Внутри JET использует стандартные события MIDI CC для выполнения этих действий и синхронизации звука. Контроллеры, используемые JET, относятся к числу тех, которые не определены для конкретного использования в спецификации. Конкретные определения контроллера следующие:
Контроллеры 80–83 Зарезервированы для использования приложением.
Маркер событий контроллера 102 JET
Контроллер 103 Маркер зажима JET
Контроллеры 104–119 Зарезервированы для использования в будущем.
6.1 Маркер зажима JET (CC103)
Контроллер 103 зарезервирован для маркировки клипов на MIDI-треке, которые могут быть запущены вызовом API JET_TriggerClip. Идентификатор клипа кодируется в младших 6 битах значения контроллера. Бит 6 установлен в единицу, чтобы указать начало клипа, и установлен в ноль, чтобы указать конец клипа.
Например, чтобы идентифицировать клип с идентификатором клипа 1, автор вставляет событие MIDI-контроллера с контроллером = 103 и значением = 65 в начале клипа и другое событие с контроллером = 103 и значением = 1 в конце клипа. клип. Когда функция JET_TriggerClip() вызывается с идентификатором клипа, равным 1, звук дорожки будет включен при обнаружении значения контроллера 65 и снова отключен при обнаружении значения контроллера 1.
Рисунок 5: Синхронизированный клип
На рисунке выше, если функция JET_TriggerClip() вызывается до первого события контроллера, звук дорожки 3 будет включен при возникновении первого события контроллера, будет воспроизведен первый клип, а звук дорожки будет отключен, когда второй контроллер происходит событие. Если функция JET_TriggerClip() вызывается после того, как произошло первое событие контроллера, звук дорожки 3 будет включен при возникновении третьего события контроллера, будет воспроизведен второй клип, а звук дорожки снова будет отключен, когда произойдет четвертое событие контроллера.
Примечание. Обычно дорожка, содержащая клип, отключается приложением, когда сегмент изначально ставится в очередь вызовом JET_QueueSegment(). Если звук не отключен, клип будет воспроизводиться всегда до тех пор, пока не будет вызвана функция Jet_TriggerClip() с идентификатором клипа.
6.2 Маркер событий JET (CC102)
Контроллер 102 зарезервирован для маркировки событий в MIDI-потоках, специфичных для функций JET. В настоящее время единственным определенным значением является 0, которое отмечает конец сегмента для целей синхронизации.
Обычно JET начинает воспроизведение следующего сегмента (или повторяет текущий сегмент), когда встречается метасобытие конца дорожки MIDI. Некоторые инструменты разработки MIDI затрудняют точное размещение маркера конца дорожки, что приводит к проблемам синхронизации при соединении сегментов.
Чтобы избежать этой проблемы, автор может разместить маркер конца сегмента JET (контроллер = 102, значение = 0) в точке, где сегмент должен быть зациклен. При обнаружении маркера конца сегмента будет запущен следующий сегмент, или, если текущий сегмент зациклен, воспроизведение возобновится с начала сегмента.
Маркер конца сегмента также можно использовать для завершения музыкальной фигуры после окончания такта, который отмечает начало следующего сегмента. Например, автор контента может создать сегмент из 4 тактов с барабанной заливкой, которая заканчивается на первой доле 5 -го такта, т. е. такта за естественным концом сегмента. Поместив маркер конца сегмента в конце четвертого такта, запустится следующий сегмент, но барабанная сбивка будет продолжаться параллельно со следующим сегментом, обеспечивая музыкальную непрерывность.
Рисунок 6: Маркер конца сегмента
6.3 Контроллеры приложений (CC80-83)
Приложение может использовать контроллеры этого диапазона в своих целях. При обнаружении контроллера в этом диапазоне событие помещается в очередь событий, которую может запросить приложение. Некоторые возможные варианты использования включают синхронизацию видеособытий со звуком и маркировку точки в сегменте MIDI для постановки в очередь следующего сегмента. Диапазон контроллеров, контролируемых приложением, может быть изменен приложением во время инициализации.
7 рекомендаций для JET Creator
7.1 Порядок задач
Как и во всех проектах, лучше всего обсудить и разработать интерактивную музыкальную схему с гейм-дизайнером и программистом, прежде чем приступать к созданию композиции. Схема и/или спецификация могут во многом избавить вас от необходимости переделывать вещи после того, как игра будет готова.
Как правило, вам нужно сначала написать музыку в выбранной вами DAW так, как вы привыкли сочинять, а затем разбить окончательный MIDI-файл по мере необходимости для приложения. Затем перейдите в JET Creator и создайте все свои музыкальные сегменты в том порядке, в котором их удобнее всего просматривать при воспроизведении по порядку. Наконец, добавьте события JET для управления сегментами через игру для Android и прослушивайте их по мере необходимости в JET Creator. Наконец, сохраните проект в JET Creator и передайте файл .jet программисту для интеграции его в игру. После предварительного просмотра, скорее всего, будут изменены MIDI-файлы и атрибуты JET Creator.
7.2 Сохранение памяти
Если вы пытаетесь сэкономить память, составляйте как можно меньше MIDI-файлов и создайте несколько сегментов из этого MIDI-файла. Например, 12-тактовый MIDI-файл с тремя секциями по 4 такта: A, B, C может создать гораздо более длинную песню. Просто создайте несколько сегментов, которые ссылаются на один MIDI-файл, а затем расположите их по своему усмотрению. Например, A, A, B, A, C, A, B, A, A создадут песню из 36 тактов. Используйте Jet, чтобы добавить повторения, транспонировать сегменты, и интерактивно отключите и звучат, чтобы сохранить его еще интереснее.
7.3 Replicate
Чтобы сделать добавление сегментов или событий быстрее, используйте команду Replicate. Replicate может добавить несколько сегментов или событий одновременно и использует параметр смещения и соглашение о именах префикса, чтобы облегчить чтение. Команда движения также полезна для перемещения нескольких событий с помощью установленного количества мер, ударов или клещей.
7.4 Интерактивные варианты
Есть несколько интерактивных звуковых концепций, возможных в Jet. Ниже приведены несколько примеров, хотя мы надеемся, что разработчики придумают других, о которых мы не думали! Это:
7.4.1 Запуск множественных сегментов
В этом методе приложение запускает конкретные сегменты на основе событий в игре. Например, коридор с большим количеством боевых действий может вызвать сегмент 1, а коридор без боя может запустить сегмент 2. Использование Jet TriggerClips в сочетании с этим методом создает еще большее разнообразие.
7.4.2 Молочные массивы
В этом методе приложение запускает немые и упомянутые события к конкретным трекам в одной последовательности MIDI. Например, коридор с большим количеством боевых действий может сыграть MIDI-треки 1-16, а коридор без боя может сыграть один и тот же MIDI-файл, но отключить треки 9-16. Использование реактивных триггеров в сочетании с этим методом создает еще больше разнообразия.
7.4.3 Музыкальный игровой процесс
Игровы, управляемые музыкой, похожи на то, что сделали Guitar Hero и Jetboy в том, что музыкальный контент определяет, как отображаются графические события. Затем приложение запрашивает ответ пользователя на графические события и интерактивно изменяет музыку в ответ. В этом методе игра использует события Jet Application, контроллеры MIDI, которые встроены в MIDI-файл и читаются в игре в режиме реального времени. На основании ответа пользователя можно установить несколько массивов и/или MUTE массивов MUTE.