├── .gitignore ├── app ├── source │ ├── version_buildnumber.h │ ├── application.h │ ├── linkcontroller.h │ ├── version.h │ ├── cmakecapabilities.h │ ├── dimmviewcontroller.h │ ├── process.h │ ├── valuelistenerviewcontroller.h │ ├── include │ │ └── rapidjson │ │ │ ├── internal │ │ │ ├── swap.h │ │ │ ├── clzll.h │ │ │ ├── strfunc.h │ │ │ ├── ieee754.h │ │ │ ├── pow10.h │ │ │ ├── meta.h │ │ │ ├── stack.h │ │ │ ├── dtoa.h │ │ │ ├── strtod.h │ │ │ └── biginteger.h │ │ │ ├── cursorstreamwrapper.h │ │ │ ├── ostreamwrapper.h │ │ │ ├── memorybuffer.h │ │ │ ├── memorystream.h │ │ │ ├── filereadstream.h │ │ │ ├── filewritestream.h │ │ │ ├── stringbuffer.h │ │ │ ├── istreamwrapper.h │ │ │ ├── fwd.h │ │ │ ├── stream.h │ │ │ └── msinttypes │ │ │ ├── inttypes.h │ │ │ └── stdint.h │ ├── dimmviewcontroller.cpp │ ├── scriptscrollviewcontroller.h │ ├── linkcontroller.cpp │ ├── application.cpp │ ├── cmakecapabilities.cpp │ ├── platform │ │ ├── linux │ │ │ └── process.cpp │ │ ├── mac │ │ │ └── process.mm │ │ └── win32 │ │ │ └── process.cpp │ ├── scriptscrollviewcontroller.cpp │ └── controller.h ├── README.MD ├── resource │ ├── win32_resources.rc │ ├── VST_Logo_Steinberg.icns │ ├── VST_Logo_Steinberg.ico │ ├── links.json │ └── Info.plist └── CMakeLists.txt ├── script ├── cmake │ ├── modules │ │ ├── SMTG_SystemCheck.cmake │ │ ├── SMTG_PrintGeneratorCopyrightHeader.cmake │ │ ├── SMTG_GeneratePluginUuids.cmake │ │ ├── SMTG_GenerateUuid.cmake │ │ ├── SMTG_CodeSnippets.cmake │ │ ├── SMTG_GeneratorSpecifics.cmake │ │ └── SMTG_VendorSpecifics.cmake │ └── templates │ │ └── vst3plugin_folder │ │ ├── resource │ │ ├── SMTG_Processor_UUID_snapshot.png │ │ ├── SMTG_Processor_UUID_snapshot_2.0x.png │ │ ├── vst3plugineditor.uidesc.in │ │ └── win32resource.rc.in │ │ ├── source │ │ ├── version.h.in │ │ ├── vst3plugincids.h.in │ │ ├── vst3plugincontroller.h.in │ │ ├── vst3pluginprocessor.h.in │ │ ├── vst3pluginentry.cpp.in │ │ ├── vst3plugincontroller.cpp.in │ │ └── vst3pluginprocessor.cpp.in │ │ └── CMakeLists.txt.in ├── README.MD └── GenerateVST3Plugin.cmake ├── .github ├── workflows │ ├── cmake_linux.yml.disabled │ ├── cmake_windows.yml │ └── cmake_macos.yml └── actions │ └── cmake │ └── action.yml ├── CMakeLists.txt ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /app/source/version_buildnumber.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define TAG_BUILDNR 0 4 | #define TAG_BUILDNR_STR "0" 5 | -------------------------------------------------------------------------------- /app/README.MD: -------------------------------------------------------------------------------- 1 | # VST3 Project Generator App 2 | 3 | An app with a graphical user interface for generating VST 3 plug-in projects. 4 | -------------------------------------------------------------------------------- /app/resource/win32_resources.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steinbergmedia/vst3projectgenerator/HEAD/app/resource/win32_resources.rc -------------------------------------------------------------------------------- /app/resource/VST_Logo_Steinberg.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steinbergmedia/vst3projectgenerator/HEAD/app/resource/VST_Logo_Steinberg.icns -------------------------------------------------------------------------------- /app/resource/VST_Logo_Steinberg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steinbergmedia/vst3projectgenerator/HEAD/app/resource/VST_Logo_Steinberg.ico -------------------------------------------------------------------------------- /script/cmake/modules/SMTG_SystemCheck.cmake: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14.0) 2 | 3 | # Check if git is installed and can be found 4 | function(smtg_check_system) 5 | find_package(Git) 6 | endfunction(smtg_check_system) 7 | -------------------------------------------------------------------------------- /script/cmake/templates/vst3plugin_folder/resource/SMTG_Processor_UUID_snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steinbergmedia/vst3projectgenerator/HEAD/script/cmake/templates/vst3plugin_folder/resource/SMTG_Processor_UUID_snapshot.png -------------------------------------------------------------------------------- /script/cmake/templates/vst3plugin_folder/resource/SMTG_Processor_UUID_snapshot_2.0x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steinbergmedia/vst3projectgenerator/HEAD/script/cmake/templates/vst3plugin_folder/resource/SMTG_Processor_UUID_snapshot_2.0x.png -------------------------------------------------------------------------------- /script/cmake/modules/SMTG_PrintGeneratorCopyrightHeader.cmake: -------------------------------------------------------------------------------- 1 | 2 | cmake_minimum_required(VERSION 3.14.0) 3 | 4 | function(smtg_print_generator_copyright_header) 5 | message("") 6 | message("==================================================") 7 | message("") 8 | message(" Steinberg Media Technologies GmbH") 9 | message(" VST3 Project Generator") 10 | message("") 11 | message("==================================================") 12 | message("") 13 | endfunction(smtg_print_generator_copyright_header) 14 | -------------------------------------------------------------------------------- /script/cmake/modules/SMTG_GeneratePluginUuids.cmake: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14.0) 2 | 3 | include(SMTG_GenerateUuid) 4 | 5 | macro(smtg_generate_plugin_uuids) 6 | smtg_generate_uuid(Processor) # -> SMTG_Processor_UUID 7 | smtg_generate_uuid(Controller) # -> SMTG_Controller_UUID 8 | endmacro(smtg_generate_plugin_uuids) 9 | 10 | macro(smtg_print_plugin_uuids) 11 | message(STATUS "SMTG_Processor_UUID : ${SMTG_Processor_UUID}") 12 | message(STATUS "SMTG_Controller_UUID : ${SMTG_Controller_UUID}") 13 | message("") 14 | endmacro(smtg_print_plugin_uuids) 15 | -------------------------------------------------------------------------------- /app/resource/links.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "VST 3 Official Portal", 4 | "url": "https://steinbergmedia.github.io/vst3_dev_portal/pages/index.html" 5 | }, 6 | { 7 | "title": "SDK Forum", 8 | "url": "https://sdk.steinberg.net/" 9 | }, 10 | { 11 | "title": "SDK @ GitHub", 12 | "url": "https://github.com/steinbergmedia/vst3sdk" 13 | }, 14 | { 15 | "title": "Steinberg 3rd Party Developer", 16 | "url": "https://www.steinberg.net/en/company/developers.html" 17 | }, 18 | { 19 | "title": "How to Use \"VST 3 Project Generator\"", 20 | "url": "https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/Project+Generator.html" 21 | } 22 | ] -------------------------------------------------------------------------------- /.github/workflows/cmake_linux.yml.disabled: -------------------------------------------------------------------------------- 1 | name: Linux build 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ${{ matrix.os }} 8 | 9 | strategy: 10 | matrix: 11 | os: [ubuntu-18.04] 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | 16 | - run: sudo apt-get install libx11-dev libx11-xcb-dev libxcb-util-dev libxcb-cursor-dev libxcb-keysyms1-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libfontconfig1-dev libcairo2-dev libfreetype6-dev libpango1.0-dev 17 | 18 | - uses: ./.github/actions/cmake 19 | with: 20 | source-dir: '${{github.workspace}}' 21 | build-dir: '${{github.workspace}}/build' 22 | build-type: 'Debug' 23 | -------------------------------------------------------------------------------- /.github/workflows/cmake_windows.yml: -------------------------------------------------------------------------------- 1 | name: Windows build 2 | 3 | on: [push] 4 | 5 | env: 6 | build-dir: build 7 | build-type: Release 8 | 9 | jobs: 10 | build: 11 | runs-on: ${{ matrix.os }} 12 | 13 | strategy: 14 | matrix: 15 | os: [windows-2019] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | 20 | - uses: ./.github/actions/cmake 21 | with: 22 | source-dir: '${{github.workspace}}' 23 | build-dir: '${{github.workspace}}/${{env.build-dir}}' 24 | build-type: '${{env.build-type}}' 25 | 26 | - uses: actions/upload-artifact@v2 27 | with: 28 | name: VST3_Project_Generator 29 | path: '${{github.workspace}}/${{env.build-dir}}/${{env.build-type}}/VST3_Project_Generator' 30 | -------------------------------------------------------------------------------- /.github/workflows/cmake_macos.yml: -------------------------------------------------------------------------------- 1 | name: macOS Build 2 | 3 | on: [push] 4 | 5 | env: 6 | build-dir: build 7 | build-type: Release 8 | 9 | jobs: 10 | build: 11 | runs-on: ${{ matrix.os }} 12 | 13 | strategy: 14 | matrix: 15 | os: [macos-10.15, macos-11.0] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | 20 | - uses: ./.github/actions/cmake 21 | with: 22 | source-dir: '${{github.workspace}}' 23 | build-dir: '${{github.workspace}}/${{env.build-dir}}' 24 | build-type: '${{env.build-type}}' 25 | 26 | - uses: actions/upload-artifact@v2 27 | with: 28 | name: VST3_Project_Generator.app 29 | path: '${{github.workspace}}/${{env.build-dir}}/${{env.build-type}}/VST3_Project_Generator.app' 30 | -------------------------------------------------------------------------------- /script/cmake/templates/vst3plugin_folder/source/version.h.in: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // @SMTG_SOURCE_COPYRIGHT_HEADER@ 3 | //------------------------------------------------------------------------ 4 | 5 | #pragma once 6 | 7 | #include "pluginterfaces/base/fplatform.h" 8 | 9 | // Plain project version file generated by cmake 10 | #include "projectversion.h" 11 | 12 | #define stringOriginalFilename "@SMTG_PLUGIN_BUNDLE_NAME@.vst3" 13 | #if SMTG_PLATFORM_64 14 | #define stringFileDescription "@SMTG_PLUGIN_BUNDLE_NAME@ VST3 (64Bit)" 15 | #else 16 | #define stringFileDescription "@SMTG_PLUGIN_BUNDLE_NAME@ VST3" 17 | #endif 18 | #define stringCompanyName "@SMTG_VENDOR_NAME@\0" 19 | #define stringLegalCopyright "@SMTG_SOURCE_COPYRIGHT_HEADER@" 20 | #define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH" 21 | -------------------------------------------------------------------------------- /script/cmake/templates/vst3plugin_folder/source/vst3plugincids.h.in: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // @SMTG_SOURCE_COPYRIGHT_HEADER@ 3 | //------------------------------------------------------------------------ 4 | 5 | #pragma once 6 | 7 | #include "pluginterfaces/base/funknown.h" 8 | #include "pluginterfaces/vst/vsttypes.h" 9 | 10 | namespace @SMTG_VENDOR_NAMESPACE@ { 11 | //------------------------------------------------------------------------ 12 | static const Steinberg::FUID k@SMTG_PLUGIN_CLASS_NAME@ProcessorUID (@SMTG_Processor_UUID@); 13 | static const Steinberg::FUID k@SMTG_PLUGIN_CLASS_NAME@ControllerUID (@SMTG_Controller_UUID@); 14 | 15 | #define @SMTG_PLUGIN_CLASS_NAME@VST3Category "@SMTG_PLUGIN_CATEGORY@" 16 | 17 | //------------------------------------------------------------------------ 18 | } // namespace @SMTG_VENDOR_NAMESPACE@ 19 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.12) 2 | 3 | include(FetchContent) 4 | 5 | project(vst3_project_generator_distribution) 6 | 7 | set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12) 8 | 9 | # Clone vstgui 10 | FetchContent_Declare( 11 | vstgui 12 | GIT_REPOSITORY https://github.com/steinbergmedia/vstgui.git 13 | GIT_TAG origin/develop 14 | GIT_SHALLOW ON 15 | ) 16 | 17 | if(${CMAKE_VERSION} VERSION_LESS 3.14) 18 | macro(FetchContent_MakeAvailable NAME) 19 | FetchContent_GetProperties(${NAME}) 20 | if(NOT ${NAME}_POPULATED) 21 | FetchContent_Populate(${NAME}) 22 | add_subdirectory(${${NAME}_SOURCE_DIR} ${${NAME}_BINARY_DIR}) 23 | endif() 24 | endmacro() 25 | endif() 26 | 27 | set(VSTGUI_DISABLE_UNITTESTS ON) 28 | set(VSTGUI_STANDALONE_EXAMPLES OFF) 29 | set(VSTGUI_STANDALONE ON) 30 | set(VSTGUI_TOOLS OFF) 31 | 32 | FetchContent_MakeAvailable(vstgui) 33 | 34 | add_subdirectory(app) 35 | -------------------------------------------------------------------------------- /.github/actions/cmake/action.yml: -------------------------------------------------------------------------------- 1 | name: 'cmake' 2 | description: 'run cmake configure and build' 3 | inputs: 4 | source-dir: 5 | description: 'Source Directory' 6 | required: 'true' 7 | default: '' 8 | build-dir: 9 | description: 'Build Directory' 10 | required: 'true' 11 | default: '' 12 | build-type: 13 | description: 'cmake build type' 14 | required: 'true' 15 | default: 'Debug' 16 | runs: 17 | using: "composite" 18 | steps: 19 | - name: Create Build Environment 20 | shell: bash 21 | run: cmake -E make_directory "${{inputs.build-dir}}" 22 | 23 | - name: Configure CMake 24 | shell: bash 25 | working-directory: ${{inputs.build-dir}} 26 | run: cmake -S "${{inputs.source-dir}}" -B "${{inputs.build-dir}}" -DCMAKE_BUILD_TYPE=${{inputs.build-type}} 27 | 28 | - name: Build 29 | shell: bash 30 | working-directory: ${{inputs.build-dir}} 31 | run: cmake --build . --config ${{inputs.build-type}} 32 | -------------------------------------------------------------------------------- /app/source/application.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Flags : clang-format SMTGSequencer 3 | 4 | #pragma once 5 | 6 | #include "vstgui/standalone/include/helpers/appdelegate.h" 7 | #include "vstgui/standalone/include/helpers/windowlistener.h" 8 | 9 | //------------------------------------------------------------------------ 10 | namespace Steinberg { 11 | namespace Vst { 12 | namespace ProjectCreator { 13 | 14 | //------------------------------------------------------------------------ 15 | class Application : public VSTGUI::Standalone::Application::DelegateAdapter, 16 | public VSTGUI::Standalone::WindowListenerAdapter 17 | { 18 | using IWindow = VSTGUI::Standalone::IWindow; 19 | 20 | public: 21 | Application (); 22 | 23 | void finishLaunching () override; 24 | void onClosed (const IWindow& window) override; 25 | }; 26 | 27 | //------------------------------------------------------------------------ 28 | } // ProjectCreator 29 | } // Vst 30 | } // Steinberg 31 | -------------------------------------------------------------------------------- /app/source/linkcontroller.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Flags : clang-format SMTGSequencer 3 | 4 | #pragma once 5 | 6 | #include "vstgui/lib/cstring.h" 7 | #include 8 | 9 | //------------------------------------------------------------------------ 10 | namespace Steinberg { 11 | namespace Vst { 12 | namespace ProjectCreator { 13 | 14 | //------------------------------------------------------------------------ 15 | class LinkController 16 | { 17 | public: 18 | using UTF8String = VSTGUI::UTF8String; 19 | using StringList = std::vector; 20 | 21 | static const LinkController& instance (); 22 | 23 | const StringList& getTitles () const { return titles; }; 24 | const StringList& getUrls () const { return urls; } 25 | 26 | private: 27 | LinkController (); 28 | 29 | std::vector titles; 30 | std::vector urls; 31 | }; 32 | 33 | //------------------------------------------------------------------------ 34 | } // ProjectCreator 35 | } // Vst 36 | } // Steinberg 37 | -------------------------------------------------------------------------------- /app/source/version.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "version_buildnumber.h" 4 | 5 | #define MAJOR_VERSION_STR "2025" 6 | #define MAJOR_VERSION_INT 2025 7 | 8 | #define SUB_VERSION_STR "02" 9 | #define SUB_VERSION_INT 02 10 | 11 | #define RELEASE_NUMBER_STR "1" 12 | #define RELEASE_NUMBER_INT 1 13 | 14 | #define BUILD_NUMBER_STR TAG_BUILDNR_STR 15 | #define BUILD_NUMBER_INT TAG_BUILDNR 16 | 17 | #define BUILD_STRING MAJOR_VERSION_STR "." SUB_VERSION_STR "." RELEASE_NUMBER_STR "." BUILD_NUMBER_STR 18 | #define VERSION_STRING MAJOR_VERSION_STR "." SUB_VERSION_STR 19 | 20 | #ifdef __plist_preprocessor__ 21 | #define CAT_PRIVATE_DONT_USE(a,b) a ## b 22 | #define CAT(a,b) CAT_PRIVATE_DONT_USE(a,b) 23 | #define MAKE_BUNDLE_VERSION(m,s,r,b) CAT(m, CAT(., CAT(s,CAT(.,CAT(r,CAT(.,b)))))) 24 | #define MAKE_SHORT_BUNDLE_VERSION(m,s) CAT(m, CAT(., CAT(s,))) 25 | #define BUNDLE_VERSION MAKE_BUNDLE_VERSION(MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT) 26 | #define SHORT_BUNDLE_VERSION MAKE_SHORT_BUNDLE_VERSION(MAJOR_VERSION_INT,SUB_VERSION_INT) 27 | #endif 28 | -------------------------------------------------------------------------------- /app/resource/Info.plist: -------------------------------------------------------------------------------- 1 | #include "../source/version.h" 2 | 3 | 4 | 5 | 6 | CFBundleDevelopmentRegion 7 | en 8 | CFBundleExecutable 9 | $(EXECUTABLE_NAME) 10 | CFBundleIdentifier 11 | com.steinberg.vst3sdk.projectgenerator 12 | CFBundleInfoDictionaryVersion 13 | 6.0 14 | CFBundleName 15 | VST3 Project Generator 16 | CFBundlePackageType 17 | APPL 18 | CFBundleShortVersionString 19 | SHORT_BUNDLE_VERSION 20 | CFBundleVersion 21 | BUNDLE_VERSION 22 | NSHumanReadableCopyright 23 | Copyright © 2020 Steinberg Media Technologies. All rights reserved. 24 | CFBundleIconFile 25 | VST_Logo_Steinberg.icns 26 | NSPrincipalClass 27 | NSApplication 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/source/cmakecapabilities.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Flags : clang-format SMTGSequencer 3 | 4 | #pragma once 5 | 6 | #include "vstgui/lib/cstring.h" 7 | #include "vstgui/lib/optional.h" 8 | #include 9 | 10 | //------------------------------------------------------------------------ 11 | namespace Steinberg { 12 | namespace Vst { 13 | namespace ProjectCreator { 14 | 15 | //------------------------------------------------------------------------ 16 | struct GeneratorCapabilites 17 | { 18 | VSTGUI::UTF8String name; 19 | 20 | std::vector platforms; 21 | }; 22 | 23 | struct CMakeCapabilites 24 | { 25 | int32_t versionMajor {0}; 26 | int32_t versionMinor {0}; 27 | int32_t versionPatch {0}; 28 | 29 | std::vector generators; 30 | }; 31 | 32 | //------------------------------------------------------------------------ 33 | VSTGUI::Optional parseCMakeCapabilities (const std::string& capabilitesJSON); 34 | 35 | //------------------------------------------------------------------------ 36 | } // ProjectCreator 37 | } // Vst 38 | } // Steinberg 39 | -------------------------------------------------------------------------------- /app/source/dimmviewcontroller.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Flags : clang-format SMTGSequencer 3 | 4 | #pragma once 5 | 6 | #include "valuelistenerviewcontroller.h" 7 | 8 | //------------------------------------------------------------------------ 9 | namespace Steinberg { 10 | namespace Vst { 11 | namespace ProjectCreator { 12 | 13 | //------------------------------------------------------------------------ 14 | class DimmViewController : public ValueListenerViewController 15 | { 16 | public: 17 | using CView = VSTGUI::CView; 18 | using UIAttributes = VSTGUI::UIAttributes; 19 | using IUIDescription = VSTGUI::IUIDescription; 20 | using IValue = VSTGUI::Standalone::IValue; 21 | 22 | DimmViewController (IController* parent, ValuePtr value, float dimm = 0.f); 23 | 24 | CView* verifyView (CView* view, const UIAttributes& attributes, 25 | const IUIDescription* description) override; 26 | 27 | void onEndEdit (IValue& value) override; 28 | 29 | private: 30 | float dimmValue {0.f}; 31 | CView* dimmView {nullptr}; 32 | }; 33 | 34 | //------------------------------------------------------------------------ 35 | } // ProjectCreator 36 | } // Vst 37 | } // Steinberg 38 | -------------------------------------------------------------------------------- /script/cmake/modules/SMTG_GenerateUuid.cmake: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14.0) 2 | 3 | macro(smtg_make_uuid SHA1_UUID PREFIX) 4 | string(SUBSTRING ${SHA1_UUID} 0 8 SMTG_${PREFIX}_UUID_PART_0) 5 | string(SUBSTRING ${SHA1_UUID} 8 8 SMTG_${PREFIX}_UUID_PART_1) 6 | string(SUBSTRING ${SHA1_UUID} 16 8 SMTG_${PREFIX}_UUID_PART_2) 7 | string(SUBSTRING ${SHA1_UUID} 24 8 SMTG_${PREFIX}_UUID_PART_3) 8 | 9 | set(SMTG_${PREFIX}_UUID "0x${SMTG_${PREFIX}_UUID_PART_0}, 0x${SMTG_${PREFIX}_UUID_PART_1}, 0x${SMTG_${PREFIX}_UUID_PART_2}, 0x${SMTG_${PREFIX}_UUID_PART_3}") 10 | set(SMTG_${PREFIX}_PLAIN_UUID "${SMTG_${PREFIX}_UUID_PART_0}${SMTG_${PREFIX}_UUID_PART_1}${SMTG_${PREFIX}_UUID_PART_2}${SMTG_${PREFIX}_UUID_PART_3}") 11 | endmacro(smtg_make_uuid) 12 | 13 | macro(smtg_generate_uuid PREFIX) 14 | string(RANDOM SMTG_RAND_NUMBER) 15 | 16 | # UUID DNS namespace generated at Steinberg 17 | set(UUID_DNS_NAMESPACE ed66da11-5014-4e8a-876d-829007337274) 18 | string( 19 | UUID SHA1_UUID 20 | NAMESPACE ${UUID_DNS_NAMESPACE} 21 | NAME ${SMTG_RAND_NUMBER} 22 | TYPE SHA1 UPPER 23 | ) 24 | 25 | # Remove all hyphens 26 | string( 27 | REPLACE "-" 28 | "" 29 | SHA1_UUID 30 | ${SHA1_UUID} 31 | ) 32 | smtg_make_uuid(${SHA1_UUID} ${PREFIX}) 33 | endmacro(smtg_generate_uuid) 34 | -------------------------------------------------------------------------------- /app/source/process.h: -------------------------------------------------------------------------------- 1 | // Flags : clang-format SMTGSequencer 2 | 3 | #pragma once 4 | 5 | #include "vstgui/lib/optional.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | //------------------------------------------------------------------------ 12 | namespace Steinberg { 13 | namespace Vst { 14 | 15 | //------------------------------------------------------------------------ 16 | class Process 17 | { 18 | public: 19 | struct CallbackParams 20 | { 21 | bool isEOF {false}; 22 | int resultCode {0}; 23 | std::vector buffer; 24 | }; 25 | 26 | struct ArgumentList 27 | { 28 | void add (const std::string& str); 29 | void addPath (const std::string& str); 30 | 31 | std::vector args; 32 | }; 33 | 34 | using CallbackFunction = std::function; 35 | 36 | static std::shared_ptr create (const std::string& path); 37 | 38 | bool run (const ArgumentList& arguments, CallbackFunction&& callback); 39 | 40 | ~Process () noexcept; 41 | 42 | private: 43 | struct Impl; 44 | std::unique_ptr pImpl {nullptr}; 45 | }; 46 | 47 | //------------------------------------------------------------------------ 48 | bool openURL (const std::string& url); 49 | 50 | //------------------------------------------------------------------------ 51 | } // Steinberg 52 | } // Vst 53 | -------------------------------------------------------------------------------- /app/source/valuelistenerviewcontroller.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------ 2 | // Flags : clang-format SMTGSequencer 3 | 4 | #pragma once 5 | 6 | #include "vstgui/standalone/include/helpers/valuelistener.h" 7 | #include "vstgui/uidescription/delegationcontroller.h" 8 | 9 | //------------------------------------------------------------------------ 10 | namespace Steinberg { 11 | namespace Vst { 12 | namespace ProjectCreator { 13 | 14 | //------------------------------------------------------------------------ 15 | class ValueListenerViewController : public VSTGUI::DelegationController, 16 | public VSTGUI::Standalone::ValueListenerAdapter 17 | { 18 | public: 19 | using ValuePtr = VSTGUI::Standalone::ValuePtr; 20 | using DelegationController = VSTGUI::DelegationController; 21 | 22 | ValueListenerViewController (VSTGUI::IController* parent, ValuePtr value) 23 | : DelegationController (parent), value (value) 24 | { 25 | value->registerListener (this); 26 | } 27 | 28 | virtual ~ValueListenerViewController () noexcept { value->unregisterListener (this); } 29 | 30 | const ValuePtr& getValue () const { return value; } 31 | 32 | private: 33 | ValuePtr value; 34 | }; 35 | 36 | //------------------------------------------------------------------------ 37 | } // ProjectCreator 38 | } // Vst 39 | } // Steinberg 40 | -------------------------------------------------------------------------------- /script/cmake/templates/vst3plugin_folder/resource/vst3plugineditor.uidesc.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |