MIDI

По поводу треска / «Хрустящего звука»

Так вот, в основе MIDI в SS14 работает так: У нас есть x буферов по y длины каждый. Синтезирование/рендеринг MIDI происходит в другом потоке, в цикле. Мы заполняем столько буферов, сколько доступно, на каждой итерации. Это означает, что при использовании MIDI-ввода всегда будет некоторая задержка. OpenAL воспроизводит буферы в реальном времени, пока есть хотя бы один буфер, заполненный данными. Но что произойдёт, если OpenAL воспроизводит буферы намного быстрее, чем мы успеваем заполнять их данными? Звук становится хрустящим.

Пользовательские инструменты и вы

Любые саундфонты, найденные в Resources/MidiCustom, будут автоматически загружены в новые рендереры MIDI. Это означает, что вы можете легко создавать свои собственные инструменты для использования в игре! Только помните, что не стоит использовать банк 0, так как он зарезервирован для General MIDI 1. На данный момент у нас есть пользовательский саундфонт под названием space-station-14.sf2. В идеале вам следует добавлять новые инструменты в него, а не создавать новые саундфонты для добавления отдельных инструментов.

Список пользовательских инструментов

БанкПрограммаНазвание
001001Велосипедный клаксон
001002Синтезатор pAI
001003Эуфониум

Программы для редактирования саундфонтов

  • https://www.polyphone-soundfonts.com/
  • http://www.swamiproject.org

Поведение загрузки саундфонтов

Сам Robust поставляется лишь с крошечным встроенным саундфонтом fallback.sf2, который не подходит для воспроизведения разных инструментов. Вместо этого саундфонты автоматически загружаются из стандартных мест в операционной системе. В этом разделе описан точный процесс для отладки (и если вы хотите использовать пользовательский саундфонт как игрок).

Благодаря нижележащей библиотеке FluidSynth Robust может загружать саундфонты в форматах .sf2, .sf3 и .dls.

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

Этап 0: резервный саундфонт

Саундфонт /Midi/fallback.sf2, включённый в Robust, загружается раньше всего остального.

Этап 1: саундфонты операционной системы

Robust автоматически попытается загрузить саундфонт из стандартного места в операционной системе. Пути к файлам следующие:

  • Windows: %SystemRoot%\system32\drivers\gm.dls
  • macOS: /System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls
  • Linux (все пути пробуются по порядку; учтите, что для их наличия может потребоваться установка пакетов, специфичных для дистрибутива):
    • /usr/share/soundfonts/default.sf2
    • /usr/share/soundfonts/default.dls
    • /usr/share/soundfonts/FluidR3_GM.sf2
    • /usr/share/soundfonts/FluidR3_GM2-2.sf2
    • /usr/share/soundfonts/freepats-general-midi.sf2
    • /usr/share/sounds/sf2/default.sf2
    • /usr/share/sounds/sf2/default.dls
    • /usr/share/sounds/sf2/FluidR3_GM.sf2
    • /usr/share/sounds/sf2/FluidR3_GM2-2.sf2
    • /usr/share/sounds/sf2/TimGM6mb.sf2

Этап 2: переменная окружения

Если задана переменная окружения ROBUST_SOUNDFONT_OVERRIDE, Robust загрузит её как саундфонт.

Этап 3: саундфонты контента

Контент может предоставить дополнительные саундфонты для загрузки, включив их в каталог ресурсов /Audio/MidiCustom/. Они будут автоматически загружены здесь.

Этап 4: пользовательские саундфонты

Пользователи могут предоставить дополнительные саундфонты в своём каталоге пользовательских данных, по пути /soundfonts/. Все саундфонты в этом каталоге (если он существует, по умолчанию он не создаётся) будут загружены.

Subpages