Pull to refresh

Guitar Pro + VST

Здравствуйте.

Цель статьи — избавиться от 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 не сохраняет.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.