grame-cncm / faust

Functional programming language for signal processing and sound synthesis
http://faust.grame.fr
Other
2.58k stars 322 forks source link

VST Xcode File Broken #823

Open Asher- opened 2 years ago

Asher- commented 2 years ago

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- commented 2 years ago

Using XCode Version 13.3.1 (13E500a)

Asher- commented 2 years ago

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- commented 2 years ago

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.

sletz commented 2 years ago

If possible better use faust2juce.

Asher- commented 2 years ago

OK— so VST should be removed?

Does this also apply to faustvst.cpp?

josmithiii commented 2 years ago

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/

Asher- commented 2 years ago

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.

josmithiii commented 2 years ago

For me the best communication channel is email, e.g., Faudiostream-devel@lists.sourceforge.net. However, people also use Slack. GitHub comments are working well, but it's relatively heavy to have to start with an "issue".

sletz commented 2 years ago

The current situation for VST plugins is a bit complicated:

Asher- commented 2 years ago

@sletz Very helpful clarification, thank you!