Передача параметров от процессора к контроллеру; VST 3.5
Я новичок здесь, прежде всего: "Привет всем!!"
У меня есть искренняя проблема с передачей изменений параметров из процесса () в контроллер через data.outputParameterChanges
, Посмотрите на следующий код (kDataParamId
является идентификатором правильно настроенного параметра):
tresult PLUGIN_API AGain::process (ProcessData& data)
{
IParameterChanges* paramChanges = data.outputParameterChanges;
if (paramChanges)
{
int32 index;
IParamValueQueue* paramQueue =
paramChanges->addParameterData(kDataParamId, index);
if(paramQueue)
{
paramQueue->addPoint(0, 0.1, index);
paramQueue->addPoint(0, 0.2, index);
paramQueue->addPoint(0, 0.3, index);
fprintf(stderr
, "[MyVSTPlugin] paramQueue->getPointCount() == %d\n"
, paramQueue->getPointCount());
}
}
return kResultOk;
}
Что я получаю с этим счетом "1". Более того, setParamNormalized()
(как часть контроллера, который получает изменения параметров) вызывается один раз с хоста с "0.3". Я мог бы быть наивным, но я ожидал, что число точек параметра возвратит "3" и, следовательно, три вызова setParamNormalized()
с 0,1, 0,2 и 0,3. Что мне здесь не хватает????
Любая помощь и комментарии по этому вопросу высоко ценится!
Спасибо Крис
1 ответ
Невозможно отправить параметры обратно в контроллер с процессора, используя изменения параметров. Вам нужно использовать API IConnectionPoint и отправлять сообщения.
Вы можете отправлять аудиопараметры только с контроллера на процессор. И хост также может отправлять процессору напрямую (но хост также уведомляет контроллер, когда он посылает параметр процессору, чтобы контроллер мог обновить представление редактора)
Элемент outputparameterchanges в данных читается только хостом после.
Теперь вопрос также может быть: ПОЧЕМУ вы хотите отправлять сообщения обратно на контроллер с процессора?
Для этого SDK дает пример того, как обновить счетчик обратного вызова аудио, используя сообщения IMessages.