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
On one hand yes, on the other one, when I am about to build my fortune on basis of a project I might have to scrap just because of a take-down noticeā¦
Everybody needs to make their own mind, both are valid views.
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.