This project has moved and is read-only. For the latest updates, please go here.

Using VST.NET for commercial products?

Feb 1, 2011 at 9:24 AM

Hi all,


The license agreement is a bit too ambigous for me... could somebody please tell me if I am allowed to use VST.NET to build commercial VSTs?




Feb 1, 2011 at 5:21 PM
Edited Feb 1, 2011 at 5:23 PM

Yes you may.

- Include a copyright notice for VST.NET (Copyright (c) Jacobi Software 2011)
- Include the license for VST.NET

- You may NOT ask money for VST.NET itself.
- You may charge for your own software build on/with VST.NET.

Assuming you will use the released binaries (signed with my key).

Hope it helps.

Feb 1, 2011 at 6:36 PM

Exactly what I wanted to know, thank you. :-)

Feb 2, 2011 at 7:23 AM
Edited Feb 2, 2011 at 8:10 AM

Hi Marc,

Could you distribute binairies built with the 64 bit flags?

I hope it could fix VST that crashes when calling ProcessReplacing. I tested hosting a dozen plugins and I always get a Read/Write protected memory exception with  "Waldo Largorf " and "shakey-pad vst". They pass fine when calling with SampleFrame=0 but anything higher than that make them crash. I can manage to run both plugin inside phrazor vst which is then hosted in my application with so I guess it could be some kind of buffer size issue.

Thanks for recent update, your work is very apreciated.


Feb 11, 2011 at 5:51 AM
Edited Feb 11, 2011 at 6:11 AM

Great, I found the source of the bug. Plugin was requesting a VSTTimeInfo Structure and tried to read it back without validating the cast. Filling the struct with the right info made it work like magic. :D

        /// <inheritdoc />
        public Jacobi.Vst.Core.VstTimeInfo GetTimeInfo(Jacobi.Vst.Core.VstTimeInfoFlags filterFlags)
            RaisePluginCalled("GetTimeInfo(" + filterFlags + ")");
            vstTimeInfo.SamplePosition = 0.0;
            vstTimeInfo.SampleRate = 44100;
            vstTimeInfo.NanoSeconds = 0.0;
            vstTimeInfo.PpqPosition = 0.0;
            vstTimeInfo.Tempo = 120.0;
            vstTimeInfo.BarStartPosition = 0.0;
            vstTimeInfo.CycleStartPosition = 0.0;
            vstTimeInfo.CycleEndPosition = 0.0;
            vstTimeInfo.TimeSignatureNumerator = 4;
            vstTimeInfo.TimeSignatureDenominator = 4;
            vstTimeInfo.SmpteOffset = 0;
            vstTimeInfo.SmpteFrameRate = new Jacobi.Vst.Core.VstSmpteFrameRate();
            vstTimeInfo.SamplesToNearestClock = 0;
            vstTimeInfo.Flags = 0;

            return vstTimeInfo;

Still, it would be great to have official builds with the 64 bit flag if it does help compatibility.



Feb 11, 2011 at 6:42 AM

Good to hear you found the problem.

I intent to release 64 bit binaries in the v1.0. I've already added the build configurations to the vs-projects.
When v1.0 will be released is not known at this time. The bug reports have sort of dried up (indicating a stable product - which is good ;-) but I want to get as much as possible in there...

BTW: you dont have to init fields to 0 or 0.0. That is handled by .NET and VST.NET. So you can just specify what you use. ;-)


Feb 11, 2011 at 7:12 AM

Hehehe sure :D

This bug was just so involving that I went Overkill with the memset because even the empty struct was not enough. I think the plugin was trying to cast Flags or SmpteFrameRate pointer to some sort of structure to read it's value resulting in some invalid offset (0x0000000 + 39 bytes). The plugin should have checked if TimeInfo struct was null before accessing it's fields.

It's really great that you keep supporting the library.

Feb 11, 2011 at 7:38 AM

Thanx, I do my best ;-)