Browse Source

Update meta-data; Misc fixes

tags/v1.0
falkTX 9 years ago
parent
commit
8fe05c2d93
38 changed files with 4874 additions and 4592 deletions
  1. +3
    -1
      dpf/README.md
  2. +26
    -3
      dpf/distrho/DistrhoPlugin.hpp
  3. +9
    -0
      dpf/distrho/DistrhoUtils.hpp
  4. +12
    -0
      dpf/distrho/src/DistrhoPluginChecks.h
  5. +24
    -0
      dpf/distrho/src/DistrhoPluginInternal.hpp
  6. +26
    -6
      dpf/distrho/src/DistrhoPluginLV2.cpp
  7. +82
    -29
      dpf/distrho/src/DistrhoPluginLV2export.cpp
  8. +19
    -0
      dpf/distrho/src/DistrhoPluginVST.cpp
  9. +6
    -4
      dpf/distrho/src/DistrhoUILV2.cpp
  10. +2
    -2
      dpf/utils/lv2-ttl-generator/GNUmakefile
  11. BIN
      modguis/Kars.modgui/modgui/pedals/boxy-small/yellow.png
  12. BIN
      modguis/Kars.modgui/modgui/screenshot-kars.png
  13. +49
    -49
      modguis/Kars.modgui/modgui/stylesheet-kars.css
  14. BIN
      modguis/Kars.modgui/modgui/thumbnail-kars.png
  15. +11
    -1
      plugins/3BandEQ/DistrhoPlugin3BandEQ.hpp
  16. +3
    -2
      plugins/3BandEQ/DistrhoPluginInfo.h
  17. +11
    -1
      plugins/3BandSplitter/DistrhoPlugin3BandSplitter.hpp
  18. +3
    -2
      plugins/3BandSplitter/DistrhoPluginInfo.h
  19. +2
    -2
      plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.cpp
  20. +17
    -1
      plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.hpp
  21. +3
    -2
      plugins/AmplitudeImposer/DistrhoPluginInfo.h
  22. +12
    -1
      plugins/CycleShifter/DistrhoPluginCycleShifter.hpp
  23. +3
    -2
      plugins/CycleShifter/DistrhoPluginInfo.h
  24. +4466
    -4466
      plugins/Kars/DistrhoArtworkKars.cpp
  25. +3
    -2
      plugins/Kars/DistrhoPluginInfo.h
  26. +12
    -2
      plugins/Kars/DistrhoPluginKars.hpp
  27. BIN
      plugins/Kars/Screenshot.png
  28. BIN
      plugins/Kars/artwork/background.png
  29. +3
    -2
      plugins/MVerb/DistrhoPluginInfo.h
  30. +11
    -1
      plugins/MVerb/DistrhoPluginMVerb.hpp
  31. +3
    -2
      plugins/Nekobi/DistrhoPluginInfo.h
  32. +11
    -1
      plugins/Nekobi/DistrhoPluginNekobi.hpp
  33. +3
    -2
      plugins/PingPongPan/DistrhoPluginInfo.h
  34. +11
    -1
      plugins/PingPongPan/DistrhoPluginPingPongPan.hpp
  35. +2
    -1
      plugins/ProM/DistrhoPluginInfo.h
  36. +11
    -1
      plugins/ProM/DistrhoPluginProM.hpp
  37. +3
    -2
      plugins/SoulForce/DistrhoPluginInfo.h
  38. +12
    -1
      plugins/SoulForce/DistrhoPluginSoulForce.hpp

+ 3
- 1
dpf/README.md View File

@@ -5,17 +5,19 @@ It allows developers to create plugins with custom UIs using a simple C++ API.<b
The framework facilitates exporting various different plugin formats from the same code-base.<br/>

DPF can build for LADSPA, DSSI, LV2 and VST formats.<br/>
LADSPA, DSSI and VST implementations are complete, LV2 at ~95% completion.<br/>
All current plugin format implementations are complete.<br/>
A JACK/Standalone mode is also available, allowing you to quickly test plugins.<br/>

Plugin DSP and UI communication is done via key-value string pairs.<br/>
You send messages from the UI to the DSP side, which is automatically saved in the host when required.<br/>
(You can also store state internally if needed, but this breaks DSSI compatibility).<br/>

Getting time information from the host is possible.<br/>
It uses the same format as the JACK Transport API, making porting some code easier.<br/>


List of plugins made with DPF:<br/>
- [DISTRHO Kars](https://github.com/DISTRHO/Kars)
- [DISTRHO Mini-Series](https://github.com/DISTRHO/Mini-Series)
- [DISTRHO MVerb](https://github.com/DISTRHO/MVerb)
- [DISTRHO Nekobi](https://github.com/DISTRHO/Nekobi)


+ 26
- 3
dpf/distrho/DistrhoPlugin.hpp View File

@@ -549,26 +549,39 @@ protected:
*/
virtual const char* getLabel() const = 0;

/**
Get an extensive comment/description about the plugin.@n
Optional, returns nothing by default.
*/
virtual const char* getDescription() const { return ""; }

/**
Get the plugin author/maker.
*/
virtual const char* getMaker() const = 0;

/**
Get the plugin license name (a single line of text).@n
Get the plugin homepage.@n
Optional, returns nothing by default.
*/
virtual const char* getHomePage() const { return ""; }

/**
Get the plugin license (a single line of text or a URL).@n
For commercial plugins this should return some short copyright information.
*/
virtual const char* getLicense() const = 0;

/**
Get the plugin version, in hexadecimal.@n
TODO format to be defined
Get the plugin version, in hexadecimal.
@see d_version()
*/
virtual uint32_t getVersion() const = 0;

/**
Get the plugin unique Id.@n
This value is used by LADSPA, DSSI and VST plugin formats.
@see d_cconst()
*/
virtual int64_t getUniqueId() const = 0;

@@ -631,6 +644,16 @@ protected:
virtual void loadProgram(uint32_t index) = 0;
#endif

#if DISTRHO_PLUGIN_WANT_FULL_STATE
/**
Get the value of an internal state.@n
The host may call this function from any non-realtime context.@n
Must be implemented by your plugin class if DISTRHO_PLUGIN_WANT_PROGRAMS or DISTRHO_PLUGIN_WANT_FULL_STATE is enabled.
@note The use of this function breaks compatibility with the DSSI format.
*/
virtual String getState(const char* key) const = 0;
#endif

#if DISTRHO_PLUGIN_WANT_STATE
/**
Change an internal state @a key to @a value.@n


+ 9
- 0
dpf/distrho/DistrhoUtils.hpp View File

@@ -62,6 +62,15 @@ int64_t d_cconst(const uint8_t a, const uint8_t b, const uint8_t c, const uint8_
return (a << 24) | (b << 16) | (c << 8) | (d << 0);
}

/*
* Return an hexadecimal representation of a MAJ.MIN.MICRO version number.
*/
static inline
uint32_t d_version(const uint8_t major, const uint8_t minor, const uint8_t micro) noexcept
{
return (major << 16) | (minor << 8) | (micro << 0);
}

/*
* Dummy function.
*/


+ 12
- 0
dpf/distrho/src/DistrhoPluginChecks.h View File

@@ -73,6 +73,10 @@
# define DISTRHO_PLUGIN_WANT_STATE 0
#endif

#ifndef DISTRHO_PLUGIN_WANT_FULL_STATE
# define DISTRHO_PLUGIN_WANT_FULL_STATE 0
#endif

#ifndef DISTRHO_PLUGIN_WANT_TIMEPOS
# define DISTRHO_PLUGIN_WANT_TIMEPOS 0
#endif
@@ -104,6 +108,14 @@
# error Synths need MIDI input to work!
#endif

// -----------------------------------------------------------------------
// Enable full state if plugin exports presets

#if DISTRHO_PLUGIN_WANT_PROGRAMS && DISTRHO_PLUGIN_WANT_STATE
# undef DISTRHO_PLUGIN_WANT_FULL_STATE
# define DISTRHO_PLUGIN_WANT_FULL_STATE 1
#endif

// -----------------------------------------------------------------------
// Disable UI if DGL is not available



+ 24
- 0
dpf/distrho/src/DistrhoPluginInternal.hpp View File

@@ -196,6 +196,13 @@ public:
return fPlugin->getLabel();
}

const char* getDescription() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(fPlugin != nullptr, "");

return fPlugin->getDescription();
}

const char* getMaker() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(fPlugin != nullptr, "");
@@ -203,6 +210,13 @@ public:
return fPlugin->getMaker();
}

const char* getHomePage() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(fPlugin != nullptr, "");

return fPlugin->getHomePage();
}

const char* getLicense() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(fPlugin != nullptr, "");
@@ -371,6 +385,16 @@ public:
return fData->stateDefValues[index];
}

# if DISTRHO_PLUGIN_WANT_FULL_STATE
String getState(const char* key) const
{
DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr, sFallbackString);
DISTRHO_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0', sFallbackString);

return fPlugin->getState(key);
}
# endif

void setState(const char* const key, const char* const value)
{
DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr,);


+ 26
- 6
dpf/distrho/src/DistrhoPluginLV2.cpp View File

@@ -40,6 +40,10 @@
# error DISTRHO_PLUGIN_URI undefined!
#endif

#ifndef DISTRHO_PLUGIN_LV2_STATE_PREFIX
# define DISTRHO_PLUGIN_LV2_STATE_PREFIX "urn:distrho:"
#endif

#define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI))
#define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANT_MIDI_OUTPUT || (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI))

@@ -739,6 +743,15 @@ public:
if (fPortControls[i] != nullptr)
*fPortControls[i] = fLastControlValues[i];
}

# if DISTRHO_PLUGIN_WANT_FULL_STATE
// Update state
for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
fStateMap[key] = fPlugin.getState(key);
}
# endif
}
#endif

@@ -747,12 +760,21 @@ public:
#if DISTRHO_PLUGIN_WANT_STATE
LV2_State_Status lv2_save(const LV2_State_Store_Function store, const LV2_State_Handle handle)
{
# if DISTRHO_PLUGIN_WANT_FULL_STATE
// Update current state
for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
fStateMap[key] = fPlugin.getState(key);
}
# endif

for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
const String& value = cit->second;

const String urnKey("urn:distrho:" + key);
const String urnKey(DISTRHO_PLUGIN_LV2_STATE_PREFIX + key);

// some hosts need +1 for the null terminator, even though the type is string
store(handle, fUridMap->map(fUridMap->handle, urnKey.buffer()), value.buffer(), value.length()+1, fURIDs.atomString, LV2_STATE_IS_POD|LV2_STATE_IS_PORTABLE);
@@ -769,7 +791,7 @@ public:
for (uint32_t i=0, count=fPlugin.getStateCount(); i < count; ++i)
{
const String& key(fPlugin.getStateKey(i));
const String urnKey("urn:distrho:" + key);
const String urnKey(DISTRHO_PLUGIN_LV2_STATE_PREFIX + key);

size = 0;
type = 0;
@@ -909,7 +931,7 @@ private:
atomLong(uridMap->map(uridMap->handle, LV2_ATOM__Long)),
atomSequence(uridMap->map(uridMap->handle, LV2_ATOM__Sequence)),
atomString(uridMap->map(uridMap->handle, LV2_ATOM__String)),
distrhoState(uridMap->map(uridMap->handle, "urn:distrho:keyValueState")),
distrhoState(uridMap->map(uridMap->handle, DISTRHO_PLUGIN_LV2_STATE_PREFIX "KeyValueState")),
midiEvent(uridMap->map(uridMap->handle, LV2_MIDI__MidiEvent)),
timePosition(uridMap->map(uridMap->handle, LV2_TIME__Position)),
timeBar(uridMap->map(uridMap->handle, LV2_TIME__bar)),
@@ -1161,15 +1183,13 @@ static const void* lv2_extension_data(const char* uri)
#endif

#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
# define DISTRHO_DIRECT_ACCESS_URI "urn:distrho:direct-access"

struct LV2_DirectAccess_Interface {
void* (*get_instance_pointer)(LV2_Handle handle);
};

static const LV2_DirectAccess_Interface directaccess = { lv2_get_instance_pointer };

if (std::strcmp(uri, DISTRHO_DIRECT_ACCESS_URI) == 0)
if (std::strcmp(uri, DISTRHO_PLUGIN_LV2_STATE_PREFIX "direct-access") == 0)
return &directaccess;
#endif



+ 82
- 29
dpf/distrho/src/DistrhoPluginLV2export.cpp View File

@@ -195,6 +195,10 @@ void lv2_generate_ttl(const char* const basename)
pluginString += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n";
pluginString += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n";
pluginString += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n";
#ifdef DISTRHO_PLUGIN_BRAND
pluginString += "@prefix mod: <http://moddevices.com/ns/mod#> .\n";
#endif
pluginString += "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n";
pluginString += "@prefix rsz: <" LV2_RESIZE_PORT_PREFIX "> .\n";
#if DISTRHO_PLUGIN_HAS_UI
pluginString += "@prefix ui: <" LV2_UI_PREFIX "> .\n";
@@ -266,7 +270,7 @@ void lv2_generate_ttl(const char* const basename)
pluginString += " a lv2:InputPort, lv2:AudioPort ;\n";

pluginString += " lv2:index " + String(portIndex) + " ;\n";
pluginString += " lv2:symbol \"" + port.symbol + "\" ;\n";
pluginString += " lv2:symbol \"lv2_" + port.symbol + "\" ;\n";
pluginString += " lv2:name \"" + port.name + "\" ;\n";

if (port.hints & kAudioPortIsSidechain)
@@ -296,7 +300,7 @@ void lv2_generate_ttl(const char* const basename)
pluginString += " a lv2:OutputPort, lv2:AudioPort ;\n";

pluginString += " lv2:index " + String(portIndex) + " ;\n";
pluginString += " lv2:symbol \"" + port.symbol + "\" ;\n";
pluginString += " lv2:symbol \"lv2_" + port.symbol + "\" ;\n";
pluginString += " lv2:name \"" + port.name + "\" ;\n";

if (port.hints & kAudioPortIsSidechain)
@@ -426,6 +430,14 @@ void lv2_generate_ttl(const char* const basename)
{
pluginString += " unit:unit unit:mhz ;\n";
}
else if (unit == "ms")
{
pluginString += " unit:unit unit:ms ;\n";
}
else if (unit == "s")
{
pluginString += " unit:unit unit:s ;\n";
}
else if (unit == "%")
{
pluginString += " unit:unit unit:pc ;\n";
@@ -433,8 +445,7 @@ void lv2_generate_ttl(const char* const basename)
else
{
pluginString += " unit:unit [\n";
pluginString += " a unit:Unit ;\n";
pluginString += " unit:name \"" + unit + "\" ;\n";
pluginString += " rdfs:label \"" + unit + "\" ;\n";
pluginString += " unit:symbol \"" + unit + "\" ;\n";
pluginString += " unit:render \"%f " + unit + "\" ;\n";
pluginString += " ] ;\n";
@@ -466,8 +477,60 @@ void lv2_generate_ttl(const char* const basename)
}
}

// comment
{
const String comment(plugin.getDescription());

if (comment.isNotEmpty())
pluginString += " rdfs:comment \"\"\"\n" + comment + "\n\"\"\" ;\n\n";
}

#ifdef DISTRHO_PLUGIN_BRAND
// MOD
pluginString += " mod:brand \"" DISTRHO_PLUGIN_BRAND "\" ;\n";
pluginString += " mod:label \"" DISTRHO_PLUGIN_NAME "\" ;\n\n";
#endif

// name
pluginString += " doap:name \"" + String(plugin.getName()) + "\" ;\n";
pluginString += " doap:maintainer [ foaf:name \"" + String(plugin.getMaker()) + "\" ] .\n";

// license
{
const String license(plugin.getLicense());

if (license.contains("://"))
pluginString += " doap:license <" + license + "> ;\n\n";
else
pluginString += " doap:license \"" + license + "\" ;\n\n";
}

// developer
{
const String homepage(plugin.getHomePage());

pluginString += " doap:maintainer [\n";
pluginString += " foaf:name \"" + String(plugin.getMaker()) + "\" ;\n";

if (homepage.isNotEmpty())
pluginString += " foaf:homepage <" + homepage + "> ;\n";

pluginString += " ] ;\n\n";
}

{
const uint32_t version(plugin.getVersion());

const uint32_t majorVersion = (version & 0xFF0000) >> 16;
const uint32_t microVersion = (version & 0x00FF00) >> 8;
/* */ uint32_t minorVersion = (version & 0x0000FF) >> 0;

// NOTE: LV2 ignores 'major' version and says 0 for minor is pre-release/unstable.
if (majorVersion > 0)
minorVersion += 2;

pluginString += " lv2:microVersion " + String(microVersion) + " ;\n";
pluginString += " lv2:minorVersion " + String(minorVersion) + " .\n";
}

pluginFile << pluginString << std::endl;
pluginFile.close();
@@ -518,7 +581,6 @@ void lv2_generate_ttl(const char* const basename)
String presetsString;
presetsString += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n";
presetsString += "@prefix pset: <" LV2_PRESETS_PREFIX "> .\n";
presetsString += "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n";
# if DISTRHO_PLUGIN_WANT_STATE
presetsString += "@prefix state: <" LV2_STATE_PREFIX "> .\n";
# endif
@@ -526,7 +588,7 @@ void lv2_generate_ttl(const char* const basename)

const uint32_t numParameters = plugin.getParameterCount();
const uint32_t numPrograms = plugin.getProgramCount();
# if DISTRHO_PLUGIN_WANT_STATE
# if DISTRHO_PLUGIN_WANT_FULL_STATE
const uint32_t numStates = plugin.getStateCount();
# endif

@@ -545,34 +607,25 @@ void lv2_generate_ttl(const char* const basename)

presetString = "<" DISTRHO_PLUGIN_URI + presetSeparator + "preset" + strBuf + ">\n";

# if DISTRHO_PLUGIN_WANT_STATE
# warning "Exporting LV2 Presets with state not supported yet"
# if 0
# if DISTRHO_PLUGIN_WANT_FULL_STATE
presetString += " state:state [\n";
for (uint32_t j=0; j<numStates; ++j)
{
if (j == 0)
presetString += " state:state [\n";
else
presetString += " [\n";
const String key = plugin.getStateKey(j);
const String value = plugin.getState(key);

presetString += " <urn:distrho:" + plugin.getStateKey(j) + ">\n";
presetString += "\"\"\"\n";
presetString += plugin.getState(j);
presetString += "\"\"\"\n";
presetString += " <urn:distrho:" + key + ">";

if (j+1 == numStates)
{
if (numParameters > 0)
presetString += " ] ;\n\n";
else
presetString += " ] .\n\n";
}
if (value.length() < 10)
presetString += " \"" + value + "\" ;\n";
else
{
presetString += " ] ,\n";
}
presetString += "\n\"\"\"\n" + value + "\n\"\"\" ;\n";
}
# endif

if (numParameters > 0)
presetString += " ] ;\n\n";
else
presetString += " ] .\n\n";
# endif

for (uint32_t j=0; j <numParameters; ++j)


+ 19
- 0
dpf/distrho/src/DistrhoPluginVST.cpp View File

@@ -454,7 +454,17 @@ public:

fVstUI = new UIVst(fAudioMaster, fEffect, this, &fPlugin, (intptr_t)ptr);

# if DISTRHO_PLUGIN_WANT_FULL_STATE
// Update current state from plugin side
for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
fStateMap[key] = fPlugin.getState(key);
}
# endif

# if DISTRHO_PLUGIN_WANT_STATE
// Set state
for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
@@ -506,6 +516,15 @@ public:
}
else
{
# if DISTRHO_PLUGIN_WANT_FULL_STATE
// Update current state
for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)
{
const String& key = cit->first;
fStateMap[key] = fPlugin.getState(key);
}
# endif

String chunkStr;

for (StringMap::const_iterator cit=fStateMap.begin(), cite=fStateMap.end(); cit != cite; ++cit)


+ 6
- 4
dpf/distrho/src/DistrhoUILV2.cpp View File

@@ -28,6 +28,10 @@
#include "lv2/lv2_kxstudio_properties.h"
#include "lv2/lv2_programs.h"

#ifndef DISTRHO_PLUGIN_LV2_STATE_PREFIX
# define DISTRHO_PLUGIN_LV2_STATE_PREFIX "urn:distrho:"
#endif

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------
@@ -46,7 +50,7 @@ public:
fController(controller),
fWriteFunction(writeFunc),
fEventTransferURID(uridMap->map(uridMap->handle, LV2_ATOM__eventTransfer)),
fKeyValueURID(uridMap->map(uridMap->handle, "urn:distrho:keyValueState")),
fKeyValueURID(uridMap->map(uridMap->handle, DISTRHO_PLUGIN_LV2_STATE_PREFIX "KeyValueState")),
fWinIdWasNull(winId == 0)
{
if (fUiResize != nullptr && winId != 0)
@@ -331,8 +335,6 @@ static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor*, const char* uri,
void* instance = nullptr;

#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
# define DISTRHO_DIRECT_ACCESS_URI "urn:distrho:direct-access"

struct LV2_DirectAccess_Interface {
void* (*get_instance_pointer)(LV2_Handle handle);
};
@@ -381,7 +383,7 @@ static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor*, const char* uri,
return nullptr;
}

if (const LV2_DirectAccess_Interface* const directAccess = (const LV2_DirectAccess_Interface*)extData->data_access(DISTRHO_DIRECT_ACCESS_URI))
if (const LV2_DirectAccess_Interface* const directAccess = (const LV2_DirectAccess_Interface*)extData->data_access(DISTRHO_PLUGIN_LV2_STATE_PREFIX "direct-access"))
instance = directAccess->get_instance_pointer(instance);
else
instance = nullptr;


+ 2
- 2
dpf/utils/lv2-ttl-generator/GNUmakefile View File

@@ -9,10 +9,10 @@ build: ../lv2_ttl_generator
endif

../lv2_ttl_generator: lv2_ttl_generator.c
$(CC) lv2_ttl_generator.c -o ../lv2_ttl_generator -ldl
$(CC) $< -o $@ -ldl

../lv2_ttl_generator.exe: lv2_ttl_generator.c
$(CC) lv2_ttl_generator.c -o ../lv2_ttl_generator.exe -static
$(CC) $< -o $@ -static
touch ../lv2_ttl_generator

clean:


BIN
modguis/Kars.modgui/modgui/pedals/boxy-small/yellow.png View File

Before After
Width: 301  |  Height: 315  |  Size: 159KB Width: 301  |  Height: 315  |  Size: 171KB

BIN
modguis/Kars.modgui/modgui/screenshot-kars.png View File

Before After
Width: 332  |  Height: 314  |  Size: 165KB Width: 332  |  Height: 314  |  Size: 177KB

+ 49
- 49
modguis/Kars.modgui/modgui/stylesheet-kars.css View File

@@ -159,30 +159,20 @@
/* = KNOBS
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-control-group {
margin:20px;
margin:20px !important;
position:relative;
text-align:center;
z-index:30;
}
.mod-pedal-boxy{{{cns}}} .top {
margin-top:0px !important;
}

.mod-pedal-boxy{{{cns}}} .mod-control-group .mod-knob {
overflow:hidden;
position:relative;
}

.mod-pedal-boxy{{{cns}}} .mod-control-group .mod-knob {
height:110px;
}

.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-five-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-six-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-seven-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-eight-knobs .mod-control-group .mod-knob {
height:81px;
}

.mod-pedal-boxy{{{cns}}} .mod-control-group .mod-knob > span.mod-knob-title {
bottom:0px;
display:block;
@@ -199,47 +189,44 @@
text-transform:uppercase;
}

/* ONE and TWO KNOBS */
.mod-pedal-boxy{{{cns}}}.mod-one-knob .mod-control-group .mod-knob .mod-knob-image,
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob .mod-knob-image {
/* ONE KNOB */
.mod-pedal-boxy{{{cns}}}.mod-one-knob .mod-control-group .mod-knob .mod-knob-image {
background-image:url(/resources/knobs/boxy/boxy.png{{{ns}}});
}
.mod-pedal-boxy{{{cns}}}.mod-one-knob .mod-control-group .mod-knob .mod-knob-image,
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob .mod-knob-image {
height:100px;
background-repeat:no-repeat;
background-size:auto 98px;
height:98px;
width:98px;
margin:0 auto;
width:100px;
}
.mod-pedal-boxy{{{cns}}}.mod-one-knob .mod-control-group .mod-knob > span.mod-knob-title {
font-size:15px;
height:15px;
}
.mod-pedal-boxy{{{cns}}}.mod-one-knob .mod-control-group .mod-knob {
height:115px;
}

/* TWO KNOBS */
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group {
margin:20px 10px;
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob .mod-knob-image {
background-image:url(/resources/knobs/boxy/boxy.png{{{ns}}});
background-repeat:no-repeat;
background-size:auto 90px;
height:90px;
width:90px;
margin:0 auto;
}
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob > span.mod-knob-title {
font-size:13px;
}

.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob {
float:left;
width:50%;
}

/* THREE AND HIGHER KNOBS */
.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-control-group,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-control-group,
.mod-pedal-boxy{{{cns}}}.mod-five-knobs .mod-control-group,
.mod-pedal-boxy{{{cns}}}.mod-six-knobs .mod-control-group,
.mod-pedal-boxy{{{cns}}}.mod-seven-knobs .mod-control-group,
.mod-pedal-boxy{{{cns}}}.mod-eight-knobs .mod-control-group {
margin:20px 6px;
}

.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-five-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-six-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-seven-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-eight-knobs .mod-control-group .mod-knob {
display:inline-block;
.mod-pedal-boxy{{{cns}}}.mod-two-knobs .mod-control-group .mod-knob {
height:103px;
}

/* THREE AND HIGHER KNOBS */
.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-control-group .mod-knob .mod-knob-image,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-control-group .mod-knob .mod-knob-image,
.mod-pedal-boxy{{{cns}}}.mod-five-knobs .mod-control-group .mod-knob .mod-knob-image,
@@ -248,10 +235,19 @@
.mod-pedal-boxy{{{cns}}}.mod-eight-knobs .mod-control-group .mod-knob .mod-knob-image {
background-image:url(/resources/knobs/lata/lata.png{{{ns}}});
background-repeat:no-repeat;
background-size:auto 70px;
height:70px;
margin:0 -2px;
width:70px;
background-size:auto 60px;
height:60px;
width:60px;
margin:0 auto;
}
.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-five-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-six-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-seven-knobs .mod-control-group .mod-knob,
.mod-pedal-boxy{{{cns}}}.mod-eight-knobs .mod-control-group .mod-knob {
display:inline-block;
height:73px;
}

/* EIGTH KNOBS */
@@ -269,10 +265,15 @@
z-index:35;
}

.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-enumerated-group {
.mod-pedal-boxy{{{cns}}}.mod-three-knobs .mod-enumerated-group,
.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-enumerated-group {
margin-bottom:5px !important;
}

.mod-pedal-boxy{{{cns}}}.mod-four-knobs .mod-enumerated-group {
width:250px;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated {
background-position:right center;
background-repeat:no-repeat;
@@ -1062,4 +1063,3 @@
{
border-color:black;
}


BIN
modguis/Kars.modgui/modgui/thumbnail-kars.png View File

Before After
Width: 67  |  Height: 64  |  Size: 7.0KB Width: 67  |  Height: 64  |  Size: 7.1KB

+ 11
- 1
plugins/3BandEQ/DistrhoPlugin3BandEQ.hpp View File

@@ -49,11 +49,21 @@ protected:
return "3BandEQ";
}
const char* getDescription() const override
{
return "3 Band Equalizer, stereo version.";
}
const char* getMaker() const noexcept override
{
return "DISTRHO";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Mini-Series";
}
const char* getLicense() const noexcept override
{
return "LGPL";
@@ -61,7 +71,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/3BandEQ/DistrhoPluginInfo.h View File

@@ -17,8 +17,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "3 Band EQ"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/3BandEQ"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "3 Band EQ"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/3BandEQ"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 11
- 1
plugins/3BandSplitter/DistrhoPlugin3BandSplitter.hpp View File

@@ -49,11 +49,21 @@ protected:
return "3BandSplitter";
}
const char* getDescription() const override
{
return "3 Band Equalizer, splitted output version.";
}
const char* getMaker() const noexcept override
{
return "DISTRHO";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Mini-Series";
}
const char* getLicense() const noexcept override
{
return "LGPL";
@@ -61,7 +71,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/3BandSplitter/DistrhoPluginInfo.h View File

@@ -17,8 +17,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "3 Band Splitter"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/3BandSplitter"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "3 Band Splitter"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/3BandSplitter"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 2
- 2
plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.cpp View File

@@ -62,7 +62,7 @@ void DistrhoPluginAmplitudeImposer::initAudioPort(bool input, uint32_t index, Au
break;
case 1:
port.name = "Input Right (Amp Env)";
port.symbol = "in_left_amp";
port.symbol = "in_right_amp";
break;
case 2:
port.name = "Input Left (Audio)";
@@ -84,7 +84,7 @@ void DistrhoPluginAmplitudeImposer::initAudioPort(bool input, uint32_t index, Au
break;
case 1:
port.name = "Output Right";
port.symbol = "out_left";
port.symbol = "out_right";
break;
}
}


+ 17
- 1
plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.hpp View File

@@ -46,16 +46,32 @@ protected:
// -------------------------------------------------------------------
// Information
const char* getName() const noexcept override
{
return "Amplitude Imposer";
}
const char* getLabel() const noexcept override
{
return "AmplitudeImposer";
}
const char* getDescription() const override
{
return "Takes 2 stereo inputs and imposes the amplitude envelope of the first one on the second one.\n\
Also has a threshold level for the second input, so that when the signal falls below it, it is amplified up to the threshold, to give a greater signal to be amplitude modulated.";
}
const char* getMaker() const noexcept override
{
return "ndc Plugs";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/ndc-Plugs";
}
const char* getLicense() const noexcept override
{
return "MIT";
@@ -63,7 +79,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(0, 1, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/AmplitudeImposer/DistrhoPluginInfo.h View File

@@ -25,8 +25,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Amplitude Imposer"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/ampimposer.htm"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Amplitude Imposr"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/ampimposer.htm"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 12
- 1
plugins/CycleShifter/DistrhoPluginCycleShifter.hpp View File

@@ -53,11 +53,22 @@ protected:
return "CycleShifter";
}
const char* getDescription() const override
{
return "Reads in a cycle's-worth of the input signal, then (once the whole cycle's been read in) outputs it again, on top of the current output.\n\
Works best with long/sustained sounds (e.g. strings, pads etc.), sounds like a weird kind of gentle distortion.";
}
const char* getMaker() const noexcept override
{
return "ndc Plugs";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/ndc-Plugs";
}
const char* getLicense() const noexcept override
{
return "MIT";
@@ -65,7 +76,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(0, 1, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/CycleShifter/DistrhoPluginInfo.h View File

@@ -25,8 +25,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Cycle Shifter"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/cycleshifter.htm"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Cycle Shifter"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/cycleshifter.htm"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 4466
- 4466
plugins/Kars/DistrhoArtworkKars.cpp
File diff suppressed because it is too large
View File


+ 3
- 2
plugins/Kars/DistrhoPluginInfo.h View File

@@ -17,8 +17,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Kars"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/Kars"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Kars"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/Kars"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 12
- 2
plugins/Kars/DistrhoPluginKars.hpp View File

@@ -46,19 +46,29 @@ protected:
return "Kars";
}
const char* getDescription() const override
{
return "Simple karplus-strong plucked string synth.";
}
const char* getMaker() const noexcept override
{
return "falkTX";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Kars";
}
const char* getLicense() const noexcept override
{
return "GPL v2+";
return "ISC";
}
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


BIN
plugins/Kars/Screenshot.png View File

Before After
Width: 301  |  Height: 315  |  Size: 74KB Width: 301  |  Height: 315  |  Size: 170KB

BIN
plugins/Kars/artwork/background.png View File

Before After
Width: 301  |  Height: 315  |  Size: 65KB Width: 301  |  Height: 315  |  Size: 170KB

+ 3
- 2
plugins/MVerb/DistrhoPluginInfo.h View File

@@ -19,8 +19,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "MVerb"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/MVerb"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "MVerb"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/MVerb"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 11
- 1
plugins/MVerb/DistrhoPluginMVerb.hpp View File

@@ -40,11 +40,21 @@ protected:
return "MVerb";
}
const char* getDescription() const override
{
return "Studio quality reverb, provides a practical demonstration of Dattorro’s figure-of-eight reverb structure.";
}
const char* getMaker() const noexcept override
{
return "Martin Eastwood, falkTX";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/MVerb";
}
const char* getLicense() const noexcept override
{
return "GPL v3+";
@@ -52,7 +62,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/Nekobi/DistrhoPluginInfo.h View File

@@ -18,8 +18,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Nekobi"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/Nekobi"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Nekobi"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/Nekobi"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 11
- 1
plugins/Nekobi/DistrhoPluginNekobi.hpp View File

@@ -57,11 +57,21 @@ protected:
return "Nekobi";
}
const char* getDescription() const override
{
return "Simple single-oscillator synth based on the Roland TB-303.";
}
const char* getMaker() const noexcept override
{
return "Sean Bolton, falkTX";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Nekobi";
}
const char* getLicense() const noexcept override
{
return "GPL v2+";
@@ -69,7 +79,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/PingPongPan/DistrhoPluginInfo.h View File

@@ -17,8 +17,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Ping Pong Pan"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/PingPongPan"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Ping Pong Pan"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/PingPongPan"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 11
- 1
plugins/PingPongPan/DistrhoPluginPingPongPan.hpp View File

@@ -45,11 +45,21 @@ protected:
return "PingPongPan";
}
const char* getDescription() const override
{
return "Ping Pong Panning.";
}
const char* getMaker() const noexcept override
{
return "DISTRHO";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/Mini-Series";
}
const char* getLicense() const noexcept override
{
return "LGPL";
@@ -57,7 +67,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 2
- 1
plugins/ProM/DistrhoPluginInfo.h View File

@@ -17,7 +17,8 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "ProM"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "ProM"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/ProM"

#define DISTRHO_PLUGIN_HAS_UI 1


+ 11
- 1
plugins/ProM/DistrhoPluginProM.hpp View File

@@ -43,11 +43,21 @@ protected:
return "ProM";
}
const char* getDescription() const override
{
return "ProjectM visualizer.";
}
const char* getMaker() const noexcept override
{
return "DISTRHO";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/ProM";
}
const char* getLicense() const noexcept override
{
return "LGPL";
@@ -55,7 +65,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override


+ 3
- 2
plugins/SoulForce/DistrhoPluginInfo.h View File

@@ -25,8 +25,9 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Soul Force"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/soulforce.htm"
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Soul Force"
#define DISTRHO_PLUGIN_URI "http://www.niallmoody.com/ndcplugs/soulforce.htm"

#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_IS_RT_SAFE 1


+ 12
- 1
plugins/SoulForce/DistrhoPluginSoulForce.hpp View File

@@ -66,11 +66,22 @@ protected:
return "SoulForce";
}
const char* getDescription() const override
{
return "A fairly standard waveshaping distortion plugin, made more interesting through the use of feedback to control the shaping.\n\
Can get pretty loud and obnoxious.";
}
const char* getMaker() const noexcept override
{
return "ndc Plugs";
}
const char* getHomePage() const override
{
return "https://github.com/DISTRHO/ndc-Plugs";
}
const char* getLicense() const noexcept override
{
return "MIT";
@@ -78,7 +89,7 @@ protected:
uint32_t getVersion() const noexcept override
{
return 0x1000;
return d_version(0, 1, 0);
}
int64_t getUniqueId() const noexcept override


Loading…
Cancel
Save