Как аудиоустройство может обнаружить запуск и останов своего хоста?

Как компонент Audio Unit может обнаружить запуск и остановку хоста Audio Unit?

В компоненте Kernel Process() я попытался использовать метод CallHostTransportState(...), который возвращает, играет хост или нет, поэтому я могу обнаружить первый запуск; но Process() больше не вызывается, когда хост останавливается, поэтому я не могу определить остановку таким образом. И поскольку остановка не обнаружена, я не могу обнаружить следующий запуск, потому что состояние «остановлено» не обнаружено.

Есть идеи?

Спасибо.


person moala    schedule 08.10.2010    source источник


Ответы (1)


Ну, не похоже, что есть конкретное свойство, которое вы можете прослушивать в отношении изменений состояния транспорта хоста, а это означает, что вам нужно будет отслеживать их самостоятельно. На мой взгляд, самый простой способ сделать это — создать новый цикл выполнения (т.е. используя CFRunLoop или NSRunLoop в зависимости от того, находитесь ли вы на уровне C++/Obj-C) и передать ему ссылку на функцию ожидания. , который, в свою очередь, передаст состояние транспорта хоста вашему плагину.

Это задача, которая обычно выполняется путем переопределения idle() в мире VST, но поскольку AudioUnits ориентированы на получение, а не на передачу, вам иногда нужно извлекать информацию и передавать ее в ваш плагин вручную.

person Nik Reiman    schedule 08.10.2010