Here are a few quotes from the EU Directive on the legal protection of computer programs for you:
From article 1, section 2:
Ideas and principles which underlie any element of a computer program, including those which underlie its interfaces, are not protected by copyright under this Directive.
Going back to preamble 10, we see that they are not talking about GUIs here, but software component interfaces:
The parts of the program which provide for […] interconnection and interaction between elements of software and hardware are generally known as ‘interfaces’.
Furthermore, article 5 section 3 says that:
The person having a right to use a copy of a computer program shall be entitled, without the authorisation of the rightholder, to observe, study or test the functioning of the program in order to determine the ideas and principles which underlie any element of the program if he does so while performing any of the acts of loading, displaying, running, transmitting or storing the program which he is entitled to do.
And there you have it. I may not have a law degree, but I honestly think this is a pretty clear cut case.
So anyway, regarding the EU stuff quoted…the question I still have is whether any of the symbol names are the same in reverse engineered headers…and if so…does that go beyond simple binary level interfacing?
This ^^ From my part I am actually going to be possibly doing my next project in VST3 SDK directly because JUCE doesn’t support multiple Event bus for VST3 (multiple midi ports). That is a key feature for me and so I guess I am going to be trying to do it directly in VST3 SDK.
That being said, I still have interest in developing midi plugins primarily, but honestly I don’t have it in me to attempt to reverse engineer anything. I will either use what’s out there and take my chances or do nothing at all. I’m not trying to make a million bucks on anything either, so I’m not too worried about it.
From what I can tell the LegacyCC midi out thing is up to DAW’s to implement support for that. Until they do, there is nothing that can be done with JUCE to support complete midi thru in VST3 I don’t think. This is an old elephant in the room. Steinberg didn’t think this through all the way 10 years ago and its too late now… When I email with Arne he just says, midi plugins are not supported by VST period. he says the fix is for all DAW’s to comply with VST3 spec. Which they don’t. So…it is what it is.
After all this talk, I would much rather that JUCE stepped up and complied with VST3 more fully so that we can move on. Set the standard. Hope for DAW’s to follow that lead. Without breaking VST2 if possible of course.
I’m not really sure which route I’m going to take…
I think I have exhausted all the possibilities now and the next thing I need to do is talk to a lawyer to figure out which one will land me in the least amount of trouble
I can confirm that, as of version 6.04, Reaper now supports VST3 plugins that output LegacyMidiCCOutEvents. After adding the hacks to juce_VST3Common.h suggested by @stephenkhere, I was able to create a VST3 with Juce that lets incoming CC messages pass through and can also generate and output new CC messages. Since LegacyMidiCCOutEvent is slowly but surely gaining acceptance among hosts (including the Juce AudioPluginHost), it would be nice if Juce added official support for it.