Как заставить Timidity воспроизводить MIDI-файлы только с синусоидальным инструментом?

У меня установлен Timidity++ со звуковыми шрифтами FluidSynth. Как заставить Timidity воспроизводить любые MIDI-данные, сопоставляя все инструменты с синусоидальным инструментом (патч 81, банк 2, в соответствии с General MIDI Level 2 )?

Я пробовал, например, это в конфигурационном файле Timidity:

map gm2 0 19 2 81

Но он не использовал синусоидальный инструмент для конкретного MIDI-файла, который я воспроизводил (банк 0, патч 19 = инструмент «церковный орган» в этом конкретном файле).

Ответы (2)

Хм, я ничего не могу mapсделать, так что без изучения исходного кода, кто знает. Однако! Если у вас есть файл звукового шрифта, записи конфигурации bankи , похоже, делают свое дело с помощью следующего :number~/share/timidity/timidity.cfg

dir /home/jdoe/share/timidity/inst
bank 0
0 %font tabla_drums.sf2 0 0
1 %font tabla_drums.sf2 0 0
...
127 %font tabla_drums.sf2 0 0

Где /home/jdoe/share/timitidy/instкаталог содержит для этого примера tabla_drums.sf2файл SoundFont. Это отображает тестовые MIDI-файлы для использования табла-барабанов через:

% timidity --config-file=~/share/timidity/timidity.cfg foo.midi

Однако с помощью lspatch.plскрипта в дереве исходного кода timidity и sf_listскрипта MIDI::SoundFontмодуля perl я не могу найти ни шаблонов патча 81 банка 2, ни записей звукового шрифта, поэтому я не уверен, что это могло бы предоставить, поскольку это не похоже присутствует в timidity 2.13.2, ни через звуковой шрифт GeneralUser_GS_1.43-FluidSynth... (если есть файл паттерна с синусоидой, то numberконфигурация будет работать примерно так 0 blah.patи так для всех номеров патчей.)

Другим вариантом было бы отредактировать MIDI и изменить любые patch_changeсобытия для использования определенного инструмента, но это больше работы, и также могут быть события выбора банка, которые также нуждаются в фильтрации.

Опираясь на ответ Трига :

Загрузите Sine Wave.sf2 и поместите его /usr/share/sounds/sf2/(или куда угодно, где находится ваш каталог звуковых шрифтов). Добавить в timidity.cfg(или соответствующий файл, который он использует trysource):

81 %font "Sine Wave.sf2" 2 81 amp=100 pan=0

Из timidity.cfgсправочной страницы:

номер %font file bank prog [клавиша] [опции]
номер %sample file [опции]

Указывает, что номер программы MIDI в текущем банке тембров или наборе ударных должен воспроизводиться с использованием файла патча. Если файл SoundFont, конкретный инструмент с банком , прогой и ключом выводится в формате числа %font . Если файл представляет собой линейные семпловые данные AIFF или WAV, номер программы MIDI указывается в формате числа %sample .

Если вы хотите переназначить:

map MapID1 из-банка из-проги в-банка в-прогу

Существующий тон назначается как тон GS/XG для каждой карты. gm2 , sc55 , sc88 , sc88pro , sc8850, xg и xgsfx64 могут быть указаны как MapID1 .

добавлять

map gm2 0 19 2 81

к timidity.cfgтоже.

Тем не менее, я попробовал это и timidityвсе еще играл оригинальный миди с инструментом Square Lead (банк 0, патч 81), а не Sine Wave (банк 2, патч 81).


Кроме того, Musescore может редактировать MIDI-файлы и легко менять голос на «Sine Wave». См. « Использование пользовательских SoundFonts в MuseScore ».