VST GUI Обратная связь (C ++) - PullRequest
       15

VST GUI Обратная связь (C ++)

0 голосов
/ 02 апреля 2011

Я реализовал VST 2.4 GUI (C ++) с 2 вертикальными фейдерами.

В коде я связал 2, так что один масштабируется к другому.Итак, в основном я хочу сказать, что fader2 всегда вдвое меньше значения fader1:

fader1 = 1.0; 
fader2 = fader1 / 2; 

Довольно просто в коде, но какую функциональность мне нужно добавить, чтобы это «возвращалось» обратно в GUI;так что когда ползунок fader1 перемещается, ползунок на fader2 также перемещается (в пропорции) с обновлением отображаемой переменной также?

Я предполагаю, что он должен работать аналогично setParameterAutomated в пределах 'valueChanged'

причина, по которой я это реализую, заключается в том, что у меня есть переключатель, который свяжет 2 фейдера с этим соотношением.Поэтому, когда он выключен, каждый фейдер может быть настроен независимо;но когда он включен, fader1 перемещается, а fader2 перемещается вместе с ним в соотношении 2: 1

1 Ответ

1 голос
/ 27 мая 2011

При перемещении ползунка он вызывает метод-редактор valueChanged (), который, в свою очередь, вызывает эффект setParameterAutomated ().

setParameterAutomated (), внутренне, вызывает setParameter (). Этот метод является виртуальным, вы должны переопределить его так, чтобы он устанавливал значение параметра, связанного со вторым фейдером, равным тому, что вы хотите. Только не забудьте также вызвать AEffectX :: setParameter ().

Тогда, какой бы механизм вы ни использовали для уведомления пользовательского интерфейса об изменениях параметров, сработает, и ваш второй фейдер будет двигаться правильно.

Вы должны сделать это таким образом, чтобы 2-й фейдер перемещался независимо от того, почему 1-й фейдер был перемещен (либо потому, что пользователь перетянул его, либо потому, что хост отправил ему события автоматизации).

...