grame-cncm / faust

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

VST Xcode File Broken #823

Open Asher- opened 1 year ago

Asher- commented 1 year 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 1 year ago

Using XCode Version 13.3.1 (13E500a)

Asher- commented 1 year 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 1 year 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 1 year ago

If possible better use faust2juce.

Asher- commented 1 year ago

OK— so VST should be removed?

Does this also apply to faustvst.cpp?

josmithiii commented 1 year 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 1 year 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 1 year 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 1 year ago

The current situation for VST plugins is a bit complicated:

Asher- commented 1 year ago

@sletz Very helpful clarification, thank you!