Where is Steinberg::Vst::EditControllerEx1.
’
_editController = _plugProvider->getController();
_name = classInfo.name();
FClassID fuid = EditControllerEx1::getFClassID();
EditControllerEx1* ex1;
if (SUCCEEDED(_editController->queryInterface(fuid, (void**)&ex1))) {
std::wcout << "queryInterface controller OK1" << std::endl;
}
else {
std::wcout << "queryInterface controller NG1" << std::endl;
}
’
IT not worked… help… Please.
Is it answer?
Steinberg::Vst::IUnitInfo* unitInfo;
if (SUCCEEDED(_editController->queryInterface(Steinberg::Vst::IUnitInfo::iid, (void**)&unitInfo))) {
std::wcout << "uUnitInfo ok" << std::endl;
unitInfo->addRef();
for (int i = 0; i < unitInfo->getProgramListCount(); ++i) {
Steinberg::Vst::ProgramListInfo info = {};
if (SUCCEEDED(unitInfo->getProgramListInfo(i, info))) {
std::wcout << " Program List " << std::to_wstring(i) << " = " << (const wchar_t*)info.name << std::endl;
}
else {
std::wcout << " Program List " << std::to_wstring(i) << L" = NULLPO " << std::endl;
continue;
}
int count = info.programCount;
char name[512];
Steinberg::Vst::String128 attr;
for (int x = 0; x < count; ++x) {
unitInfo->getProgramName(info.id, x, attr);
std::wcout << L" Program[" << std::to_wstring(i) << L"]" << (const wchar_t*)attr << std::endl;
}
}
unitInfo->release();
}
else {
std::wcout << "uUnitInfo not ok" << std::endl;
}
on KORG M1
Program[15]Program 105
Program[15]Program 106
Program[15]Program 107
Program[15]Program 108
Program[15]Program 109
Program[15]Program 110
Program[15]Program 111
Program[15]Program 112
Program[15]Program 113
Program[15]Program 114
Program[15]Program 115
Program[15]Program 116
Program[15]Program 117
Program[15]Program 118
Program[15]Program 119
Program[15]Program 120
Program[15]Program 121
Program[15]Program 122
Program[15]Program 123
Program[15]Program 124
Program[15]Program 125
Program[15]Program 126
Program[15]Program 127
Program[15]Program 128
hmm, and, anyone know, how to switch program Number from handled MIDI ProgCHG Message.
Im building Program like VST -Hosting.,
Im trying to handle Outside->MIDI->ProgramChange=>VST Programchange.
Thank you.
Checked code of
Ok kProgamId will help me.
Trying…
But, Still Crush.
Anyone could help me? please.
void EasyVstCustom::programChange(int which, int program) {
double newProgram = program;
std::wcout << L"program " << program << std::endl;
_editController->setParamNormalized(_programParameterID, newProgram);
std::wcout << L"new program " << newProgram << std::endl;
Steinberg::Vst::ParameterChanges* changed = parameterChanges(kInput, which);
std::wcout << L"changed " << changed << std::endl;
if (changed != nullptr) {
Steinberg::int32 retIndex;
std::wcout << L"adding " << _programParameterID << " >>>> " << which << std::endl;
#if 1 // but crush
IParamValueQueue* queue = changed->addParameterData(_programParameterID, which);
std::wcout << L"queue " << queue << std::endl;
if (queue != nullptr) {
queue->addPoint(0, newProgram, retIndex);
}
#endif
std::wcout << L"Program changed" << std::endl;
}
else {
std::wcout << L"Cant add parameter" << std::endl;
}
}
Thank you . I got information from some Web-Site. And Did it.
header
ParamID _programParameterID[16];
UnitID _programUnitID[16];
Prepare
int idx, num = _editController->getParameterCount();
int ch = 0;
for (idx = 0; idx < num; ++idx) {
if (_editController->getParameterInfo(idx, _paramInfo) == kResultOk
&& (_paramInfo.flags & ParameterInfo::kIsProgramChange) != 0) {
_programParameterID[ch] = _paramInfo.id;
_programUnitID[ch] = _paramInfo.unitId;
std::cout << "***** programParameterId " << std::to_string(ch) << " = " << _programParameterID[ch] << std::endl;
ch++;
}
}
Invoke
void EasyVstCustom::postProgramChange(int which, int channel, int program) {
BusDirection direction = kOutput;
std::cout << "Program Change : " << channel << " = " << program << std::endl;
double newProgram;
newProgram = _editController->plainParamToNormalized(_programParameterID[channel], program);
ParameterChanges* changed = parameterChanges(kInput, which);
if (changed != nullptr) {
Steinberg::int32 retIndex = 0;
IParamValueQueue* queue = changed->addParameterData(_programParameterID[channel], retIndex);
if (queue != nullptr) {
std::cout << " > Q > " << " <= " << std::to_string(newProgram) << std::endl;
queue->addPoint(0, newProgram, retIndex);
}
}
else {
std::wcout << L"Cant add parameter" << std::endl;
}
}
And here is my progressing Project (JavaGUI based VSTi Host and VST,UWP DLL for Widows10)
And, excuse me.
Asking…
Should I contain License File for my OpenSourceDistribute Zip file (Steinberg’s text file)