commit 92092f30abdf54dfd6263fa7b39f4e98ac722744 Author: falkTX Date: Mon Oct 11 12:57:35 2021 +0100 Initial commit diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d5a4ba4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "dpf"] + path = dpf + url = https://github.com/DISTRHO/DPF.git +[submodule "dpf-widgets"] + path = dpf-widgets + url = https://github.com/DISTRHO/DPF-Widgets.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ca9e5c7 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +include dpf/Makefile.base.mk + +all: dgl plugins gen + +# -------------------------------------------------------------- + +dgl: + $(MAKE) -C dpf/dgl opengl + +plugins: dgl + $(MAKE) all -C plugins/FX + +ifneq ($(CROSS_COMPILING),true) +gen: plugins dpf/utils/lv2_ttl_generator + @$(CURDIR)/dpf/utils/generate-ttl.sh +ifeq ($(MACOS),true) + @$(CURDIR)/dpf/utils/generate-vst-bundles.sh +endif + +dpf/utils/lv2_ttl_generator: + $(MAKE) -C dpf/utils/lv2-ttl-generator +else +gen: +endif + +# -------------------------------------------------------------- + +clean: + $(MAKE) clean -C dpf/dgl + $(MAKE) clean -C dpf/utils/lv2-ttl-generator + $(MAKE) clean -C plugins/FX + rm -rf bin build + +# -------------------------------------------------------------- + +.PHONY: plugins diff --git a/README.md b/README.md new file mode 100644 index 0000000..07b0cb6 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# DISTRHO Ildaeil + +DISTRHO Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage. +Load a VST2 plugin inside a LV2 host, or an LV2 plugin on a VST3 host, etc. + +The current formats Ildaeil can work as are: +- JACK/Standalone +- LV2 +- VST2 +- VST3 + +And it can load the following plugin formats: +- JACK (applications as plugins, Linux only) +- LADSPA +- DSSI +- LV2 +- VST2 +- VST3 +- AU (macOS only) + +Additionally the following files can be loaded: +- Audio files (synced to host transport) +- MIDI files (aligned to real/wall-clock time, synced to host transport) +- SF2/3 files (through internal FluidSynth) +- SFZ files (through internal SFZero) + +Ildaeil basically works as a mini-wrapper around Carla, leveraging it for all its host support. + +The name comes from the korean 일대일, which means "one to one". diff --git a/dpf b/dpf new file mode 160000 index 0000000..1c19c75 --- /dev/null +++ b/dpf @@ -0,0 +1 @@ +Subproject commit 1c19c75b8f2b4a83741c4c92e486c1fde873050e diff --git a/dpf-widgets b/dpf-widgets new file mode 160000 index 0000000..f5201d3 --- /dev/null +++ b/dpf-widgets @@ -0,0 +1 @@ +Subproject commit f5201d362bfa767a55139af85e9c1d9f02cfedcb diff --git a/plugins/Common/IldaeilPlugin.cpp b/plugins/Common/IldaeilPlugin.cpp new file mode 100644 index 0000000..bba032d --- /dev/null +++ b/plugins/Common/IldaeilPlugin.cpp @@ -0,0 +1,146 @@ +/* + * DISTRHO Ildaeil Plugin + * Copyright (C) 2021 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#include "DistrhoPlugin.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------------------------------------------- + +class IldaeilPlugin : public Plugin +{ +public: + IldaeilPlugin() + : Plugin(0, 0, 0) + { + } + + ~IldaeilPlugin() override + { + } + +protected: + /* -------------------------------------------------------------------------------------------------------- + * Information */ + + /** + Get the plugin label. + A plugin label follows the same rules as Parameter::symbol, with the exception that it can start with numbers. + */ + const char* getLabel() const override + { + return "Ildaeil"; + } + + /** + Get an extensive comment/description about the plugin. + */ + const char* getDescription() const override + { + return "..."; + } + + /** + Get the plugin author/maker. + */ + const char* getMaker() const override + { + return "DISTRHO"; + } + + /** + Get the plugin homepage. + */ + const char* getHomePage() const override + { + return "https://github.com/DISTRHO/Ildaeil"; + } + + /** + Get the plugin license name (a single line of text). + For commercial plugins this should return some short copyright information. + */ + const char* getLicense() const override + { + return "ISC"; + } + + /** + Get the plugin version, in hexadecimal. + */ + uint32_t getVersion() const override + { + return d_version(1, 0, 0); + } + + /** + Get the plugin unique Id. + This value is used by LADSPA, DSSI and VST plugin formats. + */ + int64_t getUniqueId() const override + { +#if DISTRHO_PLUGIN_IS_SYNTH + return d_cconst('d', 'I', 'l', 'S'); +#elif DISTRHO_PLUGIN_WANT_MIDI_OUTPUT + return d_cconst('d', 'I', 'l', 'M'); +#else + return d_cconst('d', 'I', 'l', 'F'); +#endif + } + + /* -------------------------------------------------------------------------------------------------------- + * Init */ + + /* -------------------------------------------------------------------------------------------------------- + * Internal data */ + + /* -------------------------------------------------------------------------------------------------------- + * Process */ + + /** + Run/process function for plugins without MIDI input. + */ + void run(const float** inputs, float** outputs, uint32_t frames) override + { + // copy inputs over outputs if needed + if (outputs[0] != inputs[0]) + std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); + + if (outputs[1] != inputs[1]) + std::memcpy(outputs[1], inputs[1], sizeof(float)*frames); + } + + // ------------------------------------------------------------------------------------------------------- + +private: + /** + Set our plugin class as non-copyable and add a leak detector just in case. + */ + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(IldaeilPlugin) +}; + +/* ------------------------------------------------------------------------------------------------------------ + * Plugin entry point, called by DPF to create a new plugin instance. */ + +Plugin* createPlugin() +{ + return new IldaeilPlugin(); +} + +// ----------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO diff --git a/plugins/Common/IldaeilUI.cpp b/plugins/Common/IldaeilUI.cpp new file mode 100644 index 0000000..3a37eab --- /dev/null +++ b/plugins/Common/IldaeilUI.cpp @@ -0,0 +1,93 @@ +/* + * DISTRHO Ildaeil Plugin + * Copyright (C) 2021 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#include "DistrhoUI.hpp" +#include "ResizeHandle.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------------------------------------------- + +class IldaeilUI : public UI +{ + void* fContext; + ResizeHandle fResizeHandle; + +public: + IldaeilUI() + : UI(1280, 720), + fContext(getPluginInstancePointer()), + fResizeHandle(this) + { + } + + ~IldaeilUI() override + { + } + + void onImGuiDisplay() override + { + float width = getWidth(); + float height = getHeight(); + float margin = 20.0f; + + ImGui::SetNextWindowPos(ImVec2(margin, margin)); + ImGui::SetNextWindowSize(ImVec2(width - 2 * margin, height - 2 * margin)); + + if (ImGui::Begin("Plugin List")) + { + } + + ImGui::End(); + } + + void uiIdle() override + { + } + +protected: + /* -------------------------------------------------------------------------------------------------------- + * DSP/Plugin Callbacks */ + + /** + A parameter has changed on the plugin side. + This is called by the host to inform the UI about parameter changes. + */ + void parameterChanged(uint32_t index, float value) override + { + } + + // ------------------------------------------------------------------------------------------------------- + +private: + /** + Set our UI class as non-copyable and add a leak detector just in case. + */ + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(IldaeilUI) +}; + +/* ------------------------------------------------------------------------------------------------------------ + * UI entry point, called by DPF to create a new UI instance. */ + +UI* createUI() +{ + return new IldaeilUI(); +} + +// ----------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO diff --git a/plugins/Common/ResizeHandle.hpp b/plugins/Common/ResizeHandle.hpp new file mode 100644 index 0000000..3753b3d --- /dev/null +++ b/plugins/Common/ResizeHandle.hpp @@ -0,0 +1,185 @@ +/* + * Resize handle for DPF + * Copyright (C) 2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "TopLevelWidget.hpp" +#include "../dgl/Color.hpp" + +START_NAMESPACE_DGL + +/** Resize handle for DPF windows, will sit on bottom-right. */ +class ResizeHandle : public TopLevelWidget +{ +public: + /** Constructor for placing this handle on top of a window. */ + explicit ResizeHandle(Window& window) + : TopLevelWidget(window), + handleSize(16), + resizing(false) + { + resetArea(); + } + + /** Overloaded constructor, will fetch the window from an existing top-level widget. */ + explicit ResizeHandle(TopLevelWidget* const tlw) + : TopLevelWidget(tlw->getWindow()), + handleSize(16), + resizing(false) + { + resetArea(); + } + + /** Set the handle size, minimum 16. */ + void setHandleSize(const uint size) + { + handleSize = std::max(16u, size); + resetArea(); + } + +protected: + void onDisplay() override + { + const GraphicsContext& context(getGraphicsContext()); + const double lineWidth = 1.0 * getScaleFactor(); + +#ifdef DGL_OPENGL + // glUseProgram(0); + glMatrixMode(GL_MODELVIEW); +#endif + + // draw white lines, 1px wide + Color(1.0f, 1.0f, 1.0f).setFor(context); + l1.draw(context, lineWidth); + l2.draw(context, lineWidth); + l3.draw(context, lineWidth); + + // draw black lines, offset by 1px and 1px wide + Color(0.0f, 0.0f, 0.0f).setFor(context); + Line l1b(l1), l2b(l2), l3b(l3); + l1b.moveBy(lineWidth, lineWidth); + l2b.moveBy(lineWidth, lineWidth); + l3b.moveBy(lineWidth, lineWidth); + l1b.draw(context, lineWidth); + l2b.draw(context, lineWidth); + l3b.draw(context, lineWidth); + } + + bool onMouse(const MouseEvent& ev) override + { + if (ev.button != 1) + return false; + + if (ev.press && area.contains(ev.pos)) + { + resizing = true; + resizingSize = Size(getWidth(), getHeight()); + lastResizePoint = ev.pos; + return true; + } + + if (resizing && ! ev.press) + { + resizing = false; + return true; + } + + return false; + } + + bool onMotion(const MotionEvent& ev) override + { + if (! resizing) + return false; + + const Size offset(ev.pos.getX() - lastResizePoint.getX(), + ev.pos.getY() - lastResizePoint.getY()); + + resizingSize += offset; + lastResizePoint = ev.pos; + + // TODO min width, min height + const uint minWidth = 16; + const uint minHeight = 16; + + if (resizingSize.getWidth() < minWidth) + resizingSize.setWidth(minWidth); + if (resizingSize.getWidth() > 16384) + resizingSize.setWidth(16384); + if (resizingSize.getHeight() < minHeight) + resizingSize.setHeight(minHeight); + if (resizingSize.getHeight() > 16384) + resizingSize.setHeight(16384); + + setSize(resizingSize.getWidth(), resizingSize.getHeight()); + return true; + } + + void onResize(const ResizeEvent& ev) override + { + TopLevelWidget::onResize(ev); + resetArea(); + } + +private: + Rectangle area; + Line l1, l2, l3; + uint handleSize; + + // event handling state + bool resizing; + Point lastResizePoint; + Size resizingSize; + + void resetArea() + { + const double scaleFactor = getScaleFactor(); + const uint margin = 0.0 * scaleFactor; + const uint size = handleSize * scaleFactor; + + area = Rectangle(getWidth() - size - margin, + getHeight() - size - margin, + size, size); + + recreateLines(area.getX(), area.getY(), size); + } + + void recreateLines(const uint x, const uint y, const uint size) + { + uint linesize = size; + uint offset = 0; + + // 1st line, full diagonal size + l1.setStartPos(x + size, y); + l1.setEndPos(x, y + size); + + // 2nd line, bit more to the right and down, cropped + offset += size / 3; + linesize -= size / 3; + l2.setStartPos(x + linesize + offset, y + offset); + l2.setEndPos(x + offset, y + linesize + offset); + + // 3rd line, even more right and down + offset += size / 3; + linesize -= size / 3; + l3.setStartPos(x + linesize + offset, y + offset); + l3.setEndPos(x + offset, y + linesize + offset); + } + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ResizeHandle) +}; + +END_NAMESPACE_DGL diff --git a/plugins/FX/DistrhoPluginInfo.h b/plugins/FX/DistrhoPluginInfo.h new file mode 100644 index 0000000..9b307e6 --- /dev/null +++ b/plugins/FX/DistrhoPluginInfo.h @@ -0,0 +1,39 @@ +/* + * DISTRHO Ildaeil Plugin + * Copyright (C) 2021 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED +#define DISTRHO_PLUGIN_INFO_H_INCLUDED + +#define DISTRHO_PLUGIN_BRAND "DISTRHO" +#define DISTRHO_PLUGIN_NAME "Ildaeil-FX" +#define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/ildaeil#fx" + +#define DISTRHO_PLUGIN_HAS_UI 1 +#define DISTRHO_PLUGIN_IS_SYNTH 0 +#define DISTRHO_PLUGIN_NUM_INPUTS 2 +#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 +#define DISTRHO_PLUGIN_WANT_LATENCY 1 +#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 0 +#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 0 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_UI_USE_CUSTOM 1 +#define DISTRHO_UI_USER_RESIZABLE 0 +#define DISTRHO_UI_CUSTOM_INCLUDE_PATH "DearImGui.hpp" +#define DISTRHO_UI_CUSTOM_WIDGET_TYPE DGL_NAMESPACE::ImGuiTopLevelWidget + +#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED diff --git a/plugins/FX/IldaeilPlugin.cpp b/plugins/FX/IldaeilPlugin.cpp new file mode 120000 index 0000000..bec0964 --- /dev/null +++ b/plugins/FX/IldaeilPlugin.cpp @@ -0,0 +1 @@ +../Common/IldaeilPlugin.cpp \ No newline at end of file diff --git a/plugins/FX/IldaeilUI.cpp b/plugins/FX/IldaeilUI.cpp new file mode 120000 index 0000000..b108fd1 --- /dev/null +++ b/plugins/FX/IldaeilUI.cpp @@ -0,0 +1 @@ +../Common/IldaeilUI.cpp \ No newline at end of file diff --git a/plugins/FX/Makefile b/plugins/FX/Makefile new file mode 100644 index 0000000..8f27d31 --- /dev/null +++ b/plugins/FX/Makefile @@ -0,0 +1,35 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +# -------------------------------------------------------------- +# Project name, used for binaries + +NAME = Ildaeil-FX + +# -------------------------------------------------------------- +# Files to build (DPF stuff) + +FILES_DSP = \ + IldaeilPlugin.cpp + +FILES_UI = \ + IldaeilUI.cpp \ + ../../dpf-widgets/opengl/DearImGui.cpp + +# -------------------------------------------------------------- +# Do some magic + +include ../../dpf/Makefile.plugins.mk + +BUILD_CXX_FLAGS += -I../Common +BUILD_CXX_FLAGS += -I../../dpf-widgets/opengl + +# -------------------------------------------------------------- +# Enable all possible plugin types + +all: jack lv2 vst2 vst3 + +# -------------------------------------------------------------- diff --git a/plugins/MIDI/DistrhoPluginInfo.h b/plugins/MIDI/DistrhoPluginInfo.h new file mode 100644 index 0000000..d222c25 --- /dev/null +++ b/plugins/MIDI/DistrhoPluginInfo.h @@ -0,0 +1,39 @@ +/* + * DISTRHO Ildaeil Plugin + * Copyright (C) 2021 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED +#define DISTRHO_PLUGIN_INFO_H_INCLUDED + +#define DISTRHO_PLUGIN_BRAND "DISTRHO" +#define DISTRHO_PLUGIN_NAME "Ildaeil-MIDI" +#define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/ildaeil#midi" + +#define DISTRHO_PLUGIN_HAS_UI 1 +#define DISTRHO_PLUGIN_IS_SYNTH 0 +#define DISTRHO_PLUGIN_NUM_INPUTS 0 +#define DISTRHO_PLUGIN_NUM_OUTPUTS 0 +#define DISTRHO_PLUGIN_WANT_LATENCY 1 +#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 +#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_UI_USE_CUSTOM 1 +#define DISTRHO_UI_USER_RESIZABLE 0 +#define DISTRHO_UI_CUSTOM_INCLUDE_PATH "ImGuiUI.hpp" +#define DISTRHO_UI_CUSTOM_WIDGET_TYPE DGL_NAMESPACE::ImGuiUI + +#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED diff --git a/plugins/MIDI/IldaeilPlugin.cpp b/plugins/MIDI/IldaeilPlugin.cpp new file mode 120000 index 0000000..bec0964 --- /dev/null +++ b/plugins/MIDI/IldaeilPlugin.cpp @@ -0,0 +1 @@ +../Common/IldaeilPlugin.cpp \ No newline at end of file diff --git a/plugins/MIDI/IldaeilUI.cpp b/plugins/MIDI/IldaeilUI.cpp new file mode 120000 index 0000000..b108fd1 --- /dev/null +++ b/plugins/MIDI/IldaeilUI.cpp @@ -0,0 +1 @@ +../Common/IldaeilUI.cpp \ No newline at end of file diff --git a/plugins/MIDI/Makefile b/plugins/MIDI/Makefile new file mode 100644 index 0000000..ebe82ad --- /dev/null +++ b/plugins/MIDI/Makefile @@ -0,0 +1,31 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +# -------------------------------------------------------------- +# Project name, used for binaries + +NAME = Ildaeil-FX + +# -------------------------------------------------------------- +# Files to build (DPF stuff) + +FILES_DSP = \ + IldaeilPlugin.cpp + +FILES_UI = \ + IldaeilUI.cpp + +# -------------------------------------------------------------- +# Do some magic + +include ../../dpf/Makefile.plugins.mk + +# -------------------------------------------------------------- +# Enable all possible plugin types + +all: jack lv2 vst2 vst3 + +# -------------------------------------------------------------- diff --git a/plugins/Synth/DistrhoPluginInfo.h b/plugins/Synth/DistrhoPluginInfo.h new file mode 100644 index 0000000..93e8626 --- /dev/null +++ b/plugins/Synth/DistrhoPluginInfo.h @@ -0,0 +1,39 @@ +/* + * DISTRHO Ildaeil Plugin + * Copyright (C) 2021 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED +#define DISTRHO_PLUGIN_INFO_H_INCLUDED + +#define DISTRHO_PLUGIN_BRAND "DISTRHO" +#define DISTRHO_PLUGIN_NAME "Ildaeil-Synth" +#define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/ildaeil#synth" + +#define DISTRHO_PLUGIN_HAS_UI 1 +#define DISTRHO_PLUGIN_IS_SYNTH 1 +#define DISTRHO_PLUGIN_NUM_INPUTS 0 +#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 +#define DISTRHO_PLUGIN_WANT_LATENCY 1 +#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 +#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 0 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 +#define DISTRHO_UI_USE_CUSTOM 1 +#define DISTRHO_UI_USER_RESIZABLE 0 +#define DISTRHO_UI_CUSTOM_INCLUDE_PATH "ImGuiUI.hpp" +#define DISTRHO_UI_CUSTOM_WIDGET_TYPE DGL_NAMESPACE::ImGuiUI + +#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED diff --git a/plugins/Synth/IldaeilPlugin.cpp b/plugins/Synth/IldaeilPlugin.cpp new file mode 120000 index 0000000..bec0964 --- /dev/null +++ b/plugins/Synth/IldaeilPlugin.cpp @@ -0,0 +1 @@ +../Common/IldaeilPlugin.cpp \ No newline at end of file diff --git a/plugins/Synth/IldaeilUI.cpp b/plugins/Synth/IldaeilUI.cpp new file mode 120000 index 0000000..b108fd1 --- /dev/null +++ b/plugins/Synth/IldaeilUI.cpp @@ -0,0 +1 @@ +../Common/IldaeilUI.cpp \ No newline at end of file diff --git a/plugins/Synth/Makefile b/plugins/Synth/Makefile new file mode 100644 index 0000000..ebe82ad --- /dev/null +++ b/plugins/Synth/Makefile @@ -0,0 +1,31 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +# -------------------------------------------------------------- +# Project name, used for binaries + +NAME = Ildaeil-FX + +# -------------------------------------------------------------- +# Files to build (DPF stuff) + +FILES_DSP = \ + IldaeilPlugin.cpp + +FILES_UI = \ + IldaeilUI.cpp + +# -------------------------------------------------------------- +# Do some magic + +include ../../dpf/Makefile.plugins.mk + +# -------------------------------------------------------------- +# Enable all possible plugin types + +all: jack lv2 vst2 vst3 + +# --------------------------------------------------------------