COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 08-11-2017, 12:35 PM   #1
david90036
Human being with feelings
 
Join Date: Aug 2017
Posts: 2
Default WDL plugin won't listen to Midi CC Data

Hello, everyone. I'm hoping to find someone who has been able to get WDL-OL to react to MIDI Controller changes such as ModWheel and PitchWheel. I have done much searching on this forum and on the KVR forum, and I find people claiming to have accomplished this, but none whom have shared clear examples of working code. Please note that I've created a VST3 plugin using WDL downloaded as of early 2017, in a Windows 8.1 environment with MS Visual Studio 2013 as my IDE.

To troubleshoot my problem, I created an extremely simplistic plugin that does nothing but pass mData1 and mData2 (regardless of StatusMsg() value) from the IMidiMsg into variables that are then written out to a text file for logging/testing purposes. I can see clearly that when a Note On or Note Off are sent from Cubase to the plugin, I get a line item in my text file that shows the status (8 for NoteOff and 9 for NoteOn) and then the value of the note (data1) and the value of the velocity (data2). However, when any PitchWheel or ControlChange messages are sent from Cubase to the plugin, there are no line entries in the text file whatsoever.

Here is my code for ProcessMidiMsg:

[code]
void TPlugMidiCC::ProcessMidiMsg(IMidiMsg* pMsg)
{
IMidiMsg::EStatusMsg status = pMsg->StatusMsg();
int data1 = (int)pMsg->mData1;
int data2 = (int)pMsg->mData2;
output
<< status
<< " "
<< data1
<< " "
<< data2
<< " "
<< "\n"
;
mMidiQueue.Add(pMsg);
return;
}
[\code]

At first I was trying to get the MidiQueue working from within ProcessDoubleReplacing, but I've now bypassed that altogether to simplify the code in the hopes of getting to the bottom of this problem.

Nevertheless, here is the code from ProcessDoubleReplacing for those who want to see it:

[code]
void TPlugMidiCC::ProcessDoubleReplacing(double** inputs, double** outputs, int nFrames)
{
// Mutex is already locked for us.
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double peakL = 0.0, peakR = 0.0;

GetTime(&mTimeInfo);

for (int offset = 0; offset < nFrames; ++offset, ++in1, ++in2, ++out1, ++out2)
{
while (!mMidiQueue.Empty())
{
IMidiMsg* pMsg = mMidiQueue.Peek();
if (pMsg->mOffset > offset) break;
mMidiQueue.Remove();
}
*out1 = 0.;
*out2 = 0.;
}
mMidiQueue.Flush(nFrames);

_chdir("C:\\Program Files\\AsiData\\Transcribe");
outputfile.open("TPlugMidiCCOutput.txt");
outputfile << output.str();
outputfile.close();
}
[\code]

Again, I know my code is correct, because my text file has line items showing the raw Midi data and status messages as they come in from Cubase. It's just that WDL is ignoring any data that isn't NoteOn/NoteOff or somehow Cubase isn't sending it to the plugin. I'm inclined to believe the former, since I can send controller data to any of my commercially produced VSTi plugins.

There must be some extra step to stop IMidiMsg from filtering out PitchWheel and ControlChange that may have to be written into the underlying library files. It's nothing to do with the switch(status) cases, because I've removed those completely.

Maybe this only happens with Windows 8.1 / VS2013 / Cubase 6? Or am I missing something that needs to be added to the code?

Thanks in advance for any and all assistance.
david90036 is offline   Reply With Quote
Old 08-11-2017, 01:20 PM   #2
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 6,742
Default

Tried building and testing as a VST2 plugin? (I am not sure if you actually even get any benefits when building VST3 with WDL-OL/IPlug...) Is your WDL-OL a current version, where did you get it from?
__________________
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
http://www.sws-extension.org/
https://github.com/Jeff0S/sws
--
Xenakios blog (about HourGlass and λ) :
http://xenakios.wordpress.com/
Xenakios is online now   Reply With Quote
Old 08-11-2017, 03:47 PM   #3
david90036
Human being with feelings
 
Join Date: Aug 2017
Posts: 2
Default SOLVED: VST2 Works, VST3 Doesn't Work

Xenakios, my friend, you're a genius! I compiled it as x64 VST2 and now it works marvelously with Cubase 6. To answer your other question, I downloaded the WDL-OL from Oli Larkin's github. This was several months ago, however. Do you have reason to believe the problem with VST3 has been solved since then?

Edit: Now I see your remark about the lack of benefits when compiling as VST3 with WDL. I guess it's a moot issue then. I'll be making VST2 plugins from here on out, until maybe I 'upgrade' to a VST3 compatible platform.

A thousand thank-you's for your help!!!
david90036 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 09:43 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2017, vBulletin Solutions Inc.