/
reds
/
OpenDAW
Обзор
Документация
Войти
/
reds
/
OpenDAW
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
include/opendaw/plugin/Plugin.h
117 строк
3 KB
OpenDAW Developer
feat(v0.6.0): Add Plugin Support (CLAP + VST3)
21 фев 2026, 04:44
21 фев 2026, 04:44
ad86a0b
Код
Авторство
О чём код?
#pragma once #include <opendaw/audio/AudioBuffer.h> #include <opendaw/midi/MidiBuffer.h> #include <string> #include <vector> #include <memory> namespace opendaw { /** * @brief Информация о параметре плагина */ struct PluginParameter { std::string name; std::string unit; float minValue{0.0f}; float maxValue{1.0f}; float defaultValue{0.5f}; int stepCount{0}; // 0 = continuous bool isBoolean{false}; }; /** * @brief Информация о плагине */ struct PluginInfo { std::string id; std::string name; std::string vendor; std::string version; std::string path; std::vector<std::string> supportedFormats; int numInputs{2}; int numOutputs{2}; bool isInstrument{false}; int numParameters{0}; double tailSize{0.0}; // секунды }; /** * @brief Базовый интерфейс плагина * * Общий API для CLAP, VST3, LV2 */ class Plugin { public: virtual ~Plugin() = default; /** * @brief Информация о плагине */ virtual PluginInfo getInfo() const = 0; /** * @brief Инициализация */ virtual bool initialize(double sampleRate, int blockSize) = 0; /** * @brief Освобождение ресурсов */ virtual void shutdown() = 0; /** * @brief Сброс состояния */ virtual void reset() = 0; /** * @brief Обработка аудио */ virtual void process(AudioBuffer<float>& audio, MidiBuffer& midi) = 0; /** * @brief Количество параметров */ virtual int getNumParameters() const = 0; /** * @brief Информация о параметре */ virtual PluginParameter getParameterInfo(int index) const = 0; /** * @brief Получение значения параметра (0-1) */ virtual float getParameterValue(int index) const = 0; /** * @brief Установка значения параметра (0-1) */ virtual void setParameterValue(int index, float value) = 0; /** * @brief Имеет GUI? */ virtual bool hasEditor() const = 0; /** * @brief Получить размер редактора */ virtual bool getEditorSize(int& width, int& height) const { width = 400; height = 300; return hasEditor(); } }; /** * @brief Фабрика плагинов */ using PluginFactory = std::function<std::unique_ptr<Plugin>()>; } // namespace opendaw