I recently updated my voicemeeter potato (from 3.0.1.8 to 3.0.2.8) and Equalizer APO (from 1.2.1 to 1.3). After the update, I discovered that the Configurator can only detect one output from VM ("Output A1").
I spent a while digging into EqAPO's source code, and found out that the current mechanism (1.3 source, VoicemeeterAPIInfo.cpp:61 VoicemeeterAPOInfo::prependInfos()
) to detect VM version uses the uninstallation registry of VM to detect if the installed version is vanilla, banana or potato. However, when I updated my VM, my registry looks like this:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\VB:Voicemeeter {17359A74-1236-5467}]
"UninstallString"="C:\\Program Files (x86)\\VB\\Voicemeeter\\Voicemeeter8Setup (1).exe"
Notice that (1)
appended to the file name. I guess that, after a VM reinstall (which is the only way to update it), the new uninstaller wasn't able to overwrite the old one, and the registry points to the new one. Thus setupFilename
would be Voicemeeter8Setup (1).exe
, and line VoicemeeterAPIInfo.cpp:65
fails.
I propose that prependInfos()
can use another mechanism to detect the version of VM. (Apparently VMR doesn't provide this functionality.) A simple fix would be checking whether setupFilename
starts with VoicemeeterPro
or Voicemeeter8
, i.e.
long voicemeeterType = 1;
if (setupFilename.rfind(L"VoicemeeterPro", 0) == 0)
voicemeeterType = 2; // banana
else if (setupFilename.rfind(L"Voicemeeter8", 0) == 0)
voicemeeterType = 3; // potato
Quick fix for me: just rename the uninstaller and change the registry.
It's a bit weird that the term "Voicemeeter8" wasn't found in "Voicemeeter8Setup (1).exe". Anyway, the developer of Equalizer APO isn't doing much on his project so your fix is the best way forward.