Home

Awesome

chowdsp_utils

Version Test Examples Benchmarks Code-Quality Docs codecov sonarscan

This repository contains JUCE modules with utilities for building Chowdhury DSP plugins.

There are a handful of simple examples in the examples/ directory.

For complete documentation, see the API docs.

Usage

If you are using JUCE with CMake, simply add this repository as a subdirectory after adding JUCE to your CMake project.

add_subdirectory(JUCE)
add_subdirectory(chowdsp_utils)

target_link_libraries(MyTarget PUBLIC
    juce::juce_audio_utils
    juce::juce_dsp
    # other JUCE modules...
    chowdsp::chowdsp_dsp_utils
    chowdsp::chowdsp_gui
    chowdsp::chowdsp_plugin_base
    # Other modules and libraries...
)

Alternatively, you may add these modules from the repository directory using the Projucer.

If you are using a non-JUCE CMake project, it is possible to create your own static library from the DSP modules in this repository:

add_subdirectory(chowdsp_utils)

# create static library based on these modules
setup_chowdsp_lib(chowdsp_lib               # Name of the static library
    MODULES chowdsp_math chowdsp_dsp_utils  # DSP modules that should be included in the library...
)

# link the static library to your project
target_link_libraries(MyCoolProject PRIVATE chowdsp_lib)

Examples

If you would like to build the example plugins included in this repository, you may clone the repository, and use the following CMake commands:

cmake -Bbuild -DCHOWDSP_ENABLE_EXAMPLES=ON
cmake --build build --target $EXAMPLE_TARGET

where $EXAMPLE_TARGET is the name of the target you'd like to build, for example SimpleEQ_Standalone.

Modules

Dependencies

The modules in this repository are mostly dependent on C++17 or later. Modules not in the "Common" or "DSP" categories also depend on JUCE 6 or later.

There are a few other dependencies as well, some of which are bundled internally within the repository, and others which must be managed externally. In either case, you must be sure to abide by the license of each module, as well as whichever libraries are being used.

Common Modules

chowdsp_core (BSD)

chowdsp_data_structures (BSD)

chowdsp_json (BSD)

chowdsp_listeners (BSD)

chowdsp_logging (BSD)

chowdsp_reflection (BSD)

chowdsp_serialization (BSD)

DSP Modules

chowdsp_buffers (BSD)

chowdsp_compressor (GPLv3)

chowdsp_dsp_data_structures (GPLv3)

chowdsp_dsp_utils (GPLv3)

chowdsp_eq (GPLv3)

chowdsp_filters (GPLv3)

chowdsp_math (BSD)

chowdsp_modal_dsp (GPLv3)

chowdsp_reverb (GPLv3)

chowdsp_simd (BSD)

chowdsp_sources (GPLv3)

chowdsp_waveshapers (GPLv3)

GUI Modules

chowdsp_gui (GPLv3)

chowdsp_visualizers (GPLv3)

chowdsp_foleys (GPLv3)

Music Modules

chowdsp_rhythm (BSD)

Plugin Utility Modules

chowdsp_clap_extensions (BSD)

chowdsp_parameters (BSD)

chowdsp_plugin_state (BSD)

chowdsp_plugin_base (GPLv3)

chowdsp_plugin_utils (GPLv3)

chowdsp_presets (BSD)

chowdsp_preset_v2 (BSD)

chowdsp_version (BSD)

chowdsp_fuzzy_search (BSD)

Development

The development environment for this repository expects the following directory structure:

|- JUCE
|- modules
  |- foleys_gui_magic
  |- chowdsp_utils

Building Module Tests

To build the module tests, run:

cmake -Bbuild -DCHOWDSP_ENABLE_TESTING=ON
cmake --build build --target $TEST_TARGET

where $TEST_TARGET is the name of the test target you'd like to build.

If you would like to build the tests with flags for analyzing code coverage, add -DCODE_COVERAGE=ON to the CMake configure step.

Building Module Benchmarks

Toe build the module benchmarks, run:

cmake -Bbuild -DCMAKE_BUILD_TYPE=Release -DCHOWDSP_ENABLE_BENCHMARKS=ON
cmake --build build --config Release $BENCH_TARGET

where $BENCH_TARGET is the name of the benchmark you would like to build.

License

Each module in this repository has its own unique license. If you would like to use code from one of the modules, please check the license of that particular module.

If you are making a proprietary or closed source app and would like to use code from a module that is under a GPL-style license, please contact chowdsp@gmail.com for non-GPL licensing options.

All non-module code in this repository (tests, examples, benchmarks, etc.) is licensed under the GPLv3.