├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .gitattributes ├── .github └── workflows │ ├── build-native.yml │ ├── build-wam.yml │ └── release-native.yml ├── .gitignore ├── .gitmodules ├── .vscode ├── IGraphics.code-snippets ├── IPlug.code-snippets ├── c_cpp_properties.json ├── launch.json ├── msbuild-tools.json ├── settings.json └── tasks.json ├── README.md ├── TemplateProject ├── .vscode │ └── c_cpp_properties.json ├── README.md ├── TemplateProject.RPP ├── TemplateProject.code-workspace ├── TemplateProject.cpp ├── TemplateProject.h ├── TemplateProject.sln ├── TemplateProject.xcworkspace │ ├── .xcodesamplecode.plist │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── config.h ├── config │ ├── TemplateProject-ios.xcconfig │ ├── TemplateProject-mac.xcconfig │ ├── TemplateProject-web.mk │ └── TemplateProject-win.props ├── installer │ ├── TemplateProject-installer-bg.png │ ├── TemplateProject.iss │ ├── changelog.txt │ ├── intro.rtf │ ├── known-issues.txt │ ├── license.rtf │ ├── readme-mac.rtf │ ├── readme-win-demo.rtf │ └── readme-win.rtf ├── manual │ ├── TemplateProject manual.pdf │ └── TemplateProject manual.tex ├── projects │ ├── TemplateProject-aax.vcxproj │ ├── TemplateProject-aax.vcxproj.filters │ ├── TemplateProject-aax.vcxproj.user │ ├── TemplateProject-app.vcxproj │ ├── TemplateProject-app.vcxproj.filters │ ├── TemplateProject-app.vcxproj.user │ ├── TemplateProject-clap.vcxproj │ ├── TemplateProject-clap.vcxproj.filters │ ├── TemplateProject-clap.vcxproj.user │ ├── TemplateProject-iOS.entitlements │ ├── TemplateProject-iOS.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── iOS-APP with AUv3.xcscheme │ │ │ ├── iOS-AUv3.xcscheme │ │ │ ├── iOS-AUv3Framework.xcscheme │ │ │ └── iOS-Update plists.xcscheme │ ├── TemplateProject-macOS.entitlements │ ├── TemplateProject-macOS.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── All macOS.xcscheme │ │ │ ├── macOS-AAX.xcscheme │ │ │ ├── macOS-APP with AUv3.xcscheme │ │ │ ├── macOS-APP.xcscheme │ │ │ ├── macOS-AUv2.xcscheme │ │ │ ├── macOS-AUv3.xcscheme │ │ │ ├── macOS-AUv3Framework.xcscheme │ │ │ ├── macOS-CLAP.xcscheme │ │ │ ├── macOS-Update plists.xcscheme │ │ │ ├── macOS-VST2.xcscheme │ │ │ └── macOS-VST3.xcscheme │ ├── TemplateProject-vst2.vcxproj │ ├── TemplateProject-vst2.vcxproj.filters │ ├── TemplateProject-vst2.vcxproj.user │ ├── TemplateProject-vst3.vcxproj │ ├── TemplateProject-vst3.vcxproj.filters │ ├── TemplateProject-vst3.vcxproj.user │ ├── TemplateProject-wam-controller.mk │ └── TemplateProject-wam-processor.mk ├── resources │ ├── IPlugAUViewController_vTemplateProject.xib │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── TemplateProject-iOS.appiconset │ │ │ ├── Contents.json │ │ │ ├── icon_1024x1024@1x.png │ │ │ ├── icon_20x20@1x.png │ │ │ ├── icon_20x20@2x.png │ │ │ ├── icon_20x20@3x.png │ │ │ ├── icon_29x29@1x.png │ │ │ ├── icon_29x29@2x.png │ │ │ ├── icon_29x29@3x.png │ │ │ ├── icon_40x40@1x.png │ │ │ ├── icon_40x40@2x.png │ │ │ ├── icon_40x40@3x.png │ │ │ ├── icon_60x60@2x.png │ │ │ ├── icon_60x60@3x.png │ │ │ ├── icon_76x76@1x.png │ │ │ ├── icon_76x76@2x.png │ │ │ └── icon_83.5x83.5@2x.png │ │ └── TemplateProject-macOS.appiconset │ │ │ ├── Contents.json │ │ │ ├── icon_128x128@1x.png │ │ │ ├── icon_128x128@2x.png │ │ │ ├── icon_16x16@1x.png │ │ │ ├── icon_16x16@2x.png │ │ │ ├── icon_256x256@1x.png │ │ │ ├── icon_256x256@2x.png │ │ │ ├── icon_32x32@1x.png │ │ │ ├── icon_32x32@2x.png │ │ │ ├── icon_512x512@1x.png │ │ │ └── icon_512x512@2x.png │ ├── TemplateProject-AAX-Info.plist │ ├── TemplateProject-AU-Info.plist │ ├── TemplateProject-CLAP-Info.plist │ ├── TemplateProject-Pages.xml │ ├── TemplateProject-VST2-Info.plist │ ├── TemplateProject-VST3-Info.plist │ ├── TemplateProject-iOS-AUv3-Info.plist │ ├── TemplateProject-iOS-AUv3Framework-Info.plist │ ├── TemplateProject-iOS-Info.plist │ ├── TemplateProject-iOS-LaunchScreen.storyboard │ ├── TemplateProject-iOS-MainInterface.storyboard │ ├── TemplateProject-iOS.storyboard │ ├── TemplateProject-macOS-AUv3-Info.plist │ ├── TemplateProject-macOS-AUv3Framework-Info.plist │ ├── TemplateProject-macOS-Info.plist │ ├── TemplateProject-macOS-MainMenu.xib │ ├── TemplateProject.icns │ ├── TemplateProject.ico │ ├── TemplateProjectAU.h │ ├── TemplateProjectAUv3Appex.m │ ├── fonts │ │ └── Roboto-Regular.ttf │ ├── main.rc │ ├── main.rc_mac_dlg │ ├── main.rc_mac_menu │ └── resource.h └── scripts │ ├── makedist-mac.sh │ ├── makedist-web.sh │ ├── makedist-win.bat │ ├── makeinstaller-mac.sh │ ├── makezip-win.py │ ├── postbuild-win.bat │ ├── prebuild-win.bat │ ├── prepare_resources-ios.py │ ├── prepare_resources-mac.py │ ├── prepare_resources-win.py │ ├── update_installer-win.py │ ├── update_version-ios.py │ └── update_version-mac.py ├── bump_version.py ├── common-ios.xcconfig ├── common-mac.xcconfig ├── common-web.mk ├── common-win.props ├── duplicate.py ├── iPlug2OOS.code-workspace └── setup_container.sh /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM emscripten/emsdk 2 | 3 | RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 4 | && apt-get -y install --no-install-recommends vim \ 5 | && pip3 install semver 6 | 7 | RUN echo "alias python=python3 \n alias lr='ls -lart' \n alias cd..='cd ..'" >> "$HOME/.bashrc" 8 | 9 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iPlug2WAM", 3 | "build": { 4 | "dockerfile": "Dockerfile" 5 | }, 6 | "customizations": { 7 | "extensions": [ 8 | "ms-vscode.cpptools", 9 | "ms-python.python", 10 | "ms-vscode.cmake-tools", 11 | "cschlosser.doxdocgen" 12 | ], 13 | "codespaces": { 14 | "repositories": { 15 | "iplug2/iplug2oos": { 16 | "permissions": "write-all" 17 | }, 18 | "iplug2/iplug2": { 19 | "permissions": "read-all" 20 | } 21 | } 22 | } 23 | }, 24 | "postCreateCommand": "./setup_container.sh", 25 | "portsAttributes": { 26 | "8001": { 27 | "label": "emrun", 28 | "protocol": "https" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text 2 | *.c text=auto 3 | *.cpp text=auto 4 | *.cc text=auto 5 | *.h text=auto 6 | *.hpp text=auto 7 | *.m text=auto 8 | *.mm text=auto 9 | 10 | *.eel text=auto 11 | *.php text=auto 12 | *.txt text=auto 13 | *.py text=auto 14 | 15 | *.bat text eol=crlf 16 | *.cmd text eol=crlf 17 | *.iss text eol=crlf 18 | 19 | *.dsp text eol=crlf 20 | *.dsw text eol=crlf 21 | *.sln text eol=crlf 22 | *.vcxproj text eol=crlf 23 | *.vcxproj.filters text eol=crlf 24 | *.vcxproj.user text eol=crlf 25 | *.props text eol=crlf 26 | *.rc text eol=crlf 27 | 28 | *.command text eol=lf 29 | *.sh text eol=lf 30 | *.pbxproj text eol=lf 31 | *.xcconfig text eol=lf 32 | *.xcworkspacedata text eol=lf 33 | *.plist text eol=lf 34 | Makefile text eol=lf 35 | .mk text eol=lf 36 | -------------------------------------------------------------------------------- /.github/workflows/build-native.yml: -------------------------------------------------------------------------------- 1 | name: Build Native 2 | 3 | on: 4 | # workflow_dispatch 5 | push: 6 | # tags: 7 | # - "v*" 8 | 9 | env: 10 | PROJECT_NAME: TemplateProject 11 | 12 | jobs: 13 | build: 14 | name: Build-native-plugins 15 | runs-on: ${{matrix.os}} 16 | strategy: 17 | matrix: 18 | os: [macos-latest, windows-latest] 19 | include: 20 | - os: macos-latest 21 | build_dir: build-mac 22 | artifact_ext: mac 23 | - os: windows-latest 24 | build_dir: build-win 25 | artifact_ext: win 26 | 27 | steps: 28 | - name: Check out repository 29 | uses: actions/checkout@v4 30 | with: 31 | submodules: recursive 32 | 33 | - name: Get VST3 SDK 34 | run: | 35 | cd iPlug2/Dependencies/IPlug 36 | ./download-iplug-sdks.sh 37 | shell: bash 38 | 39 | - name: Get Prebuilt Libs 40 | run: | 41 | cd iPlug2/Dependencies 42 | ./download-prebuilt-libs.sh 43 | shell: bash 44 | 45 | - name: Build macOS 46 | if: matrix.os == 'macOS-latest' 47 | run: | 48 | cd ${{env.PROJECT_NAME}}/scripts 49 | ./makedist-mac.sh full zip 50 | shell: bash 51 | 52 | - name: Add msbuild to PATH (Windows) 53 | if: matrix.os == 'windows-latest' 54 | uses: microsoft/setup-msbuild@v2 55 | 56 | - name: Build Windows 57 | if: matrix.os == 'windows-latest' 58 | run: | 59 | cd ${{env.PROJECT_NAME}}\scripts 60 | .\makedist-win.bat full zip 61 | shell: pwsh 62 | 63 | - name: Upload artifact 64 | uses: actions/upload-artifact@v4 65 | with: 66 | name: ${{env.PROJECT_NAME}}-${{matrix.artifact_ext}} 67 | path: ${{env.PROJECT_NAME}}/${{matrix.build_dir}}/out 68 | 69 | test: 70 | name: Test Native 71 | needs: build 72 | runs-on: ${{matrix.os}} 73 | strategy: 74 | matrix: 75 | os: [macos-latest, windows-latest] 76 | include: 77 | - os: macos-latest 78 | artifact_ext: mac 79 | - os: windows-latest 80 | artifact_ext: win 81 | 82 | steps: 83 | - name: Download artifact 84 | uses: actions/download-artifact@v4 85 | with: 86 | name: ${{env.PROJECT_NAME}}-${{matrix.artifact_ext}} 87 | 88 | - name: Unzip files 89 | run: | 90 | unzip *-${{matrix.artifact_ext}}.zip 91 | shell: bash 92 | 93 | - name: Pluginval (macOS) 94 | if: matrix.os == 'macos-latest' 95 | run: | 96 | curl -L "https://github.com/Tracktion/pluginval/releases/download/latest_release/pluginval_macOS.zip" -o pluginval.zip 97 | unzip pluginval 98 | pluginval.app/Contents/MacOS/pluginval --skip-gui-tests --validate-in-process --output-dir "./bin" --validate ${{env.PROJECT_NAME}}.vst3 || exit 1 99 | mkdir -p ~/Library/Audio/Plug-Ins/Components 100 | mv ${{env.PROJECT_NAME}}.component ~/Library/Audio/Plug-Ins/Components 101 | pgrep -x AudioComponentRegistrar >/dev/null && killall -9 AudioComponentRegistrar; echo "killed AudioComponentRegistrar" || echo "AudioComponentRegistrar Process not found" 102 | pluginval.app/Contents/MacOS/pluginval --skip-gui-tests --validate-in-process --output-dir "./bin" --validate ~/Library/Audio/Plug-Ins/Components/${{env.PROJECT_NAME}}.component || exit 1 103 | shell: bash 104 | 105 | - name: Pluginval (Windows) 106 | if: matrix.os == 'windows-latest' 107 | run: | 108 | powershell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest https://github.com/Tracktion/pluginval/releases/download/latest_release/pluginval_Windows.zip -OutFile pluginval.zip" 109 | powershell -Command "Expand-Archive pluginval.zip -DestinationPath ." 110 | pluginval.exe --skip-gui-tests --validate-in-process --output-dir "./bin" --validate ${{env.PROJECT_NAME}}.vst3 111 | if %ERRORLEVEL% neq 0 exit /b 1 112 | shell: cmd 113 | 114 | - name: Upload artifact 115 | uses: actions/upload-artifact@v4 116 | with: 117 | name: ${{env.PROJECT_NAME}}-${{matrix.artifact_ext}}-pluginval 118 | path: ./bin/ 119 | -------------------------------------------------------------------------------- /.github/workflows/build-wam.yml: -------------------------------------------------------------------------------- 1 | name: Build WAM 2 | 3 | on: 4 | workflow_dispatch 5 | # push: 6 | # tags: 7 | # - "v*" 8 | 9 | env: 10 | PROJECT_NAME: TemplateProject 11 | URL: https://${{github.repository_owner}}.github.io/${{github.event.repository.name}}/ 12 | 13 | jobs: 14 | build: 15 | name: Build-WAM 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Check out repository 20 | uses: actions/checkout@v4 21 | with: 22 | submodules: recursive 23 | persist-credentials: false 24 | 25 | - name: setup python3 26 | uses: actions/setup-python@v4 27 | with: 28 | python-version: '3.x' 29 | architecture: 'x64' 30 | 31 | - name: Setup Emscripten 32 | uses: mymindstorm/setup-emsdk@v11 33 | with: 34 | actions-cache-folder: 'emsdk-cache' 35 | 36 | - name: Patch emcc.py 37 | run: | 38 | sed -i.bak s,"if not js_manipulation.isidentifier(settings.EXPORT_NAME):","if False:",g $EMSDK/upstream/emscripten/emcc.py 39 | shell: bash 40 | 41 | - name: Get WAM SDKS 42 | run: | 43 | cd iPlug2/Dependencies/IPlug 44 | ./download-iplug-sdks.sh 45 | shell: bash 46 | 47 | - name: Compile WAM 48 | run: | 49 | cd ${{env.PROJECT_NAME}}/scripts 50 | ./makedist-web.sh off ${{env.URL}} 51 | 52 | - name: Upload artifact 53 | uses: actions/upload-artifact@v1 54 | with: 55 | name: ${{env.PROJECT_NAME}}-web 56 | path: ${{env.PROJECT_NAME}}/build-web 57 | 58 | - name: Publish to pages 59 | uses: JamesIves/github-pages-deploy-action@v4.4.1 60 | with: 61 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 62 | BASE_BRANCH: master 63 | BRANCH: gh-pages 64 | FOLDER: ${{env.PROJECT_NAME}}/build-web 65 | -------------------------------------------------------------------------------- /.github/workflows/release-native.yml: -------------------------------------------------------------------------------- 1 | name: Release Native 2 | 3 | on: 4 | # workflow_dispatch 5 | push: 6 | tags: 7 | - "v*" 8 | 9 | env: 10 | PROJECT_NAME: TemplateProject 11 | 12 | jobs: 13 | create_release: 14 | name: Create release 15 | runs-on: ubuntu-latest 16 | outputs: 17 | upload_url: ${{steps.create_release.outputs.upload_url}} 18 | steps: 19 | - name: Check out repository 20 | uses: actions/checkout@v4 21 | with: 22 | submodules: recursive 23 | 24 | - name: Create release 25 | id: create_release 26 | uses: actions/create-release@v1 27 | env: 28 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 29 | with: 30 | draft: true 31 | tag_name: ${{github.ref}} 32 | release_name: Release ${{github.ref}} 33 | body_path: ${{env.PROJECT_NAME}}/installer/changelog.txt 34 | 35 | build: 36 | name: Build 37 | needs: create_release 38 | runs-on: ${{matrix.os}} 39 | strategy: 40 | matrix: 41 | os: [macos-latest, windows-latest] 42 | include: 43 | - os: macos-latest 44 | build_dir: build-mac 45 | - os: windows-latest 46 | build_dir: build-win 47 | 48 | steps: 49 | - name: Check out repository 50 | uses: actions/checkout@v4 51 | with: 52 | submodules: recursive 53 | 54 | - name: Get VST3 SDK 55 | run: | 56 | cd iPlug2/Dependencies/IPlug 57 | ./download-iplug-sdks.sh 58 | shell: bash 59 | 60 | - name: Get Prebuilt Libs 61 | run: | 62 | cd iPlug2/Dependencies 63 | ./download-prebuilt-libs.sh 64 | shell: bash 65 | 66 | - name: Get Archive Name macOS 67 | id: mac_archivename_step 68 | if: matrix.os == 'macOS-latest' 69 | run: | 70 | ARCHIVE_NAME=`python3 iPlug2/Scripts/get_archive_name.py ${{env.PROJECT_NAME}} mac full` 71 | echo "name=archive_name::$ARCHIVE_NAME" >> $GITHUB_OUTPUT 72 | shell: bash 73 | 74 | - name: Build macOS 75 | if: matrix.os == 'macOS-latest' 76 | run: | 77 | cd ${{env.PROJECT_NAME}}/scripts 78 | ./makedist-mac.sh full installer 79 | shell: bash 80 | 81 | - name: Upload mac DSYMs release asset 82 | if: matrix.os == 'macOS-latest' 83 | uses: actions/upload-release-asset@v1 84 | env: 85 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 86 | with: 87 | upload_url: ${{needs.create_release.outputs.upload_url}} 88 | asset_path: ${{env.PROJECT_NAME}}/${{matrix.build_dir}}/out/${{steps.mac_archivename_step.outputs.archive_name}}-dSYMs.zip 89 | asset_name: ${{steps.mac_archivename_step.outputs.archive_name}}-dSYMs.zip 90 | asset_content_type: application/zip 91 | 92 | - name: Upload mac dmg release asset 93 | if: matrix.os == 'macOS-latest' 94 | uses: actions/upload-release-asset@v1 95 | env: 96 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 97 | with: 98 | upload_url: ${{needs.create_release.outputs.upload_url}} 99 | asset_path: ${{env.PROJECT_NAME}}/${{matrix.build_dir}}/out/${{steps.mac_archivename_step.outputs.archive_name}}.dmg 100 | asset_name: ${{steps.mac_archivename_step.outputs.archive_name}}.dmg 101 | asset_content_type: application/octet-stream 102 | 103 | - name: Add msbuild to PATH (Windows) 104 | if: matrix.os == 'windows-latest' 105 | uses: microsoft/setup-msbuild@v1 106 | 107 | - name: Setup Python3 108 | if: matrix.os == 'windows-latest' 109 | uses: actions/setup-python@v2 110 | with: 111 | python-version: '3.x' 112 | architecture: 'x64' 113 | 114 | - name: Get Archive Name Windows 115 | id: win_archivename_step 116 | if: matrix.os == 'windows-latest' 117 | run: | 118 | ARCHIVE_NAME=`python.exe iPlug2/Scripts/get_archive_name.py ${{env.PROJECT_NAME}} win full` 119 | echo "name=archive_name::$ARCHIVE_NAME" >> $GITHUB_OUTPUT 120 | shell: bash 121 | 122 | - name: Build Windows 123 | if: matrix.os == 'windows-latest' 124 | run: | 125 | cd ${{env.PROJECT_NAME}}\scripts 126 | .\makedist-win.bat full installer 127 | shell: pwsh 128 | 129 | - name: Upload Windows pdb release asset 130 | if: matrix.os == 'windows-latest' 131 | uses: actions/upload-release-asset@v1 132 | env: 133 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 134 | with: 135 | upload_url: ${{needs.create_release.outputs.upload_url}} 136 | asset_path: ${{env.PROJECT_NAME}}/${{matrix.build_dir}}/out/${{steps.win_archivename_step.outputs.archive_name}}-pdbs.zip 137 | asset_name: ${{steps.win_archivename_step.outputs.archive_name}}-pdbs.zip 138 | asset_content_type: application/zip 139 | 140 | - name: Upload Windows zip release asset 141 | if: matrix.os == 'windows-latest' 142 | uses: actions/upload-release-asset@v1 143 | env: 144 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 145 | with: 146 | upload_url: ${{needs.create_release.outputs.upload_url}} 147 | asset_path: ${{env.PROJECT_NAME}}/${{matrix.build_dir}}/out/${{steps.win_archivename_step.outputs.archive_name}}.zip 148 | asset_name: ${{steps.win_archivename_step.outputs.archive_name}}.zip 149 | asset_content_type: application/zip 150 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | xcuserdata 3 | *.RPP-bak 4 | build-* 5 | 6 | *.ipch 7 | *.db 8 | *.suo 9 | */.vs 10 | *.pem 11 | mkcert* 12 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "iPlug2"] 2 | path = iPlug2 3 | url = https://github.com/iPlug2/iPlug2.git 4 | -------------------------------------------------------------------------------- /.vscode/IPlug.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "prefix": "Header", 4 | "body": [ 5 | "/*", 6 | "==============================================================================", 7 | "", 8 | "This file is part of the iPlug 2 library. Copyright (C) the iPlug 2 developers.", 9 | "", 10 | "See LICENSE.txt for more info.", 11 | "", 12 | "===============================================================================", 13 | "*/", 14 | "$7", 15 | ], 16 | "description": "iPlug2 source header" 17 | }, 18 | 19 | "osguard": { 20 | "prefix": "OS Guard", 21 | "body": [ 22 | "#if defined OS_WIN", 23 | " $1", 24 | "#elif defined OS_MAC", 25 | " $2", 26 | "#elif defined OS_IOS", 27 | " $3", 28 | "#elif defined OS_LINUX", 29 | " $4", 30 | "#elif defined OS_WEB", 31 | " $5", 32 | "#else", 33 | " #error unsupported OS", 34 | "#endif", 35 | ], 36 | "description": "iPlug OS guard macros" 37 | }, 38 | 39 | "initdoubleparam": { 40 | "prefix": "InitDoubleParam", 41 | "body": [ 42 | "GetParam(${1:kGain})->InitDouble(${2:\"label\"}, ${3:default}, ${4:min}, ${5:max}, ${6:step}, ${7:\"unit\"});"// ${8:IParam::kFlagsNone}, ${9:\"group\"});" 43 | ], 44 | "description": "Initialize Double IParam" 45 | }, 46 | 47 | "initintparam": { 48 | "prefix": "InitIntParam", 49 | "body": [ 50 | "GetParam(${1:kGain})->InitInt(${2:\"label\"}, ${3:default}, ${4:min}, ${5:max}, ${6:\"unit\"});"// ${7:IParam::kFlagsNone}, ${8:\"group\"});" 51 | ], 52 | "description": "Initialize Integer IParam" 53 | }, 54 | 55 | "initlistparam": { 56 | "prefix": "InitEnumListParam", 57 | "body": [ 58 | "GetParam(${1:kGain})->InitEnum(${2:\"label\"}, ${3:default}, {${4:\"One\"}, ${5:\"Two\"}, ${6:\"Three\"}});"// ${7:IParam::kFlagsNone}, ${8:\"group\"});" 59 | ], 60 | "description": "Initialize Enumerated List IParam" 61 | }, 62 | 63 | "initboolparam": { 64 | "prefix": "InitBoolParam", 65 | "body": [ 66 | "GetParam(${1:kGain})->InitBool(${2:\"label\"}, ${3:default});"//, ${4:IParam::kFlagsNone}, ${5:\"group\"}, ${6:\"off\"}, ${7:\"on\"});" 67 | ], 68 | "description": "Initialize Boolean IParam" 69 | }, 70 | 71 | } 72 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "commonIncludePaths": [ 4 | "${workspaceFolder}/TemplateProject/.", 5 | "${workspaceFolder}/TemplateProject/**", 6 | "${workspaceFolder}/iPlug2/WDL/**", 7 | "${workspaceFolder}/iPlug2/IPlug/**", 8 | "${workspaceFolder}/iPlug2/IGraphics/**", 9 | "${workspaceFolder}/iPlug2/Dependencies/IGraphics/glad_GL2/include/", 10 | "${workspaceFolder}/iPlug2/Dependencies/IGraphics/NanoVG/src/", 11 | "${workspaceFolder}/iPlug2/Dependencies/IGraphics/NanoSVG/src/" 12 | ], 13 | "commonDefs": [ 14 | "APP_API", 15 | "IPLUG_DSP=1", 16 | "IPLUG_EDITOR=1", 17 | "IGRAPHICS_NANOVG", 18 | "NOMINMAX" 19 | ] 20 | }, 21 | "configurations": [ 22 | { 23 | "name": "Mac", 24 | "includePath": [ 25 | "${commonIncludePaths}", 26 | "${workspaceFolder}/iPlug2/Dependencies/Build/mac/include/**", 27 | "${workspaceFolder}/iPlug2/Dependencies/IGraphics/MetalNanoVG/src/" 28 | ], 29 | "defines": [ 30 | "${commonDefs}", 31 | "OS_MAC", 32 | "IGRAPHICS_METAL" 33 | ], 34 | "macFrameworkPath": [ 35 | ], 36 | "intelliSenseMode": "clang-x64", 37 | "compilerPath": "/usr/bin/clang", 38 | "cStandard": "c11", 39 | "cppStandard": "c++17" 40 | }, 41 | { 42 | "name": "Win32", 43 | "includePath": [ 44 | "${commonIncludePaths}" 45 | ], 46 | "defines": [ 47 | "${commonDefs}", 48 | "OS_WIN", 49 | "IGRAPHICS_GL2" 50 | ], 51 | "intelliSenseMode": "msvc-x64", 52 | "compilerPath": "/usr/bin/clang", 53 | "cStandard": "c11", 54 | "cppStandard": "c++17" 55 | }, 56 | { 57 | "name": "WASM", 58 | "includePath": [ 59 | "${commonIncludePaths}", 60 | "/emsdk/upstream/emscripten/system/include" 61 | ], 62 | "defines": [ 63 | "${commonDefs}", 64 | "OS_WEB", 65 | "IGRAPHICS_GLES2" 66 | ], 67 | "intelliSenseMode": "clang-x64", 68 | "compilerPath": "/emsdk/upstream/bin/clang", 69 | "cStandard": "c11", 70 | "cppStandard": "c++17" 71 | } 72 | ], 73 | "version": 4 74 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | // { 5 | // "name": "(lldb) Launch Reaper VST2", 6 | // "type": "lldb", 7 | // "request": "launch", 8 | // "program": "/Applications/REAPER.app", 9 | // "args": ["${workspaceFolder}/TemplateProject/TemplateProject.RPP"], 10 | // "preLaunchTask": "build VST2 Debug", 11 | // }, 12 | // { 13 | // "name": "(lldb) Launch Reaper VST3", 14 | // "type": "lldb", 15 | // "request": "launch", 16 | // "program": "/Applications/REAPER.app", 17 | // "args": ["${workspaceFolder}/TemplateProject/TemplateProject.RPP"], 18 | // "preLaunchTask": "build VST3 Debug", 19 | // }, 20 | // { 21 | // "name": "(lldb) Launch Reaper AUv2", 22 | // "type": "lldb", 23 | // "request": "launch", 24 | // "program": "/Applications/REAPER.app", 25 | // "args": ["${workspaceFolder}/TemplateProject/TemplateProject.RPP"], 26 | // "preLaunchTask": "build AUv2 Debug", 27 | // }, 28 | { 29 | "name": "(lldb) Launch APP", 30 | "type": "lldb", 31 | "request": "launch", 32 | "program": "~/Applications/TemplateProject.app", 33 | "preLaunchTask": "build APP Debug" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /.vscode/msbuild-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "solution": "${workspaceRoot}/TemplateProject/TemplateProject.sln", 3 | "variables": { 4 | "MSBUILD": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe", 5 | "DEVENV": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/devenv.com" 6 | }, 7 | "buildConfigurations": [ 8 | "Debug", 9 | "Release" 10 | ], 11 | "platformConfigurations": [ 12 | "x64" 13 | ], 14 | "debugConfigurations": [ 15 | { 16 | "name": "test", 17 | "cwd": "${workspaceRoot}", 18 | "program": "${workspaceRoot}/TemplateProject/build-win/TemplateProject_x64.exe", 19 | "args": [] 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "typescript.tsc.autoDetect": "off", 4 | "grunt.autoDetect": "off", 5 | "jake.autoDetect": "off", 6 | "gulp.autoDetect": "off", 7 | "npm.autoDetect": "off" 8 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build APP Debug", 6 | "type": "shell", 7 | "command": "xcodebuild", 8 | "args": [ 9 | "-project", 10 | "${workspaceFolder}/TemplateProject/projects/TemplateProject-macOS.xcodeproj", 11 | "-target", 12 | "APP", 13 | "-configuration", 14 | "Debug", 15 | "SYMROOT=$HOME/Library/Developer/Xcode/DerivedData" 16 | ], 17 | "group": "build", 18 | "problemMatcher": [] 19 | }, 20 | { 21 | "label": "build VST2 Debug", 22 | "type": "shell", 23 | "group": "build", 24 | "command": "xcodebuild", 25 | "args": [ 26 | "-project", 27 | "${workspaceFolder}/TemplateProject/projects/TemplateProject-macOS.xcodeproj", 28 | "-target", 29 | "VST2", 30 | "-configuration", 31 | "Debug", 32 | "SYMROOT=$HOME/Library/Developer/Xcode/DerivedData" 33 | ] 34 | }, 35 | { 36 | "label": "build VST3 Debug", 37 | "type": "shell", 38 | "command": "xcodebuild", 39 | "args": [ 40 | "-project", 41 | "${workspaceFolder}/TemplateProject/projects/TemplateProject-macOS.xcodeproj", 42 | "-target", 43 | "VST3", 44 | "-configuration", 45 | "Debug", 46 | "SYMROOT=$HOME/Library/Developer/Xcode/DerivedData" 47 | ], 48 | "group": "build" 49 | }, 50 | { 51 | "label": "build AUv2 Debug", 52 | "type": "shell", 53 | "command": "xcodebuild", 54 | "args": [ 55 | "-project", 56 | "${workspaceFolder}/TemplateProject/projects/TemplateProject-macOS.xcodeproj", 57 | "-target", 58 | "AU", 59 | "-configuration", 60 | "Debug", 61 | "SYMROOT=$HOME/Library/Developer/Xcode/DerivedData" 62 | ], 63 | "group": "build" 64 | }, 65 | { 66 | "label": "build WAM", 67 | "type": "shell", 68 | "command": "${workspaceFolder}/TemplateProject/scripts/makedist-web.sh container", 69 | "args": [], 70 | "group": { 71 | "kind": "build", 72 | "isDefault": true 73 | }, 74 | } 75 | ] 76 | } 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Build WAM](https://github.com/iPlug2/iPlug2OOS/workflows/Build%20WAM/badge.svg) 2 | 3 | This is the iPlug2 template project and an example of how to set up an iPlug2 project to build "out of source", which is desirable when you need to keep all your project dependencies synchronised with version control and build on Cloud CI/CD. It set up for "containerized development" using [VSCode](https://code.visualstudio.com/docs/devcontainers/containers) and [github codespaces](https://github.com/features/codespaces). 4 | 5 | Instead of using the common-mac.xcconfig and common-win.xcconfig in the iPlug2 folder, it uses copies of them at the top level of the iPlug2OOS repo. This means the iPlug2 submodule itself does not have to be modified. 6 | 7 | https://github.com/iPlug2/iPlug2/wiki/Out-of-source-builds 8 | 9 | Containerized development is documented [here](https://docs.google.com/document/d/e/2PACX-1vT6lYZ3vtYKWAty2g6DL994IO0_pfyGctDdKfPxF6MZwOgFWENfLuVtBW9J0-KzLsfPSKKN055UnAmj/pub) 10 | -------------------------------------------------------------------------------- /TemplateProject/.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "commonIncludePaths": [ 4 | "${workspaceFolder}/**", 5 | "${workspaceFolder}/../../WDL/**", 6 | "${workspaceFolder}/../../IPlug/**", 7 | "${workspaceFolder}/../../IGraphics/**", 8 | "${workspaceFolder}/../../Dependencies/**" 9 | ], 10 | "commonDefs": [ 11 | "APP_API", 12 | "IPLUG_DSP=1", 13 | "IPLUG_EDITOR=1", 14 | "IGRAPHICS_NANOVG", 15 | "NOMINMAX" 16 | ] 17 | }, 18 | "configurations": [ 19 | { 20 | "name": "Mac", 21 | "includePath": [ 22 | "${commonIncludePaths}", 23 | "${workspaceFolder}/../../Dependencies/Build/mac/include/**" 24 | ], 25 | "defines": [ 26 | "${commonDefs}", 27 | "OS_MAC", 28 | "IGRAPHICS_METAL" 29 | ], 30 | "macFrameworkPath": [ 31 | "/System/Library/Frameworks", 32 | "/Library/Frameworks" 33 | ], 34 | "cppStandard": "c++14" 35 | }, 36 | { 37 | "name": "Win32", 38 | "includePath": [ 39 | "${commonIncludePaths}" 40 | ], 41 | "defines": [ 42 | "${commonDefs}", 43 | "OS_WIN", 44 | "IGRAPHICS_GL2" 45 | ] 46 | } 47 | ], 48 | "version": 4 49 | } -------------------------------------------------------------------------------- /TemplateProject/README.md: -------------------------------------------------------------------------------- 1 | # TemplateProject readme 2 | 3 | iPlug2 template project 4 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.RPP: -------------------------------------------------------------------------------- 1 | 28 | 30 | RENDER_FILE "" 31 | RENDER_PATTERN "" 32 | RENDER_FMT 0 2 0 33 | RENDER_1X 0 34 | RENDER_RANGE 1 0 0 18 1000 35 | RENDER_RESAMPLE 3 0 1 36 | RENDER_ADDTOPROJ 0 37 | RENDER_STEMS 0 38 | RENDER_DITHER 0 39 | TIMELOCKMODE 1 40 | TEMPOENVLOCKMODE 1 41 | ITEMMIX 0 42 | DEFPITCHMODE 589824 0 43 | TAKELANE 1 44 | SAMPLERATE 44100 0 0 45 | 47 | LOCK 1 48 | 55 | GLOBAL_AUTO -1 56 | TEMPO 120 4 4 57 | PLAYRATE 1 0 0.25 4 58 | SELECTION 0 0 59 | SELECTION2 0 0 60 | MASTERAUTOMODE 0 61 | MASTERTRACKHEIGHT 0 0 62 | MASTERPEAKCOL 16576 63 | MASTERMUTESOLO 0 64 | MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 0 0 0 -1 -1 0 65 | MASTERHWOUT 0 0 1 0 0 0 0 -1 66 | MASTER_NCH 2 2 67 | MASTER_VOLUME 1 0 -1 -1 1 68 | MASTER_FX 1 69 | MASTER_SEL 0 70 | 78 | 86 | 88 | 123 | FLOATPOS 0 0 0 0 124 | FXID {6E286E48-9450-0443-95BA-63053A416BAB} 125 | WAK 0 0 126 | > 127 | > 128 | > 129 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "files.associations": { 9 | "algorithm": "cpp" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.cpp: -------------------------------------------------------------------------------- 1 | #include "TemplateProject.h" 2 | #include "IPlug_include_in_plug_src.h" 3 | 4 | #if IPLUG_EDITOR 5 | #include "IControls.h" 6 | #endif 7 | 8 | TemplateProject::TemplateProject(const InstanceInfo& info) 9 | : iplug::Plugin(info, MakeConfig(kNumParams, kNumPresets)) 10 | { 11 | GetParam(kParamGain)->InitDouble("Gain", 0., 0., 100.0, 0.01, "%"); 12 | 13 | #if IPLUG_EDITOR // http://bit.ly/2S64BDd 14 | mMakeGraphicsFunc = [&]() { 15 | return MakeGraphics(*this, PLUG_WIDTH, PLUG_HEIGHT, PLUG_FPS); 16 | }; 17 | 18 | mLayoutFunc = [&](IGraphics* pGraphics) { 19 | const IRECT bounds = pGraphics->GetBounds(); 20 | const IRECT innerBounds = bounds.GetPadded(-10.f); 21 | const IRECT sliderBounds = innerBounds.GetFromLeft(150).GetMidVPadded(100); 22 | const IRECT versionBounds = innerBounds.GetFromTRHC(300, 20); 23 | const IRECT titleBounds = innerBounds.GetCentredInside(200, 50); 24 | 25 | if (pGraphics->NControls()) { 26 | pGraphics->GetBackgroundControl()->SetTargetAndDrawRECTs(bounds); 27 | pGraphics->GetControlWithTag(kCtrlTagSlider)->SetTargetAndDrawRECTs(sliderBounds); 28 | pGraphics->GetControlWithTag(kCtrlTagTitle)->SetTargetAndDrawRECTs(titleBounds); 29 | pGraphics->GetControlWithTag(kCtrlTagVersionNumber)->SetTargetAndDrawRECTs(versionBounds); 30 | return; 31 | } 32 | 33 | pGraphics->SetLayoutOnResize(true); 34 | pGraphics->AttachCornerResizer(EUIResizerMode::Size, true); 35 | pGraphics->LoadFont("Roboto-Regular", ROBOTO_FN); 36 | pGraphics->AttachPanelBackground(COLOR_LIGHT_GRAY); 37 | pGraphics->AttachControl(new IVSliderControl(sliderBounds, kParamGain), kCtrlTagSlider); 38 | pGraphics->AttachControl(new ITextControl(titleBounds, "TemplateProject", IText(30)), kCtrlTagTitle); 39 | WDL_String buildInfoStr; 40 | GetBuildInfoStr(buildInfoStr, __DATE__, __TIME__); 41 | pGraphics->AttachControl(new ITextControl(versionBounds, buildInfoStr.Get(), DEFAULT_TEXT.WithAlign(EAlign::Far)), kCtrlTagVersionNumber); 42 | }; 43 | #endif 44 | } 45 | 46 | #if IPLUG_EDITOR 47 | void TemplateProject::OnParentWindowResize(int width, int height) 48 | { 49 | if(GetUI()) 50 | GetUI()->Resize(width, height, 1.f, false); 51 | } 52 | #endif 53 | 54 | #if IPLUG_DSP 55 | void TemplateProject::ProcessBlock(sample** inputs, sample** outputs, int nFrames) 56 | { 57 | const int nChans = NOutChansConnected(); 58 | const double gain = GetParam(kParamGain)->Value() / 100.; 59 | 60 | for (int s = 0; s < nFrames; s++) { 61 | for (int c = 0; c < nChans; c++) { 62 | outputs[c][s] = inputs[c][s] * gain; 63 | } 64 | } 65 | } 66 | #endif 67 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "IPlug_include_in_plug_hdr.h" 4 | 5 | const int kNumPresets = 1; 6 | 7 | enum EParams 8 | { 9 | kParamGain = 0, 10 | kNumParams 11 | }; 12 | 13 | enum ECtrlTags 14 | { 15 | kCtrlTagVersionNumber = 0, 16 | kCtrlTagSlider, 17 | kCtrlTagTitle 18 | }; 19 | 20 | using namespace iplug; 21 | using namespace igraphics; 22 | 23 | class TemplateProject final : public Plugin 24 | { 25 | public: 26 | TemplateProject(const InstanceInfo& info); 27 | 28 | #if IPLUG_EDITOR 29 | void OnParentWindowResize(int width, int height) override; 30 | bool OnHostRequestingSupportedViewConfiguration(int width, int height) override { return true; } 31 | #endif 32 | 33 | #if IPLUG_DSP // http://bit.ly/2S64BDd 34 | void ProcessBlock(sample** inputs, sample** outputs, int nFrames) override; 35 | #endif 36 | }; 37 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.9.34728.123 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateProject-app", "projects\TemplateProject-app.vcxproj", "{41785AE4-5B70-4A75-880B-4B418B4E13C6}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateProject-vst2", "projects\TemplateProject-vst2.vcxproj", "{2EB4846A-93E0-43A0-821E-12237105168F}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateProject-vst3", "projects\TemplateProject-vst3.vcxproj", "{079FC65A-F0E5-4E97-B318-A16D1D0B89DF}" 11 | EndProject 12 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateProject-aax", "projects\TemplateProject-aax.vcxproj", "{DC4B5920-933D-4C82-B842-F34431D55A93}" 13 | EndProject 14 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TemplateProject-clap", "projects\TemplateProject-clap.vcxproj", "{6D05871E-274A-48CA-A39A-AB1C9D7DC78C}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Win32 = Debug|Win32 19 | Debug|x64 = Debug|x64 20 | Release|Win32 = Release|Win32 21 | Release|x64 = Release|x64 22 | Tracer|Win32 = Tracer|Win32 23 | Tracer|x64 = Tracer|x64 24 | EndGlobalSection 25 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 26 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|Win32.ActiveCfg = Debug|Win32 27 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|Win32.Build.0 = Debug|Win32 28 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|x64.ActiveCfg = Debug|x64 29 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Debug|x64.Build.0 = Debug|x64 30 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|Win32.ActiveCfg = Release|Win32 31 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|Win32.Build.0 = Release|Win32 32 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|x64.ActiveCfg = Release|x64 33 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Release|x64.Build.0 = Release|x64 34 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|Win32.ActiveCfg = Tracer|Win32 35 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|Win32.Build.0 = Tracer|Win32 36 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|x64.ActiveCfg = Tracer|x64 37 | {41785AE4-5B70-4A75-880B-4B418B4E13C6}.Tracer|x64.Build.0 = Tracer|x64 38 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|Win32.ActiveCfg = Debug|Win32 39 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|Win32.Build.0 = Debug|Win32 40 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|x64.ActiveCfg = Debug|x64 41 | {2EB4846A-93E0-43A0-821E-12237105168F}.Debug|x64.Build.0 = Debug|x64 42 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|Win32.ActiveCfg = Release|Win32 43 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|Win32.Build.0 = Release|Win32 44 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|x64.ActiveCfg = Release|x64 45 | {2EB4846A-93E0-43A0-821E-12237105168F}.Release|x64.Build.0 = Release|x64 46 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|Win32.ActiveCfg = Tracer|Win32 47 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|Win32.Build.0 = Tracer|Win32 48 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|x64.ActiveCfg = Tracer|x64 49 | {2EB4846A-93E0-43A0-821E-12237105168F}.Tracer|x64.Build.0 = Tracer|x64 50 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|Win32.ActiveCfg = Debug|Win32 51 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|Win32.Build.0 = Debug|Win32 52 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|x64.ActiveCfg = Debug|x64 53 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Debug|x64.Build.0 = Debug|x64 54 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|Win32.ActiveCfg = Release|Win32 55 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|Win32.Build.0 = Release|Win32 56 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|x64.ActiveCfg = Release|x64 57 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Release|x64.Build.0 = Release|x64 58 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|Win32.ActiveCfg = Tracer|Win32 59 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|Win32.Build.0 = Tracer|Win32 60 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|x64.ActiveCfg = Tracer|x64 61 | {079FC65A-F0E5-4E97-B318-A16D1D0B89DF}.Tracer|x64.Build.0 = Tracer|x64 62 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|Win32.ActiveCfg = Debug|Win32 63 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|Win32.Build.0 = Debug|Win32 64 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|x64.ActiveCfg = Debug|x64 65 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Debug|x64.Build.0 = Debug|x64 66 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|Win32.ActiveCfg = Release|Win32 67 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|Win32.Build.0 = Release|Win32 68 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|x64.ActiveCfg = Release|x64 69 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Release|x64.Build.0 = Release|x64 70 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|Win32.ActiveCfg = Tracer|Win32 71 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|Win32.Build.0 = Tracer|Win32 72 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|x64.ActiveCfg = Tracer|x64 73 | {DC4B5920-933D-4C82-B842-F34431D55A93}.Tracer|x64.Build.0 = Tracer|x64 74 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Debug|Win32.ActiveCfg = Debug|Win32 75 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Debug|Win32.Build.0 = Debug|Win32 76 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Debug|x64.ActiveCfg = Debug|x64 77 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Debug|x64.Build.0 = Debug|x64 78 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Release|Win32.ActiveCfg = Release|Win32 79 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Release|Win32.Build.0 = Release|Win32 80 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Release|x64.ActiveCfg = Release|x64 81 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Release|x64.Build.0 = Release|x64 82 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Tracer|Win32.ActiveCfg = Tracer|Win32 83 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Tracer|Win32.Build.0 = Tracer|Win32 84 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Tracer|x64.ActiveCfg = Tracer|x64 85 | {6D05871E-274A-48CA-A39A-AB1C9D7DC78C}.Tracer|x64.Build.0 = Tracer|x64 86 | EndGlobalSection 87 | GlobalSection(SolutionProperties) = preSolution 88 | HideSolutionNode = FALSE 89 | EndGlobalSection 90 | GlobalSection(ExtensibilityGlobals) = postSolution 91 | SolutionGuid = {39C95EA8-A7C1-4EB9-93C3-452C5E54C752} 92 | EndGlobalSection 93 | EndGlobal 94 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.xcworkspace/.xcodesamplecode.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/TemplateProject.xcworkspace/.xcodesamplecode.plist -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /TemplateProject/TemplateProject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TemplateProject/config.h: -------------------------------------------------------------------------------- 1 | #define PLUG_NAME "TemplateProject" 2 | #define PLUG_MFR "AcmeInc" 3 | #define PLUG_VERSION_HEX 0x00000000 4 | #define PLUG_VERSION_STR "0.0.0" 5 | #define PLUG_UNIQUE_ID '9c0G' 6 | #define PLUG_MFR_ID 'Acme' 7 | #define PLUG_URL_STR "https://iplug2.github.io" 8 | #define PLUG_EMAIL_STR "spam@me.com" 9 | #define PLUG_COPYRIGHT_STR "Copyright 2025 Acme Inc" 10 | #define PLUG_CLASS_NAME TemplateProject 11 | 12 | #define BUNDLE_NAME "TemplateProject" 13 | #define BUNDLE_MFR "AcmeInc" 14 | #define BUNDLE_DOMAIN "com" 15 | 16 | #define SHARED_RESOURCES_SUBPATH "TemplateProject" 17 | 18 | #define PLUG_CHANNEL_IO "2-2" 19 | 20 | #define PLUG_LATENCY 0 21 | #define PLUG_TYPE 0 22 | #define PLUG_DOES_MIDI_IN 0 23 | #define PLUG_DOES_MIDI_OUT 0 24 | #define PLUG_DOES_MPE 0 25 | #define PLUG_DOES_STATE_CHUNKS 0 26 | #define PLUG_HAS_UI 1 27 | #define PLUG_WIDTH 1024 28 | #define PLUG_HEIGHT 768 29 | #define PLUG_FPS 60 30 | #define PLUG_SHARED_RESOURCES 0 31 | #define PLUG_HOST_RESIZE 1 32 | #define PLUG_MIN_WIDTH 256 33 | #define PLUG_MIN_HEIGHT 256 34 | #define PLUG_MAX_WIDTH 8192 35 | #define PLUG_MAX_HEIGHT 8192 36 | 37 | #define AUV2_ENTRY TemplateProject_Entry 38 | #define AUV2_ENTRY_STR "TemplateProject_Entry" 39 | #define AUV2_FACTORY TemplateProject_Factory 40 | #define AUV2_VIEW_CLASS TemplateProject_View 41 | #define AUV2_VIEW_CLASS_STR "TemplateProject_View" 42 | 43 | #define AAX_TYPE_IDS 'ITP1' 44 | #define AAX_TYPE_IDS_AUDIOSUITE 'ITA1' 45 | #define AAX_PLUG_MFR_STR "Acme" 46 | #define AAX_PLUG_NAME_STR "TemplateProject\nIPEF" 47 | #define AAX_PLUG_CATEGORY_STR "Effect" 48 | #define AAX_DOES_AUDIOSUITE 1 49 | 50 | #define VST3_SUBCATEGORY "Fx" 51 | 52 | #define CLAP_MANUAL_URL "https://iplug2.github.io/manuals/example_manual.pdf" 53 | #define CLAP_SUPPORT_URL "https://github.com/iPlug2/iPlug2/wiki" 54 | #define CLAP_DESCRIPTION "A simple audio effect for modifying gain" 55 | #define CLAP_FEATURES "audio-effect"//, "utility" 56 | 57 | #define APP_NUM_CHANNELS 2 58 | #define APP_N_VECTOR_WAIT 0 59 | #define APP_MULT 1 60 | #define APP_COPY_AUV3 0 61 | #define APP_SIGNAL_VECTOR_SIZE 64 62 | 63 | #define ROBOTO_FN "Roboto-Regular.ttf" 64 | -------------------------------------------------------------------------------- /TemplateProject/config/TemplateProject-ios.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | // IPLUG2_ROOT should point to the top level IPLUG2 folder 3 | // By default, that is three directories up from /Examples/TemplateProject/config 4 | // If you want to build your project "out of source", you can change IPLUG2_ROOT and the path to common-ios.xcconfig 5 | 6 | IPLUG2_ROOT = ../../iPlug2 7 | 8 | #include "../../common-ios.xcconfig" 9 | 10 | //------------------------------ 11 | // Global build settings 12 | 13 | // the basename of the vst, vst3, app, component, aaxplugin 14 | BINARY_NAME = TemplateProject 15 | 16 | // ------------------------------ 17 | // HEADER AND LIBRARY SEARCH PATHS 18 | EXTRA_INC_PATHS = $(IGRAPHICS_INC_PATHS) 19 | EXTRA_LIB_PATHS = $(IGRAPHICS_LIB_PATHS) 20 | EXTRA_LNK_FLAGS = -framework Metal -framework MetalKit //$(IGRAPHICS_LNK_FLAGS) 21 | 22 | //------------------------------ 23 | // PREPROCESSOR MACROS 24 | 25 | EXTRA_ALL_DEFS = OBJC_PREFIX=vTemplateProject IGRAPHICS_NANOVG IGRAPHICS_METAL SAMPLE_TYPE_FLOAT 26 | //EXTRA_DEBUG_DEFS = 27 | //EXTRA_RELEASE_DEFS = 28 | //EXTRA_TRACER_DEFS = 29 | 30 | //------------------------------ 31 | // RELEASE BUILD OPTIONS 32 | 33 | //Enable/Disable Profiling code 34 | PROFILE = NO //NO, YES - enable this if you want to use instruments to profile a plugin 35 | 36 | // GCC optimization level - 37 | // None: [-O0] Fast: [-O, -O1] Faster:[-O2] Fastest: [-O3] Fastest, smallest: Optimize for size. [-Os] 38 | RELEASE_OPTIMIZE = 3 //0,1,2,3,s 39 | 40 | //------------------------------ 41 | // DEBUG BUILD OPTIONS 42 | DEBUG_OPTIMIZE = 0 //0,1,2,3,s 43 | 44 | //------------------------------ 45 | // MISCELLANEOUS COMPILER OPTIONS 46 | 47 | GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO 48 | 49 | // Uncomment to enable relaxed IEEE compliance 50 | //GCC_FAST_MATH = YES 51 | 52 | // Flags to pass to compiler for all builds 53 | GCC_CFLAGS = -Wno-write-strings -------------------------------------------------------------------------------- /TemplateProject/config/TemplateProject-mac.xcconfig: -------------------------------------------------------------------------------- 1 | 2 | // IPLUG2_ROOT should point to the top level IPLUG2 folder 3 | // By default, that is three directories up from /Examples/TemplateProject/config 4 | // If you want to build your project "out of source", you can change IPLUG2_ROOT and the path to common-mac.xcconfig 5 | 6 | IPLUG2_ROOT = ../../iPlug2 7 | 8 | #include "../../common-mac.xcconfig" 9 | 10 | //------------------------------ 11 | // Global build settings 12 | 13 | // the basename of the vst, vst3, app, component, aaxplugin 14 | BINARY_NAME = TemplateProject 15 | 16 | // ------------------------------ 17 | // HEADER AND LIBRARY SEARCH PATHS 18 | EXTRA_INC_PATHS = $(IGRAPHICS_INC_PATHS) 19 | EXTRA_LIB_PATHS = $(IGRAPHICS_LIB_PATHS) 20 | EXTRA_LNK_FLAGS = -framework Metal -framework MetalKit //$(IGRAPHICS_LNK_FLAGS) 21 | 22 | // EXTRA_APP_DEFS = 23 | // EXTRA_PLUGIN_DEFS = 24 | 25 | //------------------------------ 26 | // PREPROCESSOR MACROS 27 | EXTRA_ALL_DEFS = OBJC_PREFIX=vTemplateProject SWELL_APP_PREFIX=Swell_vTemplateProject IGRAPHICS_NANOVG IGRAPHICS_METAL 28 | //EXTRA_DEBUG_DEFS = 29 | //EXTRA_RELEASE_DEFS = 30 | //EXTRA_TRACER_DEFS = 31 | 32 | //------------------------------ 33 | // RELEASE BUILD OPTIONS 34 | 35 | //Enable/Disable Profiling code 36 | PROFILE = NO //NO, YES - enable this if you want to use instruments to profile a plugin 37 | 38 | // Optimization level - 39 | // None: [-O0] Fast: [-O, -O1] Faster:[-O2] Fastest: [-O3] Fastest, smallest: Optimize for size. [-Os] 40 | RELEASE_OPTIMIZE = 3 //0,1,2,3,s 41 | 42 | //------------------------------ 43 | // DEBUG BUILD OPTIONS 44 | DEBUG_OPTIMIZE = 0 //0,1,2,3,s 45 | 46 | //------------------------------ 47 | // MISCELLANEOUS COMPILER OPTIONS 48 | 49 | //ARCHS = $(ARCHS_STANDARD_32_64_BIT) 50 | ARCHS = $(ARCHS_STANDARD_64_BIT) 51 | 52 | GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO 53 | 54 | // Flags to pass to compiler for all builds 55 | GCC_CFLAGS[arch=x86_64] = -Wno-write-strings -mfpmath=sse -msse -msse2 -msse3 //-mavx 56 | 57 | // Uncomment to enable relaxed IEEE compliance 58 | //GCC_FAST_MATH = YES 59 | 60 | // uncomment this to enable codesigning - necessary for AUv3 delivery 61 | CODE_SIGN_IDENTITY=//Mac Developer 62 | -------------------------------------------------------------------------------- /TemplateProject/config/TemplateProject-web.mk: -------------------------------------------------------------------------------- 1 | # IPLUG2_ROOT should point to the top level IPLUG2 folder from the project folder 2 | # By default, that is three directories up from /Examples/TemplateProject/config 3 | IPLUG2_ROOT = ../../iPlug2 4 | 5 | include ../../common-web.mk 6 | 7 | SRC += $(PROJECT_ROOT)/TemplateProject.cpp 8 | 9 | # WAM_SRC += 10 | 11 | # WAM_CFLAGS += 12 | 13 | WEB_CFLAGS += -DIGRAPHICS_NANOVG -DIGRAPHICS_GLES2 14 | 15 | WAM_LDFLAGS += -O0 -s EXPORT_NAME="'ModuleFactory'" -s ASSERTIONS=0 16 | 17 | WEB_LDFLAGS += -O0 -s ASSERTIONS=0 18 | 19 | WEB_LDFLAGS += $(NANOVG_LDFLAGS) 20 | -------------------------------------------------------------------------------- /TemplateProject/config/TemplateProject-win.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(ProjectDir)..\..\iPlug2 5 | TemplateProject 6 | IGRAPHICS_NANOVG;IGRAPHICS_GL2 7 | 8 | 9 | 10 | $(SolutionDir)build-win\pdbs\$(TargetName)_$(Platform).pdb 11 | $(SolutionDir)build-win 12 | $(IPLUG2_ROOT)\Scripts\create_bundle.bat 13 | 14 | 15 | 16 | 17 | 18 | $(BINARY_NAME) 19 | 20 | 21 | 22 | $(EXTRA_INC_PATHS);$(IPLUG_INC_PATHS);$(IGRAPHICS_INC_PATHS);$(GLAD_GL2_PATHS);%(AdditionalIncludeDirectories) 23 | $(EXTRA_ALL_DEFS);%(PreprocessorDefinitions) 24 | 25 | 26 | wininet.lib;comctl32.lib;Shlwapi.lib;%(AdditionalDependencies) 27 | $(PDB_FILE) 28 | 29 | 30 | CALL "$(SolutionDir)scripts\postbuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(COPY_VST2)" "$(TargetPath)" "$(VST2_32_PATH)" "$(VST2_64_PATH)" "$(VST3_32_PATH)" "$(VST3_64_PATH)" "$(AAX_32_PATH)" "$(AAX_64_PATH)" "$(CLAP_PATH)" "$(BUILD_DIR)" "$(VST_ICON)" "$(AAX_ICON)" "$(CREATE_BUNDLE_SCRIPT)" 31 | 32 | 33 | CALL "$(SolutionDir)scripts\prebuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(TargetPath)" "$(OutDir)" 34 | 35 | 36 | 37 | 38 | $(BINARY_NAME) 39 | 40 | 41 | $(EXTRA_ALL_DEFS) 42 | true 43 | 44 | 45 | $(EXTRA_DEBUG_DEFS) 46 | 47 | 48 | $(EXTRA_RELEASE_DEFS) 49 | 50 | 51 | $(EXTRA_TRACER_DEFS) 52 | 53 | 54 | $(PDB_FILE) 55 | 56 | 57 | $(BUILD_DIR) 58 | 59 | 60 | $(CREATE_BUNDLE_SCRIPT) 61 | 62 | 63 | -------------------------------------------------------------------------------- /TemplateProject/installer/TemplateProject-installer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/installer/TemplateProject-installer-bg.png -------------------------------------------------------------------------------- /TemplateProject/installer/changelog.txt: -------------------------------------------------------------------------------- 1 | TemplateProject changelog 2 | www.acmeinc.com 3 | 4 | 00/00/0000 - v0.0.0 initial release 5 | -------------------------------------------------------------------------------- /TemplateProject/installer/intro.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600 2 | \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww14440\viewh8920\viewkind0 6 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 7 | 8 | \f0\fs26 \cf0 Thanks for purchasing TemplateProject\'85 \ 9 | \ 10 | {\field{\*\fldinst{HYPERLINK "mailto::contact@acmeinc.com"}}{\fldrslt contact@acmeinc.com}}\ 11 | \ 12 | {\field{\*\fldinst{HYPERLINK "http://www.acmeinc.com"}}{\fldrslt http://www.acmeinc.com}}\ 13 | } -------------------------------------------------------------------------------- /TemplateProject/installer/known-issues.txt: -------------------------------------------------------------------------------- 1 | TemplateProject changelog 2 | www.acmeinc.com 3 | 4 | 00/00/00 - v1.00 initial release -------------------------------------------------------------------------------- /TemplateProject/installer/license.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600 2 | \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 ArialMT;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww17060\viewh12300\viewkind0 6 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 7 | 8 | \f0\b\fs20 \cf0 THIS IS A PLACEHOLDER LICENCE PROVIDED WITH IPLUG2 \ 9 | \ 10 | IT HAS NO LEGAL BASIS\ 11 | \ 12 | YOU MAY WISH TO CONSULT A LAWYER BEFORE MAKING A LICENCE\ 13 | \ 14 | Caveat: 15 | \b0 \ 16 | By installing this software you agree to use it at your own risk. The developer cannot be held responsible for any damages caused as a result of it's use.\ 17 | \ 18 | 19 | \b Distribution: 20 | \b0 \ 21 | You are not permitted to distribute the software without the developer's permission. This includes, but is not limited to the distribution on magazine covers or software review websites.\ 22 | \ 23 | 24 | \b Multiple Installations*: 25 | \b0 If you purchased this product as an individual, you are licensed to install and use the software on any computer you need to use it on, providing you remove it afterwards (if it is a shared machine). If you purchased it as an institution or company, you are licensed to use it on one machine only, and must purchase additional copies for each machine you wish to use it on.\ 26 | \ 27 | 28 | \b Upgrades*: 29 | \b0 If you purchased this product you are entitled to free updates until the next major version number. The developer makes no guarantee is made that this product will be maintained indefinitely.\ 30 | \ 31 | 32 | \b License transfers*: 33 | \b0 If you purchased this product you may transfer your license to another person. As the original owner you are required to contact the developer with the details of the license transfer, so that the new owner can receive the updates and support attached to the license. Upon transferring a license the original owner must remove any copies from their machines and are no longer permitted to use the software.\ 34 | \ 35 | 36 | \b TemplateProject is \'a9 Copyright AcmeInc 2019\ 37 | 38 | \b0 \ 39 | http://www.acmeinc.com\ 40 | \ 41 | VST and VST3 are trademarks of Steinberg Media Technologies GmbH. \ 42 | Audio Unit is a trademark of Apple, Inc. \ 43 | AAX is a trademarks of Avid, Inc.\ 44 | \ 45 | * Applies to full version only, not the demo version.} -------------------------------------------------------------------------------- /TemplateProject/installer/readme-mac.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600 2 | \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset0 Monaco;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\margl1440\margr1440\vieww14320\viewh8340\viewkind0 6 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 7 | 8 | \f0\fs26 \cf0 The plugins will be installed in your system plugin folders which will make them available to all user accounts on your computer. 9 | \f1\fs20 10 | \f0\fs26 The standalone will be installed in the system Applications folder. \ 11 | \ 12 | If you don't want to install all components, click "Customize" on the "Installation Type" page.\ 13 | \ 14 | If you experience any problems with TemplateProject, please contact us at the following address:\ 15 | \ 16 | {\field{\*\fldinst{HYPERLINK "mailto::support@acmeinc.com"}}{\fldrslt support@acmeinc.com}}} -------------------------------------------------------------------------------- /TemplateProject/installer/readme-win-demo.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600 2 | {\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;\f1\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\vieww12000\viewh15840\viewkind0 6 | \deftab720 7 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\partightenfactor0 8 | 9 | \f0\b\fs26 \cf0 Thanks for installing TemplateProject Demo 10 | \f1\b0 \ 11 | \ 12 | The Demo is limited ...\ 13 | \ 14 | AcmeInc\ 15 | \ 16 | If you experience any problems with TemplateProject, please contact us at the following address:\ 17 | \ 18 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 19 | {\field{\*\fldinst{HYPERLINK "mailto::support@acmeinc.com"}}{\fldrslt \cf0 support@acmeinc.com}}\ 20 | } -------------------------------------------------------------------------------- /TemplateProject/installer/readme-win.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf600 2 | {\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;\f1\fnil\fcharset0 LucidaGrande;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw11900\paperh16840\vieww12000\viewh15840\viewkind0 6 | \deftab720 7 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\partightenfactor0 8 | 9 | \f0\b\fs26 \cf0 Thanks for installing TemplateProject 10 | \f1\b0 \ 11 | \ 12 | BLAH BLAH BLAH\ 13 | \ 14 | AcmeInc\ 15 | \ 16 | If you experience any problems with TemplateProject, please contact us at the following address:\ 17 | \ 18 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 19 | {\field{\*\fldinst{HYPERLINK "mailto::support@acmeinc.com"}}{\fldrslt \cf0 acmeinc@AcmeInc.com}}\ 20 | } -------------------------------------------------------------------------------- /TemplateProject/manual/TemplateProject manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/manual/TemplateProject manual.pdf -------------------------------------------------------------------------------- /TemplateProject/manual/TemplateProject manual.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper,14pt]{report} 2 | \begin{document} 3 | \end{document} -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-aax.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-app.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WindowsLocalDebugger 5 | 6 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-clap.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(CLAP_64_HOST_PATH) 5 | WindowsLocalDebugger 6 | $(CLAP_64_COMMAND_ARGS) 7 | 8 | 9 | $(CLAP_64_HOST_PATH) 10 | $(CLAP_64_COMMAND_ARGS) 11 | WindowsLocalDebugger 12 | 13 | 14 | $(CLAP_64_HOST_PATH) 15 | $(CLAP_64_COMMAND_ARGS) 16 | WindowsLocalDebugger 17 | 18 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.io.github.iplug2 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/xcshareddata/xcschemes/iOS-APP with AUv3.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | 56 | 62 | 63 | 64 | 65 | 71 | 73 | 79 | 80 | 81 | 82 | 84 | 85 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/xcshareddata/xcschemes/iOS-AUv3.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 10 | 16 | 22 | 23 | 24 | 30 | 36 | 37 | 38 | 39 | 40 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 69 | 73 | 74 | 75 | 81 | 82 | 83 | 84 | 92 | 94 | 100 | 101 | 102 | 103 | 105 | 106 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/xcshareddata/xcschemes/iOS-AUv3Framework.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-iOS.xcodeproj/xcshareddata/xcschemes/iOS-Update plists.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.application-groups 8 | 9 | group.io.github.iplug2 10 | 11 | com.apple.security.assets.music.read-write 12 | 13 | com.apple.security.device.microphone 14 | 15 | com.apple.security.files.user-selected.read-write 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/All macOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AAX.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 45 | 49 | 50 | 51 | 57 | 58 | 59 | 60 | 66 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-APP with AUv3.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | 56 | 62 | 63 | 64 | 65 | 71 | 73 | 79 | 80 | 81 | 82 | 84 | 85 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-APP.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 54 | 56 | 62 | 63 | 64 | 65 | 71 | 73 | 79 | 80 | 81 | 82 | 84 | 85 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AUv2.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 47 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 65 | 66 | 67 | 68 | 74 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AUv3.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 10 | 16 | 22 | 23 | 24 | 30 | 36 | 37 | 38 | 39 | 40 | 45 | 46 | 47 | 48 | 62 | 66 | 67 | 68 | 74 | 75 | 76 | 77 | 80 | 81 | 82 | 83 | 90 | 91 | 97 | 98 | 99 | 100 | 102 | 103 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-AUv3Framework.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-CLAP.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 45 | 49 | 50 | 51 | 57 | 58 | 64 | 65 | 66 | 67 | 69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-Update plists.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-VST2.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 47 | 48 | 54 | 55 | 56 | 57 | 60 | 61 | 62 | 63 | 69 | 72 | 73 | 74 | 76 | 77 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-macOS.xcodeproj/xcshareddata/xcschemes/macOS-VST3.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 47 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 65 | 66 | 67 | 68 | 74 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-vst2.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(VST2_32_HOST_PATH) 5 | $(VST2_32_COMMAND_ARGS) 6 | WindowsLocalDebugger 7 | 8 | 9 | $(VST2_32_HOST_PATH) 10 | WindowsLocalDebugger 11 | $(VST2_32_COMMAND_ARGS) 12 | 13 | 14 | $(VST2_32_HOST_PATH) 15 | WindowsLocalDebugger 16 | $(VST2_32_COMMAND_ARGS) 17 | 18 | 19 | $(VST2_64_HOST_PATH) 20 | $(VST2_64_COMMAND_ARGS) 21 | WindowsLocalDebugger 22 | 23 | 24 | $(VST2_64_HOST_PATH) 25 | WindowsLocalDebugger 26 | $(VST2_64_COMMAND_ARGS) 27 | 28 | 29 | $(VST2_64_HOST_PATH) 30 | WindowsLocalDebugger 31 | $(VST2_64_COMMAND_ARGS) 32 | 33 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-vst3.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(VST3_32_HOST_PATH) 5 | $(VST3_32_COMMAND_ARGS) 6 | WindowsLocalDebugger 7 | 8 | 9 | $(VST3_32_HOST_PATH) 10 | WindowsLocalDebugger 11 | $(VST3_32_COMMAND_ARGS) 12 | 13 | 14 | $(VST3_32_HOST_PATH) 15 | WindowsLocalDebugger 16 | $(VST3_32_COMMAND_ARGS) 17 | 18 | 19 | $(VST3_64_HOST_PATH) 20 | $(VST3_64_COMMAND_ARGS) 21 | WindowsLocalDebugger 22 | 23 | 24 | $(VST3_64_HOST_PATH) 25 | WindowsLocalDebugger 26 | $(VST3_64_COMMAND_ARGS) 27 | 28 | 29 | $(VST3_64_HOST_PATH) 30 | WindowsLocalDebugger 31 | $(VST3_64_COMMAND_ARGS) 32 | 33 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-wam-controller.mk: -------------------------------------------------------------------------------- 1 | include ../config/TemplateProject-web.mk 2 | 3 | TARGET = ../build-web/scripts/TemplateProject-web.js 4 | 5 | SRC += $(WEB_SRC) 6 | CFLAGS += $(WEB_CFLAGS) 7 | CFLAGS += $(EXTRA_CFLAGS) 8 | LDFLAGS += $(WEB_LDFLAGS) \ 9 | -s EXPORTED_FUNCTIONS=$(WEB_EXPORTS) 10 | 11 | $(TARGET): $(OBJECTS) 12 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) 13 | -------------------------------------------------------------------------------- /TemplateProject/projects/TemplateProject-wam-processor.mk: -------------------------------------------------------------------------------- 1 | include ../config/TemplateProject-web.mk 2 | 3 | TARGET = ../build-web/scripts/TemplateProject-wam.js 4 | 5 | SRC += $(WAM_SRC) 6 | CFLAGS += $(WAM_CFLAGS) 7 | CFLAGS += $(EXTRA_CFLAGS) 8 | LDFLAGS += $(WAM_LDFLAGS) \ 9 | -s EXPORTED_FUNCTIONS=$(WAM_EXPORTS) 10 | 11 | $(TARGET): $(OBJECTS) 12 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) 13 | -------------------------------------------------------------------------------- /TemplateProject/resources/IPlugAUViewController_vTemplateProject.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icon_20x20@2x.png", 5 | "idiom" : "iphone", 6 | "scale" : "2x", 7 | "size" : "20x20" 8 | }, 9 | { 10 | "filename" : "icon_20x20@3x.png", 11 | "idiom" : "iphone", 12 | "scale" : "3x", 13 | "size" : "20x20" 14 | }, 15 | { 16 | "filename" : "icon_29x29@2x.png", 17 | "idiom" : "iphone", 18 | "scale" : "2x", 19 | "size" : "29x29" 20 | }, 21 | { 22 | "filename" : "icon_29x29@3x.png", 23 | "idiom" : "iphone", 24 | "scale" : "3x", 25 | "size" : "29x29" 26 | }, 27 | { 28 | "filename" : "icon_40x40@2x.png", 29 | "idiom" : "iphone", 30 | "scale" : "2x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "filename" : "icon_40x40@3x.png", 35 | "idiom" : "iphone", 36 | "scale" : "3x", 37 | "size" : "40x40" 38 | }, 39 | { 40 | "filename" : "icon_60x60@2x.png", 41 | "idiom" : "iphone", 42 | "scale" : "2x", 43 | "size" : "60x60" 44 | }, 45 | { 46 | "filename" : "icon_60x60@3x.png", 47 | "idiom" : "iphone", 48 | "scale" : "3x", 49 | "size" : "60x60" 50 | }, 51 | { 52 | "filename" : "icon_20x20@1x.png", 53 | "idiom" : "ipad", 54 | "scale" : "1x", 55 | "size" : "20x20" 56 | }, 57 | { 58 | "idiom" : "ipad", 59 | "scale" : "2x", 60 | "size" : "20x20" 61 | }, 62 | { 63 | "filename" : "icon_29x29@1x.png", 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "29x29" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "29x29" 72 | }, 73 | { 74 | "filename" : "icon_40x40@1x.png", 75 | "idiom" : "ipad", 76 | "scale" : "1x", 77 | "size" : "40x40" 78 | }, 79 | { 80 | "idiom" : "ipad", 81 | "scale" : "2x", 82 | "size" : "40x40" 83 | }, 84 | { 85 | "filename" : "icon_76x76@1x.png", 86 | "idiom" : "ipad", 87 | "scale" : "1x", 88 | "size" : "76x76" 89 | }, 90 | { 91 | "filename" : "icon_76x76@2x.png", 92 | "idiom" : "ipad", 93 | "scale" : "2x", 94 | "size" : "76x76" 95 | }, 96 | { 97 | "filename" : "icon_83.5x83.5@2x.png", 98 | "idiom" : "ipad", 99 | "scale" : "2x", 100 | "size" : "83.5x83.5" 101 | }, 102 | { 103 | "filename" : "icon_1024x1024@1x.png", 104 | "idiom" : "ios-marketing", 105 | "scale" : "1x", 106 | "size" : "1024x1024" 107 | } 108 | ], 109 | "info" : { 110 | "author" : "xcode", 111 | "version" : 1 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_1024x1024@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_20x20@3x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_29x29@3x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_40x40@3x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_60x60@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_60x60@3x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_76x76@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_76x76@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-iOS.appiconset/icon_83.5x83.5@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "size": "16x16", 5 | "idiom": "mac", 6 | "filename": "icon_16x16@1x.png", 7 | "scale": "1x" 8 | }, 9 | { 10 | "size": "16x16", 11 | "idiom": "mac", 12 | "filename": "icon_16x16@2x.png", 13 | "scale": "2x" 14 | }, 15 | { 16 | "size": "32x32", 17 | "idiom": "mac", 18 | "filename": "icon_32x32@1x.png", 19 | "scale": "1x" 20 | }, 21 | { 22 | "size": "32x32", 23 | "idiom": "mac", 24 | "filename": "icon_32x32@2x.png", 25 | "scale": "2x" 26 | }, 27 | { 28 | "size": "128x128", 29 | "idiom": "mac", 30 | "filename": "icon_128x128@1x.png", 31 | "scale": "1x" 32 | }, 33 | { 34 | "size": "128x128", 35 | "idiom": "mac", 36 | "filename": "icon_128x128@2x.png", 37 | "scale": "2x" 38 | }, 39 | { 40 | "size": "256x256", 41 | "idiom": "mac", 42 | "filename": "icon_256x256@1x.png", 43 | "scale": "1x" 44 | }, 45 | { 46 | "size": "256x256", 47 | "idiom": "mac", 48 | "filename": "icon_256x256@2x.png", 49 | "scale": "2x" 50 | }, 51 | { 52 | "size": "512x512", 53 | "idiom": "mac", 54 | "filename": "icon_512x512@1x.png", 55 | "scale": "1x" 56 | }, 57 | { 58 | "size": "512x512", 59 | "idiom": "mac", 60 | "filename": "icon_512x512@2x.png", 61 | "scale": "2x" 62 | } 63 | ], 64 | "info": { 65 | "version": 1, 66 | "author": "com.midwinter-dg.appiconset-generator" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_128x128@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_128x128@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_16x16@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_16x16@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_256x256@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_256x256@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_32x32@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_32x32@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_512x512@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_512x512@1x.png -------------------------------------------------------------------------------- /TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/Images.xcassets/TemplateProject-macOS.appiconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-AAX-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 11 | CFBundleIdentifier 12 | com.AcmeInc.aax.TemplateProject 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | TDMw 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | PTul 23 | CFBundleVersion 24 | 0.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.13.0 29 | LSMultipleInstancesProhibited 30 | true 31 | LSPrefersCarbon 32 | 33 | NSAppleScriptEnabled 34 | No 35 | 36 | 37 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-AU-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AudioComponents 6 | 7 | 8 | description 9 | TemplateProject 10 | factoryFunction 11 | TemplateProject_Factory 12 | manufacturer 13 | Acme 14 | name 15 | AcmeInc: TemplateProject 16 | sandboxSafe 17 | 18 | subtype 19 | 9c0G 20 | type 21 | aufx 22 | version 23 | 0 24 | 25 | 26 | AudioUnit Version 27 | 0x00000000 28 | CFBundleDevelopmentRegion 29 | English 30 | CFBundleExecutable 31 | TemplateProject 32 | CFBundleGetInfoString 33 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 34 | CFBundleIdentifier 35 | com.AcmeInc.audiounit.TemplateProject 36 | CFBundleInfoDictionaryVersion 37 | 6.0 38 | CFBundleName 39 | TemplateProject 40 | CFBundlePackageType 41 | BNDL 42 | CFBundleShortVersionString 43 | 0.0.0 44 | CFBundleSignature 45 | 9c0G 46 | CFBundleVersion 47 | 0.0.0 48 | CSResourcesFileMapped 49 | 50 | LSMinimumSystemVersion 51 | 10.13.0 52 | NSPrincipalClass 53 | TemplateProject_View 54 | 55 | 56 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-CLAP-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2024 Acme Inc 11 | CFBundleIdentifier 12 | com.AcmeInc.clap.TemplateProject 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | 9c0G 23 | CFBundleVersion 24 | 0.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.13.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-VST2-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 11 | CFBundleIdentifier 12 | com.AcmeInc.vst.TemplateProject 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | 9c0G 23 | CFBundleVersion 24 | 0.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.13.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-VST3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 11 | CFBundleIdentifier 12 | com.AcmeInc.vst3.TemplateProject 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | 9c0G 23 | CFBundleVersion 24 | 0.0.0 25 | CSResourcesFileMapped 26 | 27 | LSMinimumSystemVersion 28 | 10.13.0 29 | 30 | 31 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS-AUv3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | TemplateProjectAppExtension 9 | CFBundleExecutable 10 | TemplateProjectAppExtension 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProjectAppExtension 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 0.0.0 25 | NSExtension 26 | 27 | NSExtensionAttributes 28 | 29 | AudioComponents 30 | 31 | 32 | description 33 | TemplateProject 34 | factoryFunction 35 | IPlugAUViewController_vTemplateProject 36 | manufacturer 37 | Acme 38 | name 39 | AcmeInc: TemplateProject 40 | sandboxSafe 41 | 42 | subtype 43 | 9c0G 44 | tags 45 | 46 | Effects 47 | size:{1024,768} 48 | 49 | type 50 | aufx 51 | version 52 | 0 53 | 54 | 55 | 56 | NSExtensionMainStoryboard 57 | TemplateProject-iOS-MainInterface 58 | NSExtensionPointIdentifier 59 | com.apple.AudioUnit-UI 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS-AUv3Framework-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | AUv3Framework 9 | CFBundleExecutable 10 | AUv3Framework 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | AUv3Framework 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1.0.0 23 | 24 | 25 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleIcons 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 0.0.0 25 | LSApplicationCategoryType 26 | public.app-category.music 27 | LSRequiresIPhoneOS 28 | 29 | NSBluetoothAlwaysUsageDescription 30 | Needs Bluetooth MIDI 31 | NSMicrophoneUsageDescription 32 | Needs microphone access to process audio 33 | UIBackgroundModes 34 | 35 | audio 36 | 37 | UILaunchStoryboardName 38 | TemplateProject-iOS-LaunchScreen 39 | UIMainStoryboardFile 40 | TemplateProject-iOS 41 | UIRequiredDeviceCapabilities 42 | 43 | armv7 44 | 45 | UIRequiresFullScreen 46 | 47 | UISupportedInterfaceOrientations 48 | 49 | UIInterfaceOrientationPortrait 50 | UIInterfaceOrientationLandscapeLeft 51 | UIInterfaceOrientationLandscapeRight 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS-LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS-MainInterface.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-iOS.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-macOS-AUv3-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 11 | CFBundleIdentifier 12 | com.AcmeInc.app.TemplateProject.AUv3 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | TemplateProject 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 0.0.0 21 | CFBundleVersion 22 | 0.0.0 23 | LSMinimumSystemVersion 24 | 10.13.0 25 | NSExtension 26 | 27 | NSExtensionAttributes 28 | 29 | AudioComponentBundle 30 | com.AcmeInc.app.TemplateProject.AUv3Framework 31 | AudioComponents 32 | 33 | 34 | description 35 | TemplateProject 36 | manufacturer 37 | Acme 38 | name 39 | AcmeInc: TemplateProject 40 | sandboxSafe 41 | 42 | subtype 43 | 9c0G 44 | tags 45 | 46 | Effects 47 | 48 | type 49 | aufx 50 | version 51 | 0 52 | 53 | 54 | 55 | NSExtensionPointIdentifier 56 | com.apple.AudioUnit-UI 57 | NSExtensionPrincipalClass 58 | IPlugAUViewController_vTemplateProject 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-macOS-AUv3Framework-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProjectAU 9 | CFBundleIdentifier 10 | com.AcmeInc.app.TemplateProject.AUv3Framework 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | TemplateProjectAU 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleVersion 20 | 1.0.0 21 | 22 | 23 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-macOS-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TemplateProject 9 | CFBundleGetInfoString 10 | TemplateProject v0.0.0 Copyright 2025 Acme Inc 11 | CFBundleIconFile 12 | TemplateProject.icns 13 | CFBundleIdentifier 14 | com.AcmeInc.app.TemplateProject 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | TemplateProject 19 | CFBundlePackageType 20 | BNDL 21 | CFBundleShortVersionString 22 | 0.0.0 23 | CFBundleSignature 24 | 9c0G 25 | CFBundleVersion 26 | 0.0.0 27 | CSResourcesFileMapped 28 | 29 | LSApplicationCategoryType 30 | public.app-category.music 31 | LSMinimumSystemVersion 32 | 10.13.0 33 | NSMainNibFile 34 | TemplateProject-macOS-MainMenu 35 | NSMicrophoneUsageDescription 36 | This app needs mic access to process audio. 37 | NSPrincipalClass 38 | SWELLApplication 39 | 40 | 41 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject-macOS-MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/TemplateProject.icns -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProject.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/TemplateProject.ico -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProjectAU.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #if TARGET_OS_IOS == 1 4 | #import 5 | #else 6 | #import 7 | #endif 8 | 9 | #define IPLUG_AUVIEWCONTROLLER IPlugAUViewController_vTemplateProject 10 | #define IPLUG_AUAUDIOUNIT IPlugAUAudioUnit_vTemplateProject 11 | #import 12 | #import 13 | 14 | //! Project version number for TemplateProjectAU. 15 | FOUNDATION_EXPORT double TemplateProjectAUVersionNumber; 16 | 17 | //! Project version string for TemplateProjectAU. 18 | FOUNDATION_EXPORT const unsigned char TemplateProjectAUVersionString[]; 19 | 20 | @class IPlugAUViewController_vTemplateProject; 21 | -------------------------------------------------------------------------------- /TemplateProject/resources/TemplateProjectAUv3Appex.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | void Dummy(void) 4 | { 5 | // Dummy code to force compile 6 | } 7 | -------------------------------------------------------------------------------- /TemplateProject/resources/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iPlug2/iPlug2OOS/b2f39e1f9b23e999592ddfff992d8b433530ca22/TemplateProject/resources/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /TemplateProject/resources/main.rc_mac_dlg: -------------------------------------------------------------------------------- 1 | #ifndef SWELL_DLG_SCALE_AUTOGEN 2 | #ifdef __APPLE__ 3 | #define SWELL_DLG_SCALE_AUTOGEN 1.7 4 | #else 5 | #define SWELL_DLG_SCALE_AUTOGEN 1.9 6 | #endif 7 | #endif 8 | #ifndef SWELL_DLG_FLAGS_AUTOGEN 9 | #define SWELL_DLG_FLAGS_AUTOGEN SWELL_DLG_WS_FLIPPED|SWELL_DLG_WS_NOAUTOSIZE 10 | #endif 11 | 12 | #ifndef SET_IDD_DIALOG_PREF_SCALE 13 | #define SET_IDD_DIALOG_PREF_SCALE SWELL_DLG_SCALE_AUTOGEN 14 | #endif 15 | #ifndef SET_IDD_DIALOG_PREF_STYLE 16 | #define SET_IDD_DIALOG_PREF_STYLE SWELL_DLG_FLAGS_AUTOGEN 17 | #endif 18 | SWELL_DEFINE_DIALOG_RESOURCE_BEGIN(IDD_DIALOG_PREF,SET_IDD_DIALOG_PREF_STYLE,"Preferences",223,309,SET_IDD_DIALOG_PREF_SCALE) 19 | BEGIN 20 | DEFPUSHBUTTON "OK",IDOK,110,285,50,14 21 | PUSHBUTTON "Apply",IDAPPLY,54,285,50,14 22 | PUSHBUTTON "Cancel",IDCANCEL,166,285,50,14 23 | COMBOBOX IDC_COMBO_AUDIO_DRIVER,20,35,100,100,CBS_DROPDOWNLIST | CBS_HASSTRINGS 24 | LTEXT "Driver Type",IDC_STATIC,22,25,38,8 25 | COMBOBOX IDC_COMBO_AUDIO_IN_DEV,20,65,100,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 26 | LTEXT "Input Device",IDC_STATIC,20,55,42,8 27 | COMBOBOX IDC_COMBO_AUDIO_OUT_DEV,20,95,100,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 28 | LTEXT "Output Device",IDC_STATIC,20,85,47,8 29 | COMBOBOX IDC_COMBO_AUDIO_BUF_SIZE,135,35,65,100,CBS_DROPDOWNLIST | CBS_HASSTRINGS 30 | LTEXT "Buffer Size",IDC_STATIC,137,25,46,8 31 | COMBOBOX IDC_COMBO_AUDIO_SR,135,95,65,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 32 | LTEXT "Sampling Rate",IDC_STATIC,135,85,47,8 33 | GROUPBOX "Audio Device Settings",IDC_STATIC,5,10,210,170 34 | PUSHBUTTON "Config...",IDC_BUTTON_OS_DEV_SETTINGS,135,155,65,14 35 | COMBOBOX IDC_COMBO_AUDIO_IN_L,20,125,40,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 36 | LTEXT "Input 1 (L)",IDC_STATIC,20,115,33,8 37 | COMBOBOX IDC_COMBO_AUDIO_IN_R,65,126,40,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 38 | LTEXT "Input 2 (R)",IDC_STATIC,65,115,34,8 39 | COMBOBOX IDC_COMBO_AUDIO_OUT_L,20,155,40,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 40 | LTEXT "Output 1 (L)",IDC_STATIC,20,145,38,8 41 | COMBOBOX IDC_COMBO_AUDIO_OUT_R,65,155,40,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 42 | LTEXT "Output 2 (R)",IDC_STATIC,65,145,40,8 43 | GROUPBOX "MIDI Device Settings",IDC_STATIC,5,190,210,85 44 | COMBOBOX IDC_COMBO_MIDI_OUT_DEV,15,250,100,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 45 | LTEXT "Output Device",IDC_STATIC,15,240,47,8 46 | COMBOBOX IDC_COMBO_MIDI_IN_DEV,15,220,100,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 47 | LTEXT "Input Device",IDC_STATIC,15,210,42,8 48 | LTEXT "Input Channel",IDC_STATIC,125,210,45,8 49 | COMBOBOX IDC_COMBO_MIDI_IN_CHAN,125,220,50,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 50 | LTEXT "Output Channel",IDC_STATIC,125,240,50,8 51 | COMBOBOX IDC_COMBO_MIDI_OUT_CHAN,125,250,50,200,CBS_DROPDOWNLIST | CBS_HASSTRINGS 52 | END 53 | SWELL_DEFINE_DIALOG_RESOURCE_END(IDD_DIALOG_PREF) 54 | 55 | 56 | #ifndef SET_IDD_DIALOG_MAIN_SCALE 57 | #define SET_IDD_DIALOG_MAIN_SCALE SWELL_DLG_SCALE_AUTOGEN 58 | #endif 59 | #ifndef SET_IDD_DIALOG_MAIN_STYLE 60 | #define SET_IDD_DIALOG_MAIN_STYLE SWELL_DLG_FLAGS_AUTOGEN|SWELL_DLG_WS_OPAQUE 61 | #endif 62 | SWELL_DEFINE_DIALOG_RESOURCE_BEGIN(IDD_DIALOG_MAIN,SET_IDD_DIALOG_MAIN_STYLE,"TemplateProject",300,300,SET_IDD_DIALOG_MAIN_SCALE) 63 | BEGIN 64 | END 65 | SWELL_DEFINE_DIALOG_RESOURCE_END(IDD_DIALOG_MAIN) 66 | 67 | 68 | 69 | //EOF 70 | 71 | -------------------------------------------------------------------------------- /TemplateProject/resources/main.rc_mac_menu: -------------------------------------------------------------------------------- 1 | SWELL_DEFINE_MENU_RESOURCE_BEGIN(IDR_MENU1) 2 | POPUP "&File" 3 | BEGIN 4 | MENUITEM "&Preferences...\tCtrl+,", ID_PREFERENCES 5 | MENUITEM "&Quit", ID_QUIT 6 | END 7 | POPUP "&Debug" 8 | BEGIN 9 | MENUITEM "&Live Edit Mode\tCtrl+E", ID_LIVE_EDIT 10 | MENUITEM "&Show Control Bounds\tCtrl+B", ID_SHOW_BOUNDS 11 | MENUITEM "&Show Drawn Area\tCtrl+D", ID_SHOW_DRAWN 12 | MENUITEM "&Show FPS\tCtrl+F", ID_SHOW_FPS 13 | END 14 | POPUP "&Help" 15 | BEGIN 16 | MENUITEM "&About", ID_ABOUT 17 | MENUITEM "&Read Manual", ID_HELP 18 | END 19 | SWELL_DEFINE_MENU_RESOURCE_END(IDR_MENU1) 20 | 21 | 22 | 23 | //EOF 24 | 25 | -------------------------------------------------------------------------------- /TemplateProject/resources/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by main.rc 4 | 5 | #define IDR_ACCELERATOR1 40000 6 | #define IDD_DIALOG_MAIN 40001 7 | #define IDD_DIALOG_PREF 40002 8 | #define IDI_ICON1 40003 9 | #define IDR_MENU1 40004 10 | #define ID_ABOUT 40005 11 | #define ID_PREFERENCES 40006 12 | #define ID_QUIT 40007 13 | #define ID_HELP 40008 14 | #define IDC_COMBO_AUDIO_DRIVER 40009 15 | #define IDC_COMBO_AUDIO_IN_DEV 40010 16 | #define IDC_COMBO_AUDIO_OUT_DEV 40011 17 | #define IDC_COMBO_AUDIO_BUF_SIZE 40012 18 | #define IDC_COMBO_AUDIO_SR 40013 19 | #define IDC_COMBO_AUDIO_IN_L 40014 20 | #define IDC_COMBO_AUDIO_IN_R 40015 21 | #define IDC_COMBO_AUDIO_OUT_R 40016 22 | #define IDC_COMBO_AUDIO_OUT_L 40017 23 | #define IDC_COMBO_MIDI_IN_DEV 40018 24 | #define IDC_COMBO_MIDI_OUT_DEV 40019 25 | #define IDC_COMBO_MIDI_IN_CHAN 40020 26 | #define IDC_COMBO_MIDI_OUT_CHAN 40021 27 | #define IDC_BUTTON_OS_DEV_SETTINGS 40022 28 | #define IDC_CB_MONO_INPUT 40023 29 | #define IDAPPLY 40024 30 | #define ID_LIVE_EDIT 40025 31 | #define ID_SHOW_DRAWN 40026 32 | #define ID_SHOW_FPS 40027 33 | #define ID_SHOW_BOUNDS 40028 34 | 35 | // Next default values for new objects 36 | // 37 | #ifdef APSTUDIO_INVOKED 38 | #ifndef APSTUDIO_READONLY_SYMBOLS 39 | #define _APS_NEXT_RESOURCE_VALUE 105 40 | #define _APS_NEXT_COMMAND_VALUE 40001 41 | #define _APS_NEXT_CONTROL_VALUE 1011 42 | #define _APS_NEXT_SYMED_VALUE 101 43 | #endif 44 | #endif 45 | -------------------------------------------------------------------------------- /TemplateProject/scripts/makedist-win.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | REM - batch file to build Visual Studio project and zip the resulting binaries (or make installer) 4 | REM - updating version numbers requires python and python path added to %PATH% env variable 5 | REM - zipping requires 7zip in %ProgramFiles%\7-Zip\7z.exe 6 | REM - building installer requires innosetup 6 in "%ProgramFiles(x86)%\Inno Setup 6\iscc" 7 | REM - AAX codesigning requires wraptool tool added to %PATH% env variable and aax.key/.crt in .\..\..\iPlug2\Certificates\ 8 | 9 | REM - two arguments are demo/full and zip/installer 10 | 11 | set DEMO_ARG="%1" 12 | set ZIP_ARG="%2" 13 | 14 | if [%DEMO_ARG%]==[] goto USAGE 15 | if [%ZIP_ARG%]==[] goto USAGE 16 | 17 | echo SCRIPT VARIABLES ----------------------------------------------------- 18 | echo DEMO_ARG %DEMO_ARG% 19 | echo ZIP_ARG %ZIP_ARG% 20 | echo END SCRIPT VARIABLES ----------------------------------------------------- 21 | 22 | if %DEMO_ARG% == "demo" ( 23 | echo Making TemplateProject Windows DEMO VERSION distribution ... 24 | set DEMO=1 25 | ) else ( 26 | echo Making TemplateProject Windows FULL VERSION distribution ... 27 | set DEMO=0 28 | ) 29 | 30 | if %ZIP_ARG% == "zip" ( 31 | set ZIP=1 32 | ) else ( 33 | set ZIP=0 34 | ) 35 | 36 | echo ------------------------------------------------------------------ 37 | echo Updating version numbers ... 38 | 39 | call python prepare_resources-win.py %DEMO% 40 | call python update_installer-win.py %DEMO% 41 | 42 | cd ..\ 43 | 44 | echo "touching source" 45 | 46 | copy /b *.cpp+,, 47 | 48 | echo ------------------------------------------------------------------ 49 | echo Building ... 50 | 51 | if exist "%ProgramFiles(x86)%" (goto 64-Bit) else (goto 32-Bit) 52 | 53 | if not defined DevEnvDir ( 54 | :32-Bit 55 | echo 32-Bit O/S detected 56 | call "%ProgramFiles%\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_x64 57 | goto END 58 | 59 | :64-Bit 60 | echo 64-Bit Host O/S detected 61 | call "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_x64 62 | goto END 63 | :END 64 | ) 65 | 66 | 67 | REM - set preprocessor macros like this, for instance to set demo preprocessor macro: 68 | if %DEMO% == 1 ( 69 | set CMDLINE_DEFINES="DEMO_VERSION=1" 70 | REM -copy ".\resources\img\AboutBox_Demo.png" ".\resources\img\AboutBox.png" 71 | ) else ( 72 | set CMDLINE_DEFINES="DEMO_VERSION=0" 73 | REM -copy ".\resources\img\AboutBox_Registered.png" ".\resources\img\AboutBox.png" 74 | ) 75 | 76 | REM - Could build individual targets like this: 77 | REM - msbuild TemplateProject-app.vcxproj /p:configuration=release /p:platform=win32 78 | 79 | REM echo Building 32 bit binaries... 80 | REM msbuild TemplateProject.sln /p:configuration=release /p:platform=win32 /nologo /verbosity:minimal /fileLogger /m /flp:logfile=build-win.log;errorsonly 81 | 82 | REM echo Building 64 bit binaries... 83 | REM add projects with /t to build VST2 and AAX 84 | msbuild TemplateProject.sln /t:TemplateProject-app;TemplateProject-vst3;TemplateProject-clap /p:configuration=release /p:platform=x64 /nologo /verbosity:minimal /fileLogger /m /flp:logfile=build-win.log;errorsonly;append 85 | 86 | REM --echo Copying AAX Presets 87 | 88 | REM --echo ------------------------------------------------------------------ 89 | REM --echo Code sign AAX binary... 90 | REM --info at pace central, login via iLok license manager https://www.paceap.com/pace-central.html 91 | REM --wraptool sign --verbose --account XXXXX --wcguid XXXXX --keyfile XXXXX.p12 --keypassword XXXXX --in .\build-win\aax\bin\TemplateProject.aaxplugin\Contents\Win32\TemplateProject.aaxplugin --out .\build-win\aax\bin\TemplateProject.aaxplugin\Contents\Win32\TemplateProject.aaxplugin 92 | REM --wraptool sign --verbose --account XXXXX --wcguid XXXXX --keyfile XXXXX.p12 --keypassword XXXXX --in .\build-win\aax\bin\TemplateProject.aaxplugin\Contents\x64\TemplateProject.aaxplugin --out .\build-win\aax\bin\TemplateProject.aaxplugin\Contents\x64\TemplateProject.aaxplugin 93 | 94 | if %ZIP% == 0 ( 95 | REM - Make Installer (InnoSetup) 96 | 97 | echo ------------------------------------------------------------------ 98 | echo Making Installer ... 99 | 100 | REM if exist "%ProgramFiles(x86)%" (goto 64-Bit-is) else (goto 32-Bit-is) 101 | 102 | REM :32-Bit-is 103 | REM REM "%ProgramFiles%\Inno Setup 6\iscc" /Q ".\installer\TemplateProject.iss" 104 | REM goto END-is 105 | 106 | REM :64-Bit-is 107 | "%ProgramFiles(x86)%\Inno Setup 6\iscc" /Q ".\installer\TemplateProject.iss" 108 | REM goto END-is 109 | 110 | REM :END-is 111 | 112 | REM - Codesign Installer for Windows 8+ 113 | REM -"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "XXXXX.p12" /p XXXXX /d "TemplateProject Installer" ".\installer\TemplateProject Installer.exe" 114 | 115 | REM -if %1 == 1 ( 116 | REM -copy ".\installer\TemplateProject Installer.exe" ".\installer\TemplateProject Demo Installer.exe" 117 | REM -del ".\installer\TemplateProject Installer.exe" 118 | REM -) 119 | 120 | echo Making Zip File of Installer ... 121 | ) else ( 122 | echo Making Zip File ... 123 | ) 124 | 125 | FOR /F "tokens=* USEBACKQ" %%F IN (`call python scripts\makezip-win.py %DEMO% %ZIP%`) DO ( 126 | SET ZIP_NAME=%%F 127 | ) 128 | 129 | echo ------------------------------------------------------------------ 130 | echo Printing log file to console... 131 | 132 | type build-win.log 133 | goto SUCCESS 134 | 135 | :USAGE 136 | echo Usage: %0 [demo/full] [zip/installer] 137 | exit /B 1 138 | 139 | :SUCCESS 140 | echo %ZIP_NAME% 141 | 142 | exit /B 0 -------------------------------------------------------------------------------- /TemplateProject/scripts/makezip-win.py: -------------------------------------------------------------------------------- 1 | import zipfile, os, fileinput, string, sys, shutil 2 | 3 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 4 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 5 | 6 | IPLUG2_ROOT = "..\..\iPlug2" 7 | 8 | sys.path.insert(0, os.path.join(scriptpath, IPLUG2_ROOT + '\Scripts')) 9 | 10 | from get_archive_name import get_archive_name 11 | 12 | def main(): 13 | if len(sys.argv) != 3: 14 | print("Usage: make_zip.py demo[0/1] zip[0/1]") 15 | sys.exit(1) 16 | else: 17 | demo=int(sys.argv[1]) 18 | zip=int(sys.argv[2]) 19 | 20 | dir = projectpath + "\\build-win\\out" 21 | 22 | if os.path.exists(dir): 23 | shutil.rmtree(dir) 24 | 25 | os.makedirs(dir) 26 | 27 | files = [] 28 | 29 | if not zip: 30 | installer = "\\build-win\\installer\\TemplateProject Installer.exe" 31 | 32 | if demo: 33 | installer = "\\build-win\\installer\\TemplateProject Demo Installer.exe" 34 | 35 | files = [ 36 | projectpath + installer, 37 | projectpath + "\\installer\\changelog.txt", 38 | projectpath + "\\installer\\known-issues.txt", 39 | projectpath + "\\manual\\TemplateProject manual.pdf" 40 | ] 41 | else: 42 | files = [ 43 | projectpath + "\\build-win\\TemplateProject.vst3\\Contents\\x86_64-win\\TemplateProject.vst3", 44 | projectpath + "\\build-win\\TemplateProject_x64.exe", 45 | projectpath + "\\build-win\\TemplateProject.clap" 46 | ] 47 | 48 | zipname = get_archive_name(projectpath, "win", "demo" if demo == 1 else "full" ) 49 | 50 | zf = zipfile.ZipFile(projectpath + "\\build-win\\out\\" + zipname + ".zip", mode="w") 51 | 52 | for f in files: 53 | print("adding " + f) 54 | zf.write(f, os.path.basename(f), zipfile.ZIP_DEFLATED) 55 | 56 | zf.close() 57 | print("wrote " + zipname) 58 | 59 | zf = zipfile.ZipFile(projectpath + "\\build-win\\out\\" + zipname + "-pdbs.zip", mode="w") 60 | 61 | files = [ 62 | projectpath + "\\build-win\\pdbs\\TemplateProject-vst3_x64.pdb", 63 | projectpath + "\\build-win\\pdbs\\TemplateProject-app_x64.pdb", 64 | projectpath + "\\build-win\\pdbs\\TemplateProject-clap_x64.pdb" 65 | ] 66 | 67 | for f in files: 68 | print("adding " + f) 69 | zf.write(f, os.path.basename(f), zipfile.ZIP_DEFLATED) 70 | 71 | zf.close() 72 | print("wrote " + zipname) 73 | 74 | if __name__ == '__main__': 75 | main() 76 | -------------------------------------------------------------------------------- /TemplateProject/scripts/postbuild-win.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | REM - CALL "$(SolutionDir)scripts\postbuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(COPY_VST2)" "$(TargetPath)" "$(VST2_32_PATH)" "$(VST2_64_PATH)" "$(VST3_32_PATH)" "$(VST3_64_PATH)" "$(AAX_32_PATH)" "$(AAX_64_PATH)" "$(CLAP_PATH)" "$(BUILD_DIR)" "$(VST_ICON)" "$(AAX_ICON)" " 4 | REM $(CREATE_BUNDLE_SCRIPT)" 5 | 6 | set FORMAT=%1 7 | set NAME=%2 8 | set PLATFORM=%3 9 | set COPY_VST2=%4 10 | set BUILT_BINARY=%5 11 | set VST2_32_PATH=%6 12 | set VST2_64_PATH=%7 13 | set VST3_32_PATH=%8 14 | set VST3_64_PATH=%9 15 | shift 16 | shift 17 | shift 18 | shift 19 | shift 20 | shift 21 | shift 22 | set AAX_32_PATH=%3 23 | set AAX_64_PATH=%4 24 | set CLAP_PATH=%5 25 | set BUILD_DIR=%6 26 | set VST_ICON=%7 27 | set AAX_ICON=%8 28 | set CREATE_BUNDLE_SCRIPT=%9 29 | 30 | echo POSTBUILD SCRIPT VARIABLES ----------------------------------------------------- 31 | echo FORMAT %FORMAT% 32 | echo NAME %NAME% 33 | echo PLATFORM %PLATFORM% 34 | echo COPY_VST2 %COPY_VST2% 35 | echo BUILT_BINARY %BUILT_BINARY% 36 | echo VST2_32_PATH %VST2_32_PATH% 37 | echo VST2_64_PATH %VST2_64_PATH% 38 | echo VST3_32_PATH %VST3_32_PATH% 39 | echo VST3_64_PATH %VST3_64_PATH% 40 | echo CLAP_PATH %CLAP_PATH% 41 | echo BUILD_DIR %BUILD_DIR% 42 | echo VST_ICON %VST_ICON% 43 | echo AAX_ICON %AAX_ICON% 44 | echo CREATE_BUNDLE_SCRIPT %CREATE_BUNDLE_SCRIPT% 45 | echo END POSTBUILD SCRIPT VARIABLES ----------------------------------------------------- 46 | 47 | if %PLATFORM% == "Win32" ( 48 | if %FORMAT% == ".exe" ( 49 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%_%PLATFORM%.exe 50 | ) 51 | 52 | if %FORMAT% == ".dll" ( 53 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%_%PLATFORM%.dll 54 | ) 55 | 56 | if %FORMAT% == ".dll" ( 57 | if %COPY_VST2% == "1" ( 58 | echo copying 32bit binary to 32bit VST2 Plugins folder ... 59 | copy /y %BUILT_BINARY% %VST2_32_PATH% 60 | ) else ( 61 | echo not copying 32bit VST2 binary 62 | ) 63 | ) 64 | 65 | if %FORMAT% == ".vst3" ( 66 | echo copying 32bit binary to VST3 BUNDLE .. 67 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.vst3 %VST_ICON% %FORMAT% 68 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%.vst3\Contents\x86-win 69 | if exist %VST3_32_PATH% ( 70 | echo copying VST3 bundle to 32bit VST3 Plugins folder ... 71 | call %CREATE_BUNDLE_SCRIPT% %VST3_32_PATH%\%NAME%.vst3 %VST_ICON% %FORMAT% 72 | xcopy /E /H /Y %BUILD_DIR%\%NAME%.vst3\Contents\* %VST3_32_PATH%\%NAME%.vst3\Contents\ 73 | ) 74 | ) 75 | 76 | if %FORMAT% == ".aaxplugin" ( 77 | echo copying 32bit binary to AAX BUNDLE .. 78 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.aaxplugin %AAX_ICON% %FORMAT% 79 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%.aaxplugin\Contents\Win32 80 | echo copying 32bit bundle to 32bit AAX Plugins folder ... 81 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.aaxplugin %AAX_ICON% %FORMAT% 82 | xcopy /E /H /Y %BUILD_DIR%\%NAME%.aaxplugin\Contents\* %AAX_32_PATH%\%NAME%.aaxplugin\Contents\ 83 | ) 84 | ) 85 | 86 | if %PLATFORM% == "x64" ( 87 | if not exist "%ProgramFiles(x86)%" ( 88 | echo "This batch script fails on 32 bit windows... edit accordingly" 89 | ) 90 | 91 | if %FORMAT% == ".exe" ( 92 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%_%PLATFORM%.exe 93 | ) 94 | 95 | if %FORMAT% == ".dll" ( 96 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%_%PLATFORM%.dll 97 | ) 98 | 99 | if %FORMAT% == ".dll" ( 100 | if %COPY_VST2% == "1" ( 101 | echo copying 64bit binary to 64bit VST2 Plugins folder ... 102 | copy /y %BUILT_BINARY% %VST2_64_PATH% 103 | ) else ( 104 | echo not copying 64bit VST2 binary 105 | ) 106 | ) 107 | 108 | if %FORMAT% == ".vst3" ( 109 | echo copying 64bit binary to VST3 BUNDLE ... 110 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.vst3 %VST_ICON% %FORMAT% 111 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%.vst3\Contents\x86_64-win 112 | if exist %VST3_64_PATH% ( 113 | echo copying VST3 bundle to 64bit VST3 Plugins folder ... 114 | call %CREATE_BUNDLE_SCRIPT% %VST3_64_PATH%\%NAME%.vst3 %VST_ICON% %FORMAT% 115 | xcopy /E /H /Y %BUILD_DIR%\%NAME%.vst3\Contents\* %VST3_64_PATH%\%NAME%.vst3\Contents\ 116 | ) 117 | ) 118 | 119 | if %FORMAT% == ".aaxplugin" ( 120 | echo copying 64bit binary to AAX BUNDLE ... 121 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.aaxplugin %AAX_ICON% %FORMAT% 122 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%.aaxplugin\Contents\x64 123 | echo copying 64bit bundle to 64bit AAX Plugins folder ... 124 | call %CREATE_BUNDLE_SCRIPT% %BUILD_DIR%\%NAME%.aaxplugin %AAX_ICON% %FORMAT% 125 | xcopy /E /H /Y %BUILD_DIR%\%NAME%.aaxplugin\Contents\* %AAX_64_PATH%\%NAME%.aaxplugin\Contents\ 126 | ) 127 | 128 | if %FORMAT% == ".clap" ( 129 | echo copying binary to output directory ... 130 | copy /y %BUILT_BINARY% %BUILD_DIR%\%NAME%.clap 131 | ) 132 | 133 | if %FORMAT% == ".clap" ( 134 | echo copying binary to CLAP Plugins folder ... 135 | copy /y %BUILT_BINARY% %CLAP_PATH% 136 | ) 137 | ) -------------------------------------------------------------------------------- /TemplateProject/scripts/prebuild-win.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM - CALL "$(SolutionDir)scripts\prebuild-win.bat" "$(TargetExt)" "$(BINARY_NAME)" "$(Platform)" "$(TargetPath)" "$(OutDir)" 3 | REM set FORMAT=%1 4 | REM set NAME=%2 5 | REM set PLATFORM=%3 6 | REM set BUILT_BINARY=%4 -------------------------------------------------------------------------------- /TemplateProject/scripts/prepare_resources-ios.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # this script will create/update info plist files based on config.h 4 | 5 | kAudioUnitType_MusicDevice = "aumu" 6 | kAudioUnitType_MusicEffect = "aumf" 7 | kAudioUnitType_Effect = "aufx" 8 | kAudioUnitType_MIDIProcessor = "aumi" 9 | 10 | import plistlib, os, datetime, fileinput, glob, sys, string, shutil 11 | 12 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 13 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 14 | 15 | IPLUG2_ROOT = "../../iPlug2" 16 | 17 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + '/Scripts')) 18 | 19 | from parse_config import parse_config, parse_xcconfig 20 | 21 | def main(): 22 | if(len(sys.argv) == 2): 23 | if(sys.argv[1] == "app"): 24 | print("Copying resources ...") 25 | 26 | dst = os.environ["TARGET_BUILD_DIR"] + "/" + os.environ["UNLOCALIZED_RESOURCES_FOLDER_PATH"] 27 | 28 | if os.path.exists(projectpath + "/resources/img/"): 29 | imgs = os.listdir(projectpath + "/resources/img/") 30 | for img in imgs: 31 | print("copying " + img + " to " + dst) 32 | shutil.copy(projectpath + "/resources/img/" + img, dst) 33 | 34 | if os.path.exists(projectpath + "/resources/fonts/"): 35 | fonts = os.listdir(projectpath + "/resources/fonts/") 36 | for font in fonts: 37 | print("copying " + font + " to " + dst) 38 | shutil.copy(projectpath + "/resources/fonts/" + font, dst) 39 | 40 | if __name__ == '__main__': 41 | main() 42 | -------------------------------------------------------------------------------- /TemplateProject/scripts/prepare_resources-mac.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # this script will copy the project's resources (pngs, ttfs, svgs etc) to the correct place 4 | # depending on the value of PLUG_SHARED_RESOURCES in config.h 5 | # resources can either be copied into the plug-in bundle or into a shared path 6 | # since the shared path should be accesible from the mac app sandbox, 7 | # the path used is ~/Music/SHARED_RESOURCES_SUBPATH 8 | 9 | import os, sys, shutil 10 | 11 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 12 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 13 | 14 | IPLUG2_ROOT = "../../iPlug2" 15 | 16 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + '/Scripts')) 17 | 18 | from parse_config import parse_config 19 | 20 | def main(): 21 | config = parse_config(projectpath) 22 | 23 | print("Copying resources ...") 24 | 25 | if config['PLUG_SHARED_RESOURCES']: 26 | dst = os.path.expanduser("~") + "/Music/" + config['SHARED_RESOURCES_SUBPATH'] + "/Resources" 27 | else: 28 | dst = os.path.join(os.environ["TARGET_BUILD_DIR"], os.environ["UNLOCALIZED_RESOURCES_FOLDER_PATH"].lstrip('/')) 29 | 30 | if os.path.exists(dst) == False: 31 | os.makedirs(dst + "/", 0o0755 ) 32 | 33 | if os.path.exists(projectpath + "/resources/img/"): 34 | imgs = os.listdir(projectpath + "/resources/img/") 35 | for img in imgs: 36 | print("copying " + img + " to " + dst) 37 | shutil.copy(projectpath + "/resources/img/" + img, dst) 38 | 39 | if os.path.exists(projectpath + "/resources/fonts/"): 40 | fonts = os.listdir(projectpath + "/resources/fonts/") 41 | for font in fonts: 42 | print("copying " + font + " to " + dst) 43 | shutil.copy(projectpath + "/resources/fonts/" + font, dst) 44 | 45 | if __name__ == '__main__': 46 | main() 47 | -------------------------------------------------------------------------------- /TemplateProject/scripts/prepare_resources-win.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import plistlib, os, datetime, fileinput, glob, sys, string, shutil 4 | 5 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 6 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 7 | 8 | IPLUG2_ROOT = "../../iPlug2" 9 | 10 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + '/Scripts')) 11 | 12 | from parse_config import parse_config 13 | 14 | def main(): 15 | print("not modifying rc file"); 16 | # config = parse_config(projectpath) 17 | 18 | # rc = open(projectpath + "/resources/main.rc", "w") 19 | 20 | # rc.write("\n") 21 | # rc.write("/////////////////////////////////////////////////////////////////////////////\n") 22 | # rc.write("// Version\n") 23 | # rc.write("/////////////////////////////////////////////////////////////////////////////\n") 24 | # rc.write("VS_VERSION_INFO VERSIONINFO\n") 25 | # rc.write("FILEVERSION " + config['MAJOR_STR'] + "," + config['MINOR_STR'] + "," + config['BUGFIX_STR'] + ",0\n") 26 | # rc.write("PRODUCTVERSION " + config['MAJOR_STR'] + "," + config['MINOR_STR'] + "," + config['BUGFIX_STR'] + ",0\n") 27 | # rc.write(" FILEFLAGSMASK 0x3fL\n") 28 | # rc.write("#ifdef _DEBUG\n") 29 | # rc.write(" FILEFLAGS 0x1L\n") 30 | # rc.write("#else\n") 31 | # rc.write(" FILEFLAGS 0x0L\n") 32 | # rc.write("#endif\n") 33 | # rc.write(" FILEOS 0x40004L\n") 34 | # rc.write(" FILETYPE 0x1L\n") 35 | # rc.write(" FILESUBTYPE 0x0L\n") 36 | # rc.write("BEGIN\n") 37 | # rc.write(' BLOCK "StringFileInfo"\n') 38 | # rc.write(" BEGIN\n") 39 | # rc.write(' BLOCK "040004e4"\n') 40 | # rc.write(" BEGIN\n") 41 | # rc.write(' VALUE "FileVersion", "' + config['FULL_VER_STR'] + '"\0\n') 42 | # rc.write(' VALUE "ProductVersion", "' + config['FULL_VER_STR'] + '"0\n') 43 | # rc.write("#ifdef VST2_API\n") 44 | # rc.write(' VALUE "OriginalFilename", "' + config['BUNDLE_NAME'] + '.dll"\0\n') 45 | # rc.write("#elif defined VST3_API\n") 46 | # rc.write(' VALUE "OriginalFilename", "' + config['BUNDLE_NAME'] + '.vst3"\0\n') 47 | # rc.write("#elif defined AAX_API\n") 48 | # rc.write(' VALUE "OriginalFilename", "' + config['BUNDLE_NAME'] + '.aaxplugin"\0\n') 49 | # rc.write("#elif defined APP_API\n") 50 | # rc.write(' VALUE "OriginalFilename", "' + config['BUNDLE_NAME'] + '.exe"\0\n') 51 | # rc.write("#endif\n") 52 | # rc.write(' VALUE "FileDescription", "' + config['PLUG_NAME'] + '"\0\n') 53 | # rc.write(' VALUE "InternalName", "' + config['PLUG_NAME'] + '"\0\n') 54 | # rc.write(' VALUE "ProductName", "' + config['PLUG_NAME'] + '"\0\n') 55 | # rc.write(' VALUE "CompanyName", "' + config['PLUG_MFR'] + '"\0\n') 56 | # rc.write(' VALUE "LegalCopyright", "' + config['PLUG_COPYRIGHT_STR'] + '"\0\n') 57 | # rc.write(' VALUE "LegalTrademarks", "' + config['PLUG_TRADEMARKS'] + '"\0\n') 58 | # rc.write(" END\n") 59 | # rc.write(" END\n") 60 | # rc.write(' BLOCK "VarFileInfo"\n') 61 | # rc.write(" BEGIN\n") 62 | # rc.write(' VALUE "Translation", 0x400, 1252\n') 63 | # rc.write(" END\n") 64 | # rc.write("END\n") 65 | # rc.write("\n") 66 | 67 | if __name__ == '__main__': 68 | main() 69 | -------------------------------------------------------------------------------- /TemplateProject/scripts/update_installer-win.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # this script will update the version and text in the innosetup installer files, based on config.h and demo 1/0 4 | 5 | import plistlib, os, datetime, fileinput, glob, sys, string 6 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 7 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 8 | 9 | IPLUG2_ROOT = "../../iPlug2" 10 | 11 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + '/Scripts')) 12 | 13 | from parse_config import parse_config 14 | 15 | def replacestrs(filename, s, r): 16 | files = glob.glob(filename) 17 | 18 | for line in fileinput.input(files,inplace=1): 19 | string.find(line, s) 20 | line = line.replace(s, r) 21 | sys.stdout.write(line) 22 | 23 | def main(): 24 | demo = 0 25 | 26 | if len(sys.argv) != 2: 27 | print("Usage: update_installer_version.py demo(0 or 1)") 28 | sys.exit(1) 29 | else: 30 | demo=int(sys.argv[1]) 31 | 32 | config = parse_config(projectpath) 33 | 34 | # WIN INSTALLER 35 | print("Updating Windows Installer version info...") 36 | 37 | for line in fileinput.input(projectpath + "/installer/" + config['BUNDLE_NAME'] + ".iss",inplace=1): 38 | if "AppVersion" in line: 39 | line="AppVersion=" + config['FULL_VER_STR'] + "\n" 40 | if "OutputBaseFilename" in line: 41 | if demo: 42 | line="OutputBaseFilename=TemplateProject Demo Installer\n" 43 | else: 44 | line="OutputBaseFilename=TemplateProject Installer\n" 45 | 46 | if 'Source: "readme' in line: 47 | if demo: 48 | line='Source: "readme-win-demo.rtf"; DestDir: "{app}"; DestName: "readme.rtf"; Flags: isreadme\n' 49 | else: 50 | line='Source: "readme-win.rtf"; DestDir: "{app}"; DestName: "readme.rtf"; Flags: isreadme\n' 51 | 52 | if "WelcomeLabel1" in line: 53 | if demo: 54 | line="WelcomeLabel1=Welcome to the TemplateProject Demo installer\n" 55 | else: 56 | line="WelcomeLabel1=Welcome to the TemplateProject installer\n" 57 | 58 | if "SetupWindowTitle" in line: 59 | if demo: 60 | line="SetupWindowTitle=TemplateProject Demo installer\n" 61 | else: 62 | line="SetupWindowTitle=TemplateProject installer\n" 63 | 64 | sys.stdout.write(line) 65 | 66 | 67 | if __name__ == '__main__': 68 | main() 69 | -------------------------------------------------------------------------------- /TemplateProject/scripts/update_version-ios.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # this script will create/update info plist files based on config.h 4 | 5 | import plistlib, os, sys, shutil 6 | 7 | IPLUG2_ROOT = "../../iPlug2" 8 | 9 | scriptpath = os.path.dirname(os.path.realpath(__file__)) 10 | projectpath = os.path.abspath(os.path.join(scriptpath, os.pardir)) 11 | 12 | kAudioUnitType_MusicDevice = "aumu" 13 | kAudioUnitType_MusicEffect = "aumf" 14 | kAudioUnitType_Effect = "aufx" 15 | kAudioUnitType_MIDIProcessor = "aumi" 16 | 17 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + '/Scripts')) 18 | 19 | from parse_config import parse_config, parse_xcconfig 20 | 21 | def main(): 22 | config = parse_config(projectpath) 23 | xcconfig = parse_xcconfig(os.path.join(os.getcwd(), IPLUG2_ROOT + '/../common-ios.xcconfig')) 24 | 25 | CFBundleGetInfoString = config['BUNDLE_NAME'] + " v" + config['FULL_VER_STR'] + " " + config['PLUG_COPYRIGHT_STR'] 26 | CFBundleVersion = config['FULL_VER_STR'] 27 | CFBundlePackageType = "BNDL" 28 | CSResourcesFileMapped = True 29 | LSMinimumSystemVersion = xcconfig['DEPLOYMENT_TARGET'] 30 | 31 | print("Processing Info.plist files...") 32 | 33 | # AUDIOUNIT v3 34 | 35 | if config['PLUG_TYPE'] == 0: 36 | if config['PLUG_DOES_MIDI_IN']: 37 | COMPONENT_TYPE = kAudioUnitType_MusicEffect 38 | else: 39 | COMPONENT_TYPE = kAudioUnitType_Effect 40 | elif config['PLUG_TYPE'] == 1: 41 | COMPONENT_TYPE = kAudioUnitType_MusicDevice 42 | elif config['PLUG_TYPE'] == 2: 43 | COMPONENT_TYPE = kAudioUnitType_MIDIProcessor 44 | 45 | if config['PLUG_HAS_UI'] == 1: 46 | NSEXTENSIONPOINTIDENTIFIER = "com.apple.AudioUnit-UI" 47 | else: 48 | NSEXTENSIONPOINTIDENTIFIER = "com.apple.AudioUnit" 49 | 50 | plistpath = projectpath + "/resources/" + config['BUNDLE_NAME'] + "-iOS-AUv3-Info.plist" 51 | 52 | NSEXTENSIONATTRDICT = dict( 53 | NSExtensionAttributes = dict(AudioComponents = [{}]), 54 | NSExtensionPointIdentifier = NSEXTENSIONPOINTIDENTIFIER 55 | ) 56 | 57 | with open(plistpath, 'rb') as f: 58 | auv3 = plistlib.load(f) 59 | auv3['CFBundleExecutable'] = config['BUNDLE_NAME'] + "AppExtension" 60 | auv3['CFBundleIdentifier'] = "$(PRODUCT_BUNDLE_IDENTIFIER)" 61 | auv3['CFBundleName'] = config['BUNDLE_NAME'] + "AppExtension" 62 | auv3['CFBundleDisplayName'] = config['BUNDLE_NAME'] + "AppExtension" 63 | auv3['CFBundleVersion'] = CFBundleVersion 64 | auv3['CFBundleShortVersionString'] = CFBundleVersion 65 | auv3['CFBundlePackageType'] = "XPC!" 66 | auv3['NSExtension'] = NSEXTENSIONATTRDICT 67 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'] = [{}] 68 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['description'] = config['PLUG_NAME'] 69 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['manufacturer'] = config['PLUG_MFR_ID'] 70 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['name'] = config['PLUG_MFR'] + ": " + config['PLUG_NAME'] 71 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['subtype'] = config['PLUG_UNIQUE_ID'] 72 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['type'] = COMPONENT_TYPE 73 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['version'] = config['PLUG_VERSION_INT'] 74 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['sandboxSafe'] = True 75 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['tags'] = ["",""] 76 | 77 | if config['PLUG_TYPE'] == 1: 78 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['tags'][0] = "Synth" 79 | else: 80 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['tags'][0] = "Effects" 81 | 82 | if config['PLUG_HAS_UI'] == 1: 83 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['tags'][1] = "size:{" + str(config['PLUG_WIDTH']) + "," + str(config['PLUG_HEIGHT']) + "}" 84 | auv3['NSExtension']['NSExtensionAttributes']['AudioComponents'][0]['factoryFunction'] = "IPlugAUViewController_vTemplateProject" 85 | auv3['NSExtension']['NSExtensionMainStoryboard'] = config['BUNDLE_NAME'] + "-iOS-MainInterface" 86 | else: 87 | auv3['NSExtension']['NSExtensionPrincipalClass'] = "IPlugAUViewController_vTemplateProject" 88 | 89 | with open(plistpath, 'wb') as f2: 90 | plistlib.dump(auv3, f2) 91 | 92 | # Standalone APP 93 | 94 | plistpath = projectpath + "/resources/" + config['BUNDLE_NAME'] + "-iOS-Info.plist" 95 | with open(plistpath, 'rb') as f: 96 | iOSapp = plistlib.load(f) 97 | iOSapp['CFBundleExecutable'] = config['BUNDLE_NAME'] 98 | iOSapp['CFBundleIdentifier'] = "$(PRODUCT_BUNDLE_IDENTIFIER)" 99 | iOSapp['CFBundleName'] = config['BUNDLE_NAME'] 100 | iOSapp['CFBundleVersion'] = CFBundleVersion 101 | iOSapp['CFBundleShortVersionString'] = CFBundleVersion 102 | iOSapp['CFBundlePackageType'] = "APPL" 103 | iOSapp['LSApplicationCategoryType'] = "public.app-category.music" 104 | 105 | with open(plistpath, 'wb') as f2: 106 | plistlib.dump(iOSapp, f2) 107 | 108 | if __name__ == '__main__': 109 | main() 110 | -------------------------------------------------------------------------------- /bump_version.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # https://semver.org/ 4 | # pip3 install semver 5 | 6 | import os, sys, shutil, subprocess, glob, fileinput, string 7 | import semver 8 | 9 | IPLUG2_ROOT = "iPlug2" 10 | PROJECT_ROOT = "TemplateProject" 11 | PROJECT_SCRIPTS = PROJECT_ROOT + "/scripts" 12 | 13 | def replacestrs(filename, s, r): 14 | files = glob.glob(filename) 15 | print("replacing " + s + " with " + r + " in " + filename) 16 | 17 | for line in fileinput.input(files,inplace=1): 18 | line = line.replace(s, r) 19 | sys.stdout.write(line) 20 | 21 | sys.path.insert(0, os.path.join(os.getcwd(), IPLUG2_ROOT + "/Scripts")) 22 | 23 | from parse_config import parse_config 24 | 25 | def main(): 26 | config = parse_config(PROJECT_ROOT) 27 | versionStr = config['FULL_VER_STR'] 28 | currentVersionInfo = semver.VersionInfo.parse(versionStr) 29 | print("current version in config.h: v" + versionStr) 30 | 31 | if len(sys.argv) == 2: 32 | if sys.argv[1] == 'major': 33 | newVersionInfo = currentVersionInfo.bump_major() 34 | elif sys.argv[1] == 'minor': 35 | newVersionInfo = currentVersionInfo.bump_minor() 36 | elif sys.argv[1] == 'patch': 37 | newVersionInfo = currentVersionInfo.bump_patch() 38 | else: 39 | newVersionInfo = currentVersionInfo 40 | else: 41 | print("Please supply an argument major, minor or patch") 42 | exit() 43 | 44 | newVersionInt = (newVersionInfo.major << 16 & 0xFFFF0000) + (newVersionInfo.minor << 8 & 0x0000FF00) + (newVersionInfo.patch & 0x000000FF) 45 | 46 | replacestrs(PROJECT_ROOT + "/config.h", '#define PLUG_VERSION_STR "' + versionStr + '"', '#define PLUG_VERSION_STR "' + str(newVersionInfo) + '"') 47 | replacestrs(PROJECT_ROOT + "/config.h", '#define PLUG_VERSION_HEX ' + config['PLUG_VERSION_HEX'], '#define PLUG_VERSION_HEX ' + '0x{:08x}'.format(newVersionInt)) 48 | 49 | os.system("cd " + PROJECT_SCRIPTS + "; python3 update_version-mac.py") 50 | os.system("cd " + PROJECT_SCRIPTS + "; python3 update_version-ios.py") 51 | os.system("cd " + PROJECT_SCRIPTS + "; python3 update_installer-win.py 0") 52 | 53 | print("\nCurrent changelog: \n--------------------") 54 | os.system("cat " + PROJECT_ROOT + "/installer/changelog.txt") 55 | print("\n\n--------------------") 56 | 57 | edit = input("\nEdit changelog? Y/N: ") 58 | 59 | if edit == 'y' or edit == 'Y': 60 | os.system("vim " + PROJECT_ROOT + "/installer/changelog.txt") 61 | 62 | print("\nNew changelog: \n--------------------") 63 | os.system("cat " + PROJECT_ROOT + "/installer/changelog.txt") 64 | print("\n\n--------------------"); 65 | 66 | edit = input("\nTag version and git push to origin (will prompt for commit message)? Y/N: ") 67 | 68 | if edit == 'y' or edit == 'Y': 69 | os.system("git commit -a --allow-empty") 70 | os.system("git tag v" + str(newVersionInfo)) 71 | os.system("git push && git push --tags") 72 | 73 | if __name__ == '__main__': 74 | main() 75 | -------------------------------------------------------------------------------- /common-ios.xcconfig: -------------------------------------------------------------------------------- 1 | // this is used for macOS Developer ID / Appstore code-signing 2 | CERTIFICATE_ID = Oliver Larkin 3 | DEVELOPMENT_TEAM = 686EDA2T8T // log in to developer.apple.com and see the end of the URL e.g. https://developer.apple.com/account/#/overview/686EDA2T8T 4 | 5 | // Which compiler to use 6 | COMPILER = com.apple.compilers.llvm.clang.1_0 7 | 8 | // which osx sdk to compile against - defaults to latest SDK available 9 | BASE_SDK_IOS = iphoneos // latest SDK 10 | 11 | CLANG_CXX_LANGUAGE_STANDARD = c++17 12 | CLANG_CXX_LIBRARY = libc++ 13 | 14 | CLANG_WARN_DOCUMENTATION_COMMENTS = NO 15 | 16 | CLANG_ENABLE_OBJC_WEAK = YES 17 | 18 | // the minimum OS to support 19 | IPHONEOS_DEPLOYMENT_TARGET = 14 20 | 21 | SHARED_PRECOMPS_DIR = $(TARGET_BUILD_DIR)/PCH 22 | 23 | // BUILD SETTINGS TO ENABLE DIFFERENT PREPROCESSOR MACROS, INCLUDE PATHS AND FUNCIONALITY------------------------------- 24 | 25 | // ***** PREPROCESSOR MACROS 26 | 27 | // macros for all debug/release/tracer builds 28 | DEBUG_DEFS = DEVELOPMENT=1 DEBUG=1 _DEBUG 29 | RELEASE_DEFS = RELEASE=1 NDEBUG=1 30 | TRACER_DEFS = $DEBUG_DEFS TRACER_BUILD // here you can change if a TRACER build is a DEBUG or RELEASE build 31 | 32 | // macros for individual plug-in format builds etc 33 | ALL_DEFS = NOMINMAX 34 | AUv3_DEFS = AUv3_API IPLUG_EDITOR=1 IPLUG_DSP=1 35 | 36 | // ***** HEADER INCLUDE PATHS 37 | // Where the SDKs etc. are located in relation to the plug-in Xcode project (which is in the projects subfolder of an IPlug project) 38 | 39 | // the top level iPlug2 folder e.g. where this common.xcconfig is 40 | PROJECT_ROOT = $(SRCROOT)/.. 41 | 42 | DEPS_PATH = $(IPLUG2_ROOT)/Dependencies 43 | 44 | // IPlug dependencies 45 | WDL_PATH = $(IPLUG2_ROOT)/WDL 46 | IPLUG_PATH = $(IPLUG2_ROOT)/IPlug 47 | AUv3_PATH = $(IPLUG_PATH)/AUv3 48 | SWELL_PATH = $(WDL_PATH)/swell 49 | 50 | EXTRAS_PATH = $(IPLUG_PATH)/Extras 51 | EXTRAS_INC_PATHS = $(EXTRAS_PATH) $(EXTRAS_PATH)/Faust $(EXTRAS_PATH)/OSC $(EXTRAS_PATH)/HIIR $(EXTRAS_PATH)/WebSocket 52 | 53 | JSON_INC_PATH = $(DEPS_PATH)/Extras/nlohmann 54 | 55 | // this build setting is included at the xcode project level, since we need all these include paths 56 | IPLUG_INC_PATHS = $(PROJECT_ROOT) $(WDL_PATH) $(IPLUG_PATH) $(EXTRAS_INC_PATHS) $(AUv3_PATH) $(JSON_INC_PATH) 57 | 58 | BUILT_LIBS_PATH = $(DEPS_PATH)/Build/ios 59 | BUILT_LIBS_INC_PATH = $(BUILT_LIBS_PATH)/include 60 | BUILT_LIBS_LIB_PATH = $(BUILT_LIBS_PATH)/lib/$CURRENT_ARCH 61 | 62 | IGRAPHICS_PATH = $(IPLUG2_ROOT)/IGraphics 63 | CONTROLS_PATH = $(IGRAPHICS_PATH)/Controls 64 | PLATFORMS_PATH = $(IGRAPHICS_PATH)/Platforms 65 | DRAWING_PATH = $(IGRAPHICS_PATH)/Drawing 66 | 67 | // IGraphics dependencies 68 | IGRAPHICS_DEPS_PATH = $(DEPS_PATH)/IGraphics 69 | NSVG_PATH = $(IGRAPHICS_DEPS_PATH)/NanoSVG/src 70 | NVG_PATH = $(IGRAPHICS_DEPS_PATH)/NanoVG/src 71 | NVGMTL_PATH = $(IGRAPHICS_DEPS_PATH)/MetalNanoVG/src 72 | STB_PATH = $(DEPS_PATH)/IGraphics/STB 73 | YOGA_PATH = $(DEPS_PATH)/IGraphics/yoga 74 | 75 | SKIA_PATH = $(DEPS_PATH)/Build/src/skia 76 | 77 | SKIA_INC_PATHS = $(SKIA_PATH) 78 | YOGA_INC_PATHS = $(YOGA_PATH) $(YOGA_PATH)/yoga 79 | 80 | IGRAPHICS_INC_PATHS = $(IGRAPHICS_PATH) $(CONTROLS_PATH) $(PLATFORMS_PATH) $(DRAWING_PATH) $(NSVG_PATH) $(NVG_PATH) $(NVGMTL_PATH) $(SKIA_INC_PATHS) $(FT_PATH) $(STB_PATH) $(YOGA_INC_PATHS) 81 | 82 | LIB_SKIA = $(BUILT_LIBS_LIB_PATH)/libskia.a 83 | LIB_SKOTTIE = $(BUILT_LIBS_LIB_PATH)/libskottie.a 84 | LIB_SKSG = $(BUILT_LIBS_LIB_PATH)/libsksg.a 85 | LIB_SKSHAPER = $(BUILT_LIBS_LIB_PATH)/libskshaper.a 86 | LIB_SKPARAGRAPH = $(BUILT_LIBS_LIB_PATH)/libskparagraph.a 87 | LIB_SKUNICODE = $(BUILT_LIBS_LIB_PATH)/libskunicode_core.a $(BUILT_LIBS_LIB_PATH)/libskunicode_icu.a 88 | LIB_SVG = $(BUILT_LIBS_LIB_PATH)/libsvg.a 89 | 90 | SKIA_LNK_FLAGS = $(LIB_SKIA) $(LIB_SKOTTIE) $(LIB_SKSG) $(LIB_SKSHAPER) $(LIB_SKPARAGRAPH) $(LIB_SVG) $(LIB_SKUNICODE) 91 | IGRAPHICS_LNK_FLAGS = $(SKIA_LNK_FLAGS) 92 | 93 | AUv3_FRAMEWORKS = -framework AudioToolbox -framework AVFoundation -framework CoreAudioKit -framework QuartzCore -framework UIKit -framework CoreText -framework CoreGraphics -framework UniformTypeIdentifiers 94 | 95 | 96 | -------------------------------------------------------------------------------- /common-mac.xcconfig: -------------------------------------------------------------------------------- 1 | // this is used for macOS Developer ID / Appstore code-signing 2 | CERTIFICATE_ID = Oliver Larkin 3 | DEVELOPMENT_TEAM = 686EDA2T8T // log in to developer.apple.com and see the end of the URL e.g. https://developer.apple.com/account/#/overview/686EDA2T8T 4 | 5 | // Which compiler to use 6 | //COMPILER = com.intel.compilers.icc.12_1_0 7 | COMPILER = com.apple.compilers.llvm.clang.1_0 8 | 9 | // which osx sdk to compile against - defaults to latest SDK available 10 | BASE_SDK_MAC = macosx // latest SDK 11 | 12 | CLANG_CXX_LANGUAGE_STANDARD = c++17 13 | CLANG_CXX_LIBRARY = libc++ 14 | 15 | CLANG_WARN_DOCUMENTATION_COMMENTS = NO 16 | 17 | CLANG_ENABLE_OBJC_WEAK = YES 18 | 19 | // the minimum OS to support 20 | MACOSX_DEPLOYMENT_TARGET = 10.13 21 | 22 | SHARED_PRECOMPS_DIR = $(TARGET_BUILD_DIR)/PCH 23 | 24 | // BUILD SETTINGS TO ENABLE DIFFERENT PREPROCESSOR MACROS, INCLUDE PATHS AND FUNCIONALITY------------------------------- 25 | 26 | // ***** PREPROCESSOR MACROS 27 | 28 | // macros for all debug/release/tracer builds 29 | DEBUG_DEFS = DEVELOPMENT=1 DEBUG=1 _DEBUG 30 | RELEASE_DEFS = RELEASE=1 NDEBUG=1 31 | TRACER_DEFS = $DEBUG_DEFS TRACER_BUILD // here you can change if a TRACER build is a DEBUG or RELEASE build 32 | 33 | // macros for individual plug-in format builds etc 34 | ALL_DEFS = NOMINMAX 35 | PLUGIN_DEFS = SWELL_CLEANUP_ON_UNLOAD // macros for all plug-in builds 36 | VST2_DEFS = VST2_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 37 | VST3_DEFS = VST3_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 38 | VST3C_DEFS = VST3C_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=0 39 | VST3P_DEFS = VST3P_API $PLUGIN_DEFS IPLUG_EDITOR=0 IPLUG_DSP=1 //NO_IGRAPHICS 40 | AU_DEFS = AU_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 41 | AUv3_DEFS = AUv3_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 42 | AAX_DEFS = AAX_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 43 | APP_DEFS = APP_API __MACOSX_CORE__ IPLUG_EDITOR=1 IPLUG_DSP=1 SWELL_COMPILED// __UNIX_JACK__ 44 | CLAP_DEFS = CLAP_API $PLUGIN_DEFS IPLUG_EDITOR=1 IPLUG_DSP=1 45 | 46 | // ***** HEADER INCLUDE PATHS 47 | // Where the SDKs etc. are located in relation to the plug-in Xcode project (which is in the projects subfolder of an IPlug project) 48 | 49 | // the top level iPlug2 folder e.g. where this common-mac.xcconfig is 50 | // should be specified in the project's xcconfig with a build settng IPLUG2_ROOT 51 | 52 | PROJECT_ROOT = $(SRCROOT)/.. 53 | 54 | PKGMAN_PATH = /usr/local 55 | 56 | DEPS_PATH = $(IPLUG2_ROOT)/Dependencies 57 | 58 | // if you want to use the homebrew or macports package managers, rather than building static libraries yourself (not advised) you can modify the BUILT_LIBS_PATH build setting to point to PKGMAN_PATH 59 | BUILT_LIBS_PATH = $(DEPS_PATH)/Build/mac 60 | BUILT_LIBS_INC_PATH = $(BUILT_LIBS_PATH)/include 61 | BUILT_LIBS_LIB_PATH = $(BUILT_LIBS_PATH)/lib 62 | 63 | // IPlug dependencies 64 | SCRIPTS_PATH = $(IPLUG2_ROOT)/Scripts 65 | WDL_PATH = $(IPLUG2_ROOT)/WDL 66 | SWELL_PATH = $(WDL_PATH)/swell 67 | IPLUG_PATH = $(IPLUG2_ROOT)/IPlug 68 | RTAUDIO_PATH = $(DEPS_PATH)/IPlug/RTAudio 69 | RTMIDI_PATH = $(DEPS_PATH)/IPlug/RTMidi 70 | 71 | EXTRAS_PATH = $(IPLUG_PATH)/Extras 72 | 73 | JSON_INC_PATH = $(DEPS_PATH)/Extras/nlohmann 74 | 75 | EXTRAS_INC_PATHS = $(EXTRAS_PATH) $(EXTRAS_PATH)/Synth $(EXTRAS_PATH)/OSC $(EXTRAS_PATH)/HIIR $(JSON11_PATH) $(RTAUDIO_PATH) $(RTMIDI_PATH) $(JSON_INC_PATH) 76 | 77 | // Plug-in SDK paths 78 | VST2_SDK = $(DEPS_PATH)/IPlug/VST2_SDK 79 | VST3_SDK = $(DEPS_PATH)/IPlug/VST3_SDK 80 | AAX_SDK = $(DEPS_PATH)/IPlug/AAX_SDK 81 | REAPER_SDK = $(DEPS_PATH)/IPlug/Reaper 82 | CLAP_SDK = $(DEPS_PATH)/IPlug/CLAP_SDK 83 | CLAP_HELPERS = $(DEPS_PATH)/IPlug/CLAP_HELPERS 84 | 85 | // this build setting is included at the xcode project level, since we need all these include paths 86 | IPLUG_INC_PATHS = $(PROJECT_ROOT) $(WDL_PATH) $(SWELL_PATH) $(SWELL_FOR_IPLUG_PATH) $(IPLUG_PATH) $(EXTRAS_INC_PATHS) 87 | 88 | CLAP_INC_PATHS = $(CLAP_SDK)/include $(CLAP_HELPERS)/include/clap/helpers 89 | 90 | IGRAPHICS_PATH = $(IPLUG2_ROOT)/IGraphics 91 | 92 | // IGraphics dependencies 93 | IGRAPHICS_DEPS_PATH = $(DEPS_PATH)/IGraphics 94 | NSVG_PATH = $(IGRAPHICS_DEPS_PATH)/NanoSVG/src 95 | NVG_PATH = $(IGRAPHICS_DEPS_PATH)/NanoVG/src 96 | NVGMTL_PATH = $(IGRAPHICS_DEPS_PATH)/MetalNanoVG/src 97 | STB_PATH = $(DEPS_PATH)/IGraphics/STB 98 | FT_PATH = $(BUILT_LIBS_INC_PATH)/freetype2 99 | SKIA_PATH = $(DEPS_PATH)/Build/src/skia 100 | YOGA_PATH = $(DEPS_PATH)/IGraphics/yoga 101 | 102 | SKIA_INC_PATHS = $(SKIA_PATH) 103 | YOGA_INC_PATHS = $(YOGA_PATH) $(YOGA_PATH)/yoga 104 | 105 | // you can optionally include this build setting, by adding it to EXTRA_INC_PATHS in MyProject.xcconfig in order to get all varieties of IGraphics support 106 | IGRAPHICS_INC_PATHS = $(IGRAPHICS_PATH) $(IGRAPHICS_PATH)/Controls $(IGRAPHICS_PATH)/Platforms $(IGRAPHICS_PATH)/Drawing $(IGRAPHICS_PATH)/Extras $(NSVG_PATH) $(NVG_PATH) $(NVGMTL_PATH) $(BUILT_LIBS_INC_PATH) $(FT_PATH) $(STB_PATH) $(IMGUI_INC_PATHS) $(SKIA_INC_PATHS) $(YOGA_INC_PATHS) 107 | 108 | // ***** LINKER/LIBRARY INCLUDE PATHS AND LINKER FLAGS 109 | 110 | //Static library Paths - on macOS we need to supply an absolute path to the static library, otherwise it will pick up a dynamic library with the same name 111 | LIB_FT = $(BUILT_LIBS_LIB_PATH)/libfreetype.a 112 | LIB_PNG = $(BUILT_LIBS_LIB_PATH)/libpng.a 113 | LIB_Z = $(BUILT_LIBS_LIB_PATH)/libz.a 114 | LIB_SKIA = $(BUILT_LIBS_LIB_PATH)/libskia.a 115 | LIB_SKOTTIE = $(BUILT_LIBS_LIB_PATH)/libskottie.a 116 | LIB_SKSG = $(BUILT_LIBS_LIB_PATH)/libsksg.a 117 | LIB_SKSHAPER = $(BUILT_LIBS_LIB_PATH)/libskshaper.a 118 | LIB_SKPARAGRAPH = $(BUILT_LIBS_LIB_PATH)/libskparagraph.a 119 | LIB_SKUNICODE = $(BUILT_LIBS_LIB_PATH)/libskunicode_core.a $(BUILT_LIBS_LIB_PATH)/libskunicode_icu.a 120 | LIB_SVG = $(BUILT_LIBS_LIB_PATH)/libsvg.a 121 | 122 | SKIA_LNK_FLAGS = $(LIB_SKIA) $(LIB_SKOTTIE) $(LIB_SKSG) $(LIB_SKSHAPER) $(LIB_SKPARAGRAPH) $(LIB_SVG) $(LIB_SKUNICODE) 123 | FREETYPE_LNK_FLAGS = $(LIB_FT) //$(LIB_PNG) $(LIB_Z) 124 | 125 | IGRAPHICS_LNK_FLAGS = $(SKIA_LNK_FLAGS) $(FREETYPE_LNK_FLAGS) 126 | 127 | ALL_FRAMEWORKS = -framework Cocoa -framework Carbon -framework CoreFoundation -framework CoreData -framework Foundation -framework CoreServices -framework QuartzCore 128 | APP_FRAMEWORKS = -framework AppKit -framework CoreMIDI -framework CoreAudio 129 | AU_FRAMEWORKS = -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework CoreMIDI 130 | AUv3_FRAMEWORKS = -framework AudioToolbox -framework AVFoundation -framework CoreAudio -framework CoreAudioKit 131 | 132 | 133 | // ***** BINARY OUTPUT LOCATIONS ------------------------------------------------------------------------------------------------------------------------ 134 | 135 | // Where to build the plug-ins / app bundles ... 136 | // By default iPlug2 builds to user plug-in folder 137 | // You can also build to the system plug-in folder, but you will need to explicitly add write permissions to build stuff there 138 | // The AAX folder should be the location of the PT Dev build plug-ins folder, installer scripts will copy to the non-developer build 139 | 140 | VST2_PATH = $(HOME)/Library/Audio/Plug-Ins/VST 141 | VST3_PATH = $(HOME)/Library/Audio/Plug-Ins/VST3 142 | CLAP_PATH = $(HOME)/Library/Audio/Plug-Ins/CLAP 143 | AU_PATH = $(HOME)/Library/Audio/Plug-Ins/Components 144 | AAX_PATH = /Library/Application Support/Avid/Audio/Plug-Ins 145 | APP_PATH = $(HOME)/Applications 146 | REAPER_EXT_PATH = $(HOME)/Library/Application Support/REAPER/UserPlugins 147 | -------------------------------------------------------------------------------- /common-web.mk: -------------------------------------------------------------------------------- 1 | PROJECT_ROOT = $(PWD)/.. 2 | DEPS_PATH = $(IPLUG2_ROOT)/Dependencies 3 | WAM_SDK_PATH = $(DEPS_PATH)/IPlug/WAM_SDK/wamsdk 4 | WDL_PATH = $(IPLUG2_ROOT)/WDL 5 | IPLUG_PATH = $(IPLUG2_ROOT)/IPlug 6 | SWELL_PATH = $(WDL_PATH)/swell 7 | IGRAPHICS_PATH = $(IPLUG2_ROOT)/IGraphics 8 | CONTROLS_PATH = $(IGRAPHICS_PATH)/Controls 9 | PLATFORMS_PATH = $(IGRAPHICS_PATH)/Platforms 10 | DRAWING_PATH = $(IGRAPHICS_PATH)/Drawing 11 | IGRAPHICS_EXTRAS_PATH = $(IGRAPHICS_PATH)/Extras 12 | IPLUG_EXTRAS_PATH = $(IPLUG_PATH)/Extras 13 | IPLUG_SYNTH_PATH = $(IPLUG_EXTRAS_PATH)/Synth 14 | IPLUG_FAUST_PATH = $(IPLUG_EXTRAS_PATH)/Faust 15 | IPLUG_WEB_PATH = $(IPLUG_PATH)/WEB 16 | NANOVG_PATH = $(DEPS_PATH)/IGraphics/NanoVG/src 17 | NANOSVG_PATH = $(DEPS_PATH)/IGraphics/NanoSVG/src 18 | YOGA_PATH = $(DEPS_PATH)/IGraphics/yoga 19 | STB_PATH = $(DEPS_PATH)/IGraphics/STB 20 | 21 | IPLUG_SRC = $(IPLUG_PATH)/IPlugAPIBase.cpp \ 22 | $(IPLUG_PATH)/IPlugParameter.cpp \ 23 | $(IPLUG_PATH)/IPlugPluginBase.cpp \ 24 | $(IPLUG_PATH)/IPlugPaths.cpp \ 25 | $(IPLUG_PATH)/IPlugTimer.cpp 26 | 27 | IGRAPHICS_SRC = $(IGRAPHICS_PATH)/IGraphics.cpp \ 28 | $(IGRAPHICS_PATH)/IControl.cpp \ 29 | $(CONTROLS_PATH)/*.cpp \ 30 | $(PLATFORMS_PATH)/IGraphicsWeb.cpp 31 | 32 | INCLUDE_PATHS = -I$(PROJECT_ROOT) \ 33 | -I$(WAM_SDK_PATH) \ 34 | -I$(WDL_PATH) \ 35 | -I$(SWELL_PATH) \ 36 | -I$(IPLUG_PATH) \ 37 | -I$(IPLUG_EXTRAS_PATH) \ 38 | -I$(IPLUG_SYNTH_PATH) \ 39 | -I$(IPLUG_FAUST_PATH) \ 40 | -I$(IPLUG_WEB_PATH) \ 41 | -I$(IGRAPHICS_PATH) \ 42 | -I$(DRAWING_PATH) \ 43 | -I$(CONTROLS_PATH) \ 44 | -I$(PLATFORMS_PATH) \ 45 | -I$(IGRAPHICS_EXTRAS_PATH) \ 46 | -I$(NANOVG_PATH) \ 47 | -I$(NANOSVG_PATH) \ 48 | -I$(STB_PATH) \ 49 | -I$(YOGA_PATH) \ 50 | -I$(YOGA_PATH)/yoga 51 | 52 | #every cpp file that is needed for both WASM modules 53 | SRC = $(IPLUG_SRC) 54 | 55 | #every cpp file that is needed for the WAM audio processor WASM module running in the audio worklet 56 | WAM_SRC = $(IPLUG_WEB_PATH)/IPlugWAM.cpp \ 57 | $(WAM_SDK_PATH)/processor.cpp \ 58 | $(IPLUG_PATH)/IPlugProcessor.cpp 59 | 60 | #every cpp file that is needed for the "WEB" graphics WASM module 61 | WEB_SRC = $(IGRAPHICS_SRC) \ 62 | $(IPLUG_WEB_PATH)/IPlugWeb.cpp \ 63 | $(IGRAPHICS_PATH)/IGraphicsEditorDelegate.cpp 64 | 65 | NANOVG_LDFLAGS = -s USE_WEBGL2=0 -s FULL_ES3=1 66 | 67 | IMGUI_LDFLAGS = -s BINARYEN_TRAP_MODE=clamp 68 | 69 | # CFLAGS for both WAM and WEB targets 70 | CFLAGS = $(INCLUDE_PATHS) \ 71 | -std=c++17 \ 72 | -Wno-bitwise-op-parentheses \ 73 | -DWDL_NO_DEFINE_MINMAX \ 74 | -DNDEBUG=1 75 | 76 | WAM_CFLAGS = -DWAM_API \ 77 | -DIPLUG_DSP=1 \ 78 | -DNO_IGRAPHICS \ 79 | -DSAMPLE_TYPE_FLOAT 80 | 81 | WEB_CFLAGS = -DWEB_API \ 82 | -DIPLUG_EDITOR=1 83 | 84 | WAM_EXPORTS = "[\ 85 | '_malloc', '_free', '_createModule','_wam_init','_wam_terminate','_wam_resize', \ 86 | '_wam_onprocess', '_wam_onmidi', '_wam_onsysex', '_wam_onparam', \ 87 | '_wam_onmessageN', '_wam_onmessageS', '_wam_onmessageA', '_wam_onpatch' \ 88 | ]" 89 | 90 | WEB_EXPORTS = "['_malloc', '_free', '_main', '_iplug_fsready', '_iplug_syncfs']" 91 | 92 | # LDFLAGS for both WAM and WEB targets 93 | LDFLAGS = -s ALLOW_MEMORY_GROWTH=1 --bind 94 | 95 | # We can't compile the WASM module synchronously on main thread (.wasm over 4k in size requires async compile on chrome) https://developers.google.com/web/updates/2018/04/loading-wasm 96 | # and you can't compile asynchronously in AudioWorklet scope 97 | # The following settings mean the WASM is delivered as BASE64 and included in the MyPluginName-wam.js file. 98 | WAM_LDFLAGS = -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'setValue', 'UTF8ToString']" \ 99 | -s BINARYEN_ASYNC_COMPILATION=0 \ 100 | -s SINGLE_FILE=1 101 | #-s ENVIRONMENT=worker 102 | 103 | WEB_LDFLAGS = -s EXPORTED_FUNCTIONS=$(WEB_EXPORTS) \ 104 | -s EXPORTED_RUNTIME_METHODS="['ccall', 'UTF8ToString']" \ 105 | -s BINARYEN_ASYNC_COMPILATION=1 \ 106 | -s FORCE_FILESYSTEM=1 \ 107 | -s ENVIRONMENT=web \ 108 | -s DEFAULT_LIBRARY_FUNCS_TO_INCLUDE="['\$$Browser']" \ 109 | -lidbfs.js 110 | 111 | -------------------------------------------------------------------------------- /iPlug2OOS.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "git.ignoreLimitWarning": true, 9 | "doxdocgen.generic.briefTemplate": "{text}", 10 | } 11 | } -------------------------------------------------------------------------------- /setup_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script initializes the cloned iPlug2OOS repo, downloading dependencies, and tools 4 | 5 | echo "Initializing submodule..." 6 | git submodule update --init 7 | 8 | echo "Downloading iPlug2 SDKs..." 9 | cd iPlug2/Dependencies/IPlug/ 10 | ./download-iplug-sdks.sh 11 | cd ../../.. 12 | 13 | # Not nessecary until we have WASM libs 14 | # echo "Downloading iPlug2 prebuilt libs..." 15 | # cd iPlug2/Dependencies/ 16 | # ./download-prebuilt-libs.sh 17 | # cd ../.. 18 | 19 | echo "Downloading mkcert..." 20 | wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 -O mkcert 21 | chmod +x mkcert 22 | mv mkcert /usr/local/bin 23 | mkcert -install --------------------------------------------------------------------------------