Download presentation
Presentation is loading. Please wait.
Published byLizbeth Williamson Modified over 7 years ago
1
DPF DISTRHO Plugin Framework github.com / falkTX / DPF
2
DPF · DISTRHO Plugin Framework [*] Except liblo for DSSI UIs.
C++ “mini” framework for building audio plugins (cross-platform) Very small code size No external dependencies [*] Permissive license (ISC) [*] Except liblo for DSSI UIs.
3
DPF · DISTRHO Plugin Framework
WHY Many plugin formats to support Not always easy to understand No high-level C++ abstractions Similar projects without liberal license or Linux support VST SDK issues
4
DPF · DISTRHO Plugin Framework
HOW DOES IT WORK? Internal, simple C++ API Exports to all possible formats UIs made with OpenGL, pugl (includes base classes for easy startup) All format specific things hidden
5
DPF · DISTRHO Plugin Framework
WHAT CAN IT DO? Effects, Synths and Utilities LADSPA, DSSI, LV2 and VST2 formats Parameters, presets and states UI to DSP communication Time information from host [*] Linux, Mac and Windows builds [*] Not available in LADSPA and DSSI formats.
6
DPF · DISTRHO Plugin Framework
WHAT CAN IT *NOT* DO? MIDI output (so no MIDI filters, yet) DSP to UI communication [*] Advanced per-format stuff [*] Direct access in the UI to the DSP instance is possible, but NOT recommended! (also not available for DSSI)
7
DPF · DISTRHO Plugin Framework
FUTURE PLANS Cleanup Documentation Stabilize API (specially UI stuff) Later: Fonts, Menus, File-Browser/Dialogs
8
DPF · DISTRHO Plugin Framework
EXAMPLE CODE (Part 1/3) FILE: DistrhoPluginInfo.h (Plugin data macros) #define DISTRHO_PLUGIN_NAME "My EQ" #define DISTRHO_PLUGIN_HAS_UI #define DISTRHO_PLUGIN_IS_SYNTH #define DISTRHO_PLUGIN_NUM_INPUTS 2 #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 #define DISTRHO_PLUGIN_WANT_LATENCY 0 #define DISTRHO_PLUGIN_WANT_PROGRAMS 0 #define DISTRHO_PLUGIN_WANT_STATE 0 #define DISTRHO_PLUGIN_WANT_TIMEPOS 0 #define DISTRHO_PLUGIN_URI "
9
DPF · DISTRHO Plugin Framework
EXAMPLE CODE (Part 2/3) FILE: MyEQ.hpp (Plugin DSP header) class MyEQ : public Plugin { public: MyEQ(); // Information const char* d_getLabel() const noexcept { return "3BandEQ"; } const char* d_getMaker() const noexcept { return "DISTRHO"; } const char* d_getLicense() const noexcept { return "LGPL"; } uint32_t d_getVersion() const noexcept { return 0x1000; } long d_getUniqueId() const noexcept { return ; } // Parameters void d_initParameter(uint32_t index, Parameter& parameter); float d_getParameterValue(uint32_t index) const; void d_setParameterValue(uint32_t index, float value); // Process void d_run(float** inputs, float** outputs, uint32_t frames); };
10
DPF · DISTRHO Plugin Framework
EXAMPLE CODE (Part 3/3) FILE: MyEQUI.hpp (Plugin UI header) class MyEQUI : public UI, public ImageKnob::Callback { public: MyEQUI(); // Information uint d_getWidth() const noexcept { return 330; } uint d_getHeight() const noexcept { return 220; } // DSP Callbacks void d_parameterChanged(uint32_t index, float value); // Widget Callbacks void imageKnobValueChanged(ImageKnob* knob, float value); void onDisplay(); private: ImageKnob* knob; };
11
DPF · DISTRHO Plugin Framework
Demo Questions If you want to quickly check some DPF based plugins, see: github.com/zamaudio/zam-plugins-DPF
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.