@@ -36,6 +36,7 @@ qrc_resources*.cpp | |||
# Binaries | |||
carla-bridge-qtcreator | |||
carla-bridge-native | |||
carla-bridge-posix32 | |||
carla-bridge-posix64 | |||
carla-bridge-lv2-cocoa | |||
@@ -127,3 +128,20 @@ c++/widgets/paramspinbox.* | |||
data/templates/energyXT.xt | |||
src/old/ | |||
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__ |