@@ -36,6 +36,7 @@ qrc_resources*.cpp | |||||
# Binaries | # Binaries | ||||
carla-bridge-qtcreator | carla-bridge-qtcreator | ||||
carla-bridge-native | |||||
carla-bridge-posix32 | carla-bridge-posix32 | ||||
carla-bridge-posix64 | carla-bridge-posix64 | ||||
carla-bridge-lv2-cocoa | carla-bridge-lv2-cocoa | ||||
@@ -127,3 +128,20 @@ c++/widgets/paramspinbox.* | |||||
data/templates/energyXT.xt | data/templates/energyXT.xt | ||||
src/old/ | src/old/ | ||||
src/ui/carla_driver.ui | src/ui/carla_driver.ui | ||||
# Other | |||||
c++/carla-backend/carla_backend.kdev4 | |||||
c++/carla-bridge/carla_bridge_plugin.cpp,bak | |||||
c++/carla-bridge/carla_bridge_toolkit-plugin.cpp | |||||
c++/carla/CarlaAbout.cpp | |||||
c++/carla/CarlaAbout.hpp | |||||
c++/carla/PluginParameter.cpp | |||||
c++/carla/PluginParameter.hpp | |||||
c++/carla/carla.cpp | |||||
c++/carla/carla.h | |||||
c++/carla/carla.pro | |||||
c++/carla/carla_misc.h | |||||
data/cadence-cpufreq | |||||
data/cpufreq/ | |||||
src/cadence_cpufreq.py | |||||
src/cpufreq.py |
@@ -0,0 +1,58 @@ | |||||
/* | |||||
* Carla Native Plugins | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation; either version 2 of the License, or | |||||
* any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#include "carla_native.hpp" | |||||
// Plugin Code | |||||
#include "pingpongpan/DistrhoArtworkPingPongPan.cpp" | |||||
#include "pingpongpan/DistrhoPluginPingPongPan.cpp" | |||||
#include "pingpongpan/DistrhoUIPingPongPan.cpp" | |||||
// Carla DISTRHO Plugin | |||||
#include "distrho/DistrhoPluginCarla.cpp" | |||||
START_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | |||||
static PluginDescriptor tBandEqDesc = { | |||||
/* category */ ::PLUGIN_CATEGORY_UTILITY, | |||||
/* hints */ ::PLUGIN_HAS_GUI, | |||||
/* audioIns */ DISTRHO_PLUGIN_NUM_INPUTS, | |||||
/* audioOuts */ DISTRHO_PLUGIN_NUM_OUTPUTS, | |||||
/* midiIns */ 0, | |||||
/* midiOuts */ 0, | |||||
/* paramIns */ DistrhoPluginPingPongPan::paramCount, | |||||
/* paramOuts */ 0, | |||||
/* name */ DISTRHO_PLUGIN_NAME, | |||||
/* label */ "PingPongPan", | |||||
/* maker */ "falkTX", | |||||
/* copyright */ "LGPL", | |||||
PluginDescriptorFILL(PluginCarla) | |||||
}; | |||||
END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | |||||
void carla_register_native_plugin_PingPongPan() | |||||
{ | |||||
USE_NAMESPACE_DISTRHO | |||||
carla_register_native_plugin(&tBandEqDesc); | |||||
} | |||||
// ----------------------------------------------------------------------- |
@@ -0,0 +1,35 @@ | |||||
/* (Auto-generated binary data file). */ | |||||
#ifndef BINARY_DISTRHOARTWORKPINGPONGPAN_HPP | |||||
#define BINARY_DISTRHOARTWORKPINGPONGPAN_HPP | |||||
namespace DistrhoArtworkPingPongPan | |||||
{ | |||||
extern const char* aboutData; | |||||
const unsigned int aboutDataSize = 230280; | |||||
const unsigned int aboutWidth = 303; | |||||
const unsigned int aboutHeight = 190; | |||||
extern const char* aboutButtonHoverData; | |||||
const unsigned int aboutButtonHoverDataSize = 9600; | |||||
const unsigned int aboutButtonHoverWidth = 96; | |||||
const unsigned int aboutButtonHoverHeight = 25; | |||||
extern const char* aboutButtonNormalData; | |||||
const unsigned int aboutButtonNormalDataSize = 9600; | |||||
const unsigned int aboutButtonNormalWidth = 96; | |||||
const unsigned int aboutButtonNormalHeight = 25; | |||||
extern const char* backgroundData; | |||||
const unsigned int backgroundDataSize = 200736; | |||||
const unsigned int backgroundWidth = 369; | |||||
const unsigned int backgroundHeight = 136; | |||||
extern const char* knobData; | |||||
const unsigned int knobDataSize = 742716; | |||||
const unsigned int knobWidth = 69; | |||||
const unsigned int knobHeight = 2691; | |||||
} | |||||
#endif // BINARY_DISTRHOARTWORKPINGPONGPAN_HPP | |||||
@@ -0,0 +1,34 @@ | |||||
/* | |||||
* DISTRHO PingPongPan Plugin, based on PingPongPan by Michael Gruhn | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Lesser General Public License for more details. | |||||
* | |||||
* For a full copy of the license see the LGPL.txt file | |||||
*/ | |||||
#ifndef __DISTRHO_PLUGIN_INFO_H__ | |||||
#define __DISTRHO_PLUGIN_INFO_H__ | |||||
#define DISTRHO_PLUGIN_NAME "Ping Pong Pan" | |||||
#define DISTRHO_PLUGIN_HAS_UI 1 | |||||
#define DISTRHO_PLUGIN_IS_SYNTH 0 | |||||
#define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||||
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | |||||
#define DISTRHO_PLUGIN_WANT_LATENCY 0 | |||||
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1 | |||||
#define DISTRHO_PLUGIN_WANT_STATE 0 | |||||
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/PingPongPan" | |||||
#endif // __DISTRHO_PLUGIN_INFO_H__ |
@@ -0,0 +1,165 @@ | |||||
/* | |||||
* DISTRHO PingPongPan Plugin, based on PingPongPan by Michael Gruhn | |||||
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de> | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Lesser General Public License for more details. | |||||
* | |||||
* For a full copy of the license see the LGPL.txt file | |||||
*/ | |||||
#include "DistrhoPluginPingPongPan.hpp" | |||||
#include <cmath> | |||||
static const float cf2PI = 6.283185307f; | |||||
START_NAMESPACE_DISTRHO | |||||
// ------------------------------------------------- | |||||
DistrhoPluginPingPongPan::DistrhoPluginPingPongPan() | |||||
: Plugin(paramCount, 1, 0) // 1 program, 0 states | |||||
{ | |||||
// set default values | |||||
d_setProgram(0); | |||||
// reset | |||||
d_deactivate(); | |||||
} | |||||
DistrhoPluginPingPongPan::~DistrhoPluginPingPongPan() | |||||
{ | |||||
} | |||||
// ------------------------------------------------- | |||||
// Init | |||||
void DistrhoPluginPingPongPan::d_initParameter(uint32_t index, Parameter& parameter) | |||||
{ | |||||
switch (index) | |||||
{ | |||||
case paramFreq: | |||||
parameter.hints = PARAMETER_IS_AUTOMABLE; | |||||
parameter.name = "Frequency"; | |||||
parameter.symbol = "freq"; | |||||
parameter.ranges.def = 50.0f; | |||||
parameter.ranges.min = 0.0f; | |||||
parameter.ranges.max = 100.0f; | |||||
break; | |||||
case paramWidth: | |||||
parameter.hints = PARAMETER_IS_AUTOMABLE; | |||||
parameter.name = "Width"; | |||||
parameter.symbol = "with"; | |||||
parameter.unit = "%"; | |||||
parameter.ranges.def = 75.0f; | |||||
parameter.ranges.min = 0.0f; | |||||
parameter.ranges.max = 100.0f; | |||||
break; | |||||
} | |||||
} | |||||
void DistrhoPluginPingPongPan::d_initProgramName(uint32_t index, d_string& programName) | |||||
{ | |||||
if (index != 0) | |||||
return; | |||||
programName = "Default"; | |||||
} | |||||
// ------------------------------------------------- | |||||
// Internal data | |||||
float DistrhoPluginPingPongPan::d_parameterValue(uint32_t index) | |||||
{ | |||||
switch (index) | |||||
{ | |||||
case paramFreq: | |||||
return fFreq; | |||||
case paramWidth: | |||||
return fWidth; | |||||
default: | |||||
return 0.0f; | |||||
} | |||||
} | |||||
void DistrhoPluginPingPongPan::d_setParameterValue(uint32_t index, float value) | |||||
{ | |||||
if (d_sampleRate() <= 0.0) | |||||
return; | |||||
switch (index) | |||||
{ | |||||
case paramFreq: | |||||
fFreq = value; | |||||
waveSpeed = (cf2PI * fFreq / 100.0f)/d_sampleRate(); | |||||
break; | |||||
case paramWidth: | |||||
fWidth = value; | |||||
break; | |||||
} | |||||
} | |||||
void DistrhoPluginPingPongPan::d_setProgram(uint32_t index) | |||||
{ | |||||
if (index != 0) | |||||
return; | |||||
// Default values | |||||
fFreq = 50.0f; | |||||
fWidth = 75.0f; | |||||
// reset filter values | |||||
d_activate(); | |||||
} | |||||
// ------------------------------------------------- | |||||
// Process | |||||
void DistrhoPluginPingPongPan::d_activate() | |||||
{ | |||||
waveSpeed = (cf2PI * fFreq / 100.0f)/d_sampleRate(); | |||||
} | |||||
void DistrhoPluginPingPongPan::d_deactivate() | |||||
{ | |||||
wavePos = 0.0f; | |||||
} | |||||
void DistrhoPluginPingPongPan::d_run(float** inputs, float** outputs, uint32_t frames, uint32_t, const MidiEvent*) | |||||
{ | |||||
const float* in1 = inputs[0]; | |||||
const float* in2 = inputs[1]; | |||||
float* out1 = outputs[0]; | |||||
float* out2 = outputs[1]; | |||||
for (uint32_t i=0; i < frames; i++) | |||||
{ | |||||
pan = d_minf(d_maxf(sin(wavePos) * (fWidth/100.0f), -1.0f), 1.0f); | |||||
if ((wavePos += waveSpeed) >= cf2PI) | |||||
wavePos -= cf2PI; | |||||
out1[i] = in1[i] * (pan > 0.0f ? 1.0f-pan : 1.0f); | |||||
out2[i] = in2[i] * (pan < 0.0f ? 1.0f+pan : 1.0f); | |||||
} | |||||
} | |||||
// ------------------------------------------------- | |||||
Plugin* createPlugin() | |||||
{ | |||||
return new DistrhoPluginPingPongPan(); | |||||
} | |||||
// ------------------------------------------------- | |||||
END_NAMESPACE_DISTRHO |
@@ -0,0 +1,93 @@ | |||||
/* | |||||
* DISTRHO PingPongPan Plugin, based on PingPongPan by Michael Gruhn | |||||
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de> | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Lesser General Public License for more details. | |||||
* | |||||
* For a full copy of the license see the LGPL.txt file | |||||
*/ | |||||
#ifndef __DISTRHO_PLUGIN_PINGPONGPAN_HPP__ | |||||
#define __DISTRHO_PLUGIN_PINGPONGPAN_HPP__ | |||||
#include "DistrhoPlugin.h" | |||||
START_NAMESPACE_DISTRHO | |||||
class DistrhoPluginPingPongPan : public Plugin | |||||
{ | |||||
public: | |||||
enum Parameters | |||||
{ | |||||
paramFreq = 0, | |||||
paramWidth, | |||||
paramCount | |||||
}; | |||||
DistrhoPluginPingPongPan(); | |||||
~DistrhoPluginPingPongPan(); | |||||
// --------------------------------------------- | |||||
protected: | |||||
// Information | |||||
const char* d_label() | |||||
{ | |||||
return "PingPongPan"; | |||||
} | |||||
const char* d_maker() | |||||
{ | |||||
return "DISTRHO"; | |||||
} | |||||
const char* d_license() | |||||
{ | |||||
return "LGPL"; | |||||
} | |||||
uint32_t d_version() | |||||
{ | |||||
return 0x1000; | |||||
} | |||||
long d_uniqueId() | |||||
{ | |||||
return d_cconst('D', 'P', 'P', 'P'); | |||||
} | |||||
// Init | |||||
void d_initParameter(uint32_t index, Parameter& parameter); | |||||
void d_initProgramName(uint32_t index, d_string& programName); | |||||
// Internal data | |||||
float d_parameterValue(uint32_t index); | |||||
void d_setParameterValue(uint32_t index, float value); | |||||
void d_setProgram(uint32_t index); | |||||
// Process | |||||
void d_activate(); | |||||
void d_deactivate(); | |||||
void d_run(float** inputs, float** outputs, uint32_t frames, uint32_t midiEventCount, const MidiEvent* midiEvents); | |||||
// --------------------------------------------- | |||||
private: | |||||
float fFreq; | |||||
float fWidth; | |||||
float waveSpeed; | |||||
float pan, wavePos; | |||||
}; | |||||
END_NAMESPACE_DISTRHO | |||||
#endif // __DISTRHO_PLUGIN_PINGPONGPAN_HPP__ |
@@ -0,0 +1,138 @@ | |||||
/* | |||||
* DISTRHO PingPongPan Plugin, based on PingPongPan by Michael Gruhn | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Lesser General Public License for more details. | |||||
* | |||||
* For a full copy of the license see the LGPL.txt file | |||||
*/ | |||||
#include "DistrhoUIPingPongPan.hpp" | |||||
START_NAMESPACE_DISTRHO | |||||
// ------------------------------------------------- | |||||
DistrhoUIPingPongPan::DistrhoUIPingPongPan() | |||||
: OpenGLExtUI() | |||||
{ | |||||
// background | |||||
Image bgImage(DistrhoArtworkPingPongPan::backgroundData, DistrhoArtworkPingPongPan::backgroundWidth, DistrhoArtworkPingPongPan::backgroundHeight, GL_BGRA); | |||||
setBackgroundImage(bgImage); | |||||
// knobs | |||||
Image knobImage(DistrhoArtworkPingPongPan::knobData, DistrhoArtworkPingPongPan::knobWidth, DistrhoArtworkPingPongPan::knobHeight); | |||||
Point knobPos(136, 30); | |||||
// knob Low-Mid | |||||
knobFreq = new ImageKnob(knobImage, knobPos); | |||||
knobFreq->setRange(0.0f, 100.0f); | |||||
knobFreq->setValue(50.0f); | |||||
addImageKnob(knobFreq); | |||||
// knob Mid-High | |||||
knobPos.setX(258); | |||||
knobWidth = new ImageKnob(knobImage, knobPos); | |||||
knobWidth->setRange(0.0f, 100.0f); | |||||
knobWidth->setValue(75.0f); | |||||
addImageKnob(knobWidth); | |||||
// about button | |||||
Image aboutImageNormal(DistrhoArtworkPingPongPan::aboutButtonNormalData, DistrhoArtworkPingPongPan::aboutButtonNormalWidth, DistrhoArtworkPingPongPan::aboutButtonNormalHeight); | |||||
Image aboutImageHover(DistrhoArtworkPingPongPan::aboutButtonHoverData, DistrhoArtworkPingPongPan::aboutButtonHoverWidth, DistrhoArtworkPingPongPan::aboutButtonHoverHeight); | |||||
Point aboutPos(25, 23); | |||||
buttonAbout = new ImageButton(aboutImageNormal, aboutImageHover, aboutImageHover, aboutPos); | |||||
addImageButton(buttonAbout); | |||||
} | |||||
DistrhoUIPingPongPan::~DistrhoUIPingPongPan() | |||||
{ | |||||
delete knobFreq; | |||||
delete knobWidth; | |||||
delete buttonAbout; | |||||
} | |||||
// ------------------------------------------------- | |||||
// DSP Callbacks | |||||
void DistrhoUIPingPongPan::d_parameterChanged(uint32_t index, float value) | |||||
{ | |||||
switch (index) | |||||
{ | |||||
case DistrhoPluginPingPongPan::paramFreq: | |||||
knobFreq->setValue(value); | |||||
break; | |||||
case DistrhoPluginPingPongPan::paramWidth: | |||||
knobWidth->setValue(value); | |||||
break; | |||||
} | |||||
d_uiRepaint(); | |||||
} | |||||
void DistrhoUIPingPongPan::d_programChanged(uint32_t index) | |||||
{ | |||||
if (index != 0) | |||||
return; | |||||
// Default values | |||||
knobFreq->setValue(50.0f); | |||||
knobWidth->setValue(75.0f); | |||||
d_uiRepaint(); | |||||
} | |||||
// ------------------------------------------------- | |||||
// Extended Callbacks | |||||
void DistrhoUIPingPongPan::imageButtonClicked(ImageButton* button) | |||||
{ | |||||
if (button != buttonAbout) | |||||
return; | |||||
Image imageAbout(DistrhoArtworkPingPongPan::aboutData, DistrhoArtworkPingPongPan::aboutWidth, DistrhoArtworkPingPongPan::aboutHeight, GL_BGRA); | |||||
showImageModalDialog(imageAbout, "About"); | |||||
} | |||||
void DistrhoUIPingPongPan::imageKnobDragStarted(ImageKnob* knob) | |||||
{ | |||||
if (knob == knobFreq) | |||||
d_uiEditParameter(DistrhoPluginPingPongPan::paramFreq, true); | |||||
else if (knob == knobWidth) | |||||
d_uiEditParameter(DistrhoPluginPingPongPan::paramWidth, true); | |||||
} | |||||
void DistrhoUIPingPongPan::imageKnobDragFinished(ImageKnob* knob) | |||||
{ | |||||
if (knob == knobFreq) | |||||
d_uiEditParameter(DistrhoPluginPingPongPan::paramFreq, false); | |||||
else if (knob == knobWidth) | |||||
d_uiEditParameter(DistrhoPluginPingPongPan::paramWidth, false); | |||||
} | |||||
void DistrhoUIPingPongPan::imageKnobValueChanged(ImageKnob* knob, float value) | |||||
{ | |||||
if (knob == knobFreq) | |||||
d_setParameterValue(DistrhoPluginPingPongPan::paramFreq, value); | |||||
else if (knob == knobWidth) | |||||
d_setParameterValue(DistrhoPluginPingPongPan::paramWidth, value); | |||||
} | |||||
// ------------------------------------------------- | |||||
UI* createUI() | |||||
{ | |||||
return new DistrhoUIPingPongPan; | |||||
} | |||||
// ------------------------------------------------- | |||||
END_NAMESPACE_DISTRHO |
@@ -0,0 +1,69 @@ | |||||
/* | |||||
* DISTRHO PingPongPan Plugin, based on PingPongPan by Michael Gruhn | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU Lesser General Public License for more details. | |||||
* | |||||
* For a full copy of the license see the LGPL.txt file | |||||
*/ | |||||
#ifndef __DISTRHO_UI_PINGPONGPAN_HPP__ | |||||
#define __DISTRHO_UI_PINGPONGPAN_HPP__ | |||||
#include "DistrhoUIOpenGLExt.h" | |||||
#include "DistrhoArtworkPingPongPan.hpp" | |||||
#include "DistrhoPluginPingPongPan.hpp" | |||||
START_NAMESPACE_DISTRHO | |||||
// ------------------------------------------------- | |||||
class DistrhoUIPingPongPan : public OpenGLExtUI | |||||
{ | |||||
public: | |||||
DistrhoUIPingPongPan(); | |||||
~DistrhoUIPingPongPan(); | |||||
// --------------------------------------------- | |||||
protected: | |||||
// Information | |||||
unsigned int d_width() | |||||
{ | |||||
return DistrhoArtworkPingPongPan::backgroundWidth; | |||||
} | |||||
unsigned int d_height() | |||||
{ | |||||
return DistrhoArtworkPingPongPan::backgroundHeight; | |||||
} | |||||
// DSP Callbacks | |||||
void d_parameterChanged(uint32_t index, float value); | |||||
void d_programChanged(uint32_t index); | |||||
// Extended Callbacks | |||||
void imageButtonClicked(ImageButton* button); | |||||
void imageKnobDragStarted(ImageKnob* knob); | |||||
void imageKnobDragFinished(ImageKnob* knob); | |||||
void imageKnobValueChanged(ImageKnob* knob, float value); | |||||
private: | |||||
ImageKnob* knobFreq; | |||||
ImageKnob* knobWidth; | |||||
ImageButton* buttonAbout; | |||||
}; | |||||
// ------------------------------------------------- | |||||
END_NAMESPACE_DISTRHO | |||||
#endif // __DISTRHO_UI_PINGPONGPAN_HPP__ |