To have a plugin that hatorks inside a DAW we need a common interface to have plugin and DAW talk to each other. The most know interfaces are VST, AU and AAX. These are supported by JUCE as well but only first two are easily available. But are these interfaces compatible with GPL? Lets focus on that this time. And again IANAL!
Wikipedia, please help me!
Audio Units (AU) a system-level plug-in architecture provided by Core Audio in Mac OS X developed by Apple Computer. Audio Units are a set of application programming interface services provided by the operating system to generate, process, receive, or otherwise manipulate streams of audio in near-real-time with minimal latency.
Important is to mention that AU and Core Audio is part of Operation System according to GPL licensing policy.
To start develop AU with JUCE we need some Core Audio Classes. Provided classes are licensed under this license:
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. (“Apple”) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software.
In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in this original Apple software (the “Apple Software”), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated.
The Apple Software is provided by Apple on an “AS IS” basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
I can’t see any licensing problems with GPL and it seems that open source community is clear about AU and GPL software. Some GPL AU exists (AUOSC) and Ardour (a GPLed DAW; distribution contains AU code from Apple) supports AU, Audacity as well. Or Sonic Visualiser: (Update: CoreAudio mailing list agrees.)
Audio Units have their agreement about using logo’s separate. If you do not want to use it you do not have to sign it. More info here.
VST, AudioUnits? Sonic Visualiser cannot support VST plugins directly because Steinberg’s VST license is incompatible with Sonic Visualiser’s GPL license.
Windows and OS/X users can get limited support using the Audacity VST Enabler, and Linux users can try dssi-vst. There is no such problem with AudioUnit; we just haven’t got around to supporting it
As last paragraph described, there are probably some issue with VST. So what is VST? Wikipedia says:
Virtual Studio Technology (VST) is a software interface that integrates software audiosynthesizer and effectplugins with audio editors and recording systems. VST and similar technologies use digital signal processing to simulate traditional recording studio hardware in software. Thousands of plugins exist, both commercial and freeware, and a large number of audio applications support VST under license from its creator, Steinberg.
You can freely download all Steinberg SDK on their website.
To be honest this thread on KVRForum started the whole idea of thinking about VST and GPL compatibility and whole licensing issues. (There is another). And Audacity – well know GPL audio software – dealt with VST vs GPL compatibility issue in 2003. For those who are interested they can read multiple mailing list threads about this topic – there are some.
So basically the issue is that:
The problem is that Audacity and some of the libraries it depends on are distributed under the GPL, which says that in order to distribute a binary version, you must distribute ALL of the source code necessary to build the program. Unfortunately the license for the VST SDK does not allow distributing the source code at all.
This speaks about paragraph 2.3 of VST SDK Agreement (in this article I am referring to 3.6.0 – the latest, but the main issue is the same).
3) The Licensee has no permission to sell, licence, give-away and/or distribute the Licensed Software Developer Kit or parts of it for the use as software developer kit in any way, for example, integrated in any framework application, on any medium, including the Internet, to any other person, including sub-licensors of the Licensee or companies where the Licensee has any involvement. This includes re-working this specification, or reverse-engineering any products based upon this specification.
When you are first author you can do whatever you want – you can add VST exception to GPL license for your app – problem is when you are using other GPL libraries. Audacity got permission from some author (eg. SoundTouch) but author of libsamplerate did not give his. Audacity team solved this by using VST Enabler which was a dynamic library distributed separately which added VST supports to the Audacity as LADSPA wrapper around VST (GPL with VST exception):
Because of licensing issues, VST support must be kept separate from Audacity. This “VST Enabler” is mostly open-source, but the source code to Steinberg’s VST SDK is required, and this must be downloaded from Steinberg separately.
Currently they are using GPL implementation of basic VST structure. So again – for using VST in your GPL code you can add exception – but it became incompatible with other GPL projects you use directly in your code. (And because Audacity dropped this solution they obviously weren’t satisfied with that).
This was also discussed on VST mailing list eg (you have to be signed in the list to see the conversation)
The easiest solution is to have Steinberg release the VST SDK under a license that is compatible with the GPL, which I think just means they need to allow redistribution of the SDK source code by a third party and remove their advertising clause.
Or this (Paul Davis – author of Ardour; thread continues here)
Thank you very much. Just to be clear, all that the open source world requires is the ability to redistribute the SDK without changes. We have no desire to fork the SDK, to modify or anything like that. We just want people to be able to compile our programs without going through your SDK download process. They are not developers, they are just users who happen to work on systems where compiling from source is the norm. We know that it will still be necessary to provide an exception in our programs’ licensing arrangements since we do not expect the SDK to beunder the same license (GPL etc).
and Steinberg official notice was:
Regarding licensing concerns (GPL or others), we, at Steinberg, evaluate the different options and as soon as we have an updated statement we will post it to the mailing list. For the current VST 2.4 SDK (and all others VST 2.x SDK with x < 4), until a new statement is issued, the license model remains the same (included in the SDK and on 3rd party developer Steinberg web page).
I have not found any other information and according to current (3.6.0) license they haven’t change their minds yet.
One good point is that Julian Storer author of JUCE is OK with using JUCE for open-source plugins even with VST support:
But as I’ve said many times on the forum and elsewhere, we actively want people to be developing open-source plugins with JUCE so obviously would never treat people who add the VSTSDK to their project as being in breach. (I should probably mention that our upcoming new licensing model will provide an official route around this issue)
Not-GPL open-source project are not affected when they select proper licence. One example is Worm Hole 2:
Wormhole2 is dependent on Steinberg’s VSTSDK, which is not open-source. In order to build the binaries you’ll need the VSTSDK2.4 as well as some additional files. These files contain parts of the VSTSDK and are available solely from plasq as they cannot be open-sourced.
Sign the agreement to get access to Steinberg’s VSTSDK. Once ‘signed’, please let us know and we’ll send you the files. Contact us here: plasq.com/contact
Although there are some GPL VST plugins some author gave up.
It’s illegal. We (Destroy FX) have done it, but it’s in violation of both Steinberg’s license and our own license (GPL). We just decided to do it anyway. Our AUs are fine, though. This is another part of my reluctance to do anymore DFX plugins for VST (though that leaves it open as to what to do on Windows).
The AU SDK’s license stipulations are wide open, so you can do whatever you want with the code, modify it as you please, and use it in whatever you want.
As previous example with Worm Hole shows – sometimes developers extend current VST features by adding some others as PreSonus does. But you must comply with VST license (Paragraph 2):
4) In case the Licensed Software Developer Kit is modified, it shall not be published, sold or distributed without agreement of Steinberg. Furthermore, the naming of the Licensed Software Developer Kit shall not include “VST3.6.0 SDK” or any combination containing the VST brand without permission of Steinberg.
5) In case the Licensed Software Developer Kit is extended by additional code, it shall not be used in any other description than “(Licensees company name) extension to the Steinberg VST3.6.0 SDK”.
If you are a freelancer working for a company or you are a company which has plugin development outsourced you must read this:
7) If the Licensee is developing a Product, that is using parts or all of the Licensed Software Developer Kit, and this product is not published under his own name but will be published under the name of a third party, this third party has to agree to be bound by Sections 2.1 to 2.3 and 3 of this VST PlugIns SDK Licensing Agreement. The third party has to completely comply with these provisions. If the third party is not in accordance with these conditions, the third party is not allowed to distribute this product which is using parts or all of the Licensed Software Developer Kit.
Another important thing is that developer or Third Party has to sign the VST SDK Agreement and send it to Steinberg. (Another KVR thread.):
8) If the Licensee is planning to publish a Product under his own name or under the name of a third party, that is using parts or all of the Licensed Software Developer Kit, the Licensee is under the obligation to inform Steinberg about it by sending the signed ‘Steinberg VST Plug-In SDK Licensing Agreement’ to Steinberg, either by mail, or by fax.
Section 3 about copyright notices. When you use VST technology you shall promote Steinberg technology. But this is a problem with GPL again – the same as BSD advertising clause (or this).
a) In case that the Licensee is publishing a ‘boxed product’, the Licensee shall display in a visible manner the VST Logo and Steinberg’s copyright notice on the packages. Steinberg’s copyrights notice: ”VST is a trademark and software of Steinberg Media Technologies GmbH”
b) In case that the Product is published without a physical packages (e.g. download), The Licensee shall display the VST Logo and Steinberg’s copyrights notice on the Licensee’s website in the context of the Product.
c) The Licensee shall include the VST Logo and Steinberg’s copyrights notice in
– all electronic documentation, …
– all printed and all electronic advertising materials. …
d) In the ‘about box’ or an alternative place (e.g. help menu, startup screen) of the Product in one of the following formats:
– VST PlugIn Technology by Steinberg Media Technologies,
– VST PlugIn Interface Technology by Steinberg Media Technologies GmbH.
- AU SDK is GPL compatible.
- VST SDK is not GLP compatible (forbidden source code redistribution and advertising note) unless you give an exception (first author) and/or have exception (third party GPL code)
- It is ok to release VST GLP plugins based on JUCE – but you need to figure out other third party code you want to use.
- You have to care when you modify VST SDK.
- To use VST you have to sign the agreement.
- You have to promote VST as licence specifies.
- When working as a freelancer you have to sign the agreement as well as your client.