diff --git a/.github/workflows/ci-debug.yml b/.github/workflows/ci-debug.yml deleted file mode 100644 index 12e4f31..0000000 --- a/.github/workflows/ci-debug.yml +++ /dev/null @@ -1,126 +0,0 @@ -#=========================================================================================== -# This workflow will build the project for Windows, macOS, and Linux. -# It will also build an Arch Linux and Fedora package using Docker containers. -# The artifacts will be uploaded to the release page. -# -# TODO: -# - Add a step after release to update the AUR repository -#=========================================================================================== - -name: Build Debug -on: - workflow_dispatch: -defaults: - run: - shell: bash - -#=========================================================================================== -# Environment Variables -env: - PROJECT_NAME: Disflux - BUNDLE_NAME: disflux - BUNDLE_ID: com.dimethoxy.disflux - BUILD_DIR: build - DISPLAY: :0 # Linux pluginval needs this - HOMEBREW_NO_INSTALL_CLEANUP: 1 - IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp - -#=========================================================================================== -# Build Jobs -#=========================================================================================== -jobs: - #========================================================================================= - # Windows Build - #========================================================================================= - build-windows: - runs-on: windows-latest - steps: - - name: Export Variables - run: | - echo "BUILD_ARTIFACTS_DIR=$BUILD_DIR/src/${{env.PROJECT_NAME}}Plugin_artefacts/Debug" >> $GITHUB_ENV - echo "WINDOWS-PACKAGE=${{env.BUNDLE_NAME}}-windows-debug.exe" >> $GITHUB_ENV - - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Read Version - run: | - echo "VERSION=$(tr -d '[:space:]' < VERSION.md)" >> $GITHUB_ENV - - - name: Setup MSVC - uses: TheMrMilchmann/setup-msvc-dev@v3 - with: - arch: x64 - spectre: true - - - name: Set Up Windows - run: | - choco install ninja - choco install innosetup - - - name: Cache IPP (Windows) - id: cache-ipp - uses: actions/cache@v4 - with: - key: ipp-2026-0-0-193 - path: C:\Program Files (x86)\Intel - - - name: Install IPP (Windows) - if: steps.cache-ipp.outputs.cache-hit != 'true' - run: | - curl --output intel-oneapi-toolkit-2026.0.0.193_offline.exe https://registrationcenter-download.intel.com/akdlm/IRC_NAS/bae85ab1-cfcd-4251-8d42-a0c27949ea33/intel-oneapi-toolkit-2026.0.0.193_offline.exe - ./intel-oneapi-toolkit-2026.0.0.193_offline.exe -s -a --silent --eula accept -p=NEED_VS2022_INTEGRATION=1 - - - name: Save IPP cache - if: steps.cache-ipp.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: C:\Program Files (x86)\Intel - key: ipp-2026-0-0-193 - - - name: Select CMake Preset - run: | - cmake --preset "Windows Debug" - - - name: Build - run: cmake --build build --config "Debug" - - - name: Copy Build Artifacts - run: | - mkdir -p artifacts - cp -r ${{env.BUILD_ARTIFACTS_DIR}}/VST3/${{env.PROJECT_NAME}}.vst3 \ - artifacts/ - cp -r ${{env.BUILD_ARTIFACTS_DIR}}/CLAP/${{env.PROJECT_NAME}}.clap \ - artifacts/ - shell: bash - - - name: Package Debug Symbols (Windows) - run: | - mkdir -p artifacts/debug-symbols - find ${{env.BUILD_ARTIFACTS_DIR}} -name "*.pdb" -type f | while read pdb; do - cp "$pdb" artifacts/debug-symbols/ - done - if [ -f artifacts/debug-symbols/*.pdb ]; then - cd artifacts - zip -r ${{env.BUNDLE_NAME}}-windows-debug-symbols.zip debug-symbols/ - fi - shell: bash - - - name: Create Installer - run: | - # Create the packaging directory - mkdir -p packaging - - # Create the Inno Setup - envsubst < pkg/windows/Setup.iss > packaging/Setup.iss - iscc packaging/Setup.iss - - # Move the installer to the artifacts directory - mv packaging/Output/"${{env.PROJECT_NAME}}_Setup.exe" artifacts/${{env.WINDOWS-PACKAGE}} - shell: bash - - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-windows-debug - path: artifacts diff --git a/.github/workflows/ci-development.yml b/.github/workflows/ci-development.yml new file mode 100644 index 0000000..6c404a3 --- /dev/null +++ b/.github/workflows/ci-development.yml @@ -0,0 +1,361 @@ +name: Build Development +on: + push: + branches: + - development + workflow_dispatch: +defaults: + run: + shell: bash + +#=========================================================================================== +# Environment Variables +env: + PROJECT_NAME: Disflux + BUNDLE_NAME: disflux + BUNDLE_ID: com.dimethoxy.disflux + BUILD_DIR: build + DISPLAY: :0 # Linux pluginval needs this + HOMEBREW_NO_INSTALL_CLEANUP: 1 + IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp + +#=========================================================================================== +# Build Jobs +#=========================================================================================== +jobs: + #========================================================================================= + # Windows Build + #========================================================================================= + build-windows: + runs-on: windows-latest + steps: + - name: Export Variables + run: | + echo "BUILD_ARTIFACTS_DIR=$BUILD_DIR/src/${{env.PROJECT_NAME}}Plugin_artefacts/Release" >> $GITHUB_ENV + echo "WINDOWS-PACKAGE=${{env.BUNDLE_NAME}}-windows.exe" >> $GITHUB_ENV + + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Read Version + run: | + echo "VERSION=$(tr -d '[:space:]' < VERSION.md)" >> $GITHUB_ENV + + - name: Setup MSVC + uses: TheMrMilchmann/setup-msvc-dev@v3 + with: + arch: x64 + spectre: true + + - name: Set Up Windows + run: | + choco install ninja + choco install innosetup + + - name: Cache IPP (Windows) + id: cache-ipp + uses: actions/cache@v4 + with: + key: ipp-2026-0-0-193 + path: C:\Program Files (x86)\Intel + + - name: Install IPP (Windows) + if: steps.cache-ipp.outputs.cache-hit != 'true' + run: | + curl --output intel-oneapi-toolkit-2026.0.0.193_offline.exe https://registrationcenter-download.intel.com/akdlm/IRC_NAS/bae85ab1-cfcd-4251-8d42-a0c27949ea33/intel-oneapi-toolkit-2026.0.0.193_offline.exe + ./intel-oneapi-toolkit-2026.0.0.193_offline.exe -s -a --silent --eula accept -p=NEED_VS2022_INTEGRATION=1 + + - name: Save IPP cache + if: steps.cache-ipp.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: C:\Program Files (x86)\Intel + key: ipp-2026-0-0-193 + + - name: Select CMake Preset + run: | + cmake --preset "Windows Debug" + + - name: Build + run: cmake --build build --config "Debug" + + - name: Copy Build Artifacts + run: | + mkdir -p artifacts + ls -la ${{env.BUILD_ARTIFACTS_DIR}}/VST3 + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/VST3/${{env.PROJECT_NAME}}.vst3 \ + artifacts/ + ls -la ${{env.BUILD_ARTIFACTS_DIR}}/CLAP + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/CLAP/${{env.PROJECT_NAME}}.clap \ + artifacts/ + shell: bash + + - name: Create Installer + run: | + # Create the packaging directory + mkdir -p packaging + + # Create the Inno Setup + envsubst < pkg/windows/Setup.iss > packaging/Setup.iss + iscc packaging/Setup.iss + + # Move the installer to the artifacts directory + mv packaging/Output/"${{env.PROJECT_NAME}}_Setup.exe" artifacts/${{env.WINDOWS-PACKAGE}} + shell: bash + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: artifacts-windows + path: artifacts + + #========================================================================================= + # macOS Build + #========================================================================================= + build-macos: + runs-on: macos-latest + steps: + - name: Export Variables + run: | + echo "BUILD_ARTIFACTS_DIR=$BUILD_DIR/src/${{env.PROJECT_NAME}}Plugin_artefacts/Release" >> $GITHUB_ENV + echo "MAC_PACKAGE=${{env.BUNDLE_NAME}}-macos.pkg" >> $GITHUB_ENV + + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Read Version + run: | + echo "VERSION=$(tr -d '[:space:]' < VERSION.md)" >> $GITHUB_ENV + + - name: Set Up Mac + run: brew install ninja osxutils + + - name: Select CMake Preset + run: | + cmake --preset "Mac Release" \ + -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" + + - name: Build + run: cmake --build build --config "Release" + + - name: Copy Build Artifacts + run: | + mkdir -p artifacts + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/VST3/${{env.PROJECT_NAME}}.vst3 \ + artifacts/ + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/CLAP/${{env.PROJECT_NAME}}.clap \ + artifacts/ + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/AU/${{env.PROJECT_NAME}}.component \ + artifacts/ + shell: bash + + - name: Import Certificates + uses: sudara/basic-macos-keychain-action@v1 + id: keychain + with: + dev-id-app-cert: ${{ secrets.DEV_ID_APP_CERT }} + dev-id-app-password: ${{ secrets.DEV_ID_PASSWORD }} + dev-id-installer-cert: ${{ secrets.DEV_ID_INSTALL_CERT }} + dev-id-installer-password: ${{ secrets.DEV_ID_PASSWORD }} + + - name: Codesign (macOS) + run: | + # Set variables + VST3_BIN="artifacts/${{env.PROJECT_NAME}}.vst3/Contents/MacOS/${{env.PROJECT_NAME}}" + CLAP_BIN="artifacts/${{env.PROJECT_NAME}}.clap/Contents/MacOS/${{env.PROJECT_NAME}}" + AU_BIN="artifacts/${{env.PROJECT_NAME}}.component/Contents/MacOS/${{env.PROJECT_NAME}}" + + # Codesign the binaries + codesign \ + --force -s "${{secrets.DEVELOPER_ID_APPLICATION}}" \ + -v "$VST3_BIN" \ + --deep --strict --options=runtime --timestamp + codesign \ + --force -s "${{secrets.DEVELOPER_ID_APPLICATION}}" \ + -v "$CLAP_BIN" \ + --deep --strict --options=runtime --timestamp + codesign \ + --force -s "${{secrets.DEVELOPER_ID_APPLICATION}}" \ + -v "$AU_BIN" \ + --deep --strict --options=runtime --timestamp + shell: bash + + - name: Create Installer + run: | + # Set variables + VST3_PATH="artifacts/${{env.PROJECT_NAME}}.vst3" + CLAP_PATH="artifacts/${{env.PROJECT_NAME}}.clap" + AU_PATH="artifacts/${{env.PROJECT_NAME}}.component" + PACKAGE_NAME="${{env.PROJECT_NAME}}-macos.pkg" + + # Create the packaging directory + mkdir -p packaging + + # Create the distribution file + envsubst < pkg/mac/distribution.xml > packaging/distribution.xml + + # Create the VST subpackage + pkgbuild \ + --identifier "${{env.BUNDLE_ID}}.vst3.pkg" \ + --version "$VERSION" \ + --component "$VST3_PATH" \ + --install-location "/Library/Audio/Plug-Ins/VST3" \ + "packaging/${{env.PROJECT_NAME}}.vst3.pkg" + + # Create the CLAP subpackage + pkgbuild \ + --identifier "${{env.BUNDLE_ID}}.clap.pkg" \ + --version "$VERSION" \ + --component "$CLAP_PATH" \ + --install-location "/Library/Audio/Plug-Ins/CLAP" \ + "packaging/${{env.PROJECT_NAME}}.clap.pkg" + + # Create the AU subpackage + pkgbuild \ + --identifier "${{env.BUNDLE_ID}}.au.pkg" \ + --version "$VERSION" \ + --component "$AU_PATH" \ + --install-location "/Library/Audio/Plug-Ins/Components" \ + "packaging/${{env.PROJECT_NAME}}.au.pkg" + + # Create the main package + cd packaging + productbuild \ + --resources ./resources \ + --distribution distribution.xml \ + --sign "${{secrets.DEVELOPER_ID_INSTALLER}}" \ + --timestamp "${{env.PROJECT_NAME}}.pkg" + + # Notarize the package + xcrun notarytool submit "${{env.PROJECT_NAME}}.pkg" \ + --apple-id ${{secrets.NOTARIZATION_USERNAME}} \ + --password ${{secrets.NOTARIZATION_PASSWORD}} \ + --team-id ${{secrets.TEAM_ID}} \ + --wait + + # Staple the package + xcrun stapler staple "${{env.PROJECT_NAME}}.pkg" + + # Move the package to the artifacts directory + mv ${{env.PROJECT_NAME}}.pkg ../artifacts/${{env.MAC_PACKAGE}} + shell: bash + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: artifacts-macos + path: artifacts + + #========================================================================================= + # Ubuntu Linux Build + #========================================================================================= + build-ubuntu: + runs-on: ubuntu-latest + steps: + - name: Export Variables + run: | + echo "BUILD_ARTIFACTS_DIR=$BUILD_DIR/src/${{env.PROJECT_NAME}}Plugin_artefacts/Release" >> $GITHUB_ENV + echo "UBUNTU_PACKAGE=${{env.BUNDLE_NAME}}-linux-ubuntu.deb" >> $GITHUB_ENV + echo "LINUX_PACKAGE=${{env.BUNDLE_NAME}}-linux-vanilla.zip" >> $GITHUB_ENV + + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Read Version + run: | + echo "VERSION=$(tr -d '[:space:]' < VERSION.md)" >> $GITHUB_ENV + + - name: Set Up Linux + run: | + sudo apt-get update + sudo apt-get install ninja-build + sudo apt install libasound2-dev \ + libjack-jackd2-dev \ + ladspa-sdk \ + libcurl4-openssl-dev \ + libfreetype-dev \ + libfontconfig1-dev \ + libx11-dev \ + libxcomposite-dev \ + libxcursor-dev \ + libxext-dev \ + libxinerama-dev \ + libxrandr-dev \ + libxrender-dev \ + libwebkit2gtk-4.1-dev \ + libglu1-mesa-dev mesa-common-dev + sudo apt install curl + sudo apt-get install -y dpkg-dev devscripts + sudo /usr/bin/Xvfb $DISPLAY & + shell: bash + + - name: Select CMake Preset + run: | + cmake --preset "Linux Release" + + - name: Build + run: cmake --build build --config "Release" + + - name: Copy Artifacts + run: | + mkdir -p artifacts + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/VST3/${{env.PROJECT_NAME}}.vst3 \ + artifacts/ + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/CLAP/${{env.PROJECT_NAME}}.clap \ + artifacts/ + cp -r ${{env.BUILD_ARTIFACTS_DIR}}/LV2/${{env.PROJECT_NAME}}.lv2 \ + artifacts/ + shell: bash + + - name: Package Linux Artifacts + run: | + # Set variables + UBUNTU_PACKAGE_DIR="${{env.BUNDLE_NAME}}-linux-ubuntu" + UBUNTU_CONTROL_FILE="pkg/ubuntu/control" + VST3_INSTALL_DIR="/usr/lib/vst3/${{env.PROJECT_NAME}}" + CLAP_INSTALL_DIR="/usr/lib/clap/${{env.PROJECT_NAME}}" + LV2_INSTALL_DIR="/usr/lib/lv2/${{env.PROJECT_NAME}}" + + # Create Vanilla package directory + mkdir -p vanilla + cp -r artifacts/${{env.PROJECT_NAME}}.vst3 vanilla/ + cp -r artifacts/${{env.PROJECT_NAME}}.clap vanilla/ + cp -r artifacts/${{env.PROJECT_NAME}}.lv2 vanilla/ + + # Zip and move the package to the artifacts directory + zip -r ${{env.LINUX_PACKAGE}} vanilla/* + mv ${{env.LINUX_PACKAGE}} artifacts/$LINUX_PACKAGE + + # Create Debian package directory + mkdir -p $UBUNTU_PACKAGE_DIR/DEBIAN + mkdir -p $UBUNTU_PACKAGE_DIR/$VST3_INSTALL_DIR + mkdir -p $UBUNTU_PACKAGE_DIR/$CLAP_INSTALL_DIR + mkdir -p $UBUNTU_PACKAGE_DIR/$LV2_INSTALL_DIR + + # Copy files to Debian package directory + cp -r artifacts/${{env.PROJECT_NAME}}.vst3 \ + $UBUNTU_PACKAGE_DIR/$VST3_INSTALL_DIR/ + cp -r artifacts/${{env.PROJECT_NAME}}.clap \ + $UBUNTU_PACKAGE_DIR/$CLAP_INSTALL_DIR/ + cp -r artifacts/${{env.PROJECT_NAME}}.lv2 \ + $UBUNTU_PACKAGE_DIR/$LV2_INSTALL_DIR/ + + # Set PACKAGE_NAME for envsubst + export PACKAGE_NAME=${{env.BUNDLE_NAME}} + export PACKAGE_VERSION=$VERSION + + # Replace PACKAGE_NAME in control file and copy to Debian package directory + envsubst < $UBUNTU_CONTROL_FILE > $UBUNTU_PACKAGE_DIR/DEBIAN/control + + # Build Debian package + dpkg-deb --build $UBUNTU_PACKAGE_DIR + + # Move the package to the artifacts directory + cp -r *.deb artifacts/${{env.UBUNTU_PACKAGE}} + shell: bash + + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: artifacts-ubuntu + path: artifacts diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml index 6595af9..913da6e 100644 --- a/.github/workflows/ci-release.yml +++ b/.github/workflows/ci-release.yml @@ -1,12 +1,3 @@ -#=========================================================================================== -# This workflow will build the project for Windows, macOS, and Linux. -# It will also build an Arch Linux and Fedora package using Docker containers. -# The artifacts will be uploaded to the release page. -# -# TODO: -# - Add a step after release to update the AUR repository -#=========================================================================================== - name: Build Release on: workflow_dispatch: diff --git a/.github/workflows/ci-snapshot.yml b/.github/workflows/ci-snapshot.yml index a915138..3de8cb4 100644 --- a/.github/workflows/ci-snapshot.yml +++ b/.github/workflows/ci-snapshot.yml @@ -1,18 +1,6 @@ -#=========================================================================================== -# This workflow will build the project for Windows, macOS, and Linux. -# It will also build an Arch Linux and Fedora package using Docker containers. -# The artifacts will be uploaded to the release page. -# -# TODO: -# - Add a step after release to update the AUR repository -#=========================================================================================== - name: Build Snapshot on: workflow_dispatch: - pull_request: - branches: - - main push: branches: - main diff --git a/README.md b/README.md index 9677fd2..cbc6e69 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # Disflux +![Windows](https://img.shields.io/badge/Windows-supported-0078d6.svg?style=flat-square&logo=windows) +![macOS](https://img.shields.io/badge/macOS-supported-000000.svg?style=flat-square&logo=apple) +![Ubuntu](https://img.shields.io/badge/Ubuntu-supported-e95420.svg?style=flat-square&logo=ubuntu) +![Arch Linux](https://img.shields.io/badge/Arch%20Linux-supported-1793d1.svg?style=flat-square&logo=arch-linux) + +![VST3](https://img.shields.io/badge/VST3-supported-8a2be2.svg?style=flat-square) +![AU](https://img.shields.io/badge/AU-supported-ff9500.svg?style=flat-square) +![LV2](https://img.shields.io/badge/LV2-supported-2ecc71.svg?style=flat-square) +![CLAP](https://img.shields.io/badge/CLAP-supported-00bcd4.svg?style=flat-square) + Disflux is a wild audio effect plugin that takes your transients and smears them through time, adding serious punch and weight. If you're creating Hard Techno or Rawstyle and need your kicks to hit like a freaking train, Disflux is your new best friend. We're talking aggressive, distorted, gated kicks that smack like no tomorrow. Using a chain of all-pass filters, Disflux spreads those high-energy transients through time, giving you that laser-like effect. Think of it as a cross between a short reverb and a falling sine wave. It injects depth and impact into your punch. Outside of kicks, it’s also perfect for crafting experimental soundscapes and other weird, next-level audio magic.