diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f8e145..ff9ec5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,8 +37,8 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON) set (CMAKE_CXX_EXTENSIONS OFF) set (CMAKE_OBJCXX_STANDARD 20) set (CMAKE_OBJCXX_STANDARD_REQUIRED ON) - set (CMAKE_CXX_VISIBILITY_PRESET hidden) - set (CMAKE_VISIBILITY_INLINES_HIDDEN ON) +set (CMAKE_CXX_VISIBILITY_PRESET hidden) +set (CMAKE_VISIBILITY_INLINES_HIDDEN ON) set (CMAKE_MINSIZEREL_POSTFIX -rm) set (CMAKE_RELWITHDEBINFO_POSTFIX -rd) set (CMAKE_OPTIMIZE_DEPENDENCIES OFF) @@ -90,7 +90,107 @@ endforeach() set_property (DIRECTORY APPEND PROPERTY LABELS Assets) juce_add_binary_data (${PLUGIN_NAME}_Assets SOURCES - "plugin/Resources/placeholder.txt" + "./plugin/Resources/layout.json" + + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 03.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 06.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 07.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 02.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 05.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 04.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 01.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 05.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 01.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 04.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Square 06.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 03.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 02.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 20.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 08.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 09.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 19.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 18.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 02.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 16.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 01.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 17.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 03.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 15.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 01.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 03.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 02.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 14.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 10.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 04.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 06.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 07.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 05.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 11.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 07.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 13.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 05.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Saw 04.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 12.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Custom 06.wav" + "./plugin/Resources/Wavetables/Analog/Analog PWM Sub 08.wav" + "./plugin/Resources/Wavetables/FM/FM 04.wav" + "./plugin/Resources/Wavetables/FM/FM 10.wav" + "./plugin/Resources/Wavetables/FM/FM 11.wav" + "./plugin/Resources/Wavetables/FM/FM 05.wav" + "./plugin/Resources/Wavetables/FM/FM 13.wav" + "./plugin/Resources/Wavetables/FM/FM 07.wav" + "./plugin/Resources/Wavetables/FM/FM 06.wav" + "./plugin/Resources/Wavetables/FM/FM 12.wav" + "./plugin/Resources/Wavetables/FM/FM 16.wav" + "./plugin/Resources/Wavetables/FM/FM 02.wav" + "./plugin/Resources/Wavetables/FM/FM 03.wav" + "./plugin/Resources/Wavetables/FM/FM 17.wav" + "./plugin/Resources/Wavetables/FM/FM 01.wav" + "./plugin/Resources/Wavetables/FM/FM 15.wav" + "./plugin/Resources/Wavetables/FM/FM 14.wav" + "./plugin/Resources/Wavetables/FM/FM 08.wav" + "./plugin/Resources/Wavetables/FM/FM 09.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Diode 2.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Diode 1.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Asym.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Lin.Fold.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Zero Square.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Soft Clipping.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Tape.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Tube.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Filter Drive.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Sin.Fold.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Rectify.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Sine Shaper.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping Extra.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Stomp Box.wav" + "./plugin/Resources/Wavetables/Distorted/Dist - Downsample.wav" + "./plugin/Resources/Wavetables/Growl/Growl 15.wav" + "./plugin/Resources/Wavetables/Growl/Growl 01.wav" + "./plugin/Resources/Wavetables/Growl/Growl 14.wav" + "./plugin/Resources/Wavetables/Growl/Growl 02.wav" + "./plugin/Resources/Wavetables/Growl/Growl 16.wav" + "./plugin/Resources/Wavetables/Growl/Growl 17.wav" + "./plugin/Resources/Wavetables/Growl/Growl 03.wav" + "./plugin/Resources/Wavetables/Growl/Growl 07.wav" + "./plugin/Resources/Wavetables/Growl/Growl 13.wav" + "./plugin/Resources/Wavetables/Growl/Growl 12.wav" + "./plugin/Resources/Wavetables/Growl/Growl 06.wav" + "./plugin/Resources/Wavetables/Growl/Growl 10.wav" + "./plugin/Resources/Wavetables/Growl/Growl 04.wav" + "./plugin/Resources/Wavetables/Growl/Growl 05.wav" + "./plugin/Resources/Wavetables/Growl/Growl 11.wav" + "./plugin/Resources/Wavetables/Growl/Growl 08.wav" + "./plugin/Resources/Wavetables/Growl/Growl 09.wav" + "./plugin/Resources/Wavetables/Growl/Growl 18.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 02.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 03.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 01.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 04.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 05.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 07.wav" + "./plugin/Resources/Wavetables/Hyper/Hyper 06.wav" ) set_target_properties(${PLUGIN_NAME}_Assets PROPERTIES UNITY_BUILD ON UNITY_BUILD_MODE BATCH UNITY_BUILD_BATCH_SIZE 50) diff --git a/modules/gin b/modules/gin index c75e324..65c6c21 160000 --- a/modules/gin +++ b/modules/gin @@ -1 +1 @@ -Subproject commit c75e324070450f9d9fd257b9ce2deac5f59770c2 +Subproject commit 65c6c21cb723421bd4c4a933f7b9323a3a854f0d diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 01.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 01.wav new file mode 100755 index 0000000..3e3d76c Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 01.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 02.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 02.wav new file mode 100755 index 0000000..63d5a5d Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 02.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 03.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 03.wav new file mode 100755 index 0000000..51656d2 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 03.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 04.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 04.wav new file mode 100755 index 0000000..9201300 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 04.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 05.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 05.wav new file mode 100755 index 0000000..c31fc08 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 05.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 06.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 06.wav new file mode 100755 index 0000000..ef10a5e Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 06.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 07.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 07.wav new file mode 100755 index 0000000..15d49f7 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 07.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 08.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 08.wav new file mode 100755 index 0000000..7c59d84 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 08.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 09.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 09.wav new file mode 100755 index 0000000..4ad1c20 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 09.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 10.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 10.wav new file mode 100755 index 0000000..31c006d Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 10.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 11.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 11.wav new file mode 100755 index 0000000..2552d35 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 11.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 12.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 12.wav new file mode 100755 index 0000000..ec13e11 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 12.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 13.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 13.wav new file mode 100755 index 0000000..edae28a Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 13.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 14.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 14.wav new file mode 100755 index 0000000..0c0ad3b Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 14.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 15.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 15.wav new file mode 100755 index 0000000..ba2f373 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 15.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 16.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 16.wav new file mode 100755 index 0000000..e2d3e60 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 16.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 17.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 17.wav new file mode 100755 index 0000000..8d8c3dc Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 17.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 18.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 18.wav new file mode 100755 index 0000000..4a805e8 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 18.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 19.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 19.wav new file mode 100755 index 0000000..a1f8a0f Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 19.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Custom 20.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 20.wav new file mode 100755 index 0000000..7c4e831 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Custom 20.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 01.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 01.wav new file mode 100755 index 0000000..2544e4e Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 01.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 02.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 02.wav new file mode 100755 index 0000000..b0cdfea Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 02.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 03.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 03.wav new file mode 100755 index 0000000..403829c Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 03.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 04.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 04.wav new file mode 100755 index 0000000..d8f8e8d Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 04.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 05.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 05.wav new file mode 100755 index 0000000..831f19e Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 05.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 06.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 06.wav new file mode 100755 index 0000000..d81163d Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 06.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Saw 07.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 07.wav new file mode 100755 index 0000000..b4b986e Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Saw 07.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 01.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 01.wav new file mode 100755 index 0000000..cb35d55 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 01.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 02.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 02.wav new file mode 100755 index 0000000..c7f547a Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 02.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 03.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 03.wav new file mode 100755 index 0000000..083ee86 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 03.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 04.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 04.wav new file mode 100755 index 0000000..44b7141 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 04.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 05.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 05.wav new file mode 100755 index 0000000..7166afa Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 05.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Square 06.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Square 06.wav new file mode 100755 index 0000000..17d9d9f Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Square 06.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 01.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 01.wav new file mode 100755 index 0000000..519c2cc Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 01.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 02.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 02.wav new file mode 100755 index 0000000..9853ae8 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 02.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 03.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 03.wav new file mode 100755 index 0000000..0421de9 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 03.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 04.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 04.wav new file mode 100755 index 0000000..6ce2edb Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 04.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 05.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 05.wav new file mode 100755 index 0000000..3f9f283 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 05.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 06.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 06.wav new file mode 100755 index 0000000..dee056d Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 06.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 07.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 07.wav new file mode 100755 index 0000000..f02735f Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 07.wav differ diff --git a/plugin/Resources/Wavetables/Analog/Analog PWM Sub 08.wav b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 08.wav new file mode 100755 index 0000000..7bf34b7 Binary files /dev/null and b/plugin/Resources/Wavetables/Analog/Analog PWM Sub 08.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Asym.wav b/plugin/Resources/Wavetables/Distorted/Dist - Asym.wav new file mode 100755 index 0000000..095ee69 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Asym.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Diode 1.wav b/plugin/Resources/Wavetables/Distorted/Dist - Diode 1.wav new file mode 100755 index 0000000..be7caa1 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Diode 1.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Diode 2.wav b/plugin/Resources/Wavetables/Distorted/Dist - Diode 2.wav new file mode 100755 index 0000000..eea02d5 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Diode 2.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Downsample.wav b/plugin/Resources/Wavetables/Distorted/Dist - Downsample.wav new file mode 100755 index 0000000..2278c8b Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Downsample.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Filter Drive.wav b/plugin/Resources/Wavetables/Distorted/Dist - Filter Drive.wav new file mode 100755 index 0000000..b476e96 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Filter Drive.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping Extra.wav b/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping Extra.wav new file mode 100755 index 0000000..289647f Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping Extra.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping.wav b/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping.wav new file mode 100755 index 0000000..6339a08 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Hard Clipping.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Lin.Fold.wav b/plugin/Resources/Wavetables/Distorted/Dist - Lin.Fold.wav new file mode 100755 index 0000000..1bc7243 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Lin.Fold.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Rectify.wav b/plugin/Resources/Wavetables/Distorted/Dist - Rectify.wav new file mode 100755 index 0000000..67ba539 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Rectify.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Sin.Fold.wav b/plugin/Resources/Wavetables/Distorted/Dist - Sin.Fold.wav new file mode 100755 index 0000000..1a2d050 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Sin.Fold.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Sine Shaper.wav b/plugin/Resources/Wavetables/Distorted/Dist - Sine Shaper.wav new file mode 100755 index 0000000..058afc2 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Sine Shaper.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Soft Clipping.wav b/plugin/Resources/Wavetables/Distorted/Dist - Soft Clipping.wav new file mode 100755 index 0000000..06fa85f Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Soft Clipping.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Stomp Box.wav b/plugin/Resources/Wavetables/Distorted/Dist - Stomp Box.wav new file mode 100755 index 0000000..9dbf53f Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Stomp Box.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Tape.wav b/plugin/Resources/Wavetables/Distorted/Dist - Tape.wav new file mode 100755 index 0000000..b64d5de Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Tape.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Tube.wav b/plugin/Resources/Wavetables/Distorted/Dist - Tube.wav new file mode 100755 index 0000000..b702750 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Tube.wav differ diff --git a/plugin/Resources/Wavetables/Distorted/Dist - Zero Square.wav b/plugin/Resources/Wavetables/Distorted/Dist - Zero Square.wav new file mode 100755 index 0000000..54bb461 Binary files /dev/null and b/plugin/Resources/Wavetables/Distorted/Dist - Zero Square.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 01.wav b/plugin/Resources/Wavetables/FM/FM 01.wav new file mode 100755 index 0000000..59a8023 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 01.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 02.wav b/plugin/Resources/Wavetables/FM/FM 02.wav new file mode 100755 index 0000000..e35fc6d Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 02.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 03.wav b/plugin/Resources/Wavetables/FM/FM 03.wav new file mode 100755 index 0000000..609238d Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 03.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 04.wav b/plugin/Resources/Wavetables/FM/FM 04.wav new file mode 100755 index 0000000..6965004 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 04.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 05.wav b/plugin/Resources/Wavetables/FM/FM 05.wav new file mode 100755 index 0000000..2e9aa67 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 05.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 06.wav b/plugin/Resources/Wavetables/FM/FM 06.wav new file mode 100755 index 0000000..0bac3c2 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 06.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 07.wav b/plugin/Resources/Wavetables/FM/FM 07.wav new file mode 100755 index 0000000..4c9dd14 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 07.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 08.wav b/plugin/Resources/Wavetables/FM/FM 08.wav new file mode 100755 index 0000000..95a887c Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 08.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 09.wav b/plugin/Resources/Wavetables/FM/FM 09.wav new file mode 100755 index 0000000..4ff97a8 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 09.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 10.wav b/plugin/Resources/Wavetables/FM/FM 10.wav new file mode 100755 index 0000000..5d91364 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 10.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 11.wav b/plugin/Resources/Wavetables/FM/FM 11.wav new file mode 100755 index 0000000..f15c297 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 11.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 12.wav b/plugin/Resources/Wavetables/FM/FM 12.wav new file mode 100755 index 0000000..32bc2cf Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 12.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 13.wav b/plugin/Resources/Wavetables/FM/FM 13.wav new file mode 100755 index 0000000..1b71ba5 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 13.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 14.wav b/plugin/Resources/Wavetables/FM/FM 14.wav new file mode 100755 index 0000000..72b67ef Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 14.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 15.wav b/plugin/Resources/Wavetables/FM/FM 15.wav new file mode 100755 index 0000000..54bd18b Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 15.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 16.wav b/plugin/Resources/Wavetables/FM/FM 16.wav new file mode 100755 index 0000000..7ff34e2 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 16.wav differ diff --git a/plugin/Resources/Wavetables/FM/FM 17.wav b/plugin/Resources/Wavetables/FM/FM 17.wav new file mode 100755 index 0000000..942adc6 Binary files /dev/null and b/plugin/Resources/Wavetables/FM/FM 17.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 01.wav b/plugin/Resources/Wavetables/Growl/Growl 01.wav new file mode 100755 index 0000000..acc9673 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 01.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 02.wav b/plugin/Resources/Wavetables/Growl/Growl 02.wav new file mode 100755 index 0000000..8eef040 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 02.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 03.wav b/plugin/Resources/Wavetables/Growl/Growl 03.wav new file mode 100755 index 0000000..ed659f7 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 03.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 04.wav b/plugin/Resources/Wavetables/Growl/Growl 04.wav new file mode 100755 index 0000000..83f7636 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 04.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 05.wav b/plugin/Resources/Wavetables/Growl/Growl 05.wav new file mode 100755 index 0000000..8277da5 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 05.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 06.wav b/plugin/Resources/Wavetables/Growl/Growl 06.wav new file mode 100755 index 0000000..be59e59 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 06.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 07.wav b/plugin/Resources/Wavetables/Growl/Growl 07.wav new file mode 100755 index 0000000..0c16b6a Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 07.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 08.wav b/plugin/Resources/Wavetables/Growl/Growl 08.wav new file mode 100755 index 0000000..3a54230 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 08.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 09.wav b/plugin/Resources/Wavetables/Growl/Growl 09.wav new file mode 100755 index 0000000..b310ae0 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 09.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 10.wav b/plugin/Resources/Wavetables/Growl/Growl 10.wav new file mode 100755 index 0000000..91c6a56 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 10.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 11.wav b/plugin/Resources/Wavetables/Growl/Growl 11.wav new file mode 100755 index 0000000..38cd856 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 11.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 12.wav b/plugin/Resources/Wavetables/Growl/Growl 12.wav new file mode 100755 index 0000000..144f6b3 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 12.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 13.wav b/plugin/Resources/Wavetables/Growl/Growl 13.wav new file mode 100755 index 0000000..c081276 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 13.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 14.wav b/plugin/Resources/Wavetables/Growl/Growl 14.wav new file mode 100755 index 0000000..9c7f8bc Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 14.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 15.wav b/plugin/Resources/Wavetables/Growl/Growl 15.wav new file mode 100755 index 0000000..74490fd Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 15.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 16.wav b/plugin/Resources/Wavetables/Growl/Growl 16.wav new file mode 100755 index 0000000..491618a Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 16.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 17.wav b/plugin/Resources/Wavetables/Growl/Growl 17.wav new file mode 100755 index 0000000..0e2d48f Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 17.wav differ diff --git a/plugin/Resources/Wavetables/Growl/Growl 18.wav b/plugin/Resources/Wavetables/Growl/Growl 18.wav new file mode 100755 index 0000000..b23cdb7 Binary files /dev/null and b/plugin/Resources/Wavetables/Growl/Growl 18.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 01.wav b/plugin/Resources/Wavetables/Hyper/Hyper 01.wav new file mode 100755 index 0000000..9f8f63f Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 01.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 02.wav b/plugin/Resources/Wavetables/Hyper/Hyper 02.wav new file mode 100755 index 0000000..ef11776 Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 02.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 03.wav b/plugin/Resources/Wavetables/Hyper/Hyper 03.wav new file mode 100755 index 0000000..8dfed6f Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 03.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 04.wav b/plugin/Resources/Wavetables/Hyper/Hyper 04.wav new file mode 100755 index 0000000..01440cf Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 04.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 05.wav b/plugin/Resources/Wavetables/Hyper/Hyper 05.wav new file mode 100755 index 0000000..cb1d393 Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 05.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 06.wav b/plugin/Resources/Wavetables/Hyper/Hyper 06.wav new file mode 100755 index 0000000..c77f1cb Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 06.wav differ diff --git a/plugin/Resources/Wavetables/Hyper/Hyper 07.wav b/plugin/Resources/Wavetables/Hyper/Hyper 07.wav new file mode 100755 index 0000000..04a6818 Binary files /dev/null and b/plugin/Resources/Wavetables/Hyper/Hyper 07.wav differ diff --git a/plugin/Resources/layout.json b/plugin/Resources/layout.json new file mode 100644 index 0000000..0fc8da6 --- /dev/null +++ b/plugin/Resources/layout.json @@ -0,0 +1,6 @@ +{ + "children": + [ + { "id": "osc[1..2]", "x": "0,prevR()+1", "y": 0, "w": "parW()/2", "h": 163 } + ] +} \ No newline at end of file diff --git a/plugin/Resources/placeholder.txt b/plugin/Resources/placeholder.txt deleted file mode 100644 index e69de29..0000000 diff --git a/plugin/Source/Editor.cpp b/plugin/Source/Editor.cpp new file mode 100644 index 0000000..b78df2a --- /dev/null +++ b/plugin/Source/Editor.cpp @@ -0,0 +1,70 @@ +#include "Editor.h" + +Editor::Editor (WavetableAudioProcessor& proc_) + : proc ( proc_ ) +{ + for (auto& o : oscillators) addAndMakeVisible (o); + for (auto& l : lfos) addAndMakeVisible (l); + for (auto& l : lfoGraphs) addAndMakeVisible (l); + + addAndMakeVisible (filter); + addAndMakeVisible (fltADSR); + + for (auto& i : modItems) + modHeader.addItem (i); + + addAndMakeVisible (modHeader); + + for (int i = 0; i < Cfg::numLFOs; i++) + { + lfoBox.addBox (i, &lfos[i]); + lfoBox.addBox (i, &lfoGraphs[i]); + } + addAndMakeVisible (lfoBox); + lfoBox.setPage (0); + + for (auto& i : fxItems) + fxHeader.addItem (i); + + addAndMakeVisible (fxHeader); + + effects.addBox (&gate); + effects.addBox (&pattern); + effects.addBox (&chorus); + effects.addBox (&distort); + effects.addBox (&delay); + effects.addBox (&reverb); + effects.addBox (&scope); + + addAndMakeVisible (effects); + + setupCallbacks(); +} + +void Editor::setupCallbacks() +{ + // LFO mod items + for (int i = 0; i < Cfg::numLFOs; i++) + { + modItems[i].onClick = [this, i] + { + modItems[0].setSelected (i == 0); + modItems[1].setSelected (i == 1); + modItems[2].setSelected (i == 2); + + lfoBox.setPage (i); + }; + } + modItems[0].onClick(); +} + +void Editor::resized() +{ +#if JUCE_DEBUG + auto f = juce::File (__FILE__).getChildFile ("../../Resources/layout.json"); + + layout.setLayout ("layout.json", f); +#else + layout.setLayout ("layout.json"); +#endif +} diff --git a/plugin/Source/Editor.h b/plugin/Source/Editor.h new file mode 100644 index 0000000..80747fb --- /dev/null +++ b/plugin/Source/Editor.h @@ -0,0 +1,60 @@ +#pragma once + +#include +#include "PluginProcessor.h" +#include "Panels.h" + +//============================================================================== +class Editor : public juce::Component +{ +public: + Editor (WavetableAudioProcessor& proc_); + + void setupCallbacks(); + void resized() override; + +private: + + WavetableAudioProcessor& proc; + + OscillatorBox oscillators[Cfg::numOSCs] { { "oscillator 1", proc, 0 }, { "oscillator 2", proc, 1 } }; + + FilterBox filter { "filter 1", proc }; + + FilterADSRArea fltADSR { proc }; + + LFOBox lfos[Cfg::numLFOs] { { "LFO 1", proc, 0 }, { "LFO 2", proc, 1 }, { "LFO 3", proc, 2 } }; + LFOArea lfoGraphs[Cfg::numLFOs] { { proc, 0 }, { proc, 1 }, { proc, 2 } }; + + gin::HeaderItem modItems[8] { { "LFO 1", proc.lfoParams[0].enable, proc.modMatrix, proc.modSrcMonoLFO[0], proc.modSrcLFO[0] }, + { "LFO 2", proc.lfoParams[1].enable, proc.modMatrix, proc.modSrcMonoLFO[1], proc.modSrcLFO[1] }, + { "LFO 3", proc.lfoParams[2].enable, proc.modMatrix, proc.modSrcMonoLFO[2], proc.modSrcLFO[2] }, + { "ENV 1", proc.envParams[0].enable, proc.modMatrix, {}, proc.modSrcEnv[0] }, + { "ENV 2", proc.envParams[1].enable, proc.modMatrix, {}, proc.modSrcEnv[1] }, + { "ENV 3", proc.envParams[2].enable, proc.modMatrix, {}, proc.modSrcEnv[2] }, + { "STEP", proc.stepLfoParams.enable, proc.modMatrix, proc.modSrcMonoStep, proc.modSrcStep }, + { "MIDI", nullptr } }; + gin::HeaderRow modHeader; + + gin::HeaderItem fxItems[5] { { "GATE", proc.gateParams.enable }, + { "CHORUS", proc.chorusParams.enable }, + { "DISTORT", proc.distortionParams.enable }, + { "DELAY", proc.delayParams.enable }, + { "REVERB", proc.reverbParams.enable } }; + + gin::HeaderRow fxHeader; + + + GateBox gate { proc }; + GateArea pattern { proc }; + ChorusBox chorus { proc }; + DistortBox distort { proc }; + DelayBox delay { proc }; + ReverbBox reverb { proc }; + ScopeArea scope { proc }; + + gin::BoxArea lfoBox; + gin::BoxArea effects; + + gin::Layout layout { *this }; +}; diff --git a/plugin/Source/Panels.h b/plugin/Source/Panels.h index b6110d9..f4e358b 100644 --- a/plugin/Source/Panels.h +++ b/plugin/Source/Panels.h @@ -11,21 +11,21 @@ public: OscillatorBox (const juce::String& name, WavetableAudioProcessor& proc_, int idx_) : gin::ParamBox (name), proc (proc_), idx (idx_) { + setName ( "osc" + juce::String ( idx + 1 ) ); + auto& osc = proc.oscParams[idx]; addEnable (osc.enable); - addControl (new gin::Select (osc.wave), 0, 0); addControl (new gin::Knob (osc.tune, true), 1, 0); addControl (new gin::Select (osc.voices), 2, 0); addControl (detune = new gin::Knob (osc.detune), 3, 0); - addControl (pw = new gin::Knob (osc.pulsewidth), 0, 1); + addControl (new gin::Knob (osc.pos), 0, 1); addControl (new gin::Knob (osc.finetune, true), 1, 1); addControl (spread = new gin::Knob (osc.spread), 2, 1); addControl (trans = new gin::Knob (osc.voicesTrns, true), 3, 1); - watchParam (osc.wave); watchParam (osc.voices); } @@ -34,7 +34,6 @@ public: gin::ParamBox::paramChanged(); auto& osc = proc.oscParams[idx]; - pw->setEnabled ((gin::Wave) int (osc.wave->getProcValue()) == gin::Wave::pulse); trans->setEnabled (osc.voices->getProcValue() > 1); detune->setEnabled (osc.voices->getProcValue() > 1); @@ -43,7 +42,7 @@ public: WavetableAudioProcessor& proc; int idx = 0; - gin::ParamComponent::Ptr pw, trans, detune, spread; + gin::ParamComponent::Ptr trans, detune, spread; }; //============================================================================== @@ -53,6 +52,8 @@ public: FilterBox (const juce::String& name, WavetableAudioProcessor& proc_) : gin::ParamBox (name), proc (proc_) { + setName ( "flt" ); + auto& flt = proc.filterParams; addEnable (flt.enable); @@ -95,6 +96,8 @@ public: FilterADSRArea (WavetableAudioProcessor& proc_) : proc (proc_) { + setName ( "fltAdsr" ); + auto& flt = proc.filterParams; adsr = new gin::ADSRComponent (); @@ -126,22 +129,6 @@ public: gin::ADSRComponent* adsr; }; -//============================================================================== -class MixBox : public gin::ParamBox -{ -public: - MixBox (const juce::String& name, WavetableAudioProcessor& proc_) - : gin::ParamBox (name), proc (proc_) - { - } - - void paramChanged () override - { - } - - WavetableAudioProcessor& proc; -}; - //============================================================================== class LFOBox : public gin::ParamBox { @@ -149,6 +136,8 @@ public: LFOBox (const juce::String& name, WavetableAudioProcessor& proc_, int idx_) : gin::ParamBox (name), proc (proc_), idx (idx_) { + setName ( "lfo" + juce::String ( idx + 1 ) ); + auto& lfo = proc.lfoParams[idx]; addEnable (lfo.enable); @@ -185,6 +174,8 @@ public: LFOArea (WavetableAudioProcessor& proc_, int idx_) : proc (proc_), idx (idx_) { + setName ( "lfoArea" + juce::String ( idx + 1 ) ); + auto& lfo = proc.lfoParams[idx]; addControl (new gin::Select (lfo.wave)); @@ -215,6 +206,8 @@ public: GateBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Gate"), proc (proc_) { + setName ( "gate" ); + addControl (new gin::Select (proc.gateParams.beat), 0, 0); addControl (new gin::Knob (proc.gateParams.length), 1, 0); addControl (new gin::Knob (proc.gateParams.attack), 0, 1); @@ -233,6 +226,8 @@ public: GateArea (WavetableAudioProcessor& proc_) : gin::ParamArea ("Pattern"), proc (proc_) { + setName ( "gatePattern" ); + g = new gin::GateEffectComponent(); g->setParams (proc.gateParams.length, proc.gateParams.l, proc.gateParams.r, proc.gateParams.enable); addControl (g); @@ -261,6 +256,8 @@ public: ChorusBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Chorus"), proc (proc_) { + setName ( "chorus" ); + addControl (new gin::Knob (proc.chorusParams.delay), 0, 0); addControl (new gin::Knob (proc.chorusParams.rate), 1, 0); addControl (new gin::Knob (proc.chorusParams.mix), 2, 0); @@ -281,6 +278,8 @@ public: DistortBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Distort"), proc (proc_) { + setName ( "distort" ); + addControl (new gin::Knob (proc.distortionParams.amount), 0, 0); addControl (new gin::Knob (proc.distortionParams.highpass), 1, 0); addControl (new gin::Knob (proc.distortionParams.output), 0, 1); @@ -299,6 +298,8 @@ public: DelayBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Delay"), proc (proc_) { + setName ( "delay" ); + addControl (t = new gin::Knob (proc.delayParams.time), 0, 0); addControl (b = new gin::Select (proc.delayParams.beat), 0, 0); addControl (new gin::Knob (proc.delayParams.fb), 1, 0); @@ -331,6 +332,8 @@ public: ReverbBox (WavetableAudioProcessor& proc_) : gin::ParamBox ("Reverb"), proc (proc_) { + setName ( "reverb" ); + addControl (new gin::Knob (proc.reverbParams.size), 0, 0); addControl (new gin::Knob (proc.reverbParams.decay), 1, 0); addControl (new gin::Knob (proc.reverbParams.lowpass), 2, 0); @@ -351,6 +354,8 @@ public: ScopeArea (WavetableAudioProcessor& proc_) : gin::ParamArea ("Scope"), proc (proc_) { + setName ( "scope" ); + scope = new gin::TriggeredScope (proc.fifo); scope->setNumChannels (2); scope->setTriggerMode (gin::TriggeredScope::TriggerMode::Up); diff --git a/plugin/Source/PluginEditor.h b/plugin/Source/PluginEditor.h index db4cb53..39a24fa 100644 --- a/plugin/Source/PluginEditor.h +++ b/plugin/Source/PluginEditor.h @@ -3,140 +3,7 @@ #include #include "PluginProcessor.h" #include "Panels.h" - -//============================================================================== -class Editor : public juce::Component -{ -public: - Editor (WavetableAudioProcessor& proc_) - : proc ( proc_ ) - { - for (auto& o : oscillators) addAndMakeVisible (o); - for (auto& l : lfos) addAndMakeVisible (l); - for (auto& l : lfoGraphs) addAndMakeVisible (l); - - addAndMakeVisible (filter); - addAndMakeVisible (fltADSR); - addAndMakeVisible (mix); - - for (auto& i : modItems) - modHeader.addItem (i); - - addAndMakeVisible (modHeader); - - for (int i = 0; i < Cfg::numLFOs; i++) - { - lfoBox.addBox (i, &lfos[i]); - lfoBox.addBox (i, &lfoGraphs[i]); - } - addAndMakeVisible (lfoBox); - lfoBox.setPage (0); - - for (auto& i : fxItems) - fxHeader.addItem (i); - - addAndMakeVisible (fxHeader); - - effects.addBox (&gate); - effects.addBox (&pattern); - effects.addBox (&chorus); - effects.addBox (&distort); - effects.addBox (&delay); - effects.addBox (&reverb); - effects.addBox (&scope); - - addAndMakeVisible (effects); - - setupCallbacks(); - } - - void setupCallbacks() - { - // LFO mod items - for (int i = 0; i < Cfg::numLFOs; i++) - { - modItems[i].onClick = [this, i] - { - modItems[0].setSelected (i == 0); - modItems[1].setSelected (i == 1); - modItems[2].setSelected (i == 2); - - lfoBox.setPage (i); - }; - } - modItems[0].onClick(); - } - - void resized() override - { - auto rc = getLocalBounds(); - - auto rcOsc = rc.removeFromTop (163); - for (auto& o : oscillators) { o.setBounds (rcOsc.removeFromLeft (224)); rcOsc.removeFromLeft (1); }; - - rc.removeFromTop (1); - - auto rcFlt = rc.removeFromTop (163); - filter.setBounds (rcFlt.removeFromLeft (168)); rcFlt.removeFromLeft (1); - fltADSR.setBounds (rcFlt.removeFromLeft (186)); rcFlt.removeFromLeft (1); - mix.setBounds (rcFlt.removeFromLeft (187)); rcFlt.removeFromLeft (1); - - auto rcB1 = rc.removeFromTop (26); - modHeader.setBounds (rcB1); - - auto rcMod = rc.removeFromTop (163); - lfoBox.setBounds (rcMod); - - auto rcB2 = rc.removeFromTop (26); - fxHeader.setBounds (rcB2); - - auto rcFX = rc.removeFromTop (163); - effects.setBounds (rcFX); - } - - WavetableAudioProcessor& proc; - - OscillatorBox oscillators[Cfg::numOSCs] { { "oscillator 1", proc, 0 }, { "oscillator 2", proc, 1 } }; - - FilterBox filter { "filter 1", proc }; - - FilterADSRArea fltADSR { proc }; - - MixBox mix { "osc mix", proc }; - - LFOBox lfos[Cfg::numLFOs] { { "LFO 1", proc, 0 }, { "LFO 2", proc, 1 }, { "LFO 3", proc, 2 } }; - LFOArea lfoGraphs[Cfg::numLFOs] { { proc, 0 }, { proc, 1 }, { proc, 2 } }; - - gin::HeaderItem modItems[8] { { "LFO 1", proc.lfoParams[0].enable, proc.modMatrix, proc.modSrcMonoLFO[0], proc.modSrcLFO[0] }, - { "LFO 2", proc.lfoParams[1].enable, proc.modMatrix, proc.modSrcMonoLFO[1], proc.modSrcLFO[1] }, - { "LFO 3", proc.lfoParams[2].enable, proc.modMatrix, proc.modSrcMonoLFO[2], proc.modSrcLFO[2] }, - { "ENV 1", proc.envParams[0].enable, proc.modMatrix, {}, proc.modSrcEnv[0] }, - { "ENV 2", proc.envParams[1].enable, proc.modMatrix, {}, proc.modSrcEnv[1] }, - { "ENV 3", proc.envParams[2].enable, proc.modMatrix, {}, proc.modSrcEnv[2] }, - { "STEP", proc.stepLfoParams.enable, proc.modMatrix, proc.modSrcMonoStep, proc.modSrcStep }, - { "MIDI", nullptr } }; - gin::HeaderRow modHeader; - - gin::HeaderItem fxItems[5] { { "GATE", proc.gateParams.enable }, - { "CHORUS", proc.chorusParams.enable }, - { "DISTORT", proc.distortionParams.enable }, - { "DELAY", proc.delayParams.enable }, - { "REVERB", proc.reverbParams.enable } }; - - gin::HeaderRow fxHeader; - - - GateBox gate { proc }; - GateArea pattern { proc }; - ChorusBox chorus { proc }; - DistortBox distort { proc }; - DelayBox delay { proc }; - ReverbBox reverb { proc }; - ScopeArea scope { proc }; - - gin::BoxArea lfoBox; - gin::BoxArea effects; -}; +#include "Editor.h" //============================================================================== class WavetableAudioProcessorEditor : public gin::ProcessorEditor diff --git a/plugin/Source/PluginProcessor.cpp b/plugin/Source/PluginProcessor.cpp index ddc1cd4..c5850b0 100644 --- a/plugin/Source/PluginProcessor.cpp +++ b/plugin/Source/PluginProcessor.cpp @@ -107,13 +107,12 @@ void WavetableAudioProcessor::OSCParams::setup (WavetableAudioProcessor& p, int juce::String nm = "OSC" + juce::String (idx + 1) + " "; enable = p.addIntParam (id + "enable", nm + "Enable", "Enable", "", { 0.0, 1.0, 1.0, 1.0 }, idx == 0 ? 1.0f : 0.0f, 0.0f); - wave = p.addIntParam (id + "wave", nm + "Wave", "Wave", "", { 1.0, 7.0, 1.0, 1.0 }, 1.0, 0.0f, waveTextFunction); voices = p.addIntParam (id + "unison", nm + "Unison", "Unison", "", { 1.0, 8.0, 1.0, 1.0 }, 1.0, 0.0f); voicesTrns = p.addExtParam (id + "unisontrns", nm + "Unison Trns", "LTrans", "st", { -36.0, 36.0, 1.0, 1.0 }, 0.0, 0.0f); tune = p.addExtParam (id + "tune", nm + "Tune", "Tune", "st", { -36.0, 36.0, 1.0, 1.0 }, 0.0, 0.0f); finetune = p.addExtParam (id + "finetune", nm + "Fine Tune", "Fine", "ct", { -100.0, 100.0, 0.0, 1.0 }, 0.0, 0.0f); level = p.addExtParam (id + "level", nm + "Level", "Level", "db", { -100.0, 0.0, 1.0, 4.0 }, 0.0, 0.0f); - pulsewidth = p.addExtParam (id + "pulsewidth", nm + "Pulse Width", "PW", "%", { 1.0, 99.0, 0.0, 1.0 }, 50.0, 0.0f); + pos = p.addExtParam (id + "pos", nm + "Pos", "Pos", "%", { 0.0, 100.0, 0.0, 1.0 }, 00.0, 0.0f); detune = p.addExtParam (id + "detune", nm + "Detune", "Detune", "", { 0.0, 0.5, 0.0, 1.0 }, 0.0, 0.0f); spread = p.addExtParam (id + "spread", nm + "Spread", "Spread", "%", { -100.0, 100.0, 0.0, 1.0 }, 0.0, 0.0f); pan = p.addExtParam (id + "pan", nm + "Pan", "Pan", "", { -1.0, 1.0, 0.0, 1.0 }, 0.0, 0.0f); @@ -121,6 +120,34 @@ void WavetableAudioProcessor::OSCParams::setup (WavetableAudioProcessor& p, int level->conversionFunction = [] (float in) { return juce::Decibels::decibelsToGain (in); }; } +//============================================================================== +void WavetableAudioProcessor::SubParams::setup (WavetableAudioProcessor& p) +{ + juce::String id = "sub"; + juce::String nm = "SUB "; + + enable = p.addIntParam (id + "enable", nm + "Enable", "Enable", "", { 0.0, 1.0, 1.0, 1.0 }, 0.0f, 0.0f); + wave = p.addIntParam (id + "wave", nm + "Wave", "Wave", "", { 1.0, 7.0, 1.0, 1.0 }, 1.0, 0.0f, waveTextFunction); + tune = p.addExtParam (id + "tune", nm + "Tune", "Tune", "st", { -36.0, 36.0, 1.0, 1.0 }, 0.0, 0.0f); + level = p.addExtParam (id + "level", nm + "Level", "Level", "db", { -100.0, 0.0, 1.0, 4.0 }, 0.0, 0.0f); + pan = p.addExtParam (id + "pan", nm + "Pan", "Pan", "", { -1.0, 1.0, 0.0, 1.0 }, 0.0, 0.0f); + + level->conversionFunction = [] (float in) { return juce::Decibels::decibelsToGain (in); }; +} + +//============================================================================== +void WavetableAudioProcessor::NoiseParams::setup (WavetableAudioProcessor& p) +{ + juce::String id = "noise"; + juce::String nm = "Noise "; + + enable = p.addIntParam (id + "enable", nm + "Enable", "Enable", "", { 0.0, 1.0, 1.0, 1.0 }, 0.0f, 0.0f); + level = p.addExtParam (id + "level", nm + "Level", "Level", "db", { -100.0, 0.0, 1.0, 4.0 }, 0.0, 0.0f); + pan = p.addExtParam (id + "pan", nm + "Pan", "Pan", "", { -1.0, 1.0, 0.0, 1.0 }, 0.0, 0.0f); + + level->conversionFunction = [] (float in) { return juce::Decibels::decibelsToGain (in); }; +} + //============================================================================== void WavetableAudioProcessor::FilterParams::setup (WavetableAudioProcessor& p) { @@ -318,6 +345,8 @@ WavetableAudioProcessor::WavetableAudioProcessor() for (int i = 0; i < juce::numElementsInArray (oscParams); i++) oscParams[i].setup (*this, i); + subParams.setup (*this); + noiseParams.setup (*this); filterParams.setup (*this); for (int i = 0; i < juce::numElementsInArray (envParams); i++) diff --git a/plugin/Source/PluginProcessor.h b/plugin/Source/PluginProcessor.h index f6a4768..9f3a443 100644 --- a/plugin/Source/PluginProcessor.h +++ b/plugin/Source/PluginProcessor.h @@ -43,14 +43,36 @@ public: { OSCParams() = default; - gin::Parameter::Ptr enable , wave, voices, voicesTrns, tune, finetune, - level, pulsewidth, detune, spread, pan; + gin::Parameter::Ptr enable, voices, voicesTrns, tune, finetune, + level, pos, detune, spread, pan; void setup (WavetableAudioProcessor& p, int idx); JUCE_DECLARE_NON_COPYABLE (OSCParams) }; + struct SubParams + { + SubParams() = default; + + gin::Parameter::Ptr enable, wave, tune, level, pan; + + void setup (WavetableAudioProcessor& p); + + JUCE_DECLARE_NON_COPYABLE (SubParams) + }; + + struct NoiseParams + { + NoiseParams() = default; + + gin::Parameter::Ptr enable, level, pan; + + void setup (WavetableAudioProcessor& p); + + JUCE_DECLARE_NON_COPYABLE (NoiseParams) + }; + struct FilterParams { FilterParams() = default; @@ -187,6 +209,8 @@ public: //============================================================================== OSCParams oscParams[Cfg::numOSCs]; + SubParams subParams; + NoiseParams noiseParams; FilterParams filterParams; EnvParams envParams[Cfg::numENVs]; LFOParams lfoParams[Cfg::numLFOs]; diff --git a/plugin/Source/WavetableVoice.cpp b/plugin/Source/WavetableVoice.cpp index cfc8783..e0b9036 100644 --- a/plugin/Source/WavetableVoice.cpp +++ b/plugin/Source/WavetableVoice.cpp @@ -191,10 +191,10 @@ void WavetableVoice::updateParams (int blockSize) currentMidiNotes[i] += float (note.totalPitchbendInSemitones); currentMidiNotes[i] += getValue (proc.oscParams[i].tune) + getValue (proc.oscParams[i].finetune) / 100.0f; - oscParams[i].wave = (gin::Wave) int (proc.oscParams[i].wave->getProcValue()); + oscParams[i].wave = gin::Wave::silence; oscParams[i].voices = int (proc.oscParams[i].voices->getProcValue()); oscParams[i].vcTrns = int (proc.oscParams[i].voicesTrns->getProcValue()); - oscParams[i].pw = getValue (proc.oscParams[i].pulsewidth) / 100.0f; + oscParams[i].pw = getValue (proc.oscParams[i].pos) / 100.0f; oscParams[i].pan = getValue (proc.oscParams[i].pan); oscParams[i].spread = getValue (proc.oscParams[i].spread) / 100.0f; oscParams[i].detune = getValue (proc.oscParams[i].detune);