1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de>
* Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* 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 Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/
#ifndef DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class DistrhoPlugin3BandSplitter : public Plugin
{
public:
enum Parameters
{
paramLow = 0,
paramMid,
paramHigh,
paramMaster,
paramLowMidFreq,
paramMidHighFreq,
paramCount
};
enum PortGroups
{
kPortGroupLow,
kPortGroupMid,
kPortGroupHigh,
kPortGroupCount
};
DistrhoPlugin3BandSplitter();
protected:
// -------------------------------------------------------------------
// Information
const char* getLabel() const noexcept override
{
return "3BandSplitter";
}
const char* getDescription() const override
{
return "3 Band Equalizer, split output version.";
}
const char* getMaker() const noexcept override
{
return "DISTRHO";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Mini-Series";
}
const char* getLicense() const noexcept override
{
return "LGPL";
}
uint32_t getVersion() const noexcept override
{
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override
{
return d_cconst('D', '3', 'E', 'S');
}
// -------------------------------------------------------------------
// Init
void initAudioPort(bool input, uint32_t index, AudioPort& port) override;
void initParameter(uint32_t index, Parameter& parameter) override;
void initPortGroup(uint32_t groupId, PortGroup& portGroup) override;
void initProgramName(uint32_t index, String& programName) override;
// -------------------------------------------------------------------
// Internal data
float getParameterValue(uint32_t index) const override;
void setParameterValue(uint32_t index, float value) override;
void loadProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
void activate() override;
void deactivate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
private:
float fLow, fMid, fHigh, fMaster, fLowMidFreq, fMidHighFreq;
float lowVol, midVol, highVol, outVol;
float freqLP, freqHP;
float xLP, a0LP, b1LP;
float xHP, a0HP, b1HP;
float out1LP, out2LP, out1HP, out2HP;
float tmp1LP, tmp2LP, tmp1HP, tmp2HP;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPlugin3BandSplitter)
};
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
#endif // DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
|