MIDI
По поводу треска / «Хрустящего звука»
Так вот, в основе MIDI в SS14 работает так: У нас есть x буферов по y длины каждый. Синтезирование/рендеринг MIDI происходит в другом потоке, в цикле. Мы заполняем столько буферов, сколько доступно, на каждой итерации. Это означает, что при использовании MIDI-ввода всегда будет некоторая задержка. OpenAL воспроизводит буферы в реальном времени, пока есть хотя бы один буфер, заполненный данными. Но что произойдёт, если OpenAL воспроизводит буферы намного быстрее, чем мы успеваем заполнять их данными? Звук становится хрустящим.
Пользовательские инструменты и вы
Любые саундфонты, найденные в Resources/MidiCustom, будут автоматически загружены в новые рендереры MIDI. Это означает, что вы можете легко создавать свои собственные инструменты для использования в игре! Только помните, что не стоит использовать банк 0, так как он зарезервирован для General MIDI 1.
На данный момент у нас есть пользовательский саундфонт под названием space-station-14.sf2.
В идеале вам следует добавлять новые инструменты в него, а не создавать новые саундфонты для добавления отдельных инструментов.
Список пользовательских инструментов
| Банк | Программа | Название |
|---|---|---|
| 001 | 001 | Велосипедный клаксон |
| 001 | 002 | Синтезатор pAI |
| 001 | 003 | Эуфониум |
Программы для редактирования саундфонтов
- 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/. Все саундфонты в этом каталоге (если он существует, по умолчанию он не создаётся) будут загружены.