steinbergmedia / vst3sdk Goto Github PK
View Code? Open in Web Editor NEWVST 3 Plug-In SDK
License: Other
VST 3 Plug-In SDK
License: Other
Are there any missing dependencies in the CMakeLists.txt?
user:build$ cmake /path/to/vst3sdk/
-- SMTG_MYPLUGINS_SRC_PATH is not set. If you want to add your own plug-ins folder, specify it!
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.8.1")
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'xcb'
-- Found xcb, version 1.13
-- Checking for module 'xcb-util'
-- No package 'xcb-util' found
CMake Error at /snap/cmake/12/share/cmake-3.14/Modules/FindPkgConfig.cmake:457 (message):
A required package was not found
Call Stack (most recent call first):
/snap/cmake/12/share/cmake-3.14/Modules/FindPkgConfig.cmake:642 (_pkg_check_modules_internal)
vstgui4/vstgui/CMakeLists.txt:78 (pkg_check_modules)
-- Configuring incomplete, errors occurred!
See also "/path/vst3sdk/build/CMakeFiles/CMakeOutput.log".
user:build$
I build vst3sdk on Fedora 29 64 bits.
gcc version is 8.3.1.
I meet the following error during compilation:
[ 92%] Building CXX object public.sdk/samples/vst-hosting/audiohost/CMakeFiles/audiohost.dir/source/audiohost.cpp.o
In file included from /usr/include/c++/8/memory:80,
from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h:40,
from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.h:40,
from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:38:
/usr/include/c++/8/bits/unique_ptr.h: Dans l'instanciation de « typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = Steinberg::Vst::AudioHost::App; _Args = {}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<Steinberg::Vst::AudioHost::App, std::default_delete<Steinberg::Vst::AudioHost::App> >] » :
/home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:63:57: requis depuis ici
/usr/include/c++/8/bits/unique_ptr.h:831:30: error: expression « new » invalide pour le type de classe abstraite « Steinberg::Vst::AudioHost::App »
{ return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:38:
/home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.h:52:7: note: parce que les fonctions virtuelles suivantes sont pures dans « Steinberg::Vst::AudioHost::App »:
class App : public EditorHost::IApplication
^~~
In file included from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.h:40,
from /home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:38:
/home/artelys/repository/github/vst3sdk/public.sdk/samples/vst-hosting/editorhost/source/platform/iapplication.h:56:15: note: « virtual void Steinberg::Vst::EditorHost::IApplication::terminate() »
virtual void terminate () = 0;
^~~~~~~~~
make[2]: *** [public.sdk/samples/vst-hosting/audiohost/CMakeFiles/audiohost.dir/build.make:180: public.sdk/samples/vst-hosting/audiohost/CMakeFiles/audiohost.dir/source/audiohost.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1532: public.sdk/samples/vst-hosting/audiohost/CMakeFiles/audiohost.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Hi,
this is the first time I tried to use the VST3 SDK, so I followed the instructions word by word. But this still fails.
That's what I did:
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
mkdir build
cd build
cmake.exe -G"Visual Studio 15 2017 Win64" ../vst3sdk
cmake outputs:
-- SMTG_VST3_TARGET_PATH is set to : C:/Program Files/Common Files/VST3
-- SMTG_MYPLUGINS_SRC_PATH is not set. If you want to add your own plug-ins folder, specify it!
-- The C compiler identification is MSVC 19.14.26433.0
-- The CXX compiler identification is MSVC 19.14.26433.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR)
-- VSTGUI will use the embedded Expat package!
-- SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!
-- Configuring done
-- Generating done
-- Build files have been written to: F:/VST3Test/build
Then I switched from MSYS to the VS2017 x64 native tools and ran:
msbuild.exe vstsdk.sln >../build.log
from the build folder. The log is attached.
For me it looks like the linker can't create the output files (LNK1104) for some examples because the linker output file has the same name as a directory (eg. pitchnames.vst3) that gets generated beforehand. I guess the linker should actually output in the sub-directory instead.
Regards
Maik
I received the errors below. I assume it has to do with freetype package. I installed freetype2. I still get this error. A list of the prerequisites would be helpful for LINUX installations.
CMake Error at /usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Freetype (missing: FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
Call Stack (most recent call first):
/usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.9/Modules/FindFreetype.cmake:140 (find_package_handle_standard_args)
vstgui4/vstgui/CMakeLists.txt:70 (find_package)
-- Configuring incomplete, errors occurred!
Getting this when compiling with a mingw-w64:
Compiler:
$ i686-w64-mingw32-g++ --version i686-w64-mingw32-g++ (GCC) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Errors
../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp: In member function ‘bool Steinberg::ConstString::scanFloat(double&, Steinberg::uint32, bool) const’: ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1555:44: error: call of overloaded ‘findNext(Steinberg::uint32&, wchar_t)’ is ambiguous if ((pos = str.findNext (offset, STR(','))) >= 0 && ((uint32)pos) >= offset) ^ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1022:7: note: candidate: Steinberg::int32 Steinberg::ConstString::findNext(Steinberg::int32, Steinberg::char8, Steinberg::ConstString::CompareMode, Steinberg::int32) const int32 ConstString::findNext (int32 startIndex, char8 c, CompareMode mode, int32 endIndex) const ^~~~~~~~~~~ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1062:7: note: candidate: Steinberg::int32 Steinberg::ConstString::findNext(Steinberg::int32, Steinberg::char16, Steinberg::ConstString::CompareMode, Steinberg::int32) const int32 ConstString::findNext (int32 startIndex, char16 c, CompareMode mode, int32 endIndex) const ^~~~~~~~~~~ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1556:30: error: call of overloaded ‘setChar(Steinberg::int32&, wchar_t)’ is ambiguous str.setChar (pos, STR('.'));
I suggest adding "ctrl->SetSignalLatency(mWrapper->mProcessor->getLatencySamples());" in AAXWrapper_Parameters::EffectInit() below line 135.
Greetings. Trying to run examples gives me segfault:
openSUSE TW
gcc (SUSE Linux) 6.3.1 20170202 [gcc-6-branch revision 245119]
glbc-2.25
libcairo2-1.15.4
libgtk-3-0-3.22.8
Thread 1 "editorhost" received signal SIGSEGV, Segmentation fault.
0x00007ffff58d5a10 in cairo_scaled_font_status () from /usr/lib64/libcairo.so.2
(gdb) backtrace
#0 0x00007ffff58d5a10 in cairo_scaled_font_status () at /usr/lib64/libcairo.so.2
#1 0x00007fffe97d80fb in VSTGUI::Cairo::Font::Font(char const*, double const&, int const&) (this=0xb040e0, name=0xa39ae0 "Arial", size=@0x7fffe9b20840: 18, style=@0x7fffe9b20848: 0)
at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/platform/linux/cairofont.cpp:299
#2 0x00007fffe97d87b9 in VSTGUI::IPlatformFont::create(char const*, double const&, int const&) (name=0xa39ae0 "Arial", size=@0x7fffe9b20840: 18, style=@0x7fffe9b20848: 0)
at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/platform/linux/cairofont.cpp:397
#3 0x00007fffe977e2c4 in VSTGUI::CFontDesc::getPlatformFont() (this=0x7fffe9b20820 VSTGUI::gNormalFontVeryBig) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cfont.cpp:133
#4 0x00007fffe977e2fd in VSTGUI::CFontDesc::getFontPainter() (this=0x7fffe9b20820 VSTGUI::gNormalFontVeryBig) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cfont.cpp:140
#5 0x00007fffe97772b5 in VSTGUI::CDrawContext::drawString(VSTGUI::IPlatformString*, VSTGUI::CRect const&, VSTGUI::CHoriTxtAlign, bool) (this=0x7fffffffcc70, string=0xb05450, _rect=..., hAlign=VSTGUI::kCenterText, antialias=true)
at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cdrawcontext.cpp:339
#6 0x00007fffe97c2935 in VSTGUI::CParamDisplay::drawPlatformText(VSTGUI::CDrawContext*, VSTGUI::IPlatformString*, VSTGUI::CRect const&) (this=0xabc050, pContext=0x7fffffffcc70, string=0xb05450, size=...)
at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/controls/cparamdisplay.cpp:380
#7 0x00007fffe97c259b in VSTGUI::CParamDisplay::drawPlatformText(VSTGUI::CDrawContext*, VSTGUI::IPlatformString*) (this=0xabc050, pContext=0x7fffffffcc70, string=0xb05450)
at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/controls/cparamdisplay.cpp:345
#8 0x00007fffe97d2df5 in VSTGUI::CTextLabel::draw(VSTGUI::CDrawContext*) (this=0xabc050, pContext=0x7fffffffcc70) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/controls/ctextlabel.cpp:128
#9 0x00007fffe96c18dc in VSTGUI::CView::drawRect(VSTGUI::CDrawContext*, VSTGUI::CRect const&) (this=0xabc050, pContext=0x7fffffffcc70, updateRect=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/../lib/cview.h:90
#10 0x00007fffe97a1e9a in VSTGUI::CViewContainer::drawRect(VSTGUI::CDrawContext*, VSTGUI::CRect const&) (this=0xabb670, pContext=0x7fffffffcc70, updateRect=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cviewcontainer.cpp:786
#11 0x00007fffe97a1e9a in VSTGUI::CViewContainer::drawRect(VSTGUI::CDrawContext*, VSTGUI::CRect const&) (this=0xabb3f0, pContext=0x7fffffffcc70, updateRect=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cviewcontainer.cpp:786
#12 0x00007fffe977f4cf in VSTGUI::CFrame::drawRect(VSTGUI::CDrawContext*, VSTGUI::CRect const&) (this=0xabb3f0, pContext=0x7fffffffcc70, updateRect=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cframe.cpp:306
#13 0x00007fffe9783153 in VSTGUI::CFrame::platformDrawRect(VSTGUI::CDrawContext*, VSTGUI::CRect const&) (this=0xabb3f0, context=0x7fffffffcc70, rect=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/cframe.cpp:1483
#14 0x00007fffe97e1caa in VSTGUI::X11::GtkFrame::on_draw(Cairo::RefPtrCairo::Context const&) (this=0xabc988, cr=...) at /home/kv/src/VST_SDK/VST3_SDK/vstgui4/vstgui/lib/platform/linux/x11frame.cpp:350
#15 0x00007ffff49a1cf1 in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib64/libgtkmm-3.0.so.1
#16 0x00007ffff6ab35ab in gtk_widget_draw_internal (widget=widget@entry=0x8d8210, cr=cr@entry=0xac13e0, clip_to_size=clip_to_size@entry=1) at gtkwidget.c:7017
#17 0x00007ffff6897190 in gtk_container_propagate_draw (container=container@entry=0x7273c0, child=0x8d8210, cr=cr@entry=0xac13e0) at gtkcontainer.c:3838
#18 0x00007ffff6901af1 in gtk_fixed_draw (widget=0x7273c0, cr=0xac13e0) at gtkfixed.c:588
#19 0x00007ffff49a1d7c in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib64/libgtkmm-3.0.so.1
#20 0x00007ffff6ab35ab in gtk_widget_draw_internal (widget=widget@entry=0x7273c0, cr=cr@entry=0xac13e0, clip_to_size=clip_to_size@entry=1) at gtkwidget.c:7017
#21 0x00007ffff6897190 in gtk_container_propagate_draw (container=container@entry=0xaa70a0, child=0x7273c0, cr=cr@entry=0xac13e0) at gtkcontainer.c:3838
#22 0x00007ffff6897272 in gtk_container_draw (widget=0xaa70a0, cr=0xac13e0) at gtkcontainer.c:3658
#23 0x00007ffff6ac1331 in gtk_window_draw (widget=0xaa70a0, cr=0xac13e0) at gtkwindow.c:10212
#24 0x00007ffff49a1d7c in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib64/libgtkmm-3.0.so.1
#25 0x00007ffff6ab35ab in gtk_widget_draw_internal (widget=0xaa70a0, cr=0xac13e0, clip_to_size=) at gtkwidget.c:7017
#26 0x00007ffff6abc8a8 in gtk_widget_render (widget=widget@entry=0xaa70a0, window=0x6e5660, region=) at gtkwidget.c:17503
#27 0x00007ffff695b5aa in gtk_main_do_event (event=0x7fffffffd340) at gtkmain.c:1824
#28 0x00007ffff6460f35 in _gdk_event_emit (event=event@entry=0x7fffffffd340) at gdkevents.c:73
#29 0x00007ffff64715c8 in _gdk_window_process_updates_recurse_helper (window=0x6e5660, expose_region=) at gdkwindow.c:3841
#30 0x00007ffff64727c6 in gdk_window_process_updates_internal (window=0x6e5660) at gdkwindow.c:3987
#31 0x00007ffff64729c4 in gdk_window_process_updates_with_mode (window=, recurse_mode=) at gdkwindow.c:4185
#32 0x00007ffff506c905 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#33 0x00007ffff507e912 in () at /usr/lib64/libgobject-2.0.so.0
#34 0x00007ffff508756c in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#35 0x00007ffff508794f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#36 0x00007ffff6469f3f in _gdk_frame_clock_emit_paint (frame_clock=) at gdkframeclock.c:640
#37 0x00007ffff646a609 in gdk_frame_clock_paint_idle (data=0x7073a0) at gdkframeclockidle.c:430
#38 0x00007ffff6455808 in gdk_threads_dispatch (data=0x7ffec0) at gdk.c:743
#39 0x00007ffff4d93fc3 in () at /usr/lib64/libglib-2.0.so.0
#40 0x00007ffff4d9354a in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#41 0x00007ffff4d93900 in () at /usr/lib64/libglib-2.0.so.0
#42 0x00007ffff4d939ac in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#43 0x00007ffff695a871 in gtk_main_iteration_do (blocking=0) at gtkmain.c:1437
#44 0x0000000000426000 in Steinberg::Vst::EditorHost::Platform::eventLoop() (this=0x686fa0 Steinberg::Vst::EditorHost::Platform::instance()::gInstance)
---Type to continue, or q to quit---
at /home/kv/src/VST_SDK/VST3_SDK/public.sdk/samples/vst/editorhost/source/platform/linux/platform.cpp:218
#45 0x0000000000425f8b in Steinberg::Vst::EditorHost::Platform::run(std::vector<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > > > const&) (this=0x686fa0 Steinberg::Vst::EditorHost::Platform::instance()::gInstance, cmdArgs=std::vector of length 1, capacity 1 = {...}) at /home/kv/src/VST_SDK/VST3_SDK/public.sdk/samples/vst/editorhost/source/platform/linux/platform.cpp:186
#46 0x00000000004261dc in main(int, char**) (argc=2, argv=0x7fffffffdcb8) at /home/kv/src/VST_SDK/VST3_SDK/public.sdk/samples/vst/editorhost/source/platform/linux/platform.cpp:251
With VST2 being deprecated, a lot of higher order Ambisonics plugin manufacturers struggle with portion to VST3, as there's no suitable loudspeaker layout for higher order Ambisonics, speaking up to 7th order -> 64 channels.
Especially, plug-ins with variable order struggle, as there's no discreteChannel
layout anymore, especially as discrete layouts aren't allowed to be the default layout (well at least JUCE states that with an assertion).
Even when forced, plug-ins hosts won't send more than 24 channels of audio (22.2?), as it seems to be the layout with the highest amount of channels. However, that number varies from host to host.
Decoders/renderers to 3d audio loudspeaker arrays also struggle as those arrays don't have to be regular/standard layouts.
It's not solely a problem with Ambisonic plug-ins, as there are other multi-channel plug-ins out there, which support an arbitrary number of input channels (sources) which will be encoded into a different format, e.g. up to 64 sources into a panner. Also these 64 input channels need a layout for arbitrary inputs.
The issue has been already discussed here:
https://sdk.steinberg.net/viewtopic.php?f=4&t=549
https://sdk.steinberg.net/viewtopic.php?f=4&t=624
So, please add a configuration for discrete channels, as already proposed by Yvan Grabit in the first linked thread!
I'm trying to build your project for the first time. I cloned the repository and was following the instructions on the main page. I created a build directory and tried to build the project using cmake ../vst3sdk
. The project failed to build and produced a long error report. How do I build this?
Here's my log:
CMakeOutput.log
D:\dev\github.com\build>cmake.exe -G"Visual Studio 15 2017 Win64" ../vst3sdk
CMake Error at CMakeLists.txt:10 (include):
include could not find load file:
Global
CMake Error at CMakeLists.txt:11 (include):
include could not find load file:
AddVST3Library
CMake Error at CMakeLists.txt:12 (include):
include could not find load file:
Bundle
CMake Error at CMakeLists.txt:13 (include):
include could not find load file:
ExportedSymbols
CMake Error at CMakeLists.txt:14 (include):
include could not find load file:
PrefixHeader
CMake Error at CMakeLists.txt:15 (include):
include could not find load file:
PlatformIOS
CMake Error at CMakeLists.txt:16 (include):
include could not find load file:
PlatformToolset
CMake Error at CMakeLists.txt:17 (include):
include could not find load file:
CoreAudioSupport
CMake Error at CMakeLists.txt:18 (include):
include could not find load file:
AAXSupport
CMake Error at CMakeLists.txt:19 (include):
include could not find load file:
VstGuiSupport
CMake Error at CMakeLists.txt:20 (include):
include could not find load file:
UniversalBinary
CMake Error at CMakeLists.txt:21 (include):
include could not find load file:
AddVST3Options
-- The C compiler identification is MSVC 19.14.26430.0
-- The CXX compiler identification is MSVC 19.14.26430.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:28 (setupPlatformToolset):
Unknown CMake command "setupPlatformToolset".
-- Configuring incomplete, errors occurred!
See also "D:/dev/github.com/build/CMakeFiles/CMakeOutput.log".
[ 17%] Built target vstgui
[ 18%] Building CXX object vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/editing/uieditmenucontroller.cpp.o
/home/nirban/JUCE/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/editing/uieditmenucontroller.cpp: In instantiation of ‘VSTGUI::UIEditMenuController::getChildrenOfType(VSTGUI::CViewContainer*, VSTGUI::UTF8StringView, std::vectorVSTGUI::CView*&) const::<lambda(auto:9)> [with auto:9 = VSTGUI::SharedPointerVSTGUI::CView]’:
/home/nirban/JUCE/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/editing/../../lib/cviewcontainer.h:291:8: required from ‘void VSTGUI::CViewContainer::forEachChild(Proc) const [with Proc = VSTGUI::UIEditMenuController::getChildrenOfType(VSTGUI::CViewContainer*, VSTGUI::UTF8StringView, std::vectorVSTGUI::CView*&) const::<lambda(auto:9)>]’
/home/nirban/JUCE/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/editing/uieditmenucontroller.cpp:729:3: required from here
/home/nirban/JUCE/VST_SDK/VST3_SDK/vstgui4/vstgui/uidescription/editing/uieditmenucontroller.cpp:727:4: error: cannot call member function ‘void VSTGUI::UIEditMenuController::getChildrenOfType(VSTGUI::CViewContainer, VSTGUI::UTF8StringView, std::vectorVSTGUI::CView*&) const’ without object
getChildrenOfType (c, type, result);*
^
vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/build.make:494: recipe for target 'vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/editing/uieditmenucontroller.cpp.o' failed
make[2]: *** [vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/editing/uieditmenucontroller.cpp.o] Error 1
CMakeFiles/Makefile2:205: recipe for target 'vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/all' failed
make[1]: *** [vstgui4/vstgui/uidescription/CMakeFiles/vstgui_uidescription.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
I believe there is a bug with VST3TestHost that means it doesn't properly respect IMidiMapping for SingleComponentEffect plugins. The MIDI mapping works in Reaper and Cubase.
The following warning is generated by clang on macOS:
pluginterfaces/base/funknown.cpp:73:9: warning: 'OSAtomicAdd32Barrier' is deprecated: first deprecated in macOS 10.12 - Use std::atomic_fetch_add() from <atomic> instead
[-Wdeprecated-declarations]
return OSAtomicAdd32Barrier (d, (int32_t*)&var);
^
/usr/include/libkern/OSAtomicDeprecated.h:161:9: note: 'OSAtomicAdd32Barrier' has been explicitly marked deprecated here
int32_t OSAtomicAdd32Barrier( int32_t __theAmount, volatile int32_t *__theValue );
^
1 warning generated.
This warning is really annoying in CI and command line test runs.
The AAX Wrapper exposes an additional parameter named "Bypass" additionally to a "Master Bypass" provided by an underlying VST3 implementation that is flagged as ParameterInfo::kIsBypass.
A bypass parameter should only be simulated if the VST3 does not expose a bypass parameter at all, hence the condition:
mSimulateBypass = (mWrapper->mBypassParameterID != Vst::kNoParamId);
in the AAXWrapper_Parameters ctor should be inverted to
mSimulateBypass = (mWrapper->mBypassParameterID == Vst::kNoParamId);
However, doing so stops the existing VST3 bypass parameter from working, so it seems there's more logic depending on mSimulateBypass that's broken.
The wrong set of parameters is added in AAXWrapper_Parameters::EffectInit() (see screenshot).
You can see the faulty extra Bypass parameter described in #11.
Besides that the "Wet Mix" and "Level" parameters are missing, although they are marked as automatable and they are correctly exposed in VST2, VST3 and AU.
I have also inspected the loop that sets up mParameterMap in Vst2Wrapper::setupParameters() which correctly iterates the expected parameters. The loop in AAXWrapper_Parameters::EffectInit(), however then finds and adds the wrong set of parameters that can also be seen in the screenshot.
The following code can cause stack overflows on Linux with both clang/gcc when printing to stdout from inside a plugin (for debugging purposes)
std::u16string printf (const char8* format, ...)
{
using VST3::StringConvert::convert;
char8 string[1024 * 4]; // <<<<<< offending line
va_list marker;
va_start (marker, format);
vsnprintf (string, kPrintfBufferSize, format, marker);
return convert (string).data ();
}
Fix:
std::u16string printf (const char8* format, ...)
{
using VST3::StringConvert::convert;
std::string string;
string.reserve(1024 * 4);
va_list marker;
va_start (marker, format);
vsnprintf (&string[0], kPrintfBufferSize, format, marker);
return convert (string).data ();
}
In /testsuite/busconsistency
randIndex = rand () % (numBusses);
this generates a number between 0
and RAND_MAX
when numBusses == 1
. I get that there should be at least one event and one audio bus so this shouldn't be an issue, but when testing other issues it came up.
I encountered a build failure on Fedora 29 after the first plugin (adelay) passed its TestSuite run, when the build process attempted to link it into ${TARGET_DESTINATION}
(which is ${HOME}/.vst3/
by default), without first ensuring that the directory exists.
PR steinbergmedia/vst3_cmake#1 addresses this issue, by adding a mkdir -p "${TARGET_DESTINATION}"
prior to the ln -sfF
command.
This is what is currently in the wiki:
git pull https://github.com/steinbergmedia/vst3sdk.git
cd vst3sdk
git submodules init
git submodules update
I’m still a bit of a noob with git but shouldn't this be clone instead of pull?
Also is a typo. It should be git submodules
git submodule
instead.
It would be nice to have the documentation hosted online somewhere. Having to download the SDK to view it is inconvenient.
It appears the license file in the top directory expressly states that it only applies to files that reference it. (see https://github.com/steinbergmedia/vst3sdk/blob/master/LICENSE.txt#L5 )
However it seems that many files required to compile a plugin do not reference the license and show they are still under the custom Steinberg license. From what I can see all files in public.sdk/source/ are in this scenario and they are required for building a plugin. I believe this means no vst can be made gpl compatible using the SDK since some of the code that gets compiled into the binary is not covered by the dual license.
Hopefully its just a mistake and these files' headers can be edited to include the dual licensing.
Thanks. Its very exciting to see Steinberg working toward supporting the GPL.
=================================================================
==31886==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x6070000727f0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 72 bytes;
size of the deallocated type: 48 bytes.
#0 0x7f616246e421 in operator delete(void*, unsigned long) /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cc:151
#1 0x7f6160de10aa in Gtk::Container::foreach(sigc::slot<void, Gtk::Widget&, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&) (/usr/lib/libgtkmm-3.0.so.1+0x3300aa)
#2 0x7f6160de1215 in Gtk::Container::show_all_children(bool) (/usr/lib/libgtkmm-3.0.so.1+0x330215)
#3 0x5625a698061c in Steinberg::Vst::EditorHost::WindowGtk::WindowGtk() ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:84
#4 0x5625a697f92d in Steinberg::Vst::EditorHost::X11Window::Impl::Impl(Steinberg::Vst::EditorHost::X11Window*) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:344
#5 0x5625a697f605 in Steinberg::Vst::EditorHost::X11Window::X11Window() ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:267
#6 0x5625a69859fd in void __gnu_cxx::new_allocator<Steinberg::Vst::EditorHost::X11Window>::construct<Steinberg::Vst::EditorHost::X11Window>(Steinberg::Vst::EditorHost::X11Window*) /usr/include/c++/7.2.1/ext/new_allocator.h:136
#7 0x5625a69855aa in void std::allocator_traits<std::allocator<Steinberg::Vst::EditorHost::X11Window> >::construct<Steinberg::Vst::EditorHost::X11Window>(std::allocator<Steinberg::Vst::EditorHost::X11Window>&, Steinberg::Vst::EditorHost::X11Window*) /usr/include/c++/7.2.1/bits/alloc_traits.h:475
#8 0x5625a6984ddf in std::_Sp_counted_ptr_inplace<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<>(std::allocator<Steinberg::Vst::EditorHost::X11Window>) /usr/include/c++/7.2.1/bits/shared_ptr_base.h:526
#9 0x5625a6983fee in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, Steinberg::Vst::EditorHost::X11Window*, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.1/bits/shared_ptr_base.h:637
#10 0x5625a6982e4b in std::__shared_ptr<Steinberg::Vst::EditorHost::X11Window, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.1/bits/shared_ptr_base.h:1295
#11 0x5625a6982383 in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window>::shared_ptr<std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.1/bits/shared_ptr.h:344
#12 0x5625a698198b in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window> std::allocate_shared<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.1/bits/shared_ptr.h:691
#13 0x5625a69810e7 in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window> std::make_shared<Steinberg::Vst::EditorHost::X11Window>() /usr/include/c++/7.2.1/bits/shared_ptr.h:707
#14 0x5625a697f4f2 in Steinberg::Vst::EditorHost::X11Window::make(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Steinberg::Vst::EditorHost::Size, bool, std::shared_ptr<Steinberg::Vst::EditorHost::IWindowController> const&, _XDisplay*, std::function<void (Steinberg::Vst::EditorHost::X11Window*)> const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:256
#15 0x5625a69733ca in Steinberg::Vst::EditorHost::Platform::createWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Steinberg::Vst::EditorHost::Size, bool, std::shared_ptr<Steinberg::Vst::EditorHost::IWindowController> const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:127
#16 0x5625a695e029 in Steinberg::Vst::EditorHost::App::createViewAndShow(Steinberg::Vst::IEditController*) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:213
#17 0x5625a695dc75 in Steinberg::Vst::EditorHost::App::openEditor(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, VST3::Optional<VST3::UID>, unsigned int) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:187
#18 0x5625a695e496 in Steinberg::Vst::EditorHost::App::init(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:262
#19 0x5625a697373d in Steinberg::Vst::EditorHost::Platform::run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:185
#20 0x5625a69739cc in main ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:251
#21 0x7f615fea5222 in __libc_start_main (/usr/lib/libc.so.6+0x24222)
#22 0x5625a695cba9 in _start (/home/abique/develop/vst3sdk/build/bin/editorhost+0x1bba9)
0x6070000727f0 is located 0 bytes inside of 72-byte region [0x6070000727f0,0x607000072838)
allocated by thread T0 here:
#0 0x7f616246cd29 in operator new(unsigned long) /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cc:90
#1 0x7f6160de20e1 in sigc::internal::typed_slot_rep<sigc::mem_functor0<void, Gtk::Widget> >::dup(void*) (/usr/lib/libgtkmm-3.0.so.1+0x3310e1)
SUMMARY: AddressSanitizer: new-delete-type-mismatch /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cc:151 in operator delete(void*, unsigned long)
==31886==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
==31886==ABORTING
Sample projects are not building in VS 2015, VS2017, Clion Cmake. Cmake error.
Issue:
On a clean install of Mac osx Mojave, simply cloning the directory and trying to build with command line tools will fail. Due to deployment target being 10.8 not 10.9
Steps to reproduce:
cmake -DCMAKE_BUILD_TYPE=DEBUG ../
Expected Output
Successful build
Actual Output
"/Library/Developer/CommandLineTools/usr/bin/c++"
is not able to compile a simple test program.
It fails with the following output:
...
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]
My resolution:
vst3sdk/cmake/modules/Global.cmake Line 81:49
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "macOS deployment target")
rather than
et(CMAKE_OSX_DEPLOYMENT_TARGET "10.8" CACHE STRING "macOS deployment target")
After this change running cmake -DCMAKE_BUILD_TYPE=DEBUG ../
the build runs successfuly
Hi. I've got this error.
OpenSUSE TW gcc 7.2.1
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp: In member function ‘virtual bool Steinberg::Vst::AudioClient::process(Steinberg::Vst::IAudioClient::Buffers&, int64_t)’:
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp:307:22: error: no matching function for call to ‘Steinberg::Vst::AudioClient::postprocess(Steinberg::Vst::IAudioClient::Buffers&)’
postprocess (buffers);
^
In file included from /home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp:38:0:
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.h:105:7: note: candidate: void Steinberg::Vst::AudioClient::postprocess()
void postprocess ();
^~~~~~~~~~~
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.h:105:7: note: candidate expects 0 arguments, 1 provided
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp: At global scope:
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp:312:6: error: prototype for ‘void Steinberg::Vst::AudioClient::postprocess(Steinberg::Vst::IAudioClient::Buffers&)’ does not match any in class ‘Steinberg::Vst::AudioClient’
void AudioClient::postprocess (Buffers& buffers)
^~~~~~~~~~~
In file included from /home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.cpp:38:0:
/home/kv/src/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/media/audioclient.h:105:7: error: candidate is: void Steinberg::Vst::AudioClient::postprocess()
void postprocess ();
^~~~~~~~~~~
Hi!
It looks like cmake is broken in newest release (but works in previous):
I did everything according to README.md for Windows (Win10, VS 16 2019)
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
cd vst3sdk && mkdir build && cd build
cmake.exe -G "Visual Studio 16 2019" -A x64 ../
This gives errors:
cmake.exe -G "Visual Studio 16 2019" -A x64 ../
CMake Error at cmake/modules/AddVST3Options.cmake:31 (file):
file problem creating directory: C:/Program Files/Common Files/VST3
Call Stack (most recent call first):
cmake/modules/SMTG_VST3_SDK.cmake:13 (include)
CMakeLists.txt:10 (include)
-- SMTG_PLUGIN_TARGET_PATH is not set!
-- SMTG_MYPLUGINS_SRC_PATH is not set. If you want to add your own plug-ins folder, specify it!
-- SMTG_PACKAGE_ICON_PATH is set to : C:/Users/USERNAME/Libraries/vst3sdk/doc/artwork/VST_Logo_Steinberg.ico
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.17763.
-- The C compiler identification is MSVC 19.23.28106.4
-- The CXX compiler identification is MSVC 19.23.28106.4
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR)
-- VSTGUI will use the embedded Expat package!
-- VSTGUI_ROOT is set to : C:/Users/USERNAME/Libraries/vst3sdk
-- SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!
-- Configuring incomplete, errors occurred!
However when I checkout to previous commit:
commit 92351625c5b24d5805a3f5adcc718fc748a5720a
Author: scheffle <[email protected]>
Date: Thu May 9 13:28:52 2019 +0200
[fix] linux part for audiohost sample
[fix] cmake for Jack support
git checkout 92351625c5b24d5805a3f5adcc718fc748a5720a
git submodule update --recursive
Then everything is generated properly and even built properly later with
fixes for _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING (issue #39)
Hi,
I wonder why FUnknown does not have a virtual destructor?
Regards,
Alexandre
In public.sdk/source/vst/testsuite/state/validstatetransition.cpp, at line 47, ValidStateTransitionTest
's constructor is declared as follows:
ValidStateTransitionTest::ValidStateTransitionTest (ITestPlugProvider* plugProvider)
: TestEnh (plugProvider, kSample32)
{
}
Because sample size kSample32
is specified there, newsetup.symbolicSampleSize
is set to kSample32
when calling the plugin's setupProcessing
method. A 64-bit-only plugin should return kResultFalse
in this case, as I understand it. However, the "Valid State Transition" test will always fail if the plugin returns kResultFalse
from setupProcessing
. Therefore, 64-bit-only plugins fail this test erroneously. What's more, the 64-bit state transition path for plugins with 32-bit and 64-bit support is never tested.
I'm working on a project that was built with the SDK version 3.6.9. Several old versions including 3.6.9 appear to be missing from the releases.
I can't work with different version of the SDK than the original the software was built against. Am i missing something or is it currently not possible to download previous releases?
This seems to fix it:
tresult PLUGIN_API SingleComponentEffect::getBusArrangement (BusDirection dir, int32 busIndex,
SpeakerArrangement& arr)
{
BusList* busList = getBusList (kAudio, dir);
if(busList->size()) // ADDED THIS
{
AudioBus* audioBus = busList ? FCast<Vst::AudioBus> (busList->at (busIndex)) : nullptr;
if (audioBus)
{
arr = audioBus->getArrangement ();
return kResultTrue;
}
}
return kResultFalse;
}
When buildling and compiling the included sample plugins the UI is missing for almost all plugins (tried with Win7 SP1 on MSVC2017 and 2019).
Solution:
The .rc resource file for each sample plugin needs to include all required resources (i.e. the .uidesc and image files for the UI) like this:
example_image.png PNG "example_image.png" plugin.uidesc DATA "../recources/plugin.uidesc" etc...
Otherwise the UI can't be parsed due to files that are not found.
Currently all plugins that feature a proper UI show merely a black box while the "hostchecker" plugin is the only one working correctly (actually has the needed entries in the resource file).
Unfortunately no errors are shown when compiling and debugging which makes it hard to find the cause for anyone not knowing.
I run FabFilter Vst3 plugin with editorhost project. I opened vst3 editor , and then control the editor, mouse down , and mouse move , will throw this exception : 0xC0000005: Access Violation
This plugin works well with vst3plugintesthost
vst3 download address: https://www.fabfilter.com/download/#download-pro-q-3-equalizer-plug-in
My development environment:
visual studio 2019
windows 10
Hi folks,
I'm trying to build the Airwave VST bridge under NixOS. Currently, this requires a download of a 90MB archive and manual interference with NixOS's mostly automated build workflow just to fetch 136K of SDK code.
Would it possible to make the VST2 SDK available on GitHub as a separate repo? This would make certail users' lives a lot easier.
Cheers
I create x86 solution in vs2017 with command:
cmake.exe -G"Visual Studio 15 2017" ../vst3sdk
then i run project "editorhost",it throw this exception
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
I get the following backtrace in gdb:
(gdb) set args ~/opt/REAPER/Plugins/FX/reafir.vst.so
(gdb) r
Starting program: /tmp/vst3sdk/build/bin/Debug/audiohost ~/opt/REAPER/Plugins/FX/reafir.vst.so
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x000055555556815c in Steinberg::IPtr<Steinberg::IPluginFactory>::IPtr (this=0x7fffffffd1b8, other=...) at /tmp/vst3sdk/pluginterfaces/base/smartpointer.h:125
125 inline IPtr<I>::IPtr (const IPtr<I>& other) : ptr (other.ptr)
(gdb) bt
#0 0x000055555556815c in Steinberg::IPtr<Steinberg::IPluginFactory>::IPtr (this=0x7fffffffd1b8, other=...) at /tmp/vst3sdk/pluginterfaces/base/smartpointer.h:125
#1 0x0000555555567539 in VST3::Hosting::PluginFactory::PluginFactory (this=0x7fffffffd1b8) at /tmp/vst3sdk/public.sdk/source/vst/hosting/module.h:130
#2 0x0000555555566561 in Steinberg::Vst::AudioHost::App::startAudioClient (this=0x5555557f4bf0, path="/home/laguest/opt/REAPER/Plugins/FX/reafir.vst.so", effectID=..., flags=0)
at /tmp/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:84
#3 0x0000555555566bbe in Steinberg::Vst::AudioHost::App::init (this=0x5555557f4bf0, cmdArgs=std::vector of length 1, capacity 1 = {...})
at /tmp/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:133
#4 0x0000555555566c9a in main (argc=2, argv=0x7fffffffd588) at /tmp/vst3sdk/public.sdk/samples/vst-hosting/audiohost/source/audiohost.cpp:164
Doesn't matter what I pass, it does this.
There seems to be a severe issue with automations in the aaxwrapper of both the 3.6.8 and the 3.6.9 SDK when a plugin has more than one RangeParameter.
Here are the steps to reproduce for the SDK's again_aax sample (found in ProTools 12.6 on both Mac OS and Windows, but it can likely be reproduced with other versions, too. The used AAX SDK version is 2.3.0):
-> No automation is written.
It affects seemingly random (but always the same set of) parameters if you have more then one RangeParameters.
=================================================================
==16320==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x607000076760 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 72 bytes;
size of the deallocated type: 48 bytes.
Diva VST3 telling Unknown host about latency change, host should request number of latency samples next
#0 0x7fba8d422b51 in operator delete(void*, unsigned long) /build/gcc-multilib/src/gcc/libsanitizer/asan/asan_new_delete.cc:140
#1 0x7fba89e62d2a in Gtk::Container::foreach(sigc::slot<void, Gtk::Widget&, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&) (/usr/lib/libgtkmm-3.0.so.1+0x316d2a)
#2 0x7fba89e62eb5 in Gtk::Container::show_all_children(bool) (/usr/lib/libgtkmm-3.0.so.1+0x316eb5)
#3 0x55a07f86e54c in Steinberg::Vst::EditorHost::WindowGtk::WindowGtk() ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:84
#4 0x55a07f86d85d in Steinberg::Vst::EditorHost::X11Window::Impl::Impl(Steinberg::Vst::EditorHost::X11Window*) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:343
#5 0x55a07f86d535 in Steinberg::Vst::EditorHost::X11Window::X11Window() ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:266
#6 0x55a07f873921 in void __gnu_cxx::new_allocator<Steinberg::Vst::EditorHost::X11Window>::construct<Steinberg::Vst::EditorHost::X11Window>(Steinberg::Vst::EditorHost::X11Window*) /usr/include/c++/7.2.0/ext/new_allocator.h:136
#7 0x55a07f8734ce in void std::allocator_traits<std::allocator<Steinberg::Vst::EditorHost::X11Window> >::construct<Steinberg::Vst::EditorHost::X11Window>(std::allocator<Steinberg::Vst::EditorHost::X11Window>&, Steinberg::Vst::EditorHost::X11Window*) /usr/include/c++/7.2.0/bits/alloc_traits.h:475
#8 0x55a07f872d03 in std::_Sp_counted_ptr_inplace<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<>(std::allocator<Steinberg::Vst::EditorHost::X11Window>) /usr/include/c++/7.2.0/bits/shared_ptr_base.h:526
#9 0x55a07f871f12 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, Steinberg::Vst::EditorHost::X11Window*, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.0/bits/shared_ptr_base.h:637
#10 0x55a07f870d6f in std::__shared_ptr<Steinberg::Vst::EditorHost::X11Window, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.0/bits/shared_ptr_base.h:1295
#11 0x55a07f8702a7 in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window>::shared_ptr<std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::_Sp_make_shared_tag, std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.0/bits/shared_ptr.h:344
#12 0x55a07f86f8af in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window> std::allocate_shared<Steinberg::Vst::EditorHost::X11Window, std::allocator<Steinberg::Vst::EditorHost::X11Window>>(std::allocator<Steinberg::Vst::EditorHost::X11Window> const&) /usr/include/c++/7.2.0/bits/shared_ptr.h:691
#13 0x55a07f86f00b in std::shared_ptr<Steinberg::Vst::EditorHost::X11Window> std::make_shared<Steinberg::Vst::EditorHost::X11Window>() /usr/include/c++/7.2.0/bits/shared_ptr.h:707
#14 0x55a07f86d422 in Steinberg::Vst::EditorHost::X11Window::make(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Steinberg::Vst::EditorHost::Size, bool, std::shared_ptr<Steinberg::Vst::EditorHost::IWindowController> const&, _XDisplay*, std::function<void (Steinberg::Vst::EditorHost::X11Window*)> const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/window.cpp:255
#15 0x55a07f8612fa in Steinberg::Vst::EditorHost::Platform::createWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Steinberg::Vst::EditorHost::Size, bool, std::shared_ptr<Steinberg::Vst::EditorHost::IWindowController> const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:127
#16 0x55a07f84bf59 in Steinberg::Vst::EditorHost::App::createViewAndShow(Steinberg::Vst::IEditController*) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:213
#17 0x55a07f84bba5 in Steinberg::Vst::EditorHost::App::openEditor(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, VST3::Optional<VST3::UID>, unsigned int) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:187
#18 0x55a07f84c3c6 in Steinberg::Vst::EditorHost::App::init(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) ../public.sdk/samples/vst-hosting/editorhost/source/editorhost.cpp:262
#19 0x55a07f86166d in Steinberg::Vst::EditorHost::Platform::run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:185
#20 0x55a07f8618fc in main ../public.sdk/samples/vst-hosting/editorhost/source/platform/linux/platform.cpp:251
#21 0x7fba87da1f69 in __libc_start_main (/usr/lib/libc.so.6+0x20f69)
#22 0x55a07f84aad9 in _start (/home/abique/develop/vst3sdk/build/bin/editorhost+0x1bad9)
0x607000076760 is located 0 bytes inside of 72-byte region [0x607000076760,0x6070000767a8)
allocated by thread T0 here:
#0 0x7fba8d421489 in operator new(unsigned long) /build/gcc-multilib/src/gcc/libsanitizer/asan/asan_new_delete.cc:80
#1 0x7fba89e63e21 in sigc::internal::typed_slot_rep<sigc::mem_functor0<void, Gtk::Widget> >::dup(void*) (/usr/lib/libgtkmm-3.0.so.1+0x317e21)
SUMMARY: AddressSanitizer: new-delete-type-mismatch /build/gcc-multilib/src/gcc/libsanitizer/asan/asan_new_delete.cc:140 in operator delete(void*, unsigned long)
==16320==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
==16320==ABORTING
Aborted (core dumped)
I cd into public.sdk/samples/vst-hosting/validator
Then create build
directory, then cd build
, then cmake ../
This is the output:
-- The C compiler identification is AppleClang 9.1.0.9020039
-- The CXX compiler identification is AppleClang 9.1.0.9020039
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:43 (set_target_properties):
set_target_properties called with illegal arguments, maybe missing a
PROPERTIES specifier?
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 3.11)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring incomplete, errors occurred!
This is the line where the error occurs:
set_target_properties(${target} PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER})
I am not sure where SDK_IDE_HOSTING_EXAMPLES_FOLDER
should be defined and what it should contain.
Followed the vst3sdk wiki to the letter and have compiled the example build from vst3sdk>cmakelists.txt with no issue.
However when attempting to do the same on both other projects and the helloworld plugin example from older versions of the vst sdk, I get the error as in the title and the following post:
Namely:
Unknown cmake command “smtg_add_vst3plugin”
From what I can gather this is referencing a cmake command inside the cmake modules folder of the sdk
[vst3sdk>cmake>modules]
However I have next to no idea what the fix is for this. Addionally, the user meem40 says he fixed this issue here:
#4 (comment)
However I have no idea what he means by this solution.
Can anyone point me in the right direction here?
Thanks
I compiled the latest version of the VST3 SDK and by default it does not build the audiohost
program, while it builds editorhost
.
I'm thoroughly confused. I'm looking around this repo, and can't click on pluginterfaces
or public.sdk
at https://github.com/steinbergmedia/vst3sdk.
if i clone the repo, those folders exist, but they contain nothing.
what am i missing?
Hi,
It would be nice to have the whole SDK using the override keyword, because if you build with -Wsuggest-override you get flooded by warnings.
Also fixing -Wnon-virtual-dtor would be nice but I don't know if it is possible regarding the ABI.
Cheers,
Alex
According to the VST3 SDK License page: https://sdk.steinberg.net/viewtopic.php?f=4&t=282 , there is a:
Steinberg VST 3 Plug-In SDK Licensing Agreement that you have to sign if you want to develop or host VST 3 Plug-Ins.
However, the same page also explains that the SDK is dual licensed under either Steinberg's License or the GPLv3.
One of the features of the General Public License is that the user does not need to seek permission from anyone to have the four freedoms to run, copy, share and redistribute modified versions of the software in source code form. Thus requiring the user to sign an agreement with Steinberg before being allowed to have the freedom to make plugins/hosts using the SDK is certainly not in the spirit of the GPLv3.
Can you please clarify if Steinberg waives the requirement for any user to sign the agreement if they want to create plugins or hosts using the SDK - if the user chooses GPLv3 as the license?
I've downloaded the SDK vstsdk3613_08_04_2019_build_81.zip
file.
I'm running Debian Stable and all samples seem to compile fine. I've moved all the .so generated to my ~/.vst
folder including all the samples like adelay.
I've tried to see if I could get the plugins to show up on Ardour, LMMS with Carla host and Helio.fm. All of them are supposed to be able to load linux VST3 plugins. The only other linux VST plugin I have to compare is Tunefish and all of them detect it.
When I try to load any of the SDK sample plugins Carla shows an error which is the only hint I have about the problem:
Could not find the VST main entry in the plugin library
Alpine Linux is not a GNU/Linux distro and gcc on Alpine doesn't define __gnu_linux__
only __linux
, __linux__
and linux
.
gcc -dM -E - < /dev/null | grep linux
#define __linux 1
#define __linux__ 1
#define linux 1
No platform is detected in pluginterfaces/base/fplatform.h, the #pragma error unknown platform
doesn't do anything.
Since no platform was detected, PLUGIN_API is undefined which causes a lot of compiler errors.
[ 32%] Building CXX object CMakeFiles/vstgui_support.dir/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.cpp.o
In file included from /source/vst3sdk/base/source/fobject.h:44,
from /source/vst3sdk/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.h:11,
from /source/vst3sdk/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.cpp:5:
/source/vst3sdk/pluginterfaces/base/funknown.h:214:18: error: expected initializer before 'atomicAdd'
int32 PLUGIN_API atomicAdd (int32& value, int32 amount);
^~~~~~~~~
In file included from /source/vst3sdk/base/source/fobject.h:44,
from /source/vst3sdk/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.h:11,
from /source/vst3sdk/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.cpp:5:
/source/vst3sdk/pluginterfaces/base/funknown.h:363:18: error: 'PLUGIN_API' declared as a 'virtual' field
virtual tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) = 0;
^~~~~~~~~~
/source/vst3sdk/pluginterfaces/base/funknown.h:363:18: error: expected ';' at end of member declaration
virtual tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) = 0;
^~~~~~~~~~
;
/source/vst3sdk/pluginterfaces/base/funknown.h:363:76: error: ISO C++ forbids declaration of 'queryInterface' with no type [-fpermissive]
virtual tresult PLUGIN_API queryInterface (const TUID _iid, void** obj) = 0;
^
/source/vst3sdk/pluginterfaces/base/funknown.h:368:17: error: 'PLUGIN_API' declared as a 'virtual' field
virtual uint32 PLUGIN_API addRef () = 0;
^~~~~~~~~~
/source/vst3sdk/pluginterfaces/base/funknown.h:368:17: error: expected ';' at end of member declaration
virtual uint32 PLUGIN_API addRef () = 0;
^~~~~~~~~~
;
....
A quick and dirty workaround for now is to add __gnu_linux__
to CMAKE_CXX_FLAGS
when configuring cmake.
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=-D__gnu_linux__ -S /source/vst3sdk/ -B /build/
I have been able to build my plug-ins and run the validator test suits on Alpine using the workaround or by changing the platform check(line 79 in fplatform.h) to __linux__
.
Is there anything that actually requires __gnu_linux__
to build or use the vst3sdk on Linux or would it be possible to change the Linux platform check to __linux__
instead of __gnu_linux__
?
I did the following steps to build the sample VST3 plugins.
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
mkdir ./build
cd ./build
cmake -GXcode ../vst3sdk
xcodebuild
The xcodebuild
was finished without any errors. This is the expected behavior.
The xcodebuild
produces file not found error when the Audio Unit support enabled.
According to the vst3sdk/cmake/modules/CoreAudioSupport.cmake
, the CoreAudio SDK path is next to the vst3sdk, the SMTG_COREAUDIO_SDK_PATH will be automatically detected.
So I did the following steps:
mkdir -p ../CoreAudio/AudioUnits
cp -r ~/Downloads/AudioUnitExamplesAudioUnitEffectGeneratorInstrumentMIDIProcessorandOffline/* ../CoreAudio/AudioUnits
cmake -GXcode ../vst3sdk
xcodebuild
Then I got the file not found error like this.
$ cmake -GXcode ../vst3sdk
-- Building with Xcode version: 10.1
-- macOS Deployment Target: 10.10
-- SMTG_MYPLUGINS_SRC_PATH is not set. If you want to add your own plug-ins folder, specify it!
-- SMTG_COREAUDIO_SDK_PATH is set to : /Users/koyanagi/develop/vst3sdk/../CoreAudio
-- SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!
* To enable building the InterAppAudio NoteExpressionSynth example for iOS you need to set the SMTG_IOS_DEVELOPMENT_TEAM and use the Xcode generator
* To enable building the AUv3 Wrapper example for iOS you need to set the SMTG_IOS_DEVELOPMENT_TEAM and use the Xcode generator
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/koyanagi/develop/build
$ xcodebuild
...
/Users/koyanagi/develop/vst3sdk/public.sdk/source/vst/auwrapper/ausdk.mm:49:9: fatal error:
'PublicUtility/CABundleLocker.cpp'
file not found
#import "PublicUtility/CABundleLocker.cpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
It seems to be not proper version of the CoreAudio SDK.
Where can I get the proper version of the CoreAudio SDK?
FYI, I use the latest CoreAudio SDK which downloaded from
https://developer.apple.com/library/archive/samplecode/sc2195/Introduction/Intro.html
Hi all, I needed to included this line
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
in my CMakeLists.txt file at the root directory of my VST3_SDK folder in order to get the sample files to build. Not sure if that is helpful for anyone else. Here is my configuration:
macosx 10.14.6 Mojave
cmake: 3.15.4
gcc: Apple LLVM version 10.0.1 (clang-1001.0.46.4)
xcode-select: version 2354
VST3: vstsdk3613_08_04_2019_build_81
and I'm following the instructions on 'how to build' in the project readme, specifically executing:
cmake --build . --config Release
from within a build
directory created underneath the vst3 root.
The projects all do compile, however, the build process throws a ton of warnings of the type:
falignpush.h:26:25: warning: pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop' [-Wunknown-pragmas] #pragma GCC diagnostic default "-Wpragma-pack"
Not sure if that is either helpful to anyone or if I actually may've configured something wrong, if the former, let me know and I'm happy to submit a PR to include this line.
Visual studio professional 2019 16.3.1
MSVC 14.23.28105
Works with MSVC 14.22.27905.
A new deprecation warning has been added to MSVC, defined in <experimental/filesystem>:
#ifndef _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
#error The <experimental/filesystem> header providing std::experimental::filesystem is deprecated by Microsoft \
and will be REMOVED. It is superseded by the C++17 <filesystem> header providing std::filesystem. \
You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to acknowledge that you have received this warning.
#endif // _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
So the public.sdk/source/vst/hosting/module_win32.cpp
can't compile.
Hi,
In Bitwig Studio we have the ability to sandbox plugins.
Some plugins have a shared state among many instances (u-he Satin, or Fabfilter Pro-Q3).
Sandboxing each plugin instance will break functionality for those plugin.
If the plugin had a way to inform the DAW that it has a shared state between many instances, we could ensure that we put every instances of the same plugin in the same sandbox so they can have their shared state working.
What do you think?
Regards,
Alexandre
Many files have includes which cause build errors if additional include paths are not defined / amalgamated builds.
For example in plugininterfaces/base/funknown.h
:
#include "pluginterfaces/base/fplatform.h"
#include "pluginterfaces/base/ftypes.h"
#include "pluginterfaces/base/smartpointer.h"
There is no need to repeat the "pluginterfaces/base
part as they're in the same folder !
This works fine:
#include "fplatform.h"
#include "ftypes.h"
#include "smartpointer.h"
please could you .gitignore .DS_Store files in the VST3 repo?
The FileStream class in the SDK is a thin wrapper around the C FILE* type. Unfortunately when using this for writing the actual writing happens in the fclose method (as fwrite calls are likely just into a buffer in RAM). The fclose method is only called in the FileStream destructor and any error code from fclose is silently ignored.
Doing the actual writing to disk when the ref count goes to 0 is not a good idea and swallowing up the error code and not being able to report it to the user in a meaningful way (eg disk full, permission denied) is bad programming practice.
Suggestion would be to add an explicit close method to the FileStream class so that when writing something to the stream it is possible to know for sure whether the write succeeded .
Unfortunately, getting useful error messages would require a redesign of the entire stream API as all methods just return a tresult which never contains any useful error message.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.