Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ffAudio/foleys_gui_magic
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.3.8
Choose a base ref
...
head repository: ffAudio/foleys_gui_magic
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Jul 7, 2023

  1. Copy the full SHA
    bcb469c View commit details
  2. Copy the full SHA
    0d551b2 View commit details
  3. Copy the full SHA
    6c702dd View commit details
  4. Copy the full SHA
    e517091 View commit details
  5. Copy the full SHA
    3127208 View commit details
  6. Copy the full SHA
    f11682d View commit details
  7. Minor cleanups

    ffAudio committed Jul 7, 2023
    Copy the full SHA
    42e33ef View commit details
  8. Copy the full SHA
    101e645 View commit details
  9. Copy the full SHA
    3b92baf View commit details
  10. Copy the full SHA
    9ed6385 View commit details
  11. Copy the full SHA
    5bf8576 View commit details
  12. Copy the full SHA
    40d021e View commit details
  13. Updated version

    ffAudio committed Jul 7, 2023
    Copy the full SHA
    33519c2 View commit details

Commits on Jul 27, 2023

  1. Copy the full SHA
    5c69cc2 View commit details
  2. Pick from unit-test branch

    ffAudio committed Jul 27, 2023
    Copy the full SHA
    5cb44f8 View commit details
  3. Fixed tests build

    ffAudio committed Jul 27, 2023
    Copy the full SHA
    9eea5c6 View commit details
  4. Copy the full SHA
    376aaad View commit details
  5. Copy the full SHA
    4ac7f3b View commit details
  6. Updated documentation

    ffAudio committed Jul 27, 2023
    Copy the full SHA
    064a7d1 View commit details
  7. Fixed typo

    ffAudio committed Jul 27, 2023
    Copy the full SHA
    5e23f12 View commit details
  8. Copy the full SHA
    07a8e50 View commit details
  9. fixing pluginval test registration

    benthevining authored and ffAudio committed Jul 27, 2023
    Copy the full SHA
    7c7abd8 View commit details
  10. building both debug & release in CI

    benthevining authored and ffAudio committed Jul 27, 2023
    Copy the full SHA
    0bfe37a View commit details
  11. Copy the full SHA
    87f43de View commit details
  12. fixed pluginval downloading step

    benthevining authored and ffAudio committed Jul 27, 2023
    Copy the full SHA
    a194ef5 View commit details
  13. fixed pluginval downloading step

    benthevining authored and ffAudio committed Jul 27, 2023
    Copy the full SHA
    a4dad33 View commit details
  14. fixed pluginval downloading step

    benthevining authored and ffAudio committed Jul 27, 2023
    Copy the full SHA
    3fbadce View commit details
  15. Copy the full SHA
    a113c60 View commit details
  16. Copy the full SHA
    a1e7f65 View commit details
  17. Updated license to BSD V2

    ffAudio committed Jul 27, 2023
    Copy the full SHA
    4f83f1e View commit details

Commits on Aug 4, 2023

  1. Copy the full SHA
    5dd4f3e View commit details

Commits on Aug 7, 2023

  1. Added waveform display

    ffAudio committed Aug 7, 2023
    Copy the full SHA
    7703def View commit details
  2. Copy the full SHA
    c2d6305 View commit details
  3. Copy the full SHA
    795f879 View commit details

Commits on Oct 29, 2023

  1. Added doxygen workflow

    ffAudio committed Oct 29, 2023
    Copy the full SHA
    0e49216 View commit details

Commits on Oct 30, 2023

  1. Fixed Doxygen mainpage

    ffAudio committed Oct 30, 2023
    Copy the full SHA
    cb95b60 View commit details
  2. Copy the full SHA
    42043fe View commit details
  3. Fixed documentation

    ffAudio committed Oct 30, 2023
    Copy the full SHA
    a619fb7 View commit details

Commits on Feb 3, 2024

  1. Copy the full SHA
    7700d21 View commit details
  2. Fixed copy paste bug

    ffAudio committed Feb 3, 2024
    Copy the full SHA
    6858eac View commit details

Commits on May 13, 2024

  1. Upgraded to C++20

    ffAudio committed May 13, 2024
    Copy the full SHA
    4d9513a View commit details

Commits on May 25, 2024

  1. Cleaned up interface

    ffAudio committed May 25, 2024
    Copy the full SHA
    6cbf87f View commit details
  2. Silenced compiler warning

    ffAudio committed May 25, 2024
    Copy the full SHA
    a506a39 View commit details
  3. Copy the full SHA
    8ba2754 View commit details

Commits on Nov 27, 2024

  1. Copy the full SHA
    0f1efea View commit details
  2. Fix cmake for juce 8

    ffAudio committed Nov 27, 2024
    Copy the full SHA
    3f37f2a View commit details
  3. Copy the full SHA
    a6e0973 View commit details
Showing with 10,566 additions and 2,055 deletions.
  1. +79 −0 .clang-format
  2. +52 −0 .github/workflows/build.yml
  3. +38 −0 .github/workflows/doxygen.yml
  4. +5 −0 .gitignore
  5. +21 −0 CMakeIncludes/Juce.cmake
  6. +151 −0 CMakeIncludes/PGMPluginval.cmake
  7. +71 −0 CMakeIncludes/config.cmake
  8. +120 −11 CMakeLists.txt
  9. +140 −0 CMakePresets.json
  10. +4 −6 CONTRIBUTING.md
  11. +0 −1,021 Cmake/CPM.cmake
  12. +113 −0 Examples/APVTS_Tutorial/APVTS_Tutorial.jucer
  13. +62 −0 Examples/APVTS_Tutorial/CMakeLists.txt
  14. +82 −0 Examples/APVTS_Tutorial/Source/PluginProcessor.cpp
  15. +80 −0 Examples/CMakeLists.txt
  16. +70 −0 Examples/EqualizerExample/CMakeLists.txt
  17. +121 −0 Examples/EqualizerExample/EqualizerExample.jucer
  18. +21 −0 Examples/EqualizerExample/README.md
  19. BIN Examples/EqualizerExample/Resources/Logo.png
  20. +242 −0 Examples/EqualizerExample/Resources/magic.xml
  21. +392 −0 Examples/EqualizerExample/Source/PluginProcessor.cpp
  22. +159 −0 Examples/EqualizerExample/Source/PluginProcessor.h
  23. +67 −0 Examples/ExtendingExample/CMakeLists.txt
  24. +113 −0 Examples/ExtendingExample/ExtendingExample.jucer
  25. +285 −0 Examples/ExtendingExample/Source/PluginProcessor.cpp
  26. +52 −0 Examples/ExtendingExample/Source/PluginProcessor.h
  27. BIN Examples/ExtendingExample/Source/magic.xml
  28. +75 −0 Examples/FoleysSynth/CMakeLists.txt
  29. +122 −0 Examples/FoleysSynth/FoleysSynth.jucer
  30. +6 −0 Examples/FoleysSynth/README.md
  31. BIN Examples/FoleysSynth/Resources/Logo.png
  32. BIN Examples/FoleysSynth/Resources/magic.xml
  33. +226 −0 Examples/FoleysSynth/Source/FoleysSynth.cpp
  34. +107 −0 Examples/FoleysSynth/Source/FoleysSynth.h
  35. +158 −0 Examples/FoleysSynth/Source/PluginProcessor.cpp
  36. +61 −0 Examples/FoleysSynth/Source/PluginProcessor.h
  37. +74 −0 Examples/FoleysSynth/Source/PresetListBox.h
  38. +53 −0 Examples/PlayerExample/CMakeLists.txt
  39. +108 −0 Examples/PlayerExample/PlayerExample.jucer
  40. BIN Examples/PlayerExample/Resources/magic.xml
  41. +101 −0 Examples/PlayerExample/Source/Main.cpp
  42. +188 −0 Examples/PlayerExample/Source/MainComponent.cpp
  43. +76 −0 Examples/PlayerExample/Source/MainComponent.h
  44. +136 −0 Examples/PlayerExample/Source/Waveform.cpp
  45. +107 −0 Examples/PlayerExample/Source/Waveform.h
  46. +68 −0 Examples/SignalGenerator/CMakeLists.txt
  47. +109 −0 Examples/SignalGenerator/README.md
  48. BIN Examples/SignalGenerator/Resources/magic.xml
  49. +93 −0 Examples/SignalGenerator/SignalGenerator.jucer
  50. +229 −0 Examples/SignalGenerator/Source/PluginProcessor.cpp
  51. +73 −0 Examples/SignalGenerator/Source/PluginProcessor.h
  52. +70 −0 Examples/Vanilla/CMakeLists.txt
  53. +25 −0 Examples/Vanilla/Resources/magic.xml
  54. +28 −0 Examples/Vanilla/Source/PluginProcessor.cpp
  55. +19 −0 Examples/Vanilla/Source/PluginProcessor.h
  56. +17 −32 LICENSE.md
  57. +44 −27 README.md
  58. +97 −0 Tests/CMakeLists.txt
  59. +11 −1 Tests/foleys_GuiTreeTests.cpp
  60. +11 −1 Tests/foleys_MagicProcessorTests.cpp
  61. +65 −0 Tests/foleys_TestProcessors.h
  62. +32 −1 VERSION.md
  63. +2,777 −0 doxygen/Doxyfile
  64. BIN doxygen/Logo-FF-text.png
  65. BIN doxygen/Logo-FF.png
  66. +1,764 −0 doxygen/customdoxygen.css
  67. BIN doxygen/ff-icon.png
  68. +21 −0 doxygen/footer.html
  69. +57 −0 doxygen/header.html
  70. +3 −0 modules/CMakeLists.txt
  71. +4 −7 { → modules/foleys_gui_magic}/Editor/foleys_GUITreeEditor.cpp
  72. +4 −7 { → modules/foleys_gui_magic}/Editor/foleys_GUITreeEditor.h
  73. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_MultiListPropertyComponent.cpp
  74. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_MultiListPropertyComponent.h
  75. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_Palette.cpp
  76. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_Palette.h
  77. +4 −5 { → modules/foleys_gui_magic}/Editor/foleys_PropertiesEditor.cpp
  78. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_PropertiesEditor.h
  79. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleBoolPropertyComponent.cpp
  80. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleBoolPropertyComponent.h
  81. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleChoicePropertyComponent.cpp
  82. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleChoicePropertyComponent.h
  83. +2 −7 { → modules/foleys_gui_magic}/Editor/foleys_StyleColourPropertyComponent.cpp
  84. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleColourPropertyComponent.h
  85. +2 −5 { → modules/foleys_gui_magic}/Editor/foleys_StyleGradientPropertyComponent.cpp
  86. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleGradientPropertyComponent.h
  87. +5 −6 { → modules/foleys_gui_magic}/Editor/foleys_StylePropertyComponent.cpp
  88. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StylePropertyComponent.h
  89. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleTextPropertyComponent.cpp
  90. +3 −6 { → modules/foleys_gui_magic}/Editor/foleys_StyleTextPropertyComponent.h
  91. +75 −97 { → modules/foleys_gui_magic}/Editor/foleys_ToolBox.cpp
  92. +36 −30 { → modules/foleys_gui_magic}/Editor/foleys_ToolBox.h
  93. +4 −6 { → modules/foleys_gui_magic}/General/foleys_ApplicationSettings.cpp
  94. +3 −6 { → modules/foleys_gui_magic}/General/foleys_ApplicationSettings.h
  95. +86 −76 { → modules/foleys_gui_magic}/General/foleys_MagicGUIBuilder.cpp
  96. +51 −36 { → modules/foleys_gui_magic}/General/foleys_MagicGUIBuilder.h
  97. +50 −22 { → modules/foleys_gui_magic}/General/foleys_MagicJUCEFactories.cpp
  98. +4 −7 { → modules/foleys_gui_magic}/General/foleys_MagicPluginEditor.cpp
  99. +4 −7 { → modules/foleys_gui_magic}/General/foleys_MagicPluginEditor.h
  100. +3 −6 { → modules/foleys_gui_magic}/General/foleys_MagicProcessor.cpp
  101. +5 −6 { → modules/foleys_gui_magic}/General/foleys_MagicProcessor.h
  102. +3 −6 { → modules/foleys_gui_magic}/General/foleys_Resources.cpp
  103. +3 −6 { → modules/foleys_gui_magic}/General/foleys_Resources.h
  104. +3 −6 { → modules/foleys_gui_magic}/General/foleys_SettableProperties.h
  105. +5 −6 { → modules/foleys_gui_magic}/General/foleys_StringDefinitions.h
  106. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_AtomicValueAttachment.h
  107. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_Conversions.h
  108. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_DefaultGuiTrees.cpp
  109. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_DefaultGuiTrees.h
  110. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_MouseLambdas.h
  111. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_ParameterAttachment.h
  112. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_PopupMenuHelper.h
  113. +3 −6 { → modules/foleys_gui_magic}/Helpers/foleys_ScopedInterProcessLock.h
  114. +3 −6 { → modules/foleys_gui_magic}/Layout/foleys_BoxModel.h
  115. +28 −17 { → modules/foleys_gui_magic}/Layout/foleys_Container.cpp
  116. +8 −12 { → modules/foleys_gui_magic}/Layout/foleys_Container.h
  117. +5 −8 { → modules/foleys_gui_magic}/Layout/foleys_Decorator.cpp
  118. +2 −7 { → modules/foleys_gui_magic}/Layout/foleys_Decorator.h
  119. +3 −6 { → modules/foleys_gui_magic}/Layout/foleys_GradientBackground.cpp
  120. +3 −6 { → modules/foleys_gui_magic}/Layout/foleys_GradientBackground.h
  121. +3 −18 { → modules/foleys_gui_magic}/Layout/foleys_GuiItem.cpp
  122. +4 −11 { → modules/foleys_gui_magic}/Layout/foleys_GuiItem.h
  123. +6 −6 { → modules/foleys_gui_magic}/Layout/foleys_RootItem.cpp
  124. +3 −6 { → modules/foleys_gui_magic}/Layout/foleys_RootItem.h
  125. +17 −8 { → modules/foleys_gui_magic}/Layout/foleys_Stylesheet.cpp
  126. +6 −8 { → modules/foleys_gui_magic}/Layout/foleys_Stylesheet.h
  127. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_JuceLookAndFeels.cpp
  128. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_JuceLookAndFeels.h
  129. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_LookAndFeel.cpp
  130. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_LookAndFeel.h
  131. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_Skeuomorphic.cpp
  132. +3 −6 { → modules/foleys_gui_magic}/LookAndFeels/foleys_Skeuomorphic.h
  133. +5 −8 { → modules/foleys_gui_magic}/State/foleys_MagicGUIState.cpp
  134. +13 −6 { → modules/foleys_gui_magic}/State/foleys_MagicGUIState.h
  135. +32 −15 { → modules/foleys_gui_magic}/State/foleys_MagicProcessorState.cpp
  136. +4 −6 { → modules/foleys_gui_magic}/State/foleys_MagicProcessorState.h
  137. +3 −6 { → modules/foleys_gui_magic}/State/foleys_MidiParameterMapper.cpp
  138. +3 −6 { → modules/foleys_gui_magic}/State/foleys_MidiParameterMapper.h
  139. +3 −6 { → modules/foleys_gui_magic}/State/foleys_ParameterManager.cpp
  140. +3 −6 { → modules/foleys_gui_magic}/State/foleys_ParameterManager.h
  141. +19 −22 { → modules/foleys_gui_magic}/State/foleys_RadioButtonManager.cpp
  142. +4 −7 { → modules/foleys_gui_magic}/State/foleys_RadioButtonManager.h
  143. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicAnalyser.cpp
  144. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicAnalyser.h
  145. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicFilterPlot.cpp
  146. +3 −8 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicFilterPlot.h
  147. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicLevelSource.cpp
  148. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicLevelSource.h
  149. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicOscilloscope.cpp
  150. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicOscilloscope.h
  151. +3 −6 { → modules/foleys_gui_magic}/Visualisers/foleys_MagicPlotSource.h
  152. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_AutoOrientationSlider.h
  153. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_FileBrowserDialog.cpp
  154. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_FileBrowserDialog.h
  155. +46 −34 { → modules/foleys_gui_magic}/Widgets/foleys_MagicLevelMeter.cpp
  156. +23 −16 { → modules/foleys_gui_magic}/Widgets/foleys_MagicLevelMeter.h
  157. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MagicPlotComponent.cpp
  158. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MagicPlotComponent.h
  159. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MidiDrumpadComponent.cpp
  160. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MidiDrumpadComponent.h
  161. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MidiLearnComponent.cpp
  162. +3 −6 { → modules/foleys_gui_magic}/Widgets/foleys_MidiLearnComponent.h
  163. +58 −40 { → modules/foleys_gui_magic}/Widgets/foleys_XYDragComponent.cpp
  164. +6 −6 { → modules/foleys_gui_magic}/Widgets/foleys_XYDragComponent.h
  165. +3 −6 { → modules/foleys_gui_magic}/foleys_gui_magic.cpp
  166. +5 −8 { → modules/foleys_gui_magic}/foleys_gui_magic.h
79 changes: 79 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
BasedOnStyle: WebKit
AccessModifierOffset: '-4'
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignEscapedNewlines: Right
AlignOperands: 'true'
AlignTrailingComments: 'true'
AllowAllConstructorInitializersOnNextLine: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'false'
AllowShortBlocksOnASingleLine: 'false'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
AlwaysBreakTemplateDeclarations: 'Yes'
BinPackArguments: 'true'
BinPackParameters: 'true'
BreakAfterJavaFieldAnnotations: 'false'
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: 'false'
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeComma
BreakStringLiterals: 'true'
ColumnLimit: '160'
CompactNamespaces: 'true'
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
ConstructorInitializerIndentWidth: '2'
ContinuationIndentWidth: '2'
Cpp11BracedListStyle: 'false'
DerivePointerAlignment: 'false'
DisableFormat: 'false'
ExperimentalAutoDetectBinPacking: 'false'
FixNamespaceComments: 'true'
IncludeBlocks: Regroup
IndentCaseLabels: 'true'
IndentPPDirectives: BeforeHash
IndentWidth: '4'
IndentWrappedFunctionNames: 'true'
KeepEmptyLinesAtTheStartOfBlocks: 'true'
Language: Cpp
MaxEmptyLinesToKeep: '2'
NamespaceIndentation: None
PenaltyBreakBeforeFirstCallParameter: '100'
PenaltyBreakComment: '100'
PenaltyBreakFirstLessLess: '0'
PenaltyBreakString: '100'
PenaltyExcessCharacter: '1'
PenaltyReturnTypeOnItsOwnLine: '20'
PointerAlignment: Left
ReflowComments: 'false'
SortIncludes: 'false'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'true'
SpaceAfterLogicalNot: 'false'
SpaceAfterTemplateKeyword: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeCpp11BracedList: 'true'
SpaceBeforeCtorInitializerColon: 'true'
SpaceBeforeInheritanceColon: 'true'
SpaceBeforeParens: NonEmptyParentheses
SpaceBeforeRangeBasedForLoopColon: 'false'
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: '2'
SpacesInAngles: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInSquareBrackets: 'false'
Standard: Auto
TabWidth: '4'
UseTab: Never

...
52 changes: 52 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: CMake

on:
push:
branches:
- 'main'
- 'devel'
- 'next-generation'
pull_request: {}

defaults:
run:
shell: bash

env:
PLUGINVAL_VERSION: v1.0.3

jobs:
build:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} - ${{ matrix.build_type }}
strategy:
matrix:
os: [macos-latest, windows-latest]
build_type: [Debug, Release]
fail-fast: false

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Install pluginval
id: pluginval
env:
PLUGINVAL_BINARY: ${{ runner.os == 'macOS' && 'pluginval.app/Contents/MacOS/pluginval' || 'pluginval.exe' }}
TEMP_DIR: Builds/tmp
run: |
mkdir -p $TEMP_DIR
cd $TEMP_DIR
curl -LO "https://github.com/Tracktion/pluginval/releases/download/${{ env.PLUGINVAL_VERSION }}/pluginval_${{ runner.os }}.zip"
7z x pluginval_${{ runner.os }}.zip
echo PLUGINVAL_PATH=$(pwd)/$PLUGINVAL_BINARY >> $GITHUB_OUTPUT
- name: Configure CMake
run: cmake --preset maintainer --log-level=VERBOSE -D PLUGINVAL_PROGRAM=${{ steps.pluginval.outputs.PLUGINVAL_PATH }}

- name: Build
run: cmake --build --preset maintainer --config ${{ matrix.build_type }}

- name: Run tests
run: ctest --preset maintainer -j 4 -C ${{ matrix.build_type }}
38 changes: 38 additions & 0 deletions .github/workflows/doxygen.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# This is a basic workflow to help you get started with Actions

name: Doxygen Action

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master, main ]


# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

- name: Doxygen Action
uses: mattnotmitt/doxygen-action@v1.1.0
with:
# Path to Doxyfile
doxyfile-path: "./Doxyfile" # default is ./Doxyfile
# Working directory
working-directory: "./doxygen" # default is .

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Default Doxyfile build documentation to html directory.
# Change the directory if changes in Doxyfile
publish_dir: ./docs
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
**/.DS_*
**/.idea
cmake-build-*
[Bb]uilds/
[Bb]build/
logs/
docs/
**/*.sav.xml
21 changes: 21 additions & 0 deletions CMakeIncludes/Juce.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#[[
Adding this include will add juce to your project
]]

#Adds all the module sources so they appear correctly in the IDE
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
option(JUCE_ENABLE_MODULE_SOURCE_GROUPS "Enable Module Source Groups" ON)

#set any of these to "ON" if you want to build one of the juce examples
#or extras (Projucer/AudioPluginHost, etc):
option(JUCE_BUILD_EXTRAS "Build JUCE Extras" OFF)
option(JUCE_BUILD_EXAMPLES "Build JUCE Examples" OFF)

FetchContent_Declare(juce
GIT_REPOSITORY https://github.com/juce-framework/JUCE.git
# GIT_TAG 7.0.9
GIT_SHALLOW ON)

FetchContent_MakeAvailable(juce)
151 changes: 151 additions & 0 deletions CMakeIncludes/PGMPluginval.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# ==============================================================================
# Copyright (c) 2023 Foleys Finest Audio - Daniel Walz
# All rights reserved.
#
# **BSD 3-Clause License**
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# ==============================================================================
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
# ==============================================================================

#[[
PGMPluginval
--------------
This module provides utility functions for setting up pluginval test cases.
This module searches for pluginval in your PATH; this module currently does not download or build
pluginval if it can't be found, it will simply issue a warning and not create any test cases.
To help this module find pluginval, either make sure it can be found in your PATH (ie, check by
running `which pluginval` on Mac or `where pluginval` on Windows), or you can also explicitly set the
variable PLUGINVAL_PROGRAM to the full path to the pluginval executable.
]]

include_guard (GLOBAL)

find_program (PLUGINVAL_PROGRAM pluginval DOC "pluginval executable")

if (NOT PLUGINVAL_PROGRAM)
message (WARNING "pluginval not found!")
endif ()

set (PLUGINVAL_STRICTNESS 5 CACHE STRING "pluginval strictness level, 1 to 10")

set_property (
CACHE PLUGINVAL_STRICTNESS
PROPERTY STRINGS
1 2 3 4 5 6 7 8 9 10)

set (PLUGINVAL_REPEATS 0 CACHE STRING "number of times to repeat pluginval tests. This can greatly increase test execution time.")

set (PLUGINVAL_SAMPLERATES "44100;44800;96000" CACHE STRING "list of samplerates to test in pluginval")

set (PLUGINVAL_BLOCKSIZES "1;250;512" CACHE STRING "list of blocksizes to test in pluginval")

mark_as_advanced (PLUGINVAL_PROGRAM PLUGINVAL_STRICTNESS PLUGINVAL_REPEATS PLUGINVAL_SAMPLERATES PLUGINVAL_BLOCKSIZES)

#

#[[
pgm_add_pluginval_tests (<pluginTarget>
[TEST_BASE_NAME <name>])
This function registers CTest test cases to run pluginval on each format of the `pluginTarget`.
Pluginval supports VST3, VST2, and AU (on Mac). Each one will be tested as a separate CTest test case.
On Mac, pluginval can only find audio units that are in the system AU directories, so the AU test
will only be added if the `JUCE_COPY_PLUGIN_AFTER_BUILD` option is enabled.
`pluginTarget` should be the name of your plugin's shared code target (the name you passed to
`juce_add_plugin`).
Example usages:
juce_add_plugin (Foo ...)
pgm_add_pluginval_tests (Foo)
juce_add_plugin (Bar ...)
pgm_add_pluginval_tests (Bar TEST_BASE_NAME BarTests)
]]
function (pgm_add_pluginval_tests pluginTarget)

if (NOT TARGET "${pluginTarget}")
message (
FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} - plugin target ${pluginTarget} does not exist!")
endif ()

if (NOT PLUGINVAL_PROGRAM)
return ()
endif ()

cmake_parse_arguments (ARG "" "TEST_BASE_NAME" "" ${ARGN})

if(NOT ARG_TEST_BASE_NAME)
set (ARG_TEST_BASE_NAME "${pluginTarget}.pluginval")
endif()

list (JOIN PLUGINVAL_SAMPLERATES "," sample_rates)
list (JOIN PLUGINVAL_BLOCKSIZES "," block_sizes)

get_target_property (format_targets "${pluginTarget}" JUCE_ACTIVE_PLUGIN_TARGETS)

string (LENGTH "${pluginTarget}" pluginNameLen)
math (EXPR startIdx "${pluginNameLen} + 1" OUTPUT_FORMAT DECIMAL)

foreach (format_target IN LISTS format_targets)

string (SUBSTRING "${format_target}" "${startIdx}" "-1" formatName)

# pluginval can't find AUs unless they're copied to system folders
if ("${formatName}" STREQUAL "AU" AND NOT JUCE_COPY_PLUGIN_AFTER_BUILD)
continue ()
endif ()

if ("${formatName}" STREQUAL "Standalone"
OR "${formatName}" STREQUAL "AAX")
continue ()
endif ()

get_target_property (plugin_artefact "${format_target}" JUCE_PLUGIN_ARTEFACT_FILE)

add_test (
NAME "${ARG_TEST_BASE_NAME}.${formatName}"
COMMAND "${PLUGINVAL_PROGRAM}"
--strictness-level "${PLUGINVAL_STRICTNESS}"
--sample-rates "${sample_rates}"
--block-sizes "${block_sizes}"
--repeat "${PLUGINVAL_REPEATS}" --randomise
--validate "${plugin_artefact}")

message (VERBOSE "Added pluginval test for plugin target ${format_target}")

endforeach ()

endfunction ()
Loading