그것은 이쪽에서 제가 하는 어리석은 짓일 가능성이 더 높습니다 
기본적으로 저는 컨트롤 서페이스에서 플러그인을 제어하고 있습니다:
jrrshop.com/catalog/mackie-c … 951be6cc27
사진을 확대해 보세요 – 어떤 느낌인지 아실 겁니다.
불연속 값 유형(예: Bombardier 모드)의 경우, 서페이스의 32개 VPot(로터리 인코더)에도 스위치 동작이 있다는 점을 활용합니다. VPot 상단을 누름으로써 작동하며, 일반적인 멤브레인 모멘터리 스위치입니다.
각 누름에 따라 사용 가능한 값을 순환하기 위해 테이블 조회 기능을 사용합니다. 이는 로터리 인코더를 사용하여 불연속 값을 설정하는 것보다 훨씬 깨끗하고 예측 가능합니다:
FXSwitchParameter *BombardierMode = new FXSwitchParameter("Mode", 12, this);
BombardierMode->numDiscreetValues = 5;
BombardierMode->discreetValues[0] = 0.0;
BombardierMode->discreetValues[1] = 0.25;
BombardierMode->discreetValues[2] = 0.5;
BombardierMode->discreetValues[3] = 0.75;
BombardierMode->discreetValues[4] = 1.0;
Bombardier->Add(BombardierMode)
또는 Vibe EQ의 경우:
FXComboSwitchParameter *VibeEQMF2Freq = new FXComboSwitchParameter("MF 2 Freq", "", 5, this);
VibeEQMF2Freq->numDiscreetValues = 7;
VibeEQMF2Freq->discreetValues[0] = 0.0;
VibeEQMF2Freq->discreetValues[1] = 0.16;
VibeEQMF2Freq->discreetValues[2] = 0.33;
VibeEQMF2Freq->discreetValues[3] = 0.5;
VibeEQMF2Freq->discreetValues[4] = 0.66;
VibeEQMF2Freq->discreetValues[5] = 0.83333;
VibeEQMF2Freq->discreetValues[6] = 1.0;
VibeEQ->Add(VibeEQMF2Freq)
이 접근 방식은 위에 언급된 두 부분을 제외하고 Bombardier, Rocket, 1973 및 Vibe EQ의 모든 곳에서 완벽하게 작동합니다.
저는 Reaper SDK 호출에서 디버거에 중단점을 설정하여 파라미터 값을 얻었습니다:
value = TrackFX_GetParam(trackSelectedForC4, FXInstances[i].index, currentFXParameter->index, &min, &max);
그리고 다음도 사용합니다:
TrackFX_SetParam(trackSelectedForC4, FXIndex, index, parameterValue);
TrackFX_FormatParamValue(trackSelectedForC4, FXIndex, index, parameterValue, parameterValueString, sizeof(parameterValueString));
예를 들어 Vibe EQ의 경우:
값을 0.8333으로 설정하면 GUI와 플러그인 자체는 6.0KHz로 설정되지만, 위 코드에서 「parameterValueString」으로 보고되는 문자열은 여전히 3150입니다.
값을 1.0으로 더 올리면 모든 것(GUI, 플러그인, 보고된 문자열)이 8.0KHz에서 다시 정렬됩니다.
다른 모든 값은 완벽하게 작동합니다.
Bombardier의 동작은 이전 게시물에 언급되어 있습니다.
이쪽에서 제가 뭔가 잘못하고 있는 건 아닌지 궁금할 뿐입니다.