Как аудио плагин VST обнаруживает прерывания потока от хоста VST? - PullRequest
1 голос
/ 03 августа 2011

Я разработал простой плагин VST. Плагин имеет внутренний буфер с аудиосэмплами, который следует очистить в случае прерывания аудиопотока.

Теперь, если я использую этот плагин в каком-нибудь медиаплеере (например, Foobar с плагином-оболочкой VST) и использую панель поиска, чтобы перейти к какой-либо позиции в песне, или я переключаюсь на новую песню, я все еще слышу хвост предыдущего аудио .

Есть ли какой-либо обратный вызов VST или что-то, что вызывается, чтобы уведомить плагин о таких прерываниях потока?

1 Ответ

3 голосов
/ 04 августа 2011

Нет точного уведомления, но довольно легко увидеть, началось или остановилось воспроизведение. Хост должен вызывать ваш плагин suspend() и resume(), когда транспорт останавливается и начинается соответственно. Во время этих вызовов вы можете запросить у плагина состояние воспроизведения, вызвав getTimeInfo() (который объявлен в audioeffectx.h). Вы можете передать флаги kVstTransportChanged и kVstTransportPlaying, чтобы ваш плагин реагировал соответственно на изменения транспорта.

Однако некоторые хосты могут быть непослушными и не приостанавливать / возобновлять при простом изменении позиции воспроизведения, но не состояния транспорта. Я не уверен, насколько затратным для ЦП является запрос информации о времени во время процесса, но вы можете попробовать сделать это там, чтобы увидеть, прыгает ли хост в расположении.

...