faust icon indicating copy to clipboard operation
faust copied to clipboard

VST Xcode File Broken

Open Asher- opened this issue 2 years ago • 10 comments

Trying to open the xcode project in architecture/VST causes Xcode to complain:

The project at '/Users/asher/Projects/Source/faust/architecture/VST/VST.xcode' cannot be opened because it is in a future Xcode project file format. Adjust the project format using a compatible version of Xcode to allow it to be opened by this version of Xcode.

Asher- avatar Oct 23 '22 20:10 Asher-

Using XCode Version 13.3.1 (13E500a)

Asher- avatar Oct 23 '22 20:10 Asher-

Apparently VST 2 is a dependency here, and VST 2 SDK is no longer available.

If that is accurate, vst.cpp should be removed from Faust.

If that is not accurate, documentation should be added about how to create a VST plugin and where to get the SDK.

Asher- avatar Oct 23 '22 20:10 Asher-

Following instructions from https://hal.archives-ouvertes.fr/hal-02158978/file/building-faust-cmake.pdf and using https://www.steinberg.net/vst3sdk downloaded vst-sdk_3.7.6_build-18_2022-09-05.zip.

However, following the suggestion to rename sdk3 as 2.4 results in:

(clang-16: fatal error: no such file or directory: '/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp')

And trying sdk 2 with the same path results in:

∴ faust2vst ../faust/examples/generator/sawtoothLab.dsp 
In file included from sawtoothLab.cpp:213:
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:37:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:35:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:35:
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:37:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp:35:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from sawtoothLab.cpp:213:
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:37:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:35:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:35:
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:37:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from /usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp:35:
/usr/local/include/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:37:10: fatal error: 'pluginterfaces/vst2.x/aeffect.h' file not found
#include "pluginterfaces/vst2.x/aeffect.h"      // "c" interface
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: sawtoothLab.vst/Contents/MacOS/sawtoothLab.arm64 (No such file or directory)
../faust/examples/generator/sawtoothLab.vst;

The error is accurate, as neither audioeffect.cpp or pluginterfaces seem to exist in these sdk.

Asher- avatar Oct 24 '22 02:10 Asher-

If possible better use faust2juce.

sletz avatar Oct 24 '22 05:10 sletz

OK— so VST should be removed?

Does this also apply to faustvst.cpp?

Asher- avatar Oct 24 '22 05:10 Asher-

I see there is a faust/tools/faust2appls/unsupported directory. Maybe the name should be needs-updating? It sounds like faust2vst should be there for now, and someone should write faust2vst3 from that. Last I heard faust2au also belongs there (and faust2auv3 is similarly needed). Both faust2vst and faust2au, if revived, should print a "deprecated" warning message, referring users to the '3' versions.

It would be cool if we could think of ways to test these scripts using GitHub WorkFlows. Then it would be obvious when some script needs to be moved to the needs-updating directory, and possibly its maintainer, if any, could be notified to come save it. All this could be automated such that doing nothing results in the file move and a next-release "breaking changes" note explaining why it is no longer in the release.

As I posted on #824, here is how I integrate VST3 plugins written in Faust: https://ccrma.stanford.edu/courses/320c-spring-2022/assignments/15/

josmithiii avatar Oct 24 '22 22:10 josmithiii

I would like to get the current code base separated out— 1. based on layers of implementation 2. based on current vs deprecated vs needs updates.

Right now there is so much mixing of these categories that it makes entry for a new programmer have an incredibly steep barrier.

I'm currently working on my interpretation of this, but I am new to the project so could use input.

Asher- avatar Oct 25 '22 03:10 Asher-

For me the best communication channel is email, e.g., [email protected]. However, people also use Slack. GitHub comments are working well, but it's relatively heavy to have to start with an "issue".

josmithiii avatar Oct 25 '22 07:10 josmithiii

The current situation for VST plugins is a bit complicated:

  • the first developed faust2vst (an external contribution, not maintened anymore by the original author) is not used anymore in the faustservice VST macOS, but still in the Windows scripts (faust2w32vst and faust2w64vst)
  • an modernised version named faust2faustvst (also an external contribution, not maintened anymore by the original author) is used on macOS
  • both of them target the (now obsolete VST2) format. But some people still need that, so what should we do?
  • we don't have "native" faust2vst3 version (and not even faust2au3 TBH), by lack or work resources. We now have faust2juce and possibly this WIP DPF-Fadeli project to possibly solve the "maintenance" issue we have.

sletz avatar Oct 25 '22 09:10 sletz

@sletz Very helpful clarification, thank you!

Asher- avatar Oct 25 '22 16:10 Asher-