выбор звукового шрифта FluidSynth не сохраняется

Звуковой шрифт Fluidsynth возвращается к последнему загруженному полному шрифту при воспроизведении мидифайла. В моем случае timidity-freepats.sf2 (sfont 2).

флюидсинт версия 1.1.10

Вот мои шаги.

Содержимое конфигурационного файла ./nylon-guitar.fs:

load /usr/share/soundfonts/SGM-V2.01.sf2 0
load /usr/share/soundfonts/timidity-freepats.sf2 0
load /usr/share/soundfonts/palm-muted-guitar.sf2 0
select 9 1 128 0
select 0 2 0 24
select 28 3 0 28

Запустите Fluid Synth:

fluidsynth --audio-driver=alsa -o audio.alsa.device=hw:0 -o synth.verbose=1 -f nylon-guitar.fs

> channels -verbose
chan 0, sfont 2, bank 0, preset 24, Nylon-String Guitar
chan 1, sfont 0, bank 0, preset 0, no preset
chan 2, sfont 0, bank 0, preset 0, no preset
chan 3, sfont 0, bank 0, preset 0, no preset
chan 4, sfont 0, bank 0, preset 0, no preset
chan 5, sfont 0, bank 0, preset 0, no preset
chan 6, sfont 0, bank 0, preset 0, no preset
chan 7, sfont 0, bank 0, preset 0, no preset
chan 8, sfont 0, bank 0, preset 0, no preset
chan 9, sfont 1, bank 128, preset 0, STANDARD 1
chan 10, sfont 0, bank 0, preset 0, no preset
chan 11, sfont 0, bank 0, preset 0, no preset
chan 12, sfont 0, bank 0, preset 0, no preset
chan 13, sfont 0, bank 0, preset 0, no preset
chan 14, sfont 0, bank 0, preset 0, no preset
chan 15, sfont 0, bank 0, preset 0, no preset

Пока все выглядит хорошо. Затем я проигрываю миди-файл.

 aplaymidi -p 129:0 midifile.midi

Звуки не такие, как ожидалось, потому что изменился выбор звукового шрифта (шрифт канала 9 изменился с 1 на 2).

>channels -verbose
chan 0, sfont 2, bank 0, preset 24, Nylon-String Guitar
chan 1, sfont 2, bank 0, preset 24, Nylon-String Guitar
chan 2, sfont 0, bank 0, preset 0, no preset
chan 3, sfont 0, bank 0, preset 0, no preset
chan 4, sfont 0, bank 0, preset 0, no preset
chan 5, sfont 0, bank 0, preset 0, no preset
chan 6, sfont 0, bank 0, preset 0, no preset
chan 7, sfont 0, bank 0, preset 0, no preset
chan 8, sfont 0, bank 0, preset 0, no preset
chan 9, sfont 2, bank 128, preset 0, Percussion **sfont changed 1 -> 2
chan 10, sfont 0, bank 0, preset 0, no preset
chan 11, sfont 0, bank 0, preset 0, no preset
chan 12, sfont 0, bank 0, preset 0, no preset
chan 13, sfont 0, bank 0, preset 0, no preset
chan 14, sfont 0, bank 0, preset 0, no preset
chan 15, sfont 0, bank 0, preset 0, no preset

Как я могу позволить выбору звукового шрифта сохраняться при воспроизведении мидифайла? Я пробовал такие настройки, как "-o player.reset-synth=0" и "-o player.reset-synth=1" безрезультатно.


person shoebox    schedule 25.03.2018    source источник


Ответы (1)


Внутри FluidSynth помещает все звуковые шрифты в стек. Поскольку palm-muted-guitar.sf2 загружается последним, он занимает самое верхнее место в стеке. Когда, например. событие изменения программы происходит на канале, FluidSynth просматривает стек звуковых шрифтов сверху вниз в поисках звукового шрифта, который обеспечивает запрошенную комбинацию банка/пресета. palm-muted-guitar.sf2 первым предоставляет перкуссионный инструмент в банке 128, пресет 0, поэтому он выбран.

Тем не менее, ваш MIDI-файл, вероятно, отправляет событие смены программы или банка на канал 9. Вы можете отредактировать MIDI-файл и избавиться от этих событий. Вы можете отредактировать palm-muted-guitar.sf2 и удалить пресет ударных. Или вы можете настроить миди-маршрутизатор, который отбрасывает все события смены программы и банка на этом миди-канале.

player.reset-synth не имеет значения, так как вы не используете миди-плеер Fluidsynth для воспроизведения MIDI-файлов.

person user10654025    schedule 14.11.2018