Guitar Pro + VST

26 Сен
2011

Здравствуйте.
Цель статьи — избавиться от RSE в пользу VST.
Нам понадобится:
— виртуальный midi-девайс/драйвер, который сумеет перехватить midi-выход GP: loopbe1
VSTHost
В качестве VST-хоста можно использовать и, к примеру, Fruity Loops, но там мне не удалось сделать привязки «канал-инструмент».

Установка

Устанавливаем LoopBe1, там нет ничего сложного — в системе добавится виртуальный midi-out. Изначально я хотел использовать MidiYoke, который, судя по описанию занимается тем же, но он не оправдал моих надежд под win7.
VSTHost устанавливается методом распаковки архива куда попало.
Настройка + подготовка

Перенаправим midi-выход GuitarPro на LoopBe1 и заодно выключаем RSE:
image
Смысл в том, что midi-команды будут передаваться VST-хосту через LoobBe1. Если понадобится воспроизвести что-то через нативное midi, то можно использовать второй порт.
Добавим дорогу. Установим порт, через который можно обратиться к loopbe, второй канал поставим == первому.
image
Запустим VSTHost, «File»->«Set PlugIn Path» = «C:\Program Files\Steinberg\VstPlugins\» — в моем случае. Загрузим какой-нибудь инструмент, — я загружу RealLPC — симулятор Les Paul’a.
На все midi-input’ы каждого плагина по дефолту идет полный поток команд с midi-порта. Нам нужно отфильтровать все каналы (коих у нас может быть не мало), кроме первого. За этим идем в «Midi Input Settings» -> «Filter Settings». Если не отфильтруем, то все каналы будут воспроизводиться одним инструментом.
image
Далее добавляем GuitarRig. Там же выключаем все midi-каналы на всякий случай. На этот раз нам нужно поставить GuitarRig после RealLPC (Chain After). Ставим галочку там.
image
Идем в Guitar Pro, пробуем что-то проиграть. У меня заработало все с первого раза, думаю сложностей не будет. По аналогии добавляем Broomstick Bass:
image
Только тут нужно в «Midi Settings» -> «Midi Input/Output Devices» -> «Transformations» транспонировать дорогу баса на октаву вверх (куда-то подевали октаву баса, наверное, это связано с управляющей октавой BB) и заодно назначить первый порт: «Set Broomstick’s track in your VST host to output MIDI, and set its MIDI output channel to 1» — иначе наш виртуальный басист будет играть… несколько необычным стилем.
По идее все должно заработать.
Замечания

1. Разработчики loopbe1 решили, что очень хорошо умеют определять петли, о чем сострадательно заявили на сайте: «LoopBe1 has a powerful shortcut detection to avoid MIDI feedback. If a feedback is detected, LoopBe1 will immediately mute its port, interrupt the loop and popup a message. After disabling the malicious MIDI through within your program you can easily enable LoopBe1 again at its systray icon.»
Только вот этот их «shortcut detection» работает слишком тупо и постоянно ловит false-positive срабатывания во время start/stop проигрывания из GP:
image
Еще один наглядный пример того, как не стоит писать софт. Не должно быть никаких невынужденных допущений. Спрашивается: почему все эти недоинтеллекутальности нельзя сделать опциональными, носящими рекомендательный характер?
Зато в трее есть аж целый интерфейс управления кнопкой Mute, которым мы воспользуемся. Я написал простую программулину, которая совершенно тупо тыкает на кнопку Mute. Для этого окно loopbe1 постоянно должно быть открыто. Как только интеллект жмет на mute, все время мы делаем как было.
Взять исходник с тулзой. А весит много, потому что на Qt. Забыл я уже что такое чистый WinAPI. А вспоминать что-то не хочется.
Исходник MainWindow.
2. Не смотря на AutoSave Bank настройки пресетов VSTHost не сохраняет.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх