summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2014-07-01 09:03:38 +1000
committerDamien Zammit <damien@zamaudio.com>2014-07-01 09:03:38 +1000
commit0d80fefbbb2eb72212cc890ceef2de601101b59b (patch)
treed6610f873798e32157fd802ea04cf8441dba8aca /plugins
parent0a3d9fc62236cfdb16993009262e8a31c82ac5a1 (diff)
Update DPF, some misc fixes #14
Diffstat (limited to 'plugins')
-rw-r--r--plugins/ImageToggle.hpp148
-rw-r--r--plugins/Makefile.mk39
-rw-r--r--plugins/ZaMultiComp/Makefile12
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompPlugin.cpp20
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompPlugin.hpp11
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompUI.cpp94
-rw-r--r--plugins/ZaMultiComp/ZaMultiCompUI.hpp36
-rw-r--r--plugins/ZaMultiCompX2/Makefile12
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp69
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp7
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp124
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp44
-rw-r--r--plugins/ZamComp/Makefile12
-rw-r--r--plugins/ZamComp/ZamCompPlugin.cpp25
-rw-r--r--plugins/ZamComp/ZamCompPlugin.hpp12
-rw-r--r--plugins/ZamComp/ZamCompUI.cpp102
-rw-r--r--plugins/ZamComp/ZamCompUI.hpp16
-rw-r--r--plugins/ZamCompX2/Makefile12
-rw-r--r--plugins/ZamCompX2/ZamCompX2Plugin.cpp24
-rw-r--r--plugins/ZamCompX2/ZamCompX2Plugin.hpp10
-rw-r--r--plugins/ZamCompX2/ZamCompX2UI.cpp109
-rw-r--r--plugins/ZamCompX2/ZamCompX2UI.hpp30
-rw-r--r--plugins/ZamEQ2/Makefile12
-rw-r--r--plugins/ZamEQ2/ZamEQ2Plugin.cpp21
-rw-r--r--plugins/ZamEQ2/ZamEQ2Plugin.hpp6
-rw-r--r--plugins/ZamEQ2/ZamEQ2UI.cpp62
-rw-r--r--plugins/ZamEQ2/ZamEQ2UI.hpp35
-rw-r--r--plugins/ZamSynth/Makefile12
-rw-r--r--plugins/ZamSynth/ZamSynthPlugin.cpp21
-rw-r--r--plugins/ZamSynth/ZamSynthPlugin.hpp6
-rw-r--r--plugins/ZamSynth/ZamSynthUI.cpp62
-rw-r--r--plugins/ZamSynth/ZamSynthUI.hpp36
-rw-r--r--plugins/ZamTube/Makefile12
-rw-r--r--plugins/ZamTube/ZamTubePlugin.cpp14
-rw-r--r--plugins/ZamTube/ZamTubePlugin.hpp16
-rw-r--r--plugins/ZamTube/ZamTubeUI.cpp31
-rw-r--r--plugins/ZamTube/ZamTubeUI.hpp22
37 files changed, 618 insertions, 718 deletions
diff --git a/plugins/ImageToggle.hpp b/plugins/ImageToggle.hpp
new file mode 100644
index 0000000..b3800f0
--- /dev/null
+++ b/plugins/ImageToggle.hpp
@@ -0,0 +1,148 @@
+/*
+ * DISTRHO Plugin Framework (DPF)
+ * Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ *
+ * 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.
+ */
+
+#ifndef DGL_IMAGE_TOGGLE_HPP_INCLUDED
+#define DGL_IMAGE_TOGGLE_HPP_INCLUDED
+
+#include "Image.hpp"
+#include "Widget.hpp"
+
+START_NAMESPACE_DGL
+
+// -----------------------------------------------------------------------
+
+class ImageToggle : public Widget
+{
+public:
+ class Callback
+ {
+ public:
+ virtual ~Callback() {}
+ virtual void imageToggleClicked(ImageToggle* imageToggle, int button) = 0;
+ };
+
+ ImageToggle(Window& parent, const Image& imageNormal, const Image& imageDown, int id = 0)
+ : Widget(parent),
+ fImageNormal(imageNormal),
+ fImageDown(imageDown),
+ fCurImage(&fImageNormal),
+ fId(id),
+ fCallback(nullptr)
+ {
+ DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize());
+
+ setSize(fImageNormal.getSize());
+ }
+
+ ImageToggle(Widget* widget, const Image& imageNormal, const Image& imageDown, int id = 0)
+ : Widget(widget->getParentWindow()),
+ fImageNormal(imageNormal),
+ fImageDown(imageDown),
+ fCurImage(&fImageNormal),
+ fId(id),
+ fCallback(nullptr)
+ {
+ DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize());
+
+ setSize(fImageNormal.getSize());
+ }
+
+ ImageToggle(const ImageToggle& imageToggle)
+ : Widget(imageToggle.getParentWindow()),
+ fImageNormal(imageToggle.fImageNormal),
+ fImageDown(imageToggle.fImageDown),
+ fCurImage(&fImageNormal),
+ fId(imageToggle.fId),
+ fCallback(imageToggle.fCallback)
+ {
+ DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize());
+
+ setSize(fImageNormal.getSize());
+ }
+
+ int getId() const noexcept
+ {
+ return fId;
+ }
+
+ void setId(int id) noexcept
+ {
+ fId = id;
+ }
+
+ float getValue() const noexcept
+ {
+ return (fCurImage == &fImageNormal) ? 0.0f : 1.0f;
+ }
+
+ void setValue(float value) noexcept
+ {
+ if (value == 1.0f)
+ fCurImage = &fImageDown;
+ else if (value == 0.0f)
+ fCurImage = &fImageNormal;
+
+ repaint();
+ }
+
+ void setCallback(Callback* callback) noexcept
+ {
+ fCallback = callback;
+ }
+
+protected:
+ void onDisplay() override
+ {
+ fCurImage->draw();
+ }
+
+ bool onMouse(const MouseEvent& ev) override
+ {
+ if (! ev.press)
+ return false;
+ if (! contains(ev.pos))
+ return false;
+
+ if (fCurImage != &fImageDown)
+ fCurImage = &fImageDown;
+ else if (fCurImage != &fImageNormal)
+ fCurImage = &fImageNormal;
+
+ repaint();
+
+ if (fCallback != nullptr)
+ fCallback->imageToggleClicked(this, ev.button);
+
+ return true;
+ }
+
+private:
+ Image fImageNormal;
+ Image fImageDown;
+ Image* fCurImage;
+ int fId;
+
+ Callback* fCallback;
+
+ DISTRHO_LEAK_DETECTOR(ImageToggle)
+};
+
+// -----------------------------------------------------------------------
+
+END_NAMESPACE_DGL
+
+#endif // DGL_IMAGE_TOGGLE_HPP_INCLUDED
diff --git a/plugins/Makefile.mk b/plugins/Makefile.mk
index aa405da..340de08 100644
--- a/plugins/Makefile.mk
+++ b/plugins/Makefile.mk
@@ -14,21 +14,17 @@ include ../../Makefile.mk
TARGET_DIR = ../../bin
BUILD_C_FLAGS += -I.
-BUILD_CXX_FLAGS += -I. -I../../libs/distrho -I../../libs/dgl
-
-# --------------------------------------------------------------
-# Enable all plugin types
-
-#all: dssi lv2 vst
-all: lv2
+BUILD_CXX_FLAGS += -I. -I.. -I../../libs/distrho -I../../libs/dgl
# --------------------------------------------------------------
# Set plugin binary file targets
+jack = $(TARGET_DIR)/$(NAME)
ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa.$(EXT)
dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi.$(EXT)
dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui
-lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME).$(EXT)
+lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME).$(EXT)
+lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp.$(EXT)
lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui.$(EXT)
vst = $(TARGET_DIR)/$(NAME)-vst.$(EXT)
@@ -56,17 +52,31 @@ OBJS_UI =
endif
# --------------------------------------------------------------
+# all needs to be first
+
+all:
+
+# --------------------------------------------------------------
# Common
%.c.o: %.c
- $(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
+ $(CC) $< $(BUILD_C_FLAGS) -c -o $@
%.cpp.o: %.cpp
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
clean:
- $(RM) *.o
- $(RM) -r $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2/
+ rm -f *.o
+ rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2/
+
+# --------------------------------------------------------------
+# JACK
+
+jack: $(jack)
+
+$(jack): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
+ mkdir -p $(shell dirname $@)
+ $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --cflags --libs jack) -DDISTRHO_PLUGIN_TARGET_JACK -o $@
# --------------------------------------------------------------
# LADSPA
@@ -93,7 +103,12 @@ $(dssi_ui): $(OBJS_UI) $(DISTRHO_UI_FILES)
# --------------------------------------------------------------
# LV2
-lv2: $(lv2_dsp) $(lv2_ui)
+lv2_one: $(lv2)
+lv2_sep: $(lv2_dsp) $(lv2_ui)
+
+$(lv2): $(OBJS_DSP) $(OBJS_UI) $(DISTRHO_PLUGIN_FILES) $(DISTRHO_UI_FILES)
+ mkdir -p $(shell dirname $@)
+ $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -DDISTRHO_PLUGIN_TARGET_LV2 -o $@
$(lv2_dsp): $(OBJS_DSP) $(DISTRHO_PLUGIN_FILES)
mkdir -p $(shell dirname $@)
diff --git a/plugins/ZaMultiComp/Makefile b/plugins/ZaMultiComp/Makefile
index 2250367..76410ac 100644
--- a/plugins/ZaMultiComp/Makefile
+++ b/plugins/ZaMultiComp/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZaMultiCompUI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
index 84f9b7f..003c007 100644
--- a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
+++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp
@@ -26,13 +26,6 @@ ZaMultiCompPlugin::ZaMultiCompPlugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZaMultiCompPlugin::~ZaMultiCompPlugin()
-{
}
// -----------------------------------------------------------------------
@@ -451,11 +444,6 @@ void ZaMultiCompPlugin::d_activate()
}
}
-void ZaMultiCompPlugin::d_deactivate()
-{
- // all values to zero
-}
-
float ZaMultiCompPlugin::run_filter(int i, float in)
{
in = sanitize_denormal(in);
@@ -488,14 +476,14 @@ void ZaMultiCompPlugin::set_lp_coeffs(float fc, float q, float sr, int i, float
b2[i] = (float)((1.f - alpha)*inv);
}
-void ZaMultiCompPlugin::set_hp_coeffs(float fc, float q, float sr, int i, float gain=1.0)
-{
+void ZaMultiCompPlugin::set_hp_coeffs(float fc, float q, float sr, int i, float gain=1.0)
+{
float omega=(float)(2.f*M_PI*fc/sr);
float sn=sin(omega);
float cs=cos(omega);
float alpha=(float)(sn/(2.f*q));
float inv=(float)(1.f/(1.f+alpha));
-
+
a0[i] = (float)(gain*inv*(1.f + cs)/2.f);
a1[i] = -2.f * a0[i];
a2[i] = a0[i];
@@ -551,7 +539,7 @@ float ZaMultiCompPlugin::run_comp(int k, float in)
return sanitize_denormal(out);
}
-void ZaMultiCompPlugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZaMultiCompPlugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
float srate = d_getSampleRate();
float max = 0.f;
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
index d3d12ca..da25b94 100644
--- a/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
+++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.hpp
@@ -66,7 +66,6 @@ public:
};
ZaMultiCompPlugin();
- ~ZaMultiCompPlugin() override;
protected:
// -------------------------------------------------------------------
@@ -100,15 +99,15 @@ protected:
// -------------------------------------------------------------------
// Init
- void d_initParameter(uint32_t index, Parameter& parameter) ;
- void d_initProgramName(uint32_t index, d_string& programName) ;
+ void d_initParameter(uint32_t index, Parameter& parameter) override;
+ void d_initProgramName(uint32_t index, d_string& programName) override;
// -------------------------------------------------------------------
// Internal data
float d_getParameterValue(uint32_t index) const override;
void d_setParameterValue(uint32_t index, float value) override;
- void d_setProgram(uint32_t index) ;
+ void d_setProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
@@ -136,8 +135,7 @@ protected:
void set_hp_coeffs(float fc, float q, float sr, int i, float gain);
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
@@ -159,7 +157,6 @@ private:
float z2[MAX_FILT];
};
-
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
diff --git a/plugins/ZaMultiComp/ZaMultiCompUI.cpp b/plugins/ZaMultiComp/ZaMultiCompUI.cpp
index f8bc5b1..70236af 100644
--- a/plugins/ZaMultiComp/ZaMultiCompUI.cpp
+++ b/plugins/ZaMultiComp/ZaMultiCompUI.cpp
@@ -1,5 +1,5 @@
/*
- * ZaMultiComp mono multiband compressor
+ * ZaMultiComp mono multiband compressor
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZaMultiCompPlugin.hpp"
#include "ZaMultiCompUI.hpp"
-#include <stdio.h>
using DGL::Point;
@@ -38,23 +38,23 @@ ZaMultiCompUI::ZaMultiCompUI()
fLedRedValue1 = 0.0f;
fLedRedValue2 = 0.0f;
fLedRedValue3 = 0.0f;
- fLedYellowValue = 0.0f;
+ fLedYellowValue = 0.0f;
// knob
Image knobImage(ZaMultiCompArtwork::knobData, ZaMultiCompArtwork::knobWidth, ZaMultiCompArtwork::knobHeight);
- // knob
+ // knob
fKnobAttack = new ImageKnob(this, knobImage);
- fKnobAttack->setPos(24, 43);
+ fKnobAttack->setAbsolutePos(24, 43);
fKnobAttack->setRange(0.1f, 200.0f);
fKnobAttack->setStep(0.1f);
- fKnobAttack->setLogScale(true);
+ fKnobAttack->setUsingLogScale(true);
fKnobAttack->setDefault(10.0f);
fKnobAttack->setRotationAngle(240);
fKnobAttack->setCallback(this);
fKnobRelease = new ImageKnob(this, knobImage);
- fKnobRelease->setPos(108, 43);
+ fKnobRelease->setAbsolutePos(108, 43);
fKnobRelease->setRange(50.0f, 500.0f);
fKnobRelease->setStep(1.0f);
fKnobRelease->setDefault(80.0f);
@@ -62,7 +62,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobRelease->setCallback(this);
fKnobThresh = new ImageKnob(this, knobImage);
- fKnobThresh->setPos(191.5, 43);
+ fKnobThresh->setAbsolutePos(191.5, 43);
fKnobThresh->setRange(-60.0f, 0.0f);
fKnobThresh->setStep(1.0f);
fKnobThresh->setDefault(0.0f);
@@ -70,7 +70,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobThresh->setCallback(this);
fKnobRatio = new ImageKnob(this, knobImage);
- fKnobRatio->setPos(270, 43);
+ fKnobRatio->setAbsolutePos(270, 43);
fKnobRatio->setRange(1.0f, 20.0f);
fKnobRatio->setStep(0.1f);
fKnobRatio->setDefault(4.0f);
@@ -78,7 +78,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobRatio->setCallback(this);
fKnobKnee = new ImageKnob(this, knobImage);
- fKnobKnee->setPos(348.5, 43);
+ fKnobKnee->setAbsolutePos(348.5, 43);
fKnobKnee->setRange(0.0f, 8.0f);
fKnobKnee->setStep(0.1f);
fKnobKnee->setDefault(0.0f);
@@ -86,7 +86,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobKnee->setCallback(this);
fKnobGlobalGain = new ImageKnob(this, knobImage);
- fKnobGlobalGain->setPos(427.3, 43);
+ fKnobGlobalGain->setAbsolutePos(427.3, 43);
fKnobGlobalGain->setRange(-30.0f, 30.0f);
fKnobGlobalGain->setStep(1.0f);
fKnobGlobalGain->setDefault(0.0f);
@@ -94,25 +94,25 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobGlobalGain->setCallback(this);
fKnobXover2 = new ImageKnob(this, knobImage);
- fKnobXover2->setPos(84, 121);
+ fKnobXover2->setAbsolutePos(84, 121);
fKnobXover2->setRange(1400.f, 14000.f);
fKnobXover2->setStep(1.0f);
- fKnobXover2->setLogScale(true);
+ fKnobXover2->setUsingLogScale(true);
fKnobXover2->setDefault(1400.f);
fKnobXover2->setRotationAngle(240);
fKnobXover2->setCallback(this);
fKnobXover1 = new ImageKnob(this, knobImage);
- fKnobXover1->setPos(84, 176);
+ fKnobXover1->setAbsolutePos(84, 176);
fKnobXover1->setRange(20.0f, 1400.0f);
fKnobXover1->setStep(1.0f);
- fKnobXover1->setLogScale(true);
+ fKnobXover1->setUsingLogScale(true);
fKnobXover1->setDefault(250.0f);
fKnobXover1->setRotationAngle(240);
fKnobXover1->setCallback(this);
fKnobMakeup3 = new ImageKnob(this, knobImage);
- fKnobMakeup3->setPos(167.75, 99.5);
+ fKnobMakeup3->setAbsolutePos(167.75, 99.5);
fKnobMakeup3->setRange(0.0f, 30.0f);
fKnobMakeup3->setStep(0.1f);
fKnobMakeup3->setDefault(0.0f);
@@ -120,7 +120,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobMakeup3->setCallback(this);
fKnobMakeup2 = new ImageKnob(this, knobImage);
- fKnobMakeup2->setPos(167.75, 150.25);
+ fKnobMakeup2->setAbsolutePos(167.75, 150.25);
fKnobMakeup2->setRange(0.0f, 30.0f);
fKnobMakeup2->setStep(0.1f);
fKnobMakeup2->setDefault(0.0f);
@@ -128,7 +128,7 @@ ZaMultiCompUI::ZaMultiCompUI()
fKnobMakeup2->setCallback(this);
fKnobMakeup1 = new ImageKnob(this, knobImage);
- fKnobMakeup1->setPos(167.75, 201.4);
+ fKnobMakeup1->setAbsolutePos(167.75, 201.4);
fKnobMakeup1->setRange(0.0f, 30.0f);
fKnobMakeup1->setStep(0.1f);
fKnobMakeup1->setDefault(0.0f);
@@ -142,61 +142,43 @@ ZaMultiCompUI::ZaMultiCompUI()
Point<int> togglePosStart(247,109);
- fToggleBypass3 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass3->setPos(togglePosStart);
+ fToggleBypass3 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass3->setAbsolutePos(togglePosStart);
fToggleBypass3->setCallback(this);
togglePosStart.setY(158);
- fToggleBypass2 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass2->setPos(togglePosStart);
+ fToggleBypass2 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass2->setAbsolutePos(togglePosStart);
fToggleBypass2->setCallback(this);
togglePosStart.setY(209);
- fToggleBypass1 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass1->setPos(togglePosStart);
+ fToggleBypass1 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass1->setAbsolutePos(togglePosStart);
fToggleBypass1->setCallback(this);
togglePosStart.setX(278);
togglePosStart.setY(113);
- fToggleListen3 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen3->setPos(togglePosStart);
+ fToggleListen3 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen3->setAbsolutePos(togglePosStart);
fToggleListen3->setCallback(this);
togglePosStart.setY(164);
- fToggleListen2 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen2->setPos(togglePosStart);
+ fToggleListen2 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen2->setAbsolutePos(togglePosStart);
fToggleListen2->setCallback(this);
togglePosStart.setY(214);
- fToggleListen1 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen1->setPos(togglePosStart);
+ fToggleListen1 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen1->setAbsolutePos(togglePosStart);
fToggleListen1->setCallback(this);
-}
-ZaMultiCompUI::~ZaMultiCompUI()
-{
- delete fKnobAttack;
- delete fKnobRelease;
- delete fKnobThresh;
- delete fKnobRatio;
- delete fKnobKnee;
- delete fKnobGlobalGain;
- delete fKnobMakeup1;
- delete fKnobMakeup2;
- delete fKnobMakeup3;
- delete fKnobXover1;
- delete fKnobXover2;
- delete fToggleBypass1;
- delete fToggleBypass2;
- delete fToggleBypass3;
- delete fToggleListen1;
- delete fToggleListen2;
- delete fToggleListen3;
+ // set default values
+ d_programChanged(0);
}
// -----------------------------------------------------------------------
@@ -502,13 +484,13 @@ void ZaMultiCompUI::onDisplay()
else numRedLeds3 = 0;
for (int i=numRedLeds1; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed1StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed1StaticY);
for (int i=numRedLeds2; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed2StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed2StaticY);
for (int i=numRedLeds3; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed3StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed3StaticY);
if (fLedYellowValue >= 20.f)
numYellowLeds = 19;
@@ -552,12 +534,12 @@ void ZaMultiCompUI::onDisplay()
if (numYellowLeds > 12) {
for (int i=12; i<numYellowLeds; ++i)
- fLedRedImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedRedImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
for (int i=0; i<12; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
} else {
for (int i=0; i<numYellowLeds; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
}
}
diff --git a/plugins/ZaMultiComp/ZaMultiCompUI.hpp b/plugins/ZaMultiComp/ZaMultiCompUI.hpp
index 7eac204..3d85b80 100644
--- a/plugins/ZaMultiComp/ZaMultiCompUI.hpp
+++ b/plugins/ZaMultiComp/ZaMultiCompUI.hpp
@@ -1,6 +1,6 @@
/*
* ZaMultiComp mono multiband compressor
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -24,7 +24,6 @@
#include "ImageToggle.hpp"
#include "ZaMultiCompArtwork.hpp"
-#include "ZaMultiCompPlugin.hpp"
using DGL::Image;
using DGL::ImageKnob;
@@ -35,23 +34,22 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZaMultiCompUI : public UI,
- public ImageKnob::Callback,
- public ImageToggle::Callback
+ public ImageKnob::Callback,
+ public ImageToggle::Callback
{
public:
ZaMultiCompUI();
- ~ZaMultiCompUI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZaMultiCompArtwork::zamulticompWidth;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZaMultiCompArtwork::zamulticompHeight;
}
@@ -75,23 +73,13 @@ protected:
private:
Image fImgBackground;
- ImageKnob* fKnobAttack;
- ImageKnob* fKnobRelease;
- ImageKnob* fKnobThresh;
- ImageKnob* fKnobRatio;
- ImageKnob* fKnobKnee;
- ImageKnob* fKnobGlobalGain;
- ImageKnob* fKnobMakeup1;
- ImageKnob* fKnobMakeup2;
- ImageKnob* fKnobMakeup3;
- ImageKnob* fKnobXover1;
- ImageKnob* fKnobXover2;
- ImageToggle* fToggleBypass1;
- ImageToggle* fToggleBypass2;
- ImageToggle* fToggleBypass3;
- ImageToggle* fToggleListen1;
- ImageToggle* fToggleListen2;
- ImageToggle* fToggleListen3;
+
+ ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh;
+ ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobGlobalGain;
+ ScopedPointer<ImageKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3;
+ ScopedPointer<ImageKnob> fKnobXover1, fKnobXover2;
+ ScopedPointer<ImageToggle> fToggleBypass1, fToggleBypass2, fToggleBypass3;
+ ScopedPointer<ImageToggle> fToggleListen1, fToggleListen2, fToggleListen3;
Image fLedRedImg;
float fLedRedValue1;
diff --git a/plugins/ZaMultiCompX2/Makefile b/plugins/ZaMultiCompX2/Makefile
index 0f7c786..60d49b9 100644
--- a/plugins/ZaMultiCompX2/Makefile
+++ b/plugins/ZaMultiCompX2/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZaMultiCompX2UI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
index b9ce6d4..f1c645b 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.cpp
@@ -26,13 +26,6 @@ ZaMultiCompX2Plugin::ZaMultiCompX2Plugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZaMultiCompX2Plugin::~ZaMultiCompX2Plugin()
-{
}
// -----------------------------------------------------------------------
@@ -530,12 +523,6 @@ void ZaMultiCompX2Plugin::d_activate()
maxL = maxR = 0.f;
}
-void ZaMultiCompX2Plugin::d_deactivate()
-{
- // all values to zero
- d_activate();
-}
-
float ZaMultiCompX2Plugin::run_filter(int i, int ch, float in)
{
in = sanitize_denormal(in);
@@ -568,14 +555,14 @@ void ZaMultiCompX2Plugin::set_lp_coeffs(float fc, float q, float sr, int i, int
b2[ch][i] = (float)((1.f - alpha)*inv);
}
-void ZaMultiCompX2Plugin::set_hp_coeffs(float fc, float q, float sr, int i, int ch, float gain=1.0)
-{
+void ZaMultiCompX2Plugin::set_hp_coeffs(float fc, float q, float sr, int i, int ch, float gain=1.0)
+{
float omega=(float)(2.f*M_PI*fc/sr);
float sn=sin(omega);
float cs=cos(omega);
float alpha=(float)(sn/(2.f*q));
float inv=(float)(1.f/(1.f+alpha));
-
+
a0[ch][i] = (float)(gain*inv*(1.f + cs)/2.f);
a1[ch][i] = -2.f * a0[ch][i];
a2[ch][i] = a0[ch][i];
@@ -605,9 +592,9 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
Lxg = (inL==0.f) ? -160.f : to_dB(fabs(inL));
Rxg = (inR==0.f) ? -160.f : to_dB(fabs(inR));
Lxg = sanitize_denormal(Lxg);
- Rxg = sanitize_denormal(Rxg);
-
-
+ Rxg = sanitize_denormal(Rxg);
+
+
if (2.f*(Lxg-thresdb[k])<-width) {
Lyg = Lxg;
} else if (2.f*fabs(Lxg-thresdb[k])<=width) {
@@ -615,9 +602,9 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
} else if (2.f*(Lxg-thresdb[k])>width) {
Lyg = thresdb[k] + (Lxg-thresdb[k])/ratio;
}
-
- Lyg = sanitize_denormal(Lyg);
-
+
+ Lyg = sanitize_denormal(Lyg);
+
if (2.f*(Rxg-thresdb[k])<-width) {
Ryg = Rxg;
} else if (2.f*fabs(Rxg-thresdb[k])<=width) {
@@ -625,37 +612,37 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
} else if (2.f*(Rxg-thresdb[k])>width) {
Ryg = thresdb[k] + (Rxg-thresdb[k])/ratio;
}
-
- Ryg = sanitize_denormal(Ryg);
-
+
+ Ryg = sanitize_denormal(Ryg);
+
if (stereolink == STEREOLINK_MAX) {
Lxl = Rxl = fmaxf(Lxg - Lyg, Rxg - Ryg);
} else {
Lxl = Rxl = (Lxg - Lyg + Rxg - Ryg) / 2.f;
- }
-
- old_y1[0][k] = sanitize_denormal(old_y1[0][k]);
+ }
+
+ old_y1[0][k] = sanitize_denormal(old_y1[0][k]);
old_y1[1][k] = sanitize_denormal(old_y1[1][k]);
- old_yl[0][k] = sanitize_denormal(old_yl[0][k]);
+ old_yl[0][k] = sanitize_denormal(old_yl[0][k]);
old_yl[1][k] = sanitize_denormal(old_yl[1][k]);
-
-
- Ly1 = fmaxf(Lxl, release_coeff * old_y1[0][k]+(1.f-release_coeff)*Lxl);
+
+
+ Ly1 = fmaxf(Lxl, release_coeff * old_y1[0][k]+(1.f-release_coeff)*Lxl);
Lyl = attack_coeff * old_yl[0][k]+(1.f-attack_coeff)*Ly1;
Ly1 = sanitize_denormal(Ly1);
Lyl = sanitize_denormal(Lyl);
-
+
cdb = -Lyl;
Lgain = from_dB(cdb);
-
+
Ry1 = fmaxf(Rxl, release_coeff * old_y1[1][k]+(1.f-release_coeff)*Rxl);
Ryl = attack_coeff * old_yl[1][k]+(1.f-attack_coeff)*Ry1;
Ry1 = sanitize_denormal(Ry1);
Ryl = sanitize_denormal(Ryl);
-
+
cdb = -Ryl;
Rgain = from_dB(cdb);
-
+
if (stereolink == STEREOLINK_MAX)
gainr[k] = fmaxf(Lyl, Ryl);
else
@@ -665,14 +652,14 @@ void ZaMultiCompX2Plugin::run_comp(int k, float inL, float inR, float *outL, flo
*outL *= Lgain;
*outR = inR;
*outR *= Rgain;
-
+
old_yl[0][k] = Lyl;
old_yl[1][k] = Ryl;
old_y1[0][k] = Ly1;
- old_y1[1][k] = Ry1;
+ old_y1[1][k] = Ry1;
}
-void ZaMultiCompX2Plugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZaMultiCompX2Plugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
float srate = d_getSampleRate();
float maxxL = maxL;
@@ -745,14 +732,14 @@ void ZaMultiCompX2Plugin::d_run(float** inputs, float** outputs, uint32_t frames
fil4[1] = run_filter(6, 1, inr);
tmp5[0] = run_filter(7, 0, fil4[0]);
tmp5[1] = run_filter(7, 1, fil4[1]);
- if (tog3)
+ if (tog3)
run_comp(2, tmp5[0], tmp5[1], &outL[2], &outR[2]);
tmp6[0] = tog3 ? outL[2] * from_dB(makeup[2]) : tmp5[0];
tmp6[1] = tog3 ? outR[2] * from_dB(makeup[2]) : tmp5[1];
- outputs[0][i] = outputs[1][i] = 0.f;
+ outputs[0][i] = outputs[1][i] = 0.f;
if (listen1) {
listenmode = 1;
outputs[0][i] += outL[0] * tog1*from_dB(makeup[0])
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
index 5270206..20a5585 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2Plugin.hpp
@@ -70,7 +70,7 @@ public:
paramOutputLevelR,
paramCount
};
-
+
enum States
{
stateReadMeter,
@@ -78,8 +78,6 @@ public:
};
ZaMultiCompX2Plugin();
- ~ZaMultiCompX2Plugin() override;
-
protected:
// -------------------------------------------------------------------
@@ -151,8 +149,7 @@ protected:
void set_hp_coeffs(float fc, float q, float sr, int i, int ch, float gain);
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp
index c0776a6..53cc10e 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp
@@ -1,5 +1,5 @@
/*
- * ZaMultiCompX2 Stereo multiband compressor
+ * ZaMultiCompX2 Stereo multiband compressor
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZaMultiCompX2Plugin.hpp"
#include "ZaMultiCompX2UI.hpp"
-#include <stdio.h>
using DGL::Point;
@@ -38,105 +38,105 @@ ZaMultiCompX2UI::ZaMultiCompX2UI()
fLedRedValue1 = 0.0f;
fLedRedValue2 = 0.0f;
fLedRedValue3 = 0.0f;
- fLedYellowValueL = 0.0f;
- fLedYellowValueR = 0.0f;
+ fLedYellowValueL = 0.0f;
+ fLedYellowValueR = 0.0f;
// knob
Image knobImage(ZaMultiCompX2Artwork::knobData, ZaMultiCompX2Artwork::knobWidth, ZaMultiCompX2Artwork::knobHeight);
- // knob
+ // knob
fKnobAttack = new ImageKnob(this, knobImage);
- fKnobAttack->setPos(24, 43);
+ fKnobAttack->setAbsolutePos(24, 43);
fKnobAttack->setRange(0.1f, 200.0f);
- fKnobAttack->setLogScale(true);
+ fKnobAttack->setUsingLogScale(true);
fKnobAttack->setDefault(10.0f);
fKnobAttack->setStep(0.1f);
fKnobAttack->setRotationAngle(240);
fKnobAttack->setCallback(this);
fKnobRelease = new ImageKnob(this, knobImage);
- fKnobRelease->setPos(108, 43);
+ fKnobRelease->setAbsolutePos(108, 43);
fKnobRelease->setRange(50.0f, 500.0f);
fKnobRelease->setDefault(80.0f);
fKnobRelease->setRotationAngle(240);
fKnobRelease->setCallback(this);
fKnobThresh3 = new ImageKnob(this, knobImage);
- fKnobThresh3->setPos(94.5, 99);
+ fKnobThresh3->setAbsolutePos(94.5, 99);
fKnobThresh3->setRange(-60.0f, 0.0f);
fKnobThresh3->setDefault(-16.0f);
fKnobThresh3->setRotationAngle(240);
fKnobThresh3->setCallback(this);
fKnobThresh2 = new ImageKnob(this, knobImage);
- fKnobThresh2->setPos(94.5, 150);
+ fKnobThresh2->setAbsolutePos(94.5, 150);
fKnobThresh2->setRange(-60.0f, 0.0f);
fKnobThresh2->setDefault(-18.0f);
fKnobThresh2->setRotationAngle(240);
fKnobThresh2->setCallback(this);
fKnobThresh1 = new ImageKnob(this, knobImage);
- fKnobThresh1->setPos(94.5, 201);
+ fKnobThresh1->setAbsolutePos(94.5, 201);
fKnobThresh1->setRange(-60.0f, 0.0f);
fKnobThresh1->setDefault(-20.0f);
fKnobThresh1->setRotationAngle(240);
fKnobThresh1->setCallback(this);
fKnobRatio = new ImageKnob(this, knobImage);
- fKnobRatio->setPos(191.5, 43);
+ fKnobRatio->setAbsolutePos(191.5, 43);
fKnobRatio->setRange(1.0f, 20.0f);
fKnobRatio->setDefault(4.0f);
fKnobRatio->setRotationAngle(240);
fKnobRatio->setCallback(this);
fKnobKnee = new ImageKnob(this, knobImage);
- fKnobKnee->setPos(273, 43);
+ fKnobKnee->setAbsolutePos(273, 43);
fKnobKnee->setRange(0.0f, 8.0f);
fKnobKnee->setDefault(0.0f);
fKnobKnee->setRotationAngle(240);
fKnobKnee->setCallback(this);
fKnobGlobalGain = new ImageKnob(this, knobImage);
- fKnobGlobalGain->setPos(427.3, 43);
+ fKnobGlobalGain->setAbsolutePos(427.3, 43);
fKnobGlobalGain->setRange(-30.0f, 30.0f);
fKnobGlobalGain->setDefault(0.0f);
fKnobGlobalGain->setRotationAngle(240);
fKnobGlobalGain->setCallback(this);
fKnobXover2 = new ImageKnob(this, knobImage);
- fKnobXover2->setPos(23, 121);
+ fKnobXover2->setAbsolutePos(23, 121);
fKnobXover2->setRange(1400.f, 14000.f);
- fKnobXover2->setLogScale(true);
+ fKnobXover2->setUsingLogScale(true);
fKnobXover2->setDefault(1400.f);
fKnobXover2->setStep(5.f);
fKnobXover2->setRotationAngle(240);
fKnobXover2->setCallback(this);
fKnobXover1 = new ImageKnob(this, knobImage);
- fKnobXover1->setPos(23, 175.5);
+ fKnobXover1->setAbsolutePos(23, 175.5);
fKnobXover1->setRange(20.0f, 1400.0f);
- fKnobXover1->setLogScale(true);
+ fKnobXover1->setUsingLogScale(true);
fKnobXover1->setDefault(250.0f);
fKnobXover1->setStep(1.f);
fKnobXover1->setRotationAngle(240);
fKnobXover1->setCallback(this);
fKnobMakeup3 = new ImageKnob(this, knobImage);
- fKnobMakeup3->setPos(167.75, 99.5);
+ fKnobMakeup3->setAbsolutePos(167.75, 99.5);
fKnobMakeup3->setRange(0.0f, 30.0f);
fKnobMakeup3->setDefault(0.0f);
fKnobMakeup3->setRotationAngle(240);
fKnobMakeup3->setCallback(this);
fKnobMakeup2 = new ImageKnob(this, knobImage);
- fKnobMakeup2->setPos(167.75, 150.25);
+ fKnobMakeup2->setAbsolutePos(167.75, 150.25);
fKnobMakeup2->setRange(0.0f, 30.0f);
fKnobMakeup2->setDefault(0.0f);
fKnobMakeup2->setRotationAngle(240);
fKnobMakeup2->setCallback(this);
fKnobMakeup1 = new ImageKnob(this, knobImage);
- fKnobMakeup1->setPos(167.75, 201.4);
+ fKnobMakeup1->setAbsolutePos(167.75, 201.4);
fKnobMakeup1->setRange(0.0f, 30.0f);
fKnobMakeup1->setDefault(0.0f);
fKnobMakeup1->setRotationAngle(240);
@@ -149,46 +149,46 @@ ZaMultiCompX2UI::ZaMultiCompX2UI()
Point<int> togglePosStart(247,108);
- fToggleBypass3 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass3->setPos(togglePosStart);
+ fToggleBypass3 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass3->setAbsolutePos(togglePosStart);
fToggleBypass3->setCallback(this);
togglePosStart.setY(158);
- fToggleBypass2 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass2->setPos(togglePosStart);
+ fToggleBypass2 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass2->setAbsolutePos(togglePosStart);
fToggleBypass2->setCallback(this);
togglePosStart.setY(209);
- fToggleBypass1 = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleBypass1->setPos(togglePosStart);
+ fToggleBypass1 = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleBypass1->setAbsolutePos(togglePosStart);
fToggleBypass1->setCallback(this);
togglePosStart.setX(278);
togglePosStart.setY(113);
- fToggleListen3 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen3->setPos(togglePosStart);
+ fToggleListen3 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen3->setAbsolutePos(togglePosStart);
fToggleListen3->setCallback(this);
togglePosStart.setY(164);
- fToggleListen2 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen2->setPos(togglePosStart);
+ fToggleListen2 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen2->setAbsolutePos(togglePosStart);
fToggleListen2->setCallback(this);
togglePosStart.setY(214);
- fToggleListen1 = new ImageToggle(this, toggleoffhImage, toggleoffhImage, toggleonhImage);
- fToggleListen1->setPos(togglePosStart);
+ fToggleListen1 = new ImageToggle(this, toggleoffhImage, toggleonhImage);
+ fToggleListen1->setAbsolutePos(togglePosStart);
fToggleListen1->setCallback(this);
togglePosStart.setX(285.5);
togglePosStart.setY(254);
- fToggleStereo = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleStereo->setPos(togglePosStart);
+ fToggleStereo = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleStereo->setAbsolutePos(togglePosStart);
fToggleStereo->setCallback(this);
fCanvasArea.setPos(540, 32);
@@ -215,30 +215,8 @@ ZaMultiCompX2UI::ZaMultiCompX2UI()
}
}
-}
-
-ZaMultiCompX2UI::~ZaMultiCompX2UI()
-{
- delete fKnobAttack;
- delete fKnobRelease;
- delete fKnobThresh1;
- delete fKnobThresh2;
- delete fKnobThresh3;
- delete fKnobRatio;
- delete fKnobKnee;
- delete fKnobGlobalGain;
- delete fKnobMakeup1;
- delete fKnobMakeup2;
- delete fKnobMakeup3;
- delete fKnobXover1;
- delete fKnobXover2;
- delete fToggleBypass1;
- delete fToggleBypass2;
- delete fToggleBypass3;
- delete fToggleListen1;
- delete fToggleListen2;
- delete fToggleListen3;
- delete fToggleStereo;
+ // set default values
+ d_programChanged(0);
}
void ZaMultiCompX2UI::compcurve(float in, int k, float *outx, float* outy) {
@@ -277,16 +255,16 @@ void ZaMultiCompX2UI::calc_compcurves() {
compcurve(x2, k, &compx[k][i], &compy[k][i]);
compx[k][i] = fCanvasArea.getX() + compx[k][i]*fCanvasArea.getWidth();
compy[k][i] = fCanvasArea.getY() + (1.-compy[k][i])*fCanvasArea.getHeight();
- }
+ }
//dot follows curve:
//compcurve(from_dB(-ui->gainred), k, &dotx[0], &doty[0]);
//dotx[0] = -(1-dotx[0])*280. + 280.;
- //doty[0] = (1.-doty[0])*280.;
-
+ //doty[0] = (1.-doty[0])*280.;
+
//dot follows centre:
//dotx[0] = -(1.- from_dB(-gainred))*280. + 280.;
//doty[0] = (1.- from_dB(-gainred))*280.;
-
+
//printf("gainr=%.2f x=%.2f y=%.2f\n",ui->gainred, ui->dotx[0], ui->doty[0]);
}
}
@@ -692,13 +670,13 @@ void ZaMultiCompX2UI::onDisplay()
else numRedLeds3 = 0;
for (int i=numRedLeds1; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed1StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed1StaticY);
for (int i=numRedLeds2; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed2StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed2StaticY);
for (int i=numRedLeds3; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLed3StaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLed3StaticY);
if (fLedYellowValueL >= 20.f)
numYellowLedsL = 19;
@@ -742,14 +720,14 @@ void ZaMultiCompX2UI::onDisplay()
if (numYellowLedsL > 12) {
for (int i=12; i<numYellowLedsL; ++i)
- fLedRedImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
+ fLedRedImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
for (int i=0; i<12; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
} else {
for (int i=0; i<numYellowLedsL; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYL);
}
-
+
if (fLedYellowValueR >= 20.f)
numYellowLedsR = 19;
else if (fLedYellowValueR >= 10.f)
@@ -792,12 +770,12 @@ void ZaMultiCompX2UI::onDisplay()
if (numYellowLedsR > 12) {
for (int i=12; i<numYellowLedsR; ++i)
- fLedRedImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
+ fLedRedImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
for (int i=0; i<12; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
} else {
for (int i=0; i<numYellowLedsR; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticYR);
}
/*
// TESTING - remove later
diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp
index 67ffcb1..44dcb19 100644
--- a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp
+++ b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp
@@ -1,5 +1,5 @@
/*
- * ZaMultiCompX2 stereo multiband compressor
+ * ZaMultiCompX2 stereo multiband compressor
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -20,14 +20,13 @@
#include "DistrhoUI.hpp"
-#include "Geometry.hpp"
#include "ImageKnob.hpp"
#include "ImageToggle.hpp"
+#include "ZaMultiCompX2Artwork.hpp"
+
#define COMPOINTS 1000
#define MAX_COMP 3
-#include "ZaMultiCompX2Artwork.hpp"
-#include "ZaMultiCompX2Plugin.hpp"
using DGL::Image;
using DGL::ImageKnob;
@@ -38,23 +37,22 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZaMultiCompX2UI : public UI,
- public ImageKnob::Callback,
- public ImageToggle::Callback
+ public ImageKnob::Callback,
+ public ImageToggle::Callback
{
public:
ZaMultiCompX2UI();
- ~ZaMultiCompX2UI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZaMultiCompX2Artwork::zamulticompx2Width;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZaMultiCompX2Artwork::zamulticompx2Height;
}
@@ -100,26 +98,14 @@ sanitize_denormal(double value) {
private:
Image fImgBackground;
- ImageKnob* fKnobAttack;
- ImageKnob* fKnobRelease;
- ImageKnob* fKnobThresh1;
- ImageKnob* fKnobThresh2;
- ImageKnob* fKnobThresh3;
- ImageKnob* fKnobRatio;
- ImageKnob* fKnobKnee;
- ImageKnob* fKnobGlobalGain;
- ImageKnob* fKnobMakeup1;
- ImageKnob* fKnobMakeup2;
- ImageKnob* fKnobMakeup3;
- ImageKnob* fKnobXover1;
- ImageKnob* fKnobXover2;
- ImageToggle* fToggleBypass1;
- ImageToggle* fToggleBypass2;
- ImageToggle* fToggleBypass3;
- ImageToggle* fToggleListen1;
- ImageToggle* fToggleListen2;
- ImageToggle* fToggleListen3;
- ImageToggle* fToggleStereo;
+ ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease;
+ ScopedPointer<ImageKnob> fKnobThresh1, fKnobThresh2, fKnobThresh3;
+ ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobGlobalGain;
+ ScopedPointer<ImageKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3;
+ ScopedPointer<ImageKnob> fKnobXover1, fKnobXover2;
+ ScopedPointer<ImageToggle> fToggleBypass1, fToggleBypass2, fToggleBypass3;
+ ScopedPointer<ImageToggle> fToggleListen1, fToggleListen2, fToggleListen3;
+ ScopedPointer<ImageToggle> fToggleStereo;
Image fLedRedImg;
float fLedRedValue1;
diff --git a/plugins/ZamComp/Makefile b/plugins/ZamComp/Makefile
index 12ab20a..16fa761 100644
--- a/plugins/ZamComp/Makefile
+++ b/plugins/ZamComp/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZamCompUI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZamComp/ZamCompPlugin.cpp b/plugins/ZamComp/ZamCompPlugin.cpp
index 9c5ec34..0b13b5a 100644
--- a/plugins/ZamComp/ZamCompPlugin.cpp
+++ b/plugins/ZamComp/ZamCompPlugin.cpp
@@ -26,13 +26,6 @@ ZamCompPlugin::ZamCompPlugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZamCompPlugin::~ZamCompPlugin()
-{
}
// -----------------------------------------------------------------------
@@ -204,10 +197,6 @@ void ZamCompPlugin::d_setProgram(uint32_t index)
ratio = 4.0f;
thresdb = 0.0f;
makeup = 0.0f;
- gainr = 0.0f;
- outlevel = -45.f;
-
- /* Default variable values */
/* reset filter values */
d_activate();
@@ -218,14 +207,12 @@ void ZamCompPlugin::d_setProgram(uint32_t index)
void ZamCompPlugin::d_activate()
{
+ gainr = 0.0f;
+ outlevel = -45.f;
+ old_yl = old_y1 = 0.0f;
}
-void ZamCompPlugin::d_deactivate()
-{
- // all values to zero
-}
-
-void ZamCompPlugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZamCompPlugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
float srate = d_getSampleRate();
float width=(knee-0.99f)*6.f;
@@ -261,7 +248,7 @@ void ZamCompPlugin::d_run(float** inputs, float** outputs, uint32_t frames)
yl = attack_coeff * old_yl+(1.f-attack_coeff)*y1;
y1 = sanitize_denormal(y1);
yl = sanitize_denormal(yl);
-
+
cdb = -yl;
gain = from_dB(cdb);
@@ -269,7 +256,7 @@ void ZamCompPlugin::d_run(float** inputs, float** outputs, uint32_t frames)
outputs[0][i] = inputs[0][i];
outputs[0][i] *= gain * from_dB(makeup);
-
+
max = (fabsf(outputs[0][i]) > max) ? fabsf(outputs[0][i]) : sanitize_denormal(max);
old_yl = yl;
diff --git a/plugins/ZamComp/ZamCompPlugin.hpp b/plugins/ZamComp/ZamCompPlugin.hpp
index 47b148a..ea521a2 100644
--- a/plugins/ZamComp/ZamCompPlugin.hpp
+++ b/plugins/ZamComp/ZamCompPlugin.hpp
@@ -1,5 +1,5 @@
/*
- * ZamComp mono compressor
+ * ZamComp mono compressor
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -41,7 +41,6 @@ public:
};
ZamCompPlugin();
- ~ZamCompPlugin() override;
protected:
// -------------------------------------------------------------------
@@ -75,15 +74,15 @@ protected:
// -------------------------------------------------------------------
// Init
- void d_initParameter(uint32_t index, Parameter& parameter) ;
- void d_initProgramName(uint32_t index, d_string& programName) ;
+ void d_initParameter(uint32_t index, Parameter& parameter) override;
+ void d_initProgramName(uint32_t index, d_string& programName) override;
// -------------------------------------------------------------------
// Internal data
float d_getParameterValue(uint32_t index) const override;
void d_setParameterValue(uint32_t index, float value) override;
- void d_setProgram(uint32_t index) ;
+ void d_setProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
@@ -106,8 +105,7 @@ protected:
}
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
diff --git a/plugins/ZamComp/ZamCompUI.cpp b/plugins/ZamComp/ZamCompUI.cpp
index 8a6f0a9..48b4921 100644
--- a/plugins/ZamComp/ZamCompUI.cpp
+++ b/plugins/ZamComp/ZamCompUI.cpp
@@ -1,6 +1,6 @@
/*
* ZamComp mono compressor
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -15,10 +15,9 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZamCompPlugin.hpp"
#include "ZamCompUI.hpp"
-using DGL::Point;
-
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
@@ -35,23 +34,25 @@ ZamCompUI::ZamCompUI()
// led values
fLedRedValue = 0.0f;
- fLedYellowValue = 0.0f;
+ fLedYellowValue = 0.0f;
// knob
Image knobImage(ZamCompArtwork::knobData, ZamCompArtwork::knobWidth, ZamCompArtwork::knobHeight);
- // knob
+ // knob
fKnobAttack = new ImageKnob(this, knobImage);
- fKnobAttack->setPos(24, 45);
+ fKnobAttack->setAbsolutePos(24, 45);
+ fKnobAttack->setId(ZamCompPlugin::paramAttack);
fKnobAttack->setRange(0.1f, 200.0f);
fKnobAttack->setStep(0.1f);
- fKnobAttack->setLogScale(true);
+ fKnobAttack->setUsingLogScale(true);
fKnobAttack->setDefault(10.0f);
fKnobAttack->setRotationAngle(240);
fKnobAttack->setCallback(this);
fKnobRelease = new ImageKnob(this, knobImage);
- fKnobRelease->setPos(108, 45);
+ fKnobRelease->setAbsolutePos(108, 45);
+ fKnobRelease->setId(ZamCompPlugin::paramRelease);
fKnobRelease->setRange(50.0f, 500.0f);
fKnobRelease->setStep(1.0f);
fKnobRelease->setDefault(80.0f);
@@ -59,7 +60,8 @@ ZamCompUI::ZamCompUI()
fKnobRelease->setCallback(this);
fKnobThresh = new ImageKnob(this, knobImage);
- fKnobThresh->setPos(191.5, 45);
+ fKnobThresh->setAbsolutePos(191.5, 45);
+ fKnobThresh->setId(ZamCompPlugin::paramThresh);
fKnobThresh->setRange(-60.0f, 0.0f);
fKnobThresh->setStep(1.0f);
fKnobThresh->setDefault(0.0f);
@@ -67,7 +69,8 @@ ZamCompUI::ZamCompUI()
fKnobThresh->setCallback(this);
fKnobRatio = new ImageKnob(this, knobImage);
- fKnobRatio->setPos(270, 45);
+ fKnobRatio->setAbsolutePos(270, 45);
+ fKnobRatio->setId(ZamCompPlugin::paramRatio);
fKnobRatio->setRange(1.0f, 20.0f);
fKnobRatio->setStep(0.1f);
fKnobRatio->setDefault(4.0f);
@@ -75,7 +78,8 @@ ZamCompUI::ZamCompUI()
fKnobRatio->setCallback(this);
fKnobKnee = new ImageKnob(this, knobImage);
- fKnobKnee->setPos(348.5, 45);
+ fKnobKnee->setAbsolutePos(348.5, 45);
+ fKnobKnee->setId(ZamCompPlugin::paramKnee);
fKnobKnee->setRange(0.0f, 8.0f);
fKnobKnee->setStep(0.1f);
fKnobKnee->setDefault(0.0f);
@@ -83,22 +87,16 @@ ZamCompUI::ZamCompUI()
fKnobKnee->setCallback(this);
fKnobMakeup = new ImageKnob(this, knobImage);
- fKnobMakeup->setPos(427.3, 45);
+ fKnobMakeup->setAbsolutePos(427.3, 45);
+ fKnobMakeup->setId(ZamCompPlugin::paramMakeup);
fKnobMakeup->setRange(-30.0f, 30.0f);
fKnobMakeup->setStep(1.0f);
fKnobMakeup->setDefault(0.0f);
fKnobMakeup->setRotationAngle(240);
fKnobMakeup->setCallback(this);
-}
-ZamCompUI::~ZamCompUI()
-{
- delete fKnobAttack;
- delete fKnobRelease;
- delete fKnobThresh;
- delete fKnobRatio;
- delete fKnobKnee;
- delete fKnobMakeup;
+ // set default values
+ d_programChanged(0);
}
// -----------------------------------------------------------------------
@@ -148,14 +146,13 @@ void ZamCompUI::d_programChanged(uint32_t index)
if (index != 0)
return;
- /* Default values
- fKnobAttack->setDefault(10.0f);
- fKnobRelease->setDefault(80.0f);
- fKnobThresh->setDefault(0.0f);
- fKnobRatio->setDefault(4.0f);
- fKnobKnee->setDefault(0.0f);
- fKnobMakeup->setDefault(0.0f);
- */
+ // Default values
+ fKnobAttack->setValue(10.0f);
+ fKnobRelease->setValue(80.0f);
+ fKnobThresh->setValue(0.0f);
+ fKnobRatio->setValue(4.0f);
+ fKnobKnee->setValue(0.0f);
+ fKnobMakeup->setValue(0.0f);
}
// -----------------------------------------------------------------------
@@ -163,50 +160,17 @@ void ZamCompUI::d_programChanged(uint32_t index)
void ZamCompUI::imageKnobDragStarted(ImageKnob* knob)
{
- if (knob == fKnobAttack)
- d_editParameter(ZamCompPlugin::paramAttack, true);
- else if (knob == fKnobRelease)
- d_editParameter(ZamCompPlugin::paramRelease, true);
- else if (knob == fKnobThresh)
- d_editParameter(ZamCompPlugin::paramThresh, true);
- else if (knob == fKnobRatio)
- d_editParameter(ZamCompPlugin::paramRatio, true);
- else if (knob == fKnobKnee)
- d_editParameter(ZamCompPlugin::paramKnee, true);
- else if (knob == fKnobMakeup)
- d_editParameter(ZamCompPlugin::paramMakeup, true);
+ d_editParameter(knob->getId(), true);
}
void ZamCompUI::imageKnobDragFinished(ImageKnob* knob)
{
- if (knob == fKnobAttack)
- d_editParameter(ZamCompPlugin::paramAttack, false);
- else if (knob == fKnobRelease)
- d_editParameter(ZamCompPlugin::paramRelease, false);
- else if (knob == fKnobThresh)
- d_editParameter(ZamCompPlugin::paramThresh, false);
- else if (knob == fKnobRatio)
- d_editParameter(ZamCompPlugin::paramRatio, false);
- else if (knob == fKnobKnee)
- d_editParameter(ZamCompPlugin::paramKnee, false);
- else if (knob == fKnobMakeup)
- d_editParameter(ZamCompPlugin::paramMakeup, false);
+ d_editParameter(knob->getId(), false);
}
void ZamCompUI::imageKnobValueChanged(ImageKnob* knob, float value)
{
- if (knob == fKnobAttack)
- d_setParameterValue(ZamCompPlugin::paramAttack, value);
- else if (knob == fKnobRelease)
- d_setParameterValue(ZamCompPlugin::paramRelease, value);
- else if (knob == fKnobThresh)
- d_setParameterValue(ZamCompPlugin::paramThresh, value);
- else if (knob == fKnobRatio)
- d_setParameterValue(ZamCompPlugin::paramRatio, value);
- else if (knob == fKnobKnee)
- d_setParameterValue(ZamCompPlugin::paramKnee, value);
- else if (knob == fKnobMakeup)
- d_setParameterValue(ZamCompPlugin::paramMakeup, value);
+ d_setParameterValue(knob->getId(), value);
}
void ZamCompUI::onDisplay()
@@ -250,7 +214,7 @@ void ZamCompUI::onDisplay()
else numRedLeds = 0;
for (int i=numRedLeds; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLedStaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLedStaticY);
if (fLedYellowValue >= 20.f)
numYellowLeds = 19;
@@ -294,12 +258,12 @@ void ZamCompUI::onDisplay()
if (numYellowLeds > 12) {
for (int i=12; i<numYellowLeds; ++i)
- fLedRedImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedRedImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
for (int i=0; i<12; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
} else {
for (int i=0; i<numYellowLeds; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
}
}
diff --git a/plugins/ZamComp/ZamCompUI.hpp b/plugins/ZamComp/ZamCompUI.hpp
index e5faa14..a9e7f75 100644
--- a/plugins/ZamComp/ZamCompUI.hpp
+++ b/plugins/ZamComp/ZamCompUI.hpp
@@ -1,6 +1,6 @@
/*
* ZamComp mono compressor
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -23,7 +23,6 @@
#include "ImageKnob.hpp"
#include "ZamCompArtwork.hpp"
-#include "ZamCompPlugin.hpp"
using DGL::Image;
using DGL::ImageKnob;
@@ -37,18 +36,17 @@ class ZamCompUI : public UI,
{
public:
ZamCompUI();
- ~ZamCompUI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZamCompArtwork::zamcompWidth;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZamCompArtwork::zamcompHeight;
}
@@ -70,12 +68,8 @@ protected:
private:
Image fImgBackground;
- ImageKnob* fKnobAttack;
- ImageKnob* fKnobRelease;
- ImageKnob* fKnobThresh;
- ImageKnob* fKnobRatio;
- ImageKnob* fKnobKnee;
- ImageKnob* fKnobMakeup;
+ ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh;
+ ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobMakeup;
Image fLedRedImg;
float fLedRedValue;
diff --git a/plugins/ZamCompX2/Makefile b/plugins/ZamCompX2/Makefile
index f68deaf..30f8647 100644
--- a/plugins/ZamCompX2/Makefile
+++ b/plugins/ZamCompX2/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZamCompX2UI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZamCompX2/ZamCompX2Plugin.cpp b/plugins/ZamCompX2/ZamCompX2Plugin.cpp
index 951e095..5165c98 100644
--- a/plugins/ZamCompX2/ZamCompX2Plugin.cpp
+++ b/plugins/ZamCompX2/ZamCompX2Plugin.cpp
@@ -26,13 +26,6 @@ ZamCompX2Plugin::ZamCompX2Plugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZamCompX2Plugin::~ZamCompX2Plugin()
-{
}
// -----------------------------------------------------------------------
@@ -219,11 +212,7 @@ void ZamCompX2Plugin::d_setProgram(uint32_t index)
ratio = 4.0f;
thresdb = 0.0f;
makeup = 0.0f;
- gainred = 0.0f;
stereolink = 1.0f;
- outlevel = -45.0f;
-
- /* Default variable values */
/* reset filter values */
d_activate();
@@ -234,15 +223,12 @@ void ZamCompX2Plugin::d_setProgram(uint32_t index)
void ZamCompX2Plugin::d_activate()
{
- oldL_yl = oldL_y1 = oldR_yl = oldR_y1 = 0.f;
-}
-
-void ZamCompX2Plugin::d_deactivate()
-{
- // all values to zero
+ gainred = 0.0f;
+ outlevel = -45.0f;
+ oldL_yl = oldL_y1 = oldR_yl = oldR_y1 = 0.f;
}
-void ZamCompX2Plugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZamCompX2Plugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
float srate = d_getSampleRate();
float width=(knee-0.99f)*6.f;
@@ -321,7 +307,7 @@ void ZamCompX2Plugin::d_run(float** inputs, float** outputs, uint32_t frames)
outputs[0][i] *= Lgain * from_dB(makeup);
outputs[1][i] = inputs[1][i];
outputs[1][i] *= Rgain * from_dB(makeup);
-
+
max = (fabsf(outputs[0][i]) > max) ? fabsf(outputs[0][i]) : sanitize_denormal(max);
max = (fabsf(outputs[1][i]) > max) ? fabsf(outputs[1][i]) : sanitize_denormal(max);
diff --git a/plugins/ZamCompX2/ZamCompX2Plugin.hpp b/plugins/ZamCompX2/ZamCompX2Plugin.hpp
index e18bcec..ba8c21d 100644
--- a/plugins/ZamCompX2/ZamCompX2Plugin.hpp
+++ b/plugins/ZamCompX2/ZamCompX2Plugin.hpp
@@ -46,7 +46,6 @@ public:
};
ZamCompX2Plugin();
- ~ZamCompX2Plugin() override;
protected:
// -------------------------------------------------------------------
@@ -80,15 +79,15 @@ protected:
// -------------------------------------------------------------------
// Init
- void d_initParameter(uint32_t index, Parameter& parameter) ;
- void d_initProgramName(uint32_t index, d_string& programName) ;
+ void d_initParameter(uint32_t index, Parameter& parameter) override;
+ void d_initProgramName(uint32_t index, d_string& programName) override;
// -------------------------------------------------------------------
// Internal data
float d_getParameterValue(uint32_t index) const override;
void d_setParameterValue(uint32_t index, float value) override;
- void d_setProgram(uint32_t index) ;
+ void d_setProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
@@ -111,8 +110,7 @@ protected:
}
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
diff --git a/plugins/ZamCompX2/ZamCompX2UI.cpp b/plugins/ZamCompX2/ZamCompX2UI.cpp
index 02538f3..017f2d7 100644
--- a/plugins/ZamCompX2/ZamCompX2UI.cpp
+++ b/plugins/ZamCompX2/ZamCompX2UI.cpp
@@ -1,5 +1,5 @@
/*
- * ZamCompX2 Stereo compressor
+ * ZamCompX2 Stereo compressor
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -15,6 +15,7 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZamCompX2Plugin.hpp"
#include "ZamCompX2UI.hpp"
using DGL::Point;
@@ -35,23 +36,25 @@ ZamCompX2UI::ZamCompX2UI()
// led values
fLedRedValue = 0.0f;
- fLedYellowValue = 0.0f;
+ fLedYellowValue = 0.0f;
// knob
Image knobImage(ZamCompX2Artwork::knobData, ZamCompX2Artwork::knobWidth, ZamCompX2Artwork::knobHeight);
- // knob
+ // knob
fKnobAttack = new ImageKnob(this, knobImage);
- fKnobAttack->setPos(24, 45);
+ fKnobAttack->setAbsolutePos(24, 45);
+ fKnobAttack->setId(ZamCompX2Plugin::paramAttack);
fKnobAttack->setRange(0.1f, 200.0f);
fKnobAttack->setStep(0.1f);
- fKnobAttack->setLogScale(true);
+ fKnobAttack->setUsingLogScale(true);
fKnobAttack->setDefault(10.0f);
fKnobAttack->setRotationAngle(240);
fKnobAttack->setCallback(this);
fKnobRelease = new ImageKnob(this, knobImage);
- fKnobRelease->setPos(108, 45);
+ fKnobRelease->setAbsolutePos(108, 45);
+ fKnobRelease->setId(ZamCompX2Plugin::paramRelease);
fKnobRelease->setRange(50.0f, 500.0f);
fKnobRelease->setStep(1.0f);
fKnobRelease->setDefault(80.0f);
@@ -59,7 +62,8 @@ ZamCompX2UI::ZamCompX2UI()
fKnobRelease->setCallback(this);
fKnobThresh = new ImageKnob(this, knobImage);
- fKnobThresh->setPos(191.5, 45);
+ fKnobThresh->setAbsolutePos(191.5, 45);
+ fKnobThresh->setId(ZamCompX2Plugin::paramThresh);
fKnobThresh->setRange(-60.0f, 0.0f);
fKnobThresh->setStep(1.0f);
fKnobThresh->setDefault(0.0f);
@@ -67,7 +71,8 @@ ZamCompX2UI::ZamCompX2UI()
fKnobThresh->setCallback(this);
fKnobRatio = new ImageKnob(this, knobImage);
- fKnobRatio->setPos(270, 45);
+ fKnobRatio->setAbsolutePos(270, 45);
+ fKnobRatio->setId(ZamCompX2Plugin::paramRatio);
fKnobRatio->setRange(1.0f, 20.0f);
fKnobRatio->setStep(0.1f);
fKnobRatio->setDefault(4.0f);
@@ -75,7 +80,8 @@ ZamCompX2UI::ZamCompX2UI()
fKnobRatio->setCallback(this);
fKnobKnee = new ImageKnob(this, knobImage);
- fKnobKnee->setPos(348.5, 45);
+ fKnobKnee->setAbsolutePos(348.5, 45);
+ fKnobKnee->setId(ZamCompX2Plugin::paramKnee);
fKnobKnee->setRange(0.0f, 8.0f);
fKnobKnee->setStep(0.1f);
fKnobKnee->setDefault(0.0f);
@@ -83,7 +89,8 @@ ZamCompX2UI::ZamCompX2UI()
fKnobKnee->setCallback(this);
fKnobMakeup = new ImageKnob(this, knobImage);
- fKnobMakeup->setPos(427.3, 45);
+ fKnobMakeup->setAbsolutePos(427.3, 45);
+ fKnobMakeup->setId(ZamCompX2Plugin::paramMakeup);
fKnobMakeup->setRange(-30.0f, 30.0f);
fKnobMakeup->setStep(1.0f);
fKnobMakeup->setDefault(0.0f);
@@ -93,23 +100,13 @@ ZamCompX2UI::ZamCompX2UI()
Image toggleonImage(ZamCompX2Artwork::toggleonData, ZamCompX2Artwork::toggleonWidth, ZamCompX2Artwork::toggleonHeight);
Image toggleoffImage(ZamCompX2Artwork::toggleoffData, ZamCompX2Artwork::toggleoffWidth, ZamCompX2Artwork::toggleoffHeight);
- Point<int> togglePosStart(652,72);
-
- fToggleStereo = new ImageToggle(this, toggleoffImage, toggleoffImage, toggleonImage);
- fToggleStereo->setPos(togglePosStart);
+ fToggleStereo = new ImageToggle(this, toggleoffImage, toggleonImage);
+ fToggleStereo->setAbsolutePos(652, 72);
+ fToggleStereo->setId(ZamCompX2Plugin::paramStereo);
fToggleStereo->setCallback(this);
-}
-
-ZamCompX2UI::~ZamCompX2UI()
-{
- delete fKnobAttack;
- delete fKnobRelease;
- delete fKnobThresh;
- delete fKnobRatio;
- delete fKnobKnee;
- delete fKnobMakeup;
- delete fToggleStereo;
+ // set default values
+ d_programChanged(0);
}
// -----------------------------------------------------------------------
@@ -152,8 +149,8 @@ void ZamCompX2UI::d_parameterChanged(uint32_t index, float value)
}
break;
case ZamCompX2Plugin::paramStereo:
- //fToggleStereo->setValue((int)value);
- break;
+ fToggleStereo->setValue((int)value);
+ break;
}
}
@@ -163,15 +160,13 @@ void ZamCompX2UI::d_programChanged(uint32_t index)
return;
// Default values
- /*
fKnobAttack->setValue(10.0f);
fKnobRelease->setValue(80.0f);
fKnobThresh->setValue(0.0f);
fKnobRatio->setValue(4.0f);
fKnobKnee->setValue(0.0f);
fKnobMakeup->setValue(0.0f);
- */
- //fToggleStereo->setValue(1.f);
+ fToggleStereo->setValue(1.0f);
}
// -----------------------------------------------------------------------
@@ -179,58 +174,24 @@ void ZamCompX2UI::d_programChanged(uint32_t index)
void ZamCompX2UI::imageKnobDragStarted(ImageKnob* knob)
{
- if (knob == fKnobAttack)
- d_editParameter(ZamCompX2Plugin::paramAttack, true);
- else if (knob == fKnobRelease)
- d_editParameter(ZamCompX2Plugin::paramRelease, true);
- else if (knob == fKnobThresh)
- d_editParameter(ZamCompX2Plugin::paramThresh, true);
- else if (knob == fKnobRatio)
- d_editParameter(ZamCompX2Plugin::paramRatio, true);
- else if (knob == fKnobKnee)
- d_editParameter(ZamCompX2Plugin::paramKnee, true);
- else if (knob == fKnobMakeup)
- d_editParameter(ZamCompX2Plugin::paramMakeup, true);
+ d_editParameter(knob->getId(), true);
}
void ZamCompX2UI::imageKnobDragFinished(ImageKnob* knob)
{
- if (knob == fKnobAttack)
- d_editParameter(ZamCompX2Plugin::paramAttack, false);
- else if (knob == fKnobRelease)
- d_editParameter(ZamCompX2Plugin::paramRelease, false);
- else if (knob == fKnobThresh)
- d_editParameter(ZamCompX2Plugin::paramThresh, false);
- else if (knob == fKnobRatio)
- d_editParameter(ZamCompX2Plugin::paramRatio, false);
- else if (knob == fKnobKnee)
- d_editParameter(ZamCompX2Plugin::paramKnee, false);
- else if (knob == fKnobMakeup)
- d_editParameter(ZamCompX2Plugin::paramMakeup, false);
+ d_editParameter(knob->getId(), false);
}
void ZamCompX2UI::imageKnobValueChanged(ImageKnob* knob, float value)
{
- if (knob == fKnobAttack)
- d_setParameterValue(ZamCompX2Plugin::paramAttack, value);
- else if (knob == fKnobRelease)
- d_setParameterValue(ZamCompX2Plugin::paramRelease, value);
- else if (knob == fKnobThresh)
- d_setParameterValue(ZamCompX2Plugin::paramThresh, value);
- else if (knob == fKnobRatio)
- d_setParameterValue(ZamCompX2Plugin::paramRatio, value);
- else if (knob == fKnobKnee)
- d_setParameterValue(ZamCompX2Plugin::paramKnee, value);
- else if (knob == fKnobMakeup)
- d_setParameterValue(ZamCompX2Plugin::paramMakeup, value);
+ d_setParameterValue(knob->getId(), value);
}
-void ZamCompX2UI::imageToggleClicked(ImageToggle *toggle, int)
+void ZamCompX2UI::imageToggleClicked(ImageToggle* imageToggle, int)
{
- int flip = !toggle->getValue();
- if (toggle == fToggleStereo) {
+ int flip = !imageToggle->getValue();
+ if (imageToggle == fToggleStereo)
d_setParameterValue(ZamCompX2Plugin::paramStereo, flip);
- }
}
void ZamCompX2UI::onDisplay()
@@ -274,7 +235,7 @@ void ZamCompX2UI::onDisplay()
else numRedLeds = 0;
for (int i=numRedLeds; i>0; --i)
- fLedRedImg.draw(sLedInitialX + (12 - i)*sLedSpacing, sRedLedStaticY);
+ fLedRedImg.drawAt(sLedInitialX + (12 - i)*sLedSpacing, sRedLedStaticY);
if (fLedYellowValue >= 20.f)
numYellowLeds = 19;
@@ -318,12 +279,12 @@ void ZamCompX2UI::onDisplay()
if (numYellowLeds > 12) {
for (int i=12; i<numYellowLeds; ++i)
- fLedRedImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedRedImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
for (int i=0; i<12; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
} else {
for (int i=0; i<numYellowLeds; ++i)
- fLedYellowImg.draw(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
+ fLedYellowImg.drawAt(sLedInitialX + i*sLedSpacing, sYellowLedStaticY);
}
}
diff --git a/plugins/ZamCompX2/ZamCompX2UI.hpp b/plugins/ZamCompX2/ZamCompX2UI.hpp
index 26c7c19..e9601a0 100644
--- a/plugins/ZamCompX2/ZamCompX2UI.hpp
+++ b/plugins/ZamCompX2/ZamCompX2UI.hpp
@@ -1,6 +1,6 @@
/*
- * ZamCompX2 stereo compressor
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * ZamCompX2 stereo compressor
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -24,7 +24,6 @@
#include "ImageToggle.hpp"
#include "ZamCompX2Artwork.hpp"
-#include "ZamCompX2Plugin.hpp"
using DGL::Image;
using DGL::ImageKnob;
@@ -35,23 +34,22 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZamCompX2UI : public UI,
- public ImageKnob::Callback,
- public ImageToggle::Callback
+ public ImageKnob::Callback,
+ public ImageToggle::Callback
{
public:
ZamCompX2UI();
- ~ZamCompX2UI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZamCompX2Artwork::zamcompx2Width;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZamCompX2Artwork::zamcompx2Height;
}
@@ -68,21 +66,17 @@ protected:
void imageKnobDragStarted(ImageKnob* knob) override;
void imageKnobDragFinished(ImageKnob* knob) override;
void imageKnobValueChanged(ImageKnob* knob, float value) override;
- void imageToggleClicked(ImageToggle *toggle, int button) override;
+ void imageToggleClicked(ImageToggle* imageToggle, int button) override;
void onDisplay() override;
private:
Image fImgBackground;
- ImageKnob* fKnobAttack;
- ImageKnob* fKnobRelease;
- ImageKnob* fKnobThresh;
- ImageKnob* fKnobRatio;
- ImageKnob* fKnobKnee;
- ImageKnob* fKnobMakeup;
-
- Image fImgToggleSlider;
- ImageToggle* fToggleStereo;
+ ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh;
+ ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobMakeup;
+
+ Image fImgSwitchSlider;
+ ScopedPointer<ImageToggle> fToggleStereo;
Image fLedRedImg;
float fLedRedValue;
diff --git a/plugins/ZamEQ2/Makefile b/plugins/ZamEQ2/Makefile
index a89a89f..12f3148 100644
--- a/plugins/ZamEQ2/Makefile
+++ b/plugins/ZamEQ2/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZamEQ2UI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZamEQ2/ZamEQ2Plugin.cpp b/plugins/ZamEQ2/ZamEQ2Plugin.cpp
index 05e2d5d..a704c0a 100644
--- a/plugins/ZamEQ2/ZamEQ2Plugin.cpp
+++ b/plugins/ZamEQ2/ZamEQ2Plugin.cpp
@@ -26,13 +26,6 @@ ZamEQ2Plugin::ZamEQ2Plugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZamEQ2Plugin::~ZamEQ2Plugin()
-{
}
// -----------------------------------------------------------------------
@@ -291,12 +284,6 @@ void ZamEQ2Plugin::d_activate()
}
}
-void ZamEQ2Plugin::d_deactivate()
-{
- // all values to zero
-}
-
-
void ZamEQ2Plugin::lowshelf(int i, int ch, float srate, float fc, float g)
{
float k, v0;
@@ -307,7 +294,7 @@ void ZamEQ2Plugin::lowshelf(int i, int ch, float srate, float fc, float g)
if (g < 0.f) {
// LF cut
float denom = v0 + sqrt(2. * v0)*k + k*k;
- b0[ch][i] = v0 * (1. + sqrt(2.)*k + k*k) / denom;
+ b0[ch][i] = v0 * (1. + sqrt(2.)*k + k*k) / denom;
b1[ch][i] = 2. * v0*(k*k - 1.) / denom;
b2[ch][i] = v0 * (1. - sqrt(2.)*k + k*k) / denom;
a1[ch][i] = 2. * (k*k - v0) / denom;
@@ -369,7 +356,7 @@ void ZamEQ2Plugin::peq(int i, int ch, float srate, float fc, float g, float bw)
// boost
float denom = 1. + k/q + k*k;
b0[ch][i] = (1. + k*v0/q + k*k) / denom;
- b1[ch][i] = 2. * (k*k - 1.) / denom;
+ b1[ch][i] = 2. * (k*k - 1.) / denom;
b2[ch][i] = (1. - k*v0/q + k*k) / denom;
a1[ch][i] = b1[ch][i];
a2[ch][i] = (1. - k/q + k*k) / denom;
@@ -380,7 +367,7 @@ float ZamEQ2Plugin::run_filter(int i, int ch, double in)
{
double out;
in = sanitize_denormal(in);
- out = in * b0[ch][i] + x1[ch][i] * b1[ch][i]
+ out = in * b0[ch][i] + x1[ch][i] * b1[ch][i]
+ x2[ch][i] * b2[ch][i]
- y1[ch][i] * a1[ch][i]
- y2[ch][i] * a2[ch][i] + 1e-20f;
@@ -393,7 +380,7 @@ float ZamEQ2Plugin::run_filter(int i, int ch, double in)
return (float) out;
}
-void ZamEQ2Plugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZamEQ2Plugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
float srate = d_getSampleRate();
diff --git a/plugins/ZamEQ2/ZamEQ2Plugin.hpp b/plugins/ZamEQ2/ZamEQ2Plugin.hpp
index 7ff0521..43b36ab 100644
--- a/plugins/ZamEQ2/ZamEQ2Plugin.hpp
+++ b/plugins/ZamEQ2/ZamEQ2Plugin.hpp
@@ -1,5 +1,5 @@
/*
- * ZamEQ2 2 band parametric equaliser
+ * ZamEQ2 2 band parametric equaliser
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -47,7 +47,6 @@ public:
};
ZamEQ2Plugin();
- ~ZamEQ2Plugin() override;
protected:
// -------------------------------------------------------------------
@@ -117,8 +116,7 @@ protected:
}
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
void peq(int i, int ch, float srate, float fc, float g, float bw);
void lowshelf(int i, int ch, float srate, float fc, float g);
diff --git a/plugins/ZamEQ2/ZamEQ2UI.cpp b/plugins/ZamEQ2/ZamEQ2UI.cpp
index a00248a..c368754 100644
--- a/plugins/ZamEQ2/ZamEQ2UI.cpp
+++ b/plugins/ZamEQ2/ZamEQ2UI.cpp
@@ -1,6 +1,6 @@
/*
* ZamEQ2 2 band parametric equaliser
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -35,79 +35,79 @@ ZamEQ2UI::ZamEQ2UI()
// knob
Image knobImage(ZamEQ2Artwork::knobData, ZamEQ2Artwork::knobWidth, ZamEQ2Artwork::knobHeight);
- // knob
+ // knob
fKnobGain1 = new ImageKnob(this, knobImage);
- fKnobGain1->setPos(91, 172);
+ fKnobGain1->setAbsolutePos(91, 172);
fKnobGain1->setRange(-50.f, 20.0f);
fKnobGain1->setRotationAngle(240);
fKnobGain1->setDefault(0.0f);
fKnobGain1->setCallback(this);
fKnobQ1 = new ImageKnob(this, knobImage);
- fKnobQ1->setPos(91, 122);
+ fKnobQ1->setAbsolutePos(91, 122);
fKnobQ1->setRange(0.1f, 6.0f);
- fKnobQ1->setLogScale(true);
+ fKnobQ1->setUsingLogScale(true);
fKnobQ1->setRotationAngle(240);
fKnobQ1->setDefault(1.0f);
fKnobQ1->setCallback(this);
fKnobFreq1 = new ImageKnob(this, knobImage);
- fKnobFreq1->setPos(23, 144);
+ fKnobFreq1->setAbsolutePos(23, 144);
fKnobFreq1->setRange(20.f, 14000.0f);
- fKnobFreq1->setLogScale(true);
+ fKnobFreq1->setUsingLogScale(true);
fKnobFreq1->setRotationAngle(240);
fKnobFreq1->setDefault(500.0f);
fKnobFreq1->setCallback(this);
fKnobGain2 = new ImageKnob(this, knobImage);
- fKnobGain2->setPos(567, 172);
+ fKnobGain2->setAbsolutePos(567, 172);
fKnobGain2->setRange(-50.f, 20.0f);
fKnobGain2->setRotationAngle(240);
fKnobGain2->setDefault(0.0f);
fKnobGain2->setCallback(this);
fKnobQ2 = new ImageKnob(this, knobImage);
- fKnobQ2->setPos(567, 122);
+ fKnobQ2->setAbsolutePos(567, 122);
fKnobQ2->setRange(0.1f, 6.0f);
- fKnobQ2->setLogScale(true);
+ fKnobQ2->setUsingLogScale(true);
fKnobQ2->setRotationAngle(240);
fKnobQ2->setDefault(1.0f);
fKnobQ2->setCallback(this);
fKnobFreq2 = new ImageKnob(this, knobImage);
- fKnobFreq2->setPos(499, 144);
+ fKnobFreq2->setAbsolutePos(499, 144);
fKnobFreq2->setRange(20.f, 14000.0f);
- fKnobFreq2->setLogScale(true);
+ fKnobFreq2->setUsingLogScale(true);
fKnobFreq2->setRotationAngle(240);
fKnobFreq2->setDefault(3000.0f);
fKnobFreq2->setCallback(this);
fKnobGainL = new ImageKnob(this, knobImage);
- fKnobGainL->setPos(91, 52);
+ fKnobGainL->setAbsolutePos(91, 52);
fKnobGainL->setRange(-50.f, 20.0f);
fKnobGainL->setRotationAngle(240);
fKnobGainL->setDefault(0.0f);
fKnobGainL->setCallback(this);
fKnobFreqL = new ImageKnob(this, knobImage);
- fKnobFreqL->setPos(23, 23);
+ fKnobFreqL->setAbsolutePos(23, 23);
fKnobFreqL->setRange(20.f, 14000.0f);
- fKnobFreqL->setLogScale(true);
+ fKnobFreqL->setUsingLogScale(true);
fKnobFreqL->setRotationAngle(240);
fKnobFreqL->setDefault(250.0f);
fKnobFreqL->setCallback(this);
fKnobGainH = new ImageKnob(this, knobImage);
- fKnobGainH->setPos(567, 53);
+ fKnobGainH->setAbsolutePos(567, 53);
fKnobGainH->setRange(-50.f, 20.0f);
fKnobGainH->setRotationAngle(240);
fKnobGainH->setDefault(0.0f);
fKnobGainH->setCallback(this);
fKnobFreqH = new ImageKnob(this, knobImage);
- fKnobFreqH->setPos(499, 24);
+ fKnobFreqH->setAbsolutePos(499, 24);
fKnobFreqH->setRange(20.f, 14000.0f);
- fKnobFreqH->setLogScale(true);
+ fKnobFreqH->setUsingLogScale(true);
fKnobFreqH->setRotationAngle(240);
fKnobFreqH->setDefault(8000.0f);
fKnobFreqH->setCallback(this);
@@ -122,24 +122,12 @@ ZamEQ2UI::ZamEQ2UI()
fSliderMaster->setValue(0.f);
fSliderMaster->setStep(6.f);
fSliderMaster->setCallback(this);
-
+
fCanvasArea.setPos(165,10);
fCanvasArea.setSize(305,180);
-}
-ZamEQ2UI::~ZamEQ2UI()
-{
- delete fKnobGain1;
- delete fKnobQ1;
- delete fKnobFreq1;
- delete fKnobGain2;
- delete fKnobQ2;
- delete fKnobFreq2;
- delete fKnobGainL;
- delete fKnobFreqL;
- delete fKnobGainH;
- delete fKnobFreqH;
- delete fSliderMaster;
+ // set default values
+ d_programChanged(0);
}
// -----------------------------------------------------------------------
@@ -309,7 +297,7 @@ void ZamEQ2UI::lowshelf(int i, int ch, float srate, float fc, float g)
if (g < 0.f) {
// LF cut
float denom = v0 + sqrt(2. * v0)*k + k*k;
- b0[ch][i] = v0 * (1. + sqrt(2.)*k + k*k) / denom;
+ b0[ch][i] = v0 * (1. + sqrt(2.)*k + k*k) / denom;
b1[ch][i] = 2. * v0*(k*k - 1.) / denom;
b2[ch][i] = v0 * (1. - sqrt(2.)*k + k*k) / denom;
a1[ch][i] = 2. * (k*k - v0) / denom;
@@ -371,7 +359,7 @@ void ZamEQ2UI::peq(int i, int ch, float srate, float fc, float g, float bw)
// boost
float denom = 1. + k/q + k*k;
b0[ch][i] = (1. + k*v0/q + k*k) / denom;
- b1[ch][i] = 2. * (k*k - 1.) / denom;
+ b1[ch][i] = 2. * (k*k - 1.) / denom;
b2[ch][i] = (1. - k*v0/q + k*k) / denom;
a1[ch][i] = b1[ch][i];
a2[ch][i] = (1. - k/q + k*k) / denom;
@@ -437,14 +425,14 @@ void ZamEQ2UI::onDisplay()
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
-
+
glLineWidth(2);
int i;
glColor4f(1.f, 1.f, 0.235f, 1.0f);
for (i = 1; i < EQPOINTS; ++i) {
glBegin(GL_LINES);
if (eqy[i-1] < fCanvasArea.getY() + fCanvasArea.getHeight()
- && eqy[i] < fCanvasArea.getY() + fCanvasArea.getHeight()
+ && eqy[i] < fCanvasArea.getY() + fCanvasArea.getHeight()
&& eqy[i-1] > fCanvasArea.getY()
&& eqy[i] > fCanvasArea.getY()) {
glVertex2i(eqx[i-1], eqy[i-1]);
diff --git a/plugins/ZamEQ2/ZamEQ2UI.hpp b/plugins/ZamEQ2/ZamEQ2UI.hpp
index 716f1cd..6bb4100 100644
--- a/plugins/ZamEQ2/ZamEQ2UI.hpp
+++ b/plugins/ZamEQ2/ZamEQ2UI.hpp
@@ -1,6 +1,6 @@
/*
* ZamEQ2 2 band parametric equaliser
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -18,9 +18,6 @@
#ifndef ZAMEQ2UI_HPP_INCLUDED
#define ZAMEQ2UI_HPP_INCLUDED
-#define EQPOINTS 1000
-#include <complex>
-
#include "DistrhoUI.hpp"
#include "ImageKnob.hpp"
@@ -29,6 +26,9 @@
#include "ZamEQ2Artwork.hpp"
#include "ZamEQ2Plugin.hpp"
+#define EQPOINTS 1000
+#include <complex>
+
using DGL::Image;
using DGL::ImageKnob;
using DGL::ImageSlider;
@@ -38,23 +38,22 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZamEQ2UI : public UI,
- public ImageKnob::Callback,
- public ImageSlider::Callback
+ public ImageKnob::Callback,
+ public ImageSlider::Callback
{
public:
ZamEQ2UI();
- ~ZamEQ2UI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZamEQ2Artwork::zameq2Width;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZamEQ2Artwork::zameq2Height;
}
@@ -105,6 +104,7 @@ protected:
void peq(int i, int ch, float srate, float fc, float g, float bw);
void lowshelf(int i, int ch, float srate, float fc, float g);
void highshelf(int i, int ch, float srate, float fc, float g);
+
// -------------------------------------------------------------------
// DSP Callbacks
@@ -126,17 +126,12 @@ protected:
private:
Image fImgBackground;
- ImageKnob* fKnobGain1;
- ImageKnob* fKnobQ1;
- ImageKnob* fKnobFreq1;
- ImageKnob* fKnobGain2;
- ImageKnob* fKnobQ2;
- ImageKnob* fKnobFreq2;
- ImageKnob* fKnobGainL;
- ImageKnob* fKnobFreqL;
- ImageKnob* fKnobGainH;
- ImageKnob* fKnobFreqH;
- ImageSlider* fSliderMaster;
+ ScopedPointer<ImageKnob> fKnobGain1;
+ ScopedPointer<ImageKnob> fKnobQ1, fKnobFreq1, fKnobGain2;
+ ScopedPointer<ImageKnob> fKnobQ2, fKnobFreq2;
+ ScopedPointer<ImageKnob> fKnobGainL, fKnobFreqL;
+ ScopedPointer<ImageKnob> fKnobGainH, fKnobFreqH;
+ ScopedPointer<ImageSlider> fSliderMaster;
float eqx[EQPOINTS];
float eqy[EQPOINTS];
DGL::Rectangle<int> fCanvasArea;
diff --git a/plugins/ZamSynth/Makefile b/plugins/ZamSynth/Makefile
index 90eb759..56a0426 100644
--- a/plugins/ZamSynth/Makefile
+++ b/plugins/ZamSynth/Makefile
@@ -20,13 +20,17 @@ OBJS_UI = \
ZamSynthUI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack dssi lv2_sep vst
+else
+all: dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZamSynth/ZamSynthPlugin.cpp b/plugins/ZamSynth/ZamSynthPlugin.cpp
index 7ee1f51..d8dcd6a 100644
--- a/plugins/ZamSynth/ZamSynthPlugin.cpp
+++ b/plugins/ZamSynth/ZamSynthPlugin.cpp
@@ -26,13 +26,6 @@ ZamSynthPlugin::ZamSynthPlugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZamSynthPlugin::~ZamSynthPlugin()
-{
}
// -----------------------------------------------------------------------
@@ -137,7 +130,7 @@ void ZamSynthPlugin::d_setProgram(uint32_t index)
voice[i].vi = 0.f;
voice[i].rampstate = 0.f;
}
-
+
curvoice = voice; //ptr to first voice
for (int i = 0; i < AREAHEIGHT; i++) {
@@ -193,12 +186,6 @@ void ZamSynthPlugin::d_activate()
{
}
-void ZamSynthPlugin::d_deactivate()
-{
- // all values to zero
-}
-
-
float ZamSynthPlugin::wavetable(float in)
{
int index = (int) ((in / (2.0 * M_PI)) * (AREAHEIGHT-1.0));
@@ -206,14 +193,14 @@ float ZamSynthPlugin::wavetable(float in)
//return (sin(in));
}
-void ZamSynthPlugin::d_run(float**, float** outputs, uint32_t frames,
+void ZamSynthPlugin::d_run(const float**, float** outputs, uint32_t frames,
const MidiEvent* midievent, uint32_t midicount)
{
float srate = d_getSampleRate();
int slowfactor = (int) srate / (speed * 2400); // 1-20 ~ 20-1
uint32_t i;
float RD_0;
-
+
for (i = 0; i < midicount; i++) {
int type = midievent[i].buf[0] & 0xF0;
int chan = midievent[i].buf[0] & 0x0F;
@@ -252,7 +239,7 @@ void ZamSynthPlugin::d_run(float**, float** outputs, uint32_t frames,
}
}
}
-
+
float power;
bool signal;
float wave;
diff --git a/plugins/ZamSynth/ZamSynthPlugin.hpp b/plugins/ZamSynth/ZamSynthPlugin.hpp
index 7325ed3..4fae641 100644
--- a/plugins/ZamSynth/ZamSynthPlugin.hpp
+++ b/plugins/ZamSynth/ZamSynthPlugin.hpp
@@ -1,5 +1,5 @@
/*
- * ZamSynth polyphonic synthesiser
+ * ZamSynth polyphonic synthesiser
* Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
@@ -40,7 +40,6 @@ public:
};
ZamSynthPlugin();
- ~ZamSynthPlugin() override;
protected:
// -------------------------------------------------------------------
@@ -106,8 +105,7 @@ protected:
float wavetable(float in);
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames,
+ void d_run(const float** inputs, float** outputs, uint32_t frames,
const MidiEvent* midievent, uint32_t midicount) override;
void d_setState(const char* key, const char* value) override;
void d_initStateKey(unsigned int key, d_string& val) override;
diff --git a/plugins/ZamSynth/ZamSynthUI.cpp b/plugins/ZamSynth/ZamSynthUI.cpp
index 81e7d59..92233be 100644
--- a/plugins/ZamSynth/ZamSynthUI.cpp
+++ b/plugins/ZamSynth/ZamSynthUI.cpp
@@ -1,6 +1,6 @@
/*
- * ZamSynth polyphonic synthesiser
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * ZamSynth polyphonic synthesiser
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -15,10 +15,9 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZamSynthPlugin.hpp"
#include "ZamSynthUI.hpp"
-using DGL::Point;
-
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
@@ -29,6 +28,9 @@ ZamSynthUI::ZamSynthUI()
// background
fImgBackground = Image(ZamSynthArtwork::zamsynthData, ZamSynthArtwork::zamsynthWidth, ZamSynthArtwork::zamsynthHeight, GL_BGR);
+ fDragging = false;
+ fDragValid = false;
+
// knob
Image knobImage(ZamSynthArtwork::knobData, ZamSynthArtwork::knobWidth, ZamSynthArtwork::knobHeight);
@@ -40,17 +42,17 @@ ZamSynthUI::ZamSynthUI()
Image toggleonImage(ZamSynthArtwork::toggleonData, ZamSynthArtwork::toggleonWidth, ZamSynthArtwork::toggleonHeight);
Image toggleoffImage(ZamSynthArtwork::toggleoffData, ZamSynthArtwork::toggleoffWidth, ZamSynthArtwork::toggleoffHeight);
- // knob
+ // knob
fKnobGain = new ImageKnob(this, knobImage);
- fKnobGain->setPos(284.75, 240);
+ fKnobGain->setAbsolutePos(284.75, 240);
fKnobGain->setRange(-30.f, 30.0f);
fKnobGain->setDefault(0.0f);
fKnobGain->setRotationAngle(240);
fKnobGain->setCallback(this);
fKnobSpeed = new ImageKnob(this, knobImage);
- fKnobSpeed->setPos(284.75, 92.5);
+ fKnobSpeed->setAbsolutePos(284.75, 92.5);
fKnobSpeed->setRange(1.f, 20.0f);
fKnobSpeed->setDefault(10.0f);
fKnobSpeed->setStep(1.0f);
@@ -59,7 +61,7 @@ ZamSynthUI::ZamSynthUI()
// button
fButtonSmooth = new ImageButton(this, smoothrImage, smoothrImage, smoothyImage);
- fButtonSmooth->setPos(265, 165);
+ fButtonSmooth->setAbsolutePos(265, 165);
fButtonSmooth->setCallback(this);
// drawing area
@@ -71,18 +73,13 @@ ZamSynthUI::ZamSynthUI()
}
// toggle
- fToggleGraph = new ImageToggle(this, toggleonImage, toggleoffImage, toggleoffImage);
- fToggleGraph->setPos(300, 33);
+ fToggleGraph = new ImageToggle(this, toggleonImage, toggleoffImage);
+ fToggleGraph->setAbsolutePos(300, 33);
fToggleGraph->setCallback(this);
fToggleGraph->setValue(0.f);
-}
-ZamSynthUI::~ZamSynthUI()
-{
- delete fKnobGain;
- delete fKnobSpeed;
- delete fButtonSmooth;
- delete fToggleGraph;
+ // set default values
+ d_programChanged(0);
}
void ZamSynthUI::d_stateChanged(const char* key, const char* value)
@@ -183,7 +180,7 @@ void ZamSynthUI::imageButtonClicked(ImageButton*, int)
gaussiansmooth(wavesmooth, xs, gr, AREAHEIGHT, 4);
memcpy(gr, wavesmooth, AREAHEIGHT*sizeof(float));
-
+
char tmp[4*AREAHEIGHT+1] = {0};
for(i = 0; i < AREAHEIGHT; i++) {
char wavestr[5] = {0};
@@ -191,7 +188,7 @@ void ZamSynthUI::imageButtonClicked(ImageButton*, int)
strcat(tmp, wavestr);
}
- if (fToggleGraph->getValue() == 1.f)
+ if (fToggleGraph->getValue() == 1.f)
d_setState("envelope", tmp);
else
d_setState("waveform", tmp);
@@ -201,7 +198,7 @@ void ZamSynthUI::imageToggleClicked(ImageToggle*, int)
{
float toggle = fToggleGraph->getValue();
fToggleGraph->setValue(toggle);
- d_setParameterValue(ZamSynthPlugin::paramGraph, toggle);
+ d_setParameterValue(ZamSynthPlugin::paramGraph, toggle);
}
void ZamSynthUI::gaussiansmooth(float* smoothed, float* xs, float* ys, int n, int radius)
@@ -222,14 +219,14 @@ void ZamSynthUI::gaussiansmooth(float* smoothed, float* xs, float* ys, int n, in
}
}
-bool ZamSynthUI::onMouse(int button, bool press, int x, int y)
+bool ZamSynthUI::onMouse(const MouseEvent& ev)
{
- if (button != 1)
+ if (ev.button != 1)
return false;
- if (press)
+ if (ev.press)
{
- if (! fCanvasArea.contains(x, y)) {
+ if (! fCanvasArea.contains(ev.pos)) {
//fDragValid = false;
return false;
}
@@ -247,7 +244,7 @@ bool ZamSynthUI::onMouse(int button, bool press, int x, int y)
return false;
}
-bool ZamSynthUI::onMotion(int x, int y)
+bool ZamSynthUI::onMotion(const MotionEvent& ev)
{
if (! fDragging)
return false;
@@ -255,15 +252,18 @@ bool ZamSynthUI::onMotion(int x, int y)
{
fDragValid = true;
}
-
+
+ int x = ev.pos.getX();
+ int y = ev.pos.getY();
+
if (x > fCanvasArea.getWidth()+10)
x = fCanvasArea.getWidth()+10;
if (x < 10) x = 10;
if (y < 10) y = 10;
-
+
float *gr;
if (fToggleGraph->getValue() == 0.f) {
- gr = wave_y;
+ gr = wave_y;
if (y > fCanvasArea.getHeight()+10)
y = fCanvasArea.getHeight()+10;
} else {
@@ -271,7 +271,7 @@ bool ZamSynthUI::onMotion(int x, int y)
if (y > fCanvasArea.getHeight() / 2. + 10)
y = fCanvasArea.getHeight() / 2. + 10;
}
-
+
if (gr[x-10] != (y-10)) {
char tmp[4*AREAHEIGHT+1] = {0};
int i;
@@ -282,12 +282,12 @@ bool ZamSynthUI::onMotion(int x, int y)
}
gr[x-10] = y-10;
-
+
if (gr == env_y)
d_setState("envelope",tmp);
else
d_setState("waveform",tmp);
-
+
repaint();
}
diff --git a/plugins/ZamSynth/ZamSynthUI.hpp b/plugins/ZamSynth/ZamSynthUI.hpp
index 6fc2867..291990f 100644
--- a/plugins/ZamSynth/ZamSynthUI.hpp
+++ b/plugins/ZamSynth/ZamSynthUI.hpp
@@ -1,6 +1,6 @@
/*
* ZamSynth polyphonic synthesiser
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -20,50 +20,47 @@
#include "DistrhoUI.hpp"
-#include "Geometry.hpp"
-#include "ImageKnob.hpp"
#include "ImageButton.hpp"
+#include "ImageKnob.hpp"
#include "ImageToggle.hpp"
#include "ZamSynthArtwork.hpp"
-#include "ZamSynthPlugin.hpp"
+
+#define AREAHEIGHT 250
using DGL::Image;
-using DGL::ImageKnob;
using DGL::ImageButton;
+using DGL::ImageKnob;
using DGL::ImageToggle;
-#define AREAHEIGHT 250
-
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZamSynthUI : public UI,
- public ImageKnob::Callback,
- public ImageButton::Callback,
- public ImageToggle::Callback
+ public ImageButton::Callback,
+ public ImageKnob::Callback,
+ public ImageToggle::Callback
{
public:
ZamSynthUI();
- ~ZamSynthUI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZamSynthArtwork::zamsynthWidth;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZamSynthArtwork::zamsynthHeight;
}
void gaussiansmooth(float* smoothed, float* xs, float* ys, int n, int radius);
-
+
// -------------------------------------------------------------------
// DSP Callbacks
@@ -82,15 +79,14 @@ protected:
void imageToggleClicked(ImageToggle* toggle, int) override;
void onDisplay() override;
- bool onMouse(int, bool, int, int) override;
- bool onMotion(int, int) override;
+ bool onMouse(const MouseEvent&) override;
+ bool onMotion(const MotionEvent&) override;
private:
Image fImgBackground;
- ImageKnob* fKnobGain;
- ImageKnob* fKnobSpeed;
- ImageButton* fButtonSmooth;
- ImageToggle* fToggleGraph;
+ ScopedPointer<ImageKnob> fKnobGain, fKnobSpeed;
+ ScopedPointer<ImageButton> fButtonSmooth;
+ ScopedPointer<ImageToggle> fToggleGraph;
float wave_y[AREAHEIGHT];
float env_y[AREAHEIGHT];
bool fGraph;
diff --git a/plugins/ZamTube/Makefile b/plugins/ZamTube/Makefile
index 8f7ebb7..6cc51d7 100644
--- a/plugins/ZamTube/Makefile
+++ b/plugins/ZamTube/Makefile
@@ -21,13 +21,17 @@ OBJS_UI = \
ZamTubeUI.cpp.o
# --------------------------------------------------------------
-# No custom UI for now
+# Do some magic
-#TARGET_NOUI = true
+include ../Makefile.mk
# --------------------------------------------------------------
-# Do some magic
+# Enable all possible plugin types
-include ../Makefile.mk
+ifeq ($(LINUX),true)
+all: jack ladspa dssi lv2_sep vst
+else
+all: ladspa dssi lv2_sep vst
+endif
# --------------------------------------------------------------
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp
index b72b0fd..3134b89 100644
--- a/plugins/ZamTube/ZamTubePlugin.cpp
+++ b/plugins/ZamTube/ZamTubePlugin.cpp
@@ -33,13 +33,6 @@ ZamTubePlugin::ZamTubePlugin()
{
// set default values
d_setProgram(0);
-
- // reset
- d_deactivate();
-}
-
-ZamTubePlugin::~ZamTubePlugin()
-{
}
// -----------------------------------------------------------------------
@@ -288,12 +281,7 @@ void ZamTubePlugin::d_activate()
for (int i=0; i<4; i++) fRec24[i] = 0;
}
-void ZamTubePlugin::d_deactivate()
-{
- // all values to zero
-}
-
-void ZamTubePlugin::d_run(float** inputs, float** outputs, uint32_t frames)
+void ZamTubePlugin::d_run(const float** inputs, float** outputs, uint32_t frames)
{
T tubetone = 0.f;
diff --git a/plugins/ZamTube/ZamTubePlugin.hpp b/plugins/ZamTube/ZamTubePlugin.hpp
index c5dadb6..3c42730 100644
--- a/plugins/ZamTube/ZamTubePlugin.hpp
+++ b/plugins/ZamTube/ZamTubePlugin.hpp
@@ -1,6 +1,6 @@
/*
- * ZamTube triode WDF distortion model
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * ZamTube triode WDF distortion model
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -25,13 +25,9 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
-
-#include <stdint.h>
-#include <math.h>
-
-template <int N> inline float faustpower(float x) { return powf(x,N); }
+template <int N> inline float faustpower(float x) { return powf(x,N); }
template <int N> inline double faustpower(double x) { return pow(x,N); }
-template <int N> inline int faustpower(int x) { return faustpower<N/2>(x) * faustpower<N-N/2>(x); }
+template <int N> inline int faustpower(int x) { return faustpower<N/2>(x) * faustpower<N-N/2>(x); }
template <> inline int faustpower<0>(int) { return 1; }
template <> inline int faustpower<1>(int x) { return x; }
@@ -119,7 +115,6 @@ public:
};
ZamTubePlugin();
- ~ZamTubePlugin() override;
protected:
// -------------------------------------------------------------------
@@ -184,8 +179,7 @@ protected:
}
void d_activate() override;
- void d_deactivate() override;
- void d_run(float** inputs, float** outputs, uint32_t frames) override;
+ void d_run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
diff --git a/plugins/ZamTube/ZamTubeUI.cpp b/plugins/ZamTube/ZamTubeUI.cpp
index a4e9e6b..e18c7ee 100644
--- a/plugins/ZamTube/ZamTubeUI.cpp
+++ b/plugins/ZamTube/ZamTubeUI.cpp
@@ -1,6 +1,6 @@
/*
* ZamTube triode WDF distortion model
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -15,6 +15,12 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/
+#include "ZamTubePlugin.hpp"
+
+// conflict macros in wdf
+#undef max
+#undef min
+
#include "ZamTubeUI.hpp"
using DGL::Point;
@@ -35,9 +41,9 @@ ZamTubeUI::ZamTubeUI()
// notch slider
Image notchImage(ZamTubeArtwork::notchData, ZamTubeArtwork::notchWidth, ZamTubeArtwork::notchHeight);
- // knobs
+ // knobs
fKnobTube = new ImageKnob(this, knobImage);
- fKnobTube->setPos(177, 76);
+ fKnobTube->setAbsolutePos(177, 76);
fKnobTube->setRange(0.f, 30.0f);
fKnobTube->setStep(0.1f);
fKnobTube->setDefault(0.0f);
@@ -45,7 +51,7 @@ ZamTubeUI::ZamTubeUI()
fKnobTube->setCallback(this);
fKnobBass = new ImageKnob(this, knobImage);
- fKnobBass->setPos(63, 140.5);
+ fKnobBass->setAbsolutePos(63, 140.5);
fKnobBass->setRange(0.f, 1.0f);
fKnobBass->setStep(0.01f);
fKnobBass->setDefault(0.5f);
@@ -53,7 +59,7 @@ ZamTubeUI::ZamTubeUI()
fKnobBass->setCallback(this);
fKnobMids = new ImageKnob(this, knobImage);
- fKnobMids->setPos(63, 87);
+ fKnobMids->setAbsolutePos(63, 87);
fKnobMids->setRange(0.f, 1.0f);
fKnobMids->setStep(0.01f);
fKnobMids->setDefault(0.5f);
@@ -61,7 +67,7 @@ ZamTubeUI::ZamTubeUI()
fKnobMids->setCallback(this);
fKnobTreb = new ImageKnob(this, knobImage);
- fKnobTreb->setPos(63, 33);
+ fKnobTreb->setAbsolutePos(63, 33);
fKnobTreb->setRange(0.f, 1.0f);
fKnobTreb->setStep(0.01f);
fKnobTreb->setDefault(0.0f);
@@ -69,7 +75,7 @@ ZamTubeUI::ZamTubeUI()
fKnobTreb->setCallback(this);
fKnobGain = new ImageKnob(this, knobImage);
- fKnobGain->setPos(63, 231);
+ fKnobGain->setAbsolutePos(63, 231);
fKnobGain->setRange(-30.f, 30.0f);
fKnobGain->setStep(1.f);
fKnobGain->setDefault(0.0f);
@@ -86,16 +92,9 @@ ZamTubeUI::ZamTubeUI()
fSliderNotch->setStep(1.f);
fSliderNotch->setValue(0.f);
fSliderNotch->setCallback(this);
-}
-ZamTubeUI::~ZamTubeUI()
-{
- delete fKnobTube;
- delete fKnobBass;
- delete fKnobMids;
- delete fKnobTreb;
- delete fKnobGain;
- delete fSliderNotch;
+ // set default values
+ d_programChanged(0);
}
// -----------------------------------------------------------------------
diff --git a/plugins/ZamTube/ZamTubeUI.hpp b/plugins/ZamTube/ZamTubeUI.hpp
index f73dc5d..b992eda 100644
--- a/plugins/ZamTube/ZamTubeUI.hpp
+++ b/plugins/ZamTube/ZamTubeUI.hpp
@@ -1,6 +1,6 @@
/*
- * ZamTube triode WDF distortion model
- * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
+ * ZamTube triode WDF distortion model
+ * Copyright (C) 2014 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -24,7 +24,6 @@
#include "ImageSlider.hpp"
#include "ZamTubeArtwork.hpp"
-#include "ZamTubePlugin.hpp"
using DGL::Image;
using DGL::ImageKnob;
@@ -35,23 +34,22 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class ZamTubeUI : public UI,
- public ImageKnob::Callback,
- public ImageSlider::Callback
+ public ImageKnob::Callback,
+ public ImageSlider::Callback
{
public:
ZamTubeUI();
- ~ZamTubeUI() override;
protected:
// -------------------------------------------------------------------
// Information
- unsigned int d_getWidth() const noexcept override
+ uint d_getWidth() const noexcept override
{
return ZamTubeArtwork::zamtubeWidth;
}
- unsigned int d_getHeight() const noexcept override
+ uint d_getHeight() const noexcept override
{
return ZamTubeArtwork::zamtubeHeight;
}
@@ -77,12 +75,8 @@ protected:
private:
Image fImgBackground;
- ImageKnob* fKnobTube;
- ImageKnob* fKnobBass;
- ImageKnob* fKnobMids;
- ImageKnob* fKnobTreb;
- ImageKnob* fKnobGain;
- ImageSlider* fSliderNotch;
+ ScopedPointer<ImageSlider> fSliderNotch;
+ ScopedPointer<ImageKnob> fKnobTube, fKnobBass, fKnobMids, fKnobTreb, fKnobGain;
};
// -----------------------------------------------------------------------