Browse Source

Add all files back

tags/v1.0
falkTX 9 years ago
parent
commit
25c0d85d1b
100 changed files with 30898 additions and 1 deletions
  1. +56
    -0
      modguis/MVerb.modgui/manifest.ttl
  2. BIN
      modguis/MVerb.modgui/modgui/combos/model-001/model-0930.png
  3. +92
    -0
      modguis/MVerb.modgui/modgui/icon-mverb.html
  4. BIN
      modguis/MVerb.modgui/modgui/knobs/chicken-head/_strip.png
  5. BIN
      modguis/MVerb.modgui/modgui/screenshot-mverb.png
  6. +220
    -0
      modguis/MVerb.modgui/modgui/stylesheet-mverb.css
  7. BIN
      modguis/MVerb.modgui/modgui/switches/switch-001.png
  8. BIN
      modguis/MVerb.modgui/modgui/thumbnail-mverb.png
  9. BIN
      modguis/MVerb.modgui/modgui/utils/dropdown-arrow-white.png
  10. +46
    -0
      modguis/Modulay.modgui/manifest.ttl
  11. +49
    -0
      modguis/Modulay.modgui/modgui/icon-modulay.html
  12. BIN
      modguis/Modulay.modgui/modgui/knobs/boxy/black.png
  13. BIN
      modguis/Modulay.modgui/modgui/pedals/boxy75/racing.png
  14. BIN
      modguis/Modulay.modgui/modgui/pedals/footswitch.png
  15. BIN
      modguis/Modulay.modgui/modgui/screenshot-modulay.png
  16. +1093
    -0
      modguis/Modulay.modgui/modgui/stylesheet-modulay.css
  17. BIN
      modguis/Modulay.modgui/modgui/thumbnail-modulay.png
  18. BIN
      modguis/Modulay.modgui/modgui/utils/dropdown-arrow-black.png
  19. BIN
      modguis/Modulay.modgui/modgui/utils/dropdown-arrow-white.png
  20. +13
    -0
      modguis/PingPongPan.modgui/manifest.ttl
  21. BIN
      modguis/PingPongPan.modgui/modgui/background.png
  22. BIN
      modguis/PingPongPan.modgui/modgui/footswitch.png
  23. +41
    -0
      modguis/PingPongPan.modgui/modgui/icon-ppp.html
  24. BIN
      modguis/PingPongPan.modgui/modgui/knob.png
  25. BIN
      modguis/PingPongPan.modgui/modgui/screenshot-ppp.png
  26. +228
    -0
      modguis/PingPongPan.modgui/modgui/stylesheet-ppp.css
  27. BIN
      modguis/PingPongPan.modgui/modgui/thumb-ppp.png
  28. +42
    -0
      modguis/Pitchotto.modgui/manifest.ttl
  29. +49
    -0
      modguis/Pitchotto.modgui/modgui/icon-pitchotto.html
  30. BIN
      modguis/Pitchotto.modgui/modgui/knobs/boxy/black.png
  31. BIN
      modguis/Pitchotto.modgui/modgui/pedals/boxy/red.png
  32. BIN
      modguis/Pitchotto.modgui/modgui/pedals/footswitch.png
  33. BIN
      modguis/Pitchotto.modgui/modgui/screenshot-pitchotto.png
  34. +1093
    -0
      modguis/Pitchotto.modgui/modgui/stylesheet-pitchotto.css
  35. BIN
      modguis/Pitchotto.modgui/modgui/thumbnail-pitchotto.png
  36. BIN
      modguis/Pitchotto.modgui/modgui/utils/dropdown-arrow-black.png
  37. BIN
      modguis/Pitchotto.modgui/modgui/utils/dropdown-arrow-white.png
  38. +50
    -0
      modguis/Shiroverb.modgui/manifest.ttl
  39. +49
    -0
      modguis/Shiroverb.modgui/modgui/icon-shiroverb.html
  40. BIN
      modguis/Shiroverb.modgui/modgui/knobs/boxy/black.png
  41. BIN
      modguis/Shiroverb.modgui/modgui/pedals/boxy75/petrol.png
  42. BIN
      modguis/Shiroverb.modgui/modgui/pedals/footswitch.png
  43. BIN
      modguis/Shiroverb.modgui/modgui/screenshot-shiroverb.png
  44. +1093
    -0
      modguis/Shiroverb.modgui/modgui/stylesheet-shiroverb.css
  45. BIN
      modguis/Shiroverb.modgui/modgui/thumbnail-shiroverb.png
  46. BIN
      modguis/Shiroverb.modgui/modgui/utils/dropdown-arrow-black.png
  47. BIN
      modguis/Shiroverb.modgui/modgui/utils/dropdown-arrow-white.png
  48. +10107
    -0
      plugins/3BandEQ/DistrhoArtwork3BandEQ.cpp
  49. +40
    -0
      plugins/3BandEQ/DistrhoArtwork3BandEQ.hpp
  50. +264
    -0
      plugins/3BandEQ/DistrhoPlugin3BandEQ.cpp
  51. +123
    -0
      plugins/3BandEQ/DistrhoPlugin3BandEQ.hpp
  52. +32
    -0
      plugins/3BandEQ/DistrhoPluginInfo.h
  53. +211
    -0
      plugins/3BandEQ/DistrhoUI3BandEQ.cpp
  54. +72
    -0
      plugins/3BandEQ/DistrhoUI3BandEQ.hpp
  55. +55
    -0
      plugins/3BandEQ/Makefile
  56. BIN
      plugins/3BandEQ/Screenshot.png
  57. BIN
      plugins/3BandEQ/artwork/about.png
  58. BIN
      plugins/3BandEQ/artwork/aboutButtonHover.png
  59. BIN
      plugins/3BandEQ/artwork/aboutButtonNormal.png
  60. BIN
      plugins/3BandEQ/artwork/background.png
  61. BIN
      plugins/3BandEQ/artwork/knob.png
  62. BIN
      plugins/3BandEQ/artwork/slider.png
  63. +10107
    -0
      plugins/3BandSplitter/DistrhoArtwork3BandSplitter.cpp
  64. +40
    -0
      plugins/3BandSplitter/DistrhoArtwork3BandSplitter.hpp
  65. +272
    -0
      plugins/3BandSplitter/DistrhoPlugin3BandSplitter.cpp
  66. +123
    -0
      plugins/3BandSplitter/DistrhoPlugin3BandSplitter.hpp
  67. +32
    -0
      plugins/3BandSplitter/DistrhoPluginInfo.h
  68. +213
    -0
      plugins/3BandSplitter/DistrhoUI3BandSplitter.cpp
  69. +72
    -0
      plugins/3BandSplitter/DistrhoUI3BandSplitter.hpp
  70. +55
    -0
      plugins/3BandSplitter/Makefile
  71. BIN
      plugins/3BandSplitter/Screenshot.png
  72. BIN
      plugins/3BandSplitter/artwork/about.png
  73. BIN
      plugins/3BandSplitter/artwork/aboutButtonHover.png
  74. BIN
      plugins/3BandSplitter/artwork/aboutButtonNormal.png
  75. BIN
      plugins/3BandSplitter/artwork/background.png
  76. BIN
      plugins/3BandSplitter/artwork/knob.png
  77. BIN
      plugins/3BandSplitter/artwork/slider.png
  78. +2166
    -0
      plugins/AmplitudeImposer/DistrhoArtworkAmplitudeImposer.cpp
  79. +20
    -0
      plugins/AmplitudeImposer/DistrhoArtworkAmplitudeImposer.hpp
  80. +270
    -0
      plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.cpp
  81. +127
    -0
      plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.hpp
  82. +40
    -0
      plugins/AmplitudeImposer/DistrhoPluginInfo.h
  83. +116
    -0
      plugins/AmplitudeImposer/DistrhoUIAmplitudeImposer.cpp
  84. +70
    -0
      plugins/AmplitudeImposer/DistrhoUIAmplitudeImposer.hpp
  85. +53
    -0
      plugins/AmplitudeImposer/Makefile
  86. BIN
      plugins/AmplitudeImposer/Screenshot.png
  87. BIN
      plugins/AmplitudeImposer/artwork/back.png
  88. BIN
      plugins/AmplitudeImposer/artwork/slider.png
  89. +1386
    -0
      plugins/CycleShifter/DistrhoArtworkCycleShifter.cpp
  90. +20
    -0
      plugins/CycleShifter/DistrhoArtworkCycleShifter.hpp
  91. +193
    -0
      plugins/CycleShifter/DistrhoPluginCycleShifter.cpp
  92. +127
    -0
      plugins/CycleShifter/DistrhoPluginCycleShifter.hpp
  93. +38
    -0
      plugins/CycleShifter/DistrhoPluginInfo.h
  94. +116
    -0
      plugins/CycleShifter/DistrhoUICycleShifter.cpp
  95. +70
    -0
      plugins/CycleShifter/DistrhoUICycleShifter.hpp
  96. +53
    -0
      plugins/CycleShifter/Makefile
  97. BIN
      plugins/CycleShifter/Screenshot.png
  98. BIN
      plugins/CycleShifter/artwork/back.png
  99. BIN
      plugins/CycleShifter/artwork/slider.png
  100. +1
    -1
      plugins/Kars/Makefile

+ 56
- 0
modguis/MVerb.modgui/manifest.ttl View File

@@ -0,0 +1,56 @@
@prefix mod: <http://moddevices.com/ns/mod#> .
@prefix modgui: <http://moddevices.com/ns/modgui#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .

<http://distrho.sf.net/plugins/MVerb>
mod:brand "DISTRHO" ;
mod:label "MVerb" ;
modgui:gui [
modgui:resourcesDirectory <modgui> ;
modgui:iconTemplate <modgui/icon-mverb.html> ;
modgui:stylesheet <modgui/stylesheet-mverb.css> ;
modgui:screenshot <modgui/screenshot-mverb.png> ;
modgui:thumbnail <modgui/thumbnail-mverb.png> ;
modgui:brand "Martin Eastwood" ;
modgui:label "MVerb" ;
modgui:model "combo-model-001" ;
modgui:panel "0930" ;
modgui:port [
lv2:index 0 ;
lv2:symbol "mix" ;
lv2:name "MIX" ;
] , [
lv2:index 1 ;
lv2:symbol "predelay" ;
lv2:name "PRE" ;
] , [
lv2:index 2 ;
lv2:symbol "earlymix" ;
lv2:name "EL/MIX" ;
] , [
lv2:index 3 ;
lv2:symbol "size" ;
lv2:name "SIZE" ;
] , [
lv2:index 4 ;
lv2:symbol "density" ;
lv2:name "DENSITY" ;
] , [
lv2:index 5 ;
lv2:symbol "bandwidth" ;
lv2:name "BAND" ;
] , [
lv2:index 6 ;
lv2:symbol "decay" ;
lv2:name "DECAY" ;
] , [
lv2:index 7 ;
lv2:symbol "damping" ;
lv2:name "DAMP" ;
] , [
lv2:index 8 ;
lv2:symbol "gain" ;
lv2:name "GAIN" ;
] ;
] .

BIN
modguis/MVerb.modgui/modgui/combos/model-001/model-0930.png View File

Before After
Width: 930  |  Height: 200  |  Size: 139KB

+ 92
- 0
modguis/MVerb.modgui/modgui/icon-mverb.html View File

@@ -0,0 +1,92 @@
<div class="mod-pedal mod-combo-model-001{{{cns}}} mod-combo-model-001-0930{{{cns}}}">
<div mod-role="drag-handle" class="mod-drag-handle"></div>
<div class="mod-plugin-brand"><h1>{{brand}}</h1></div>
<div class="mod-plugin-name"><h1>{{label}}</h1></div>
<div class="mod-control-group clearfix">
<div class="mod-switch" mod-role="bypass">
<div class="mod-switch-image" mod-role="bypass-light"></div>
</div>
<div class="mod-separator"></div>
{{#controls.0}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.0}}
<div class="mod-separator"></div>
{{#controls.1}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.1}}
{{#controls.2}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.2}}
<div class="mod-separator"></div>
{{#controls.3}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.3}}
{{#controls.4}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.4}}
{{#controls.5}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.5}}
{{#controls.6}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.6}}
{{#controls.7}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.7}}
<div class="mod-separator"></div>
{{#controls.8}}
<div class="mod-chicken-head">
<div class="mod-chicken-head-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-chicken-head-title">{{name}}</span>
</div>
{{/controls.8}}
</div>
<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
{{#effect.ports.midi.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
{{#effect.ports.midi.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.midi.output}}
</div>
</div>

BIN
modguis/MVerb.modgui/modgui/knobs/chicken-head/_strip.png View File

Before After
Width: 9750  |  Height: 150  |  Size: 441KB

BIN
modguis/MVerb.modgui/modgui/screenshot-mverb.png View File

Before After
Width: 961  |  Height: 199  |  Size: 158KB

+ 220
- 0
modguis/MVerb.modgui/modgui/stylesheet-mverb.css View File

@@ -0,0 +1,220 @@
/* SKINS */
.mod-combo-model-001{{{cns}}} {
border-radius: 20px;
}
.mod-combo-model-001-0550{{{cns}}} {
background-image: url(/resources/combos/model-001/model-0550.png{{{ns}}});
background-position: center center;
background-repeat: no-repeat;
height: 200px;
position: relative;
width: 550px;
}

.mod-combo-model-001-0625{{{cns}}} {
background-image: url(/resources/combos/model-001/model-0625.png{{{ns}}});
background-position: center center;
background-repeat: no-repeat;
height: 200px;
position: relative;
width: 625px;
}

.mod-combo-model-001-0778{{{cns}}} {
background-image: url(/resources/combos/model-001/model-0778.png{{{ns}}});
background-position: center center;
background-repeat: no-repeat;
height: 200px;
position: relative;
width: 778px;
}

.mod-combo-model-001-0930{{{cns}}} {
background-image: url(/resources/combos/model-001/model-0930.png{{{ns}}});
background-position: center center;
background-repeat: no-repeat;
height: 200px;
position: relative;
width: 930px;
}


/* THE AUTHOR */
.mod-combo-model-001{{{cns}}} .mod-plugin-brand h1 {
color: #333;
font-size: 18px;
font-weight: bold;
left: 80px;
line-height: 1;
margin: 0;
position: absolute;
top: 23px;
}

/* PLUGIN'S NAME */
.mod-combo-model-001{{{cns}}} .mod-plugin-name h1 {
color: #333;
font-size: 18px;
font-weight: bold;
line-height: 1;
margin: 0;
position: absolute;
right: 80px;
top: 23px;
}

/* CONTROLS */
.mod-combo-model-001{{{cns}}} .mod-control-group {
border-color: #000;
border-style: solid;
border-width: 1px 0 0 0;
bottom: 149px;
color: #000;
font-size: 10px;
font-weight: bold;
height: 71px;
left: 58px;
position: absolute;
right: 58px;
top: 47px;
}

.mod-combo-model-001{{{cns}}} .mod-control-group > div {
margin-right: 2px;
}

.mod-combo-model-001{{{cns}}} .mod-pedal-input,
.mod-combo-model-001{{{cns}}} .mod-pedal-output {
top: 30px;
}

/* SWITCH ON/OFF GENERAL */
.mod-combo-model-001{{{cns}}} .mod-switch {
cursor: pointer;
float: left;
height: 71px;
position: relative;
width: 130px;
}

.mod-combo-model-001{{{cns}}} .mod-switch-image {
background-image: url(/resources/switches/switch-001.png{{{ns}}});
background-position: -9px 0px;
background-repeat: no-repeat;
background-size: auto 71px;
height: 71px;
width: 71px;
}

.mod-combo-model-001{{{cns}}} .mod-switch-image.on {
background-position: -80px 0px;
}

.mod-combo-model-001{{{cns}}} .mod-switch-image.off {
background-position: -9px 0px;
}

/* CHICKEN HEAD */
.mod-combo-model-001{{{cns}}} .mod-chicken-head {
float: left;
height: 71px;
overflow: hidden;
position: relative;
text-align: center;
width: 71px;
}

.mod-combo-model-001{{{cns}}} .mod-chicken-head .mod-chicken-head-image {
background-image: url(/resources/knobs/chicken-head/_strip.png{{{ns}}});
background-position: left 0px;
background-repeat: no-repeat;
background-size: auto 71px;
height: 71px;
margin-top: 3px;
position: relative;
width: 71px;
z-index: 2;
}

.mod-combo-model-001{{{cns}}} .mod-chicken-head .mod-chicken-head-title {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 10px;
font-weight: bold;
height:18px;
left: 0;
overflow:hidden;
position: absolute;
right: 0;
text-transform: uppercase;
top: 0;
z-index: 1;
}

/* ENUMERATED LIST */
.mod-combo-model-001{{{cns}}} .mod-enumerated {
color:#fff;
display:inline-block;
left:132px;
overflow:hidden;
position:absolute;
top:-27px;
width:240px;
}

.mod-combo-model-001{{{cns}}} .mod-enumerated .mod-enumerated-selected {
background-color:rgba(0,0,0,.8);
background-image:url(/resources/utils/dropdown-arrow-white.png{{{ns}}});
background-position:right center;
background-repeat:no-repeat;
border-radius:4px;
box-shadow:inset 1px 1px 5px #000;
color:#fff;
font-size:12px;
height:24px;
line-height:2;
margin-right:8px;
overflow:hidden;
padding:0 9px;
}

/* WHEN IS HOVER */
.mod-combo-model-001{{{cns}}} .mod-enumerated:hover .mod-enumerated-selected {
border-radius:4px 4px 0 0;
}

/* THE LIST OF OPTIONS */
.mod-combo-model-001{{{cns}}} .mod-enumerated .mod-enumerated-list {
display:none;
font-weight:bold;
}

.mod-combo-model-001{{{cns}}} .mod-enumerated .mod-enumerated-list > div {
padding:3px 9px;
}

.mod-combo-model-001{{{cns}}} .mod-enumerated .mod-enumerated-list > div:hover {
background:rgba(255,255,255,.2);
cursor:pointer;
}

/* WHEN THE LIST IS SHOWING */
.mod-combo-model-001{{{cns}}} .mod-enumerated .mod-enumerated-list {
background:rgba(0,0,0,.9);
display:none;
height:85px;
overflow:auto;
position:relative;
width:232px;
z-index:3;
}


/* SEPARATOR */
.mod-combo-model-001{{{cns}}} .mod-separator {
background: #000;
display: inline-block;
float: left;
height: 69px;
margin-top: 2px;
width: 1px;
}

BIN
modguis/MVerb.modgui/modgui/switches/switch-001.png View File

Before After
Width: 600  |  Height: 300  |  Size: 26KB

BIN
modguis/MVerb.modgui/modgui/thumbnail-mverb.png View File

Before After
Width: 256  |  Height: 53  |  Size: 18KB

BIN
modguis/MVerb.modgui/modgui/utils/dropdown-arrow-white.png View File

Before After
Width: 13  |  Height: 6  |  Size: 977B

+ 46
- 0
modguis/Modulay.modgui/manifest.ttl View File

@@ -0,0 +1,46 @@
@prefix modgui: <http://moddevices.com/ns/modgui#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .

<http://distrho.sf.net/plugins/Modulay>
modgui:gui [
modgui:resourcesDirectory <modgui> ;
modgui:iconTemplate <modgui/icon-modulay.html> ;
modgui:stylesheet <modgui/stylesheet-modulay.css> ;
modgui:screenshot <modgui/screenshot-modulay.png> ;
modgui:thumbnail <modgui/thumbnail-modulay.png> ;
modgui:brand "Shiro" ;
modgui:label "Modulay" ;
modgui:model "boxy" ;
modgui:panel "7-knobs" ;
modgui:color "racing" ;
modgui:knob "black" ;
modgui:port [
lv2:index 0 ;
lv2:symbol "time" ;
lv2:name "time" ;
] , [
lv2:index 1 ;
lv2:symbol "repeats" ;
lv2:name "repeats" ;
] , [
lv2:index 2 ;
lv2:symbol "cutoff" ;
lv2:name "cutoff" ;
] , [
lv2:index 3 ;
lv2:symbol "mix" ;
lv2:name "mix" ;
] , [
lv2:index 4 ;
lv2:symbol "depth" ;
lv2:name "depth" ;
] , [
lv2:index 5 ;
lv2:symbol "rate" ;
lv2:name "rate" ;
] , [
lv2:index 6 ;
lv2:symbol "delay" ;
lv2:name "delay" ;
] ;
] .

+ 49
- 0
modguis/Modulay.modgui/modgui/icon-modulay.html View File

@@ -0,0 +1,49 @@
<div class="mod-pedal mod-pedal-boxy{{{cns}}} mod-seven-knobs mod-boxy75 mod-{{color}} {{color}}">
<div mod-role="drag-handle" class="mod-drag-handle"></div>
<div class="mod-plugin-brand"><h1>{{brand}}</h1></div>
<div class="mod-plugin-name"><h1>{{label}}</h1></div>
<div class="mod-light on" mod-role="bypass-light"></div>
<div class="mod-control-group mod-{{knob}} clearfix">
{{#controls}}
<div class="mod-knob">
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-knob-title">{{name}}</span>
</div>
{{/controls}}
</div>
<div class="mod-footswitch" mod-role="bypass"></div>
<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
{{#effect.ports.midi.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.input}}
{{#effect.ports.cv.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.cv.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
{{#effect.ports.midi.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.midi.output}}
{{#effect.ports.cv.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.cv.output}}
</div>
</div>

BIN
modguis/Modulay.modgui/modgui/knobs/boxy/black.png View File

Before After
Width: 8320  |  Height: 128  |  Size: 382KB

BIN
modguis/Modulay.modgui/modgui/pedals/boxy75/racing.png View File

Before After
Width: 326  |  Height: 431  |  Size: 236KB

BIN
modguis/Modulay.modgui/modgui/pedals/footswitch.png View File

Before After
Width: 88  |  Height: 176  |  Size: 13KB

BIN
modguis/Modulay.modgui/modgui/screenshot-modulay.png View File

Before After
Width: 357  |  Height: 430  |  Size: 235KB

+ 1093
- 0
modguis/Modulay.modgui/modgui/stylesheet-modulay.css
File diff suppressed because it is too large
View File


BIN
modguis/Modulay.modgui/modgui/thumbnail-modulay.png View File

Before After
Width: 53  |  Height: 64  |  Size: 6.4KB

BIN
modguis/Modulay.modgui/modgui/utils/dropdown-arrow-black.png View File

Before After
Width: 13  |  Height: 6  |  Size: 982B

BIN
modguis/Modulay.modgui/modgui/utils/dropdown-arrow-white.png View File

Before After
Width: 13  |  Height: 6  |  Size: 977B

+ 13
- 0
modguis/PingPongPan.modgui/manifest.ttl View File

@@ -0,0 +1,13 @@
@prefix mod: <http://moddevices.com/ns/mod#>.
@prefix modgui: <http://moddevices.com/ns/modgui#>.

<http://distrho.sf.net/plugins/PingPongPan>
mod:brand "DISTRHO";
mod:label "PingPongPan";
modgui:gui [
modgui:resourcesDirectory <modgui>;
modgui:iconTemplate <modgui/icon-ppp.html>;
modgui:stylesheet <modgui/stylesheet-ppp.css>;
modgui:screenshot <modgui/screenshot-ppp.png>;
modgui:thumbnail <modgui/thumb-ppp.png>;
].

BIN
modguis/PingPongPan.modgui/modgui/background.png View File

Before After
Width: 615  |  Height: 344  |  Size: 904KB

BIN
modguis/PingPongPan.modgui/modgui/footswitch.png View File

Before After
Width: 88  |  Height: 176  |  Size: 26KB

+ 41
- 0
modguis/PingPongPan.modgui/modgui/icon-ppp.html View File

@@ -0,0 +1,41 @@
<div class="pingpongpan mod-pedal mod-pedal-boxy{{{cns}}}">
<div mod-role="drag-handle" class="mod-drag-handle"></div>

<div class="mod-light on" mod-role="bypass-light"></div>

<div class="mod-control-group clearfix">
<div class="mod-knob pingpongpan-knob_freq">
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="freq"></div>
</div>
<div class="mod-knob pingpongpan-knob_width">
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="width"></div>
</div>
</div>

<div class="mod-footswitch" mod-role="bypass"></div>

<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
{{#effect.ports.midi.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
{{#effect.ports.midi.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.output}}
</div>
</div>

BIN
modguis/PingPongPan.modgui/modgui/knob.png View File

Before After
Width: 11000  |  Height: 220  |  Size: 559KB

BIN
modguis/PingPongPan.modgui/modgui/screenshot-ppp.png View File

Before After
Width: 646  |  Height: 343  |  Size: 258KB

+ 228
- 0
modguis/PingPongPan.modgui/modgui/stylesheet-ppp.css View File

@@ -0,0 +1,228 @@

/* STYLES FOR THE BOXY PEDAL */

@import url(/fonts/nexa/stylesheet.css);
@import url(/fonts/questrial/stylesheet.css);

/* = CONTAINER
================================================ */
.mod-pedal-boxy{{{cns}}} {
background-position:center center;
background-repeat:no-repeat;
background-size:230px 431px;
height:431px;
position:absolute;
width:230px;
border-radius: 26px;
}

/* = PLUGIN'S AUTHOR
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-plugin-brand {
left:0;
position:absolute;
right:0;
text-align:center;
text-transform:uppercase;
top:160px;
}

.mod-pedal-boxy{{{cns}}} .mod-plugin-brand h1 {
border-color:#000;
border-radius:12px;
border-style:solid;
border-width:4px;
display:inline-block;
font-family:"Nexa";
font-size:32px;
padding:3px 9px 0;
}

/* = PLUGIN'S NAME
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-plugin-name {
left:30px;
overflow:hidden;
position:absolute;
right:30px;
text-align:center;
top:340px;
}

.mod-pedal-boxy{{{cns}}} .mod-plugin-name h1 {
font-family:"Questrial";
font-size:21px;
line-height:1;
}

/* = LIGHT ON/OFF
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-light {
background-position:center center;
background-repeat:no-repeat;
height:32px;
left:10px;
position:absolute;
right:10px;
top:235px;
}

/* = KNOBS
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-control-group {
margin:20px;
position:relative;
text-align:center;
z-index:30;
}

.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-control-group .mod-knob > span.mod-knob-title {
bottom:0px;
display:block;
font-size:11px;
font-weight:bold;
height:12px;
left:0;
line-height:1;
margin:0;
overflow:hidden;
padding:0;
position:absolute;
right:0;
text-transform:uppercase;
}

/* = ENUMERATED LIST
================================================ */
.mod-pedal-boxy{{{cns}}} .mod-enumerated-group {
height:31px;
margin:20px auto 0 !important;
position:relative;
width:190px;
z-index:35;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated {
background-position:right center;
background-repeat:no-repeat;
font-size:11px;
font-weight:bold;
left:0;
line-height:2;
overflow:hidden;
position:absolute;
right:0;
text-align:left;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-selected {
background-color:rgba(0,0,0,.3);
box-shadow:inset 0 0 4px rgba(0,0,0,.3);
border-radius:4px;
padding:3px 9px;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-selected {
border-radius:4px 4px 0 0;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-list {
display:none;
color:#fff;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-list {
background-color:rgba(0,0,0,.9);
display:none;
height:115px;
overflow:auto;
position:relative;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-list > div {
padding:3px 9px;
}

.mod-pedal-boxy{{{cns}}} .mod-enumerated .mod-enumerated-list > div:hover {
background-color:rgba(255,255,255,.2);
cursor:pointer;
}

/* STYLES FOR THE PLUGIN */

.pingpongpan * {
color:black !important;
}
.pingpongpan {
background-image:url(/resources/background.png{{{ns}}}) !important;
background-size:615px 344px;
width:615px;
height:344px;
border-radius: 0;
}
.pingpongpan .mod-control-group {
width:500px;
height:220px;
}
.pingpongpan .mod-control-group .mod-knob {
height:220px !important;
}
.pingpongpan .mod-control-group .mod-knob .mod-knob-image {
background-image:url(/resources/knob.png{{{ns}}});
background-position:left center;
background-repeat:no-repeat;
background-size:auto 220px;
height:220px;
width:220px;
margin:0 auto;
cursor:pointer;
position:relative;
overflow:hidden;
}
.pingpongpan .mod-control-group .pingpongpan-knob_freq {
top:55px;
left:58px;
position:absolute;
}
.pingpongpan .mod-control-group .pingpongpan-knob_width {
top:55px;
left:302px;
position:absolute;
}
.pingpongpan .mod-light {
top:32px;
left:320px;
}
.pingpongpan .mod-footswitch {
background-image:url(/resources/footswitch.png{{{ns}}});
background-position:top center;
background-repeat:no-repeat;
background-size:auto 132px;
top:15px;
right:55px;
cursor:pointer;
height:66px;
width: 66px;
position:absolute;
}
.pingpongpan .mod-footswitch.on {
background-position:top center;
}
.pingpongpan .mod-footswitch.off {
background-position:bottom center;
}
.pingpongpan .mod-pedal-input , .pingpongpan .mod-pedal-output {
top: 60px;
}
.pingpongpan .mod-pedal-input .mod-input , .pingpongpan .mod-pedal-output .mod-output {
margin-bottom: 40px !important
}

BIN
modguis/PingPongPan.modgui/modgui/thumb-ppp.png View File

Before After
Width: 121  |  Height: 64  |  Size: 13KB

+ 42
- 0
modguis/Pitchotto.modgui/manifest.ttl View File

@@ -0,0 +1,42 @@
@prefix modgui: <http://moddevices.com/ns/modgui#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .

<http://distrho.sf.net/plugins/Pitchotto>
modgui:gui [
modgui:resourcesDirectory <modgui> ;
modgui:iconTemplate <modgui/icon-pitchotto.html> ;
modgui:stylesheet <modgui/stylesheet-pitchotto.css> ;
modgui:screenshot <modgui/screenshot-pitchotto.png> ;
modgui:thumbnail <modgui/thumbnail-pitchotto.png> ;
modgui:brand "Shiro" ;
modgui:label "Pitchotto" ;
modgui:model "boxy" ;
modgui:panel "6-knobs" ;
modgui:color "red" ;
modgui:knob "black" ;
modgui:port [
lv2:index 0 ;
lv2:symbol "ratio1" ;
lv2:name "ratio1" ;
] , [
lv2:index 1 ;
lv2:symbol "ratio2" ;
lv2:name "ratio2" ;
] , [
lv2:index 2 ;
lv2:symbol "mix" ;
lv2:name "mix" ;
] , [
lv2:index 3 ;
lv2:symbol "delay1" ;
lv2:name "delay1" ;
] , [
lv2:index 4 ;
lv2:symbol "delay2" ;
lv2:name "delay2" ;
] , [
lv2:index 5 ;
lv2:symbol "cutoff" ;
lv2:name "cutoff" ;
] ;
] .

+ 49
- 0
modguis/Pitchotto.modgui/modgui/icon-pitchotto.html View File

@@ -0,0 +1,49 @@
<div class="mod-pedal mod-pedal-boxy{{{cns}}} mod-six-knobs mod-{{color}} {{color}}">
<div mod-role="drag-handle" class="mod-drag-handle"></div>
<div class="mod-plugin-brand"><h1>{{brand}}</h1></div>
<div class="mod-plugin-name"><h1>{{label}}</h1></div>
<div class="mod-light on" mod-role="bypass-light"></div>
<div class="mod-control-group mod-{{knob}} clearfix">
{{#controls}}
<div class="mod-knob">
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-knob-title">{{name}}</span>
</div>
{{/controls}}
</div>
<div class="mod-footswitch" mod-role="bypass"></div>
<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
{{#effect.ports.midi.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.input}}
{{#effect.ports.cv.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.cv.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
{{#effect.ports.midi.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.midi.output}}
{{#effect.ports.cv.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.cv.output}}
</div>
</div>

BIN
modguis/Pitchotto.modgui/modgui/knobs/boxy/black.png View File

Before After
Width: 8320  |  Height: 128  |  Size: 382KB

BIN
modguis/Pitchotto.modgui/modgui/pedals/boxy/red.png View File

Before After
Width: 230  |  Height: 431  |  Size: 173KB

BIN
modguis/Pitchotto.modgui/modgui/pedals/footswitch.png View File

Before After
Width: 88  |  Height: 176  |  Size: 13KB

BIN
modguis/Pitchotto.modgui/modgui/screenshot-pitchotto.png View File

Before After
Width: 261  |  Height: 430  |  Size: 167KB

+ 1093
- 0
modguis/Pitchotto.modgui/modgui/stylesheet-pitchotto.css
File diff suppressed because it is too large
View File


BIN
modguis/Pitchotto.modgui/modgui/thumbnail-pitchotto.png View File

Before After
Width: 38  |  Height: 64  |  Size: 5.2KB

BIN
modguis/Pitchotto.modgui/modgui/utils/dropdown-arrow-black.png View File

Before After
Width: 13  |  Height: 6  |  Size: 982B

BIN
modguis/Pitchotto.modgui/modgui/utils/dropdown-arrow-white.png View File

Before After
Width: 13  |  Height: 6  |  Size: 977B

+ 50
- 0
modguis/Shiroverb.modgui/manifest.ttl View File

@@ -0,0 +1,50 @@
@prefix modgui: <http://moddevices.com/ns/modgui#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .

<http://distrho.sf.net/plugins/Shiroverb>
modgui:gui [
modgui:resourcesDirectory <modgui> ;
modgui:iconTemplate <modgui/icon-shiroverb.html> ;
modgui:stylesheet <modgui/stylesheet-shiroverb.css> ;
modgui:screenshot <modgui/screenshot-shiroverb.png> ;
modgui:thumbnail <modgui/thumbnail-shiroverb.png> ;
modgui:brand "Shiro" ;
modgui:label "Shiroverb" ;
modgui:model "boxy" ;
modgui:panel "8-knobs" ;
modgui:color "petrol" ;
modgui:knob "black" ;
modgui:port [
lv2:index 0 ;
lv2:symbol "decay" ;
lv2:name "decay" ;
] , [
lv2:index 1 ;
lv2:symbol "tail" ;
lv2:name "tail" ;
] , [
lv2:index 2 ;
lv2:symbol "damping" ;
lv2:name "damping" ;
] , [
lv2:index 3 ;
lv2:symbol "mix" ;
lv2:name "mix" ;
] , [
lv2:index 4 ;
lv2:symbol "roomsize" ;
lv2:name "roomsize" ;
] , [
lv2:index 5 ;
lv2:symbol "ratio" ;
lv2:name "ratio" ;
] , [
lv2:index 6 ;
lv2:symbol "cutoff" ;
lv2:name "cutoff" ;
] , [
lv2:index 7 ;
lv2:symbol "shimmer" ;
lv2:name "shimmer" ;
] ;
] .

+ 49
- 0
modguis/Shiroverb.modgui/modgui/icon-shiroverb.html View File

@@ -0,0 +1,49 @@
<div class="mod-pedal mod-pedal-boxy{{{cns}}} mod-eight-knobs mod-boxy75 mod-{{color}} {{color}}">
<div mod-role="drag-handle" class="mod-drag-handle"></div>
<div class="mod-plugin-brand"><h1>{{brand}}</h1></div>
<div class="mod-plugin-name"><h1>{{label}}</h1></div>
<div class="mod-light on" mod-role="bypass-light"></div>
<div class="mod-control-group mod-{{knob}} clearfix">
{{#controls}}
<div class="mod-knob">
<div class="mod-knob-image" mod-role="input-control-port" mod-port-symbol="{{symbol}}"></div>
<span class="mod-knob-title">{{name}}</span>
</div>
{{/controls}}
</div>
<div class="mod-footswitch" mod-role="bypass"></div>
<div class="mod-pedal-input">
{{#effect.ports.audio.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.audio.input}}
{{#effect.ports.midi.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.midi.input}}
{{#effect.ports.cv.input}}
<div class="mod-input mod-input-disconnected" title="{{name}}" mod-role="input-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-input-image"></div>
</div>
{{/effect.ports.cv.input}}
</div>
<div class="mod-pedal-output">
{{#effect.ports.audio.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-audio-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.audio.output}}
{{#effect.ports.midi.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-midi-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.midi.output}}
{{#effect.ports.cv.output}}
<div class="mod-output mod-output-disconnected" title="{{name}}" mod-role="output-cv-port" mod-port-symbol="{{symbol}}">
<div class="mod-pedal-output-image"></div>
</div>
{{/effect.ports.cv.output}}
</div>
</div>

BIN
modguis/Shiroverb.modgui/modgui/knobs/boxy/black.png View File

Before After
Width: 8320  |  Height: 128  |  Size: 382KB

BIN
modguis/Shiroverb.modgui/modgui/pedals/boxy75/petrol.png View File

Before After
Width: 326  |  Height: 431  |  Size: 245KB

BIN
modguis/Shiroverb.modgui/modgui/pedals/footswitch.png View File

Before After
Width: 88  |  Height: 176  |  Size: 13KB

BIN
modguis/Shiroverb.modgui/modgui/screenshot-shiroverb.png View File

Before After
Width: 357  |  Height: 430  |  Size: 241KB

+ 1093
- 0
modguis/Shiroverb.modgui/modgui/stylesheet-shiroverb.css
File diff suppressed because it is too large
View File


BIN
modguis/Shiroverb.modgui/modgui/thumbnail-shiroverb.png View File

Before After
Width: 53  |  Height: 64  |  Size: 6.9KB

BIN
modguis/Shiroverb.modgui/modgui/utils/dropdown-arrow-black.png View File

Before After
Width: 13  |  Height: 6  |  Size: 982B

BIN
modguis/Shiroverb.modgui/modgui/utils/dropdown-arrow-white.png View File

Before After
Width: 13  |  Height: 6  |  Size: 977B

+ 10107
- 0
plugins/3BandEQ/DistrhoArtwork3BandEQ.cpp
File diff suppressed because it is too large
View File


+ 40
- 0
plugins/3BandEQ/DistrhoArtwork3BandEQ.hpp View File

@@ -0,0 +1,40 @@
/* (Auto-generated binary data file). */

#ifndef BINARY_DISTRHOARTWORK3BANDEQ_HPP
#define BINARY_DISTRHOARTWORK3BANDEQ_HPP

namespace DistrhoArtwork3BandEQ
{
extern const char* aboutData;
const unsigned int aboutDataSize = 172710;
const unsigned int aboutWidth = 303;
const unsigned int aboutHeight = 190;

extern const char* aboutButtonHoverData;
const unsigned int aboutButtonHoverDataSize = 5888;
const unsigned int aboutButtonHoverWidth = 92;
const unsigned int aboutButtonHoverHeight = 16;

extern const char* aboutButtonNormalData;
const unsigned int aboutButtonNormalDataSize = 5888;
const unsigned int aboutButtonNormalWidth = 92;
const unsigned int aboutButtonNormalHeight = 16;

extern const char* backgroundData;
const unsigned int backgroundDataSize = 437472;
const unsigned int backgroundWidth = 392;
const unsigned int backgroundHeight = 372;

extern const char* knobData;
const unsigned int knobDataSize = 15376;
const unsigned int knobWidth = 62;
const unsigned int knobHeight = 62;

extern const char* sliderData;
const unsigned int sliderDataSize = 6000;
const unsigned int sliderWidth = 50;
const unsigned int sliderHeight = 30;
}

#endif // BINARY_DISTRHOARTWORK3BANDEQ_HPP


+ 264
- 0
plugins/3BandEQ/DistrhoPlugin3BandEQ.cpp View File

@@ -0,0 +1,264 @@
/*
* DISTRHO 3BandEQ Plugin, based on 3BandEQ by Michael Gruhn
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de>
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/
#include "DistrhoPlugin3BandEQ.hpp"
#include <cmath>
static const float kAMP_DB = 8.656170245f;
static const float kDC_ADD = 1e-30f;
static const float kPI = 3.141592654f;
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
DistrhoPlugin3BandEQ::DistrhoPlugin3BandEQ()
: Plugin(paramCount, 1, 0) // 1 program, 0 states
{
// set default values
loadProgram(0);
// reset
deactivate();
}
// -----------------------------------------------------------------------
// Init
void DistrhoPlugin3BandEQ::initParameter(uint32_t index, Parameter& parameter)
{
switch (index)
{
case paramLow:
parameter.hints = kParameterIsAutomable;
parameter.name = "Low";
parameter.symbol = "low";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramMid:
parameter.hints = kParameterIsAutomable;
parameter.name = "Mid";
parameter.symbol = "mid";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramHigh:
parameter.hints = kParameterIsAutomable;
parameter.name = "High";
parameter.symbol = "high";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramMaster:
parameter.hints = kParameterIsAutomable;
parameter.name = "Master";
parameter.symbol = "master";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramLowMidFreq:
parameter.hints = kParameterIsAutomable;
parameter.name = "Low-Mid Freq";
parameter.symbol = "low_mid";
parameter.unit = "Hz";
parameter.ranges.def = 440.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1000.0f;
break;
case paramMidHighFreq:
parameter.hints = kParameterIsAutomable;
parameter.name = "Mid-High Freq";
parameter.symbol = "mid_high";
parameter.unit = "Hz";
parameter.ranges.def = 1000.0f;
parameter.ranges.min = 1000.0f;
parameter.ranges.max = 20000.0f;
break;
}
}
void DistrhoPlugin3BandEQ::initProgramName(uint32_t index, String& programName)
{
if (index != 0)
return;
programName = "Default";
}
// -----------------------------------------------------------------------
// Internal data
float DistrhoPlugin3BandEQ::getParameterValue(uint32_t index) const
{
switch (index)
{
case paramLow:
return fLow;
case paramMid:
return fMid;
case paramHigh:
return fHigh;
case paramMaster:
return fMaster;
case paramLowMidFreq:
return fLowMidFreq;
case paramMidHighFreq:
return fMidHighFreq;
default:
return 0.0f;
}
}
void DistrhoPlugin3BandEQ::setParameterValue(uint32_t index, float value)
{
if (getSampleRate() <= 0.0)
return;
switch (index)
{
case paramLow:
fLow = value;
lowVol = std::exp( (fLow/48.0f) * 48.0f / kAMP_DB);
break;
case paramMid:
fMid = value;
midVol = std::exp( (fMid/48.0f) * 48.0f / kAMP_DB);
break;
case paramHigh:
fHigh = value;
highVol = std::exp( (fHigh/48.0f) * 48.0f / kAMP_DB);
break;
case paramMaster:
fMaster = value;
outVol = std::exp( (fMaster/48.0f) * 48.0f / kAMP_DB);
break;
case paramLowMidFreq:
fLowMidFreq = std::fmin(value, fMidHighFreq);
freqLP = fLowMidFreq;
xLP = std::exp(-2.0f * kPI * freqLP / (float)getSampleRate());
a0LP = 1.0f - xLP;
b1LP = -xLP;
break;
case paramMidHighFreq:
fMidHighFreq = std::fmax(value, fLowMidFreq);
freqHP = fMidHighFreq;
xHP = std::exp(-2.0f * kPI * freqHP / (float)getSampleRate());
a0HP = 1.0f - xHP;
b1HP = -xHP;
break;
}
}
void DistrhoPlugin3BandEQ::loadProgram(uint32_t index)
{
if (index != 0)
return;
// Default values
fLow = 0.0f;
fMid = 0.0f;
fHigh = 0.0f;
fMaster = 0.0f;
fLowMidFreq = 220.0f;
fMidHighFreq = 2000.0f;
// Internal stuff
lowVol = midVol = highVol = outVol = 1.0f;
freqLP = 200.0f;
freqHP = 2000.0f;
// reset filter values
activate();
}
// -----------------------------------------------------------------------
// Process
void DistrhoPlugin3BandEQ::activate()
{
const float sr = (float)getSampleRate();
xLP = std::exp(-2.0f * kPI * freqLP / sr);
#ifdef DISTRHO_OS_WINDOWS
// don't ask me why, but this fixes a crash/exception below on windows...
printf("%f\n", -xLP);
#endif
a0LP = 1.0f - xLP;
b1LP = -xLP;
xHP = std::exp(-2.0f * kPI * freqHP / sr);
a0HP = 1.0f - xHP;
b1HP = -xHP;
}
void DistrhoPlugin3BandEQ::deactivate()
{
out1LP = out2LP = out1HP = out2HP = 0.0f;
tmp1LP = tmp2LP = tmp1HP = tmp2HP = 0.0f;
}
void DistrhoPlugin3BandEQ::run(const float** inputs, float** outputs, uint32_t frames)
{
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)
{
tmp1LP = a0LP * in1[i] - b1LP * tmp1LP + kDC_ADD;
tmp2LP = a0LP * in2[i] - b1LP * tmp2LP + kDC_ADD;
out1LP = tmp1LP - kDC_ADD;
out2LP = tmp2LP - kDC_ADD;
tmp1HP = a0HP * in1[i] - b1HP * tmp1HP + kDC_ADD;
tmp2HP = a0HP * in2[i] - b1HP * tmp2HP + kDC_ADD;
out1HP = in1[i] - tmp1HP - kDC_ADD;
out2HP = in2[i] - tmp2HP - kDC_ADD;
out1[i] = (out1LP*lowVol + (in1[i] - out1LP - out1HP)*midVol + out1HP*highVol) * outVol;
out2[i] = (out2LP*lowVol + (in2[i] - out2LP - out2HP)*midVol + out2HP*highVol) * outVol;
}
}
// -----------------------------------------------------------------------
Plugin* createPlugin()
{
return new DistrhoPlugin3BandEQ();
}
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO

+ 123
- 0
plugins/3BandEQ/DistrhoPlugin3BandEQ.hpp View File

@@ -0,0 +1,123 @@
/*
* DISTRHO 3BandEQ Plugin, based on 3BandEQ by Michael Gruhn
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de>
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/
#ifndef DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class DistrhoPlugin3BandEQ : public Plugin
{
public:
enum Parameters
{
paramLow = 0,
paramMid,
paramHigh,
paramMaster,
paramLowMidFreq,
paramMidHighFreq,
paramCount
};
DistrhoPlugin3BandEQ();
protected:
// -------------------------------------------------------------------
// Information
const char* getLabel() const noexcept override
{
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";
}
uint32_t getVersion() const noexcept override
{
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override
{
return d_cconst('D', '3', 'E', 'Q');
}
// -------------------------------------------------------------------
// Init
void initParameter(uint32_t index, Parameter& parameter) override;
void initProgramName(uint32_t index, String& programName) override;
// -------------------------------------------------------------------
// Internal data
float getParameterValue(uint32_t index) const override;
void setParameterValue(uint32_t index, float value) override;
void loadProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
void activate() override;
void deactivate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
private:
float fLow, fMid, fHigh, fMaster, fLowMidFreq, fMidHighFreq;
float lowVol, midVol, highVol, outVol;
float freqLP, freqHP;
float xLP, a0LP, b1LP;
float xHP, a0HP, b1HP;
float out1LP, out2LP, out1HP, out2HP;
float tmp1LP, tmp2LP, tmp1HP, tmp2HP;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPlugin3BandEQ)
};
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
#endif // DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED

+ 32
- 0
plugins/3BandEQ/DistrhoPluginInfo.h View File

@@ -0,0 +1,32 @@
/*
* DISTRHO 3BandEQ Plugin, based on 3BandEQ by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#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
#define DISTRHO_PLUGIN_NUM_INPUTS 2
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1

#define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:EQPlugin"

#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 211
- 0
plugins/3BandEQ/DistrhoUI3BandEQ.cpp View File

@@ -0,0 +1,211 @@
/*
* DISTRHO 3BandEQ Plugin, based on 3BandEQ by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#include "DistrhoPlugin3BandEQ.hpp"
#include "DistrhoUI3BandEQ.hpp"

START_NAMESPACE_DISTRHO

namespace Art = DistrhoArtwork3BandEQ;

// -----------------------------------------------------------------------

DistrhoUI3BandEQ::DistrhoUI3BandEQ()
: UI(Art::backgroundWidth, Art::backgroundHeight),
fImgBackground(Art::backgroundData, Art::backgroundWidth, Art::backgroundHeight, GL_BGR),
fAboutWindow(this)
{
// about
Image aboutImage(Art::aboutData, Art::aboutWidth, Art::aboutHeight, GL_BGR);
fAboutWindow.setImage(aboutImage);

// sliders
Image sliderImage(Art::sliderData, Art::sliderWidth, Art::sliderHeight);
Point<int> sliderPosStart(57, 43);
Point<int> sliderPosEnd(57, 43 + 160);

// slider Low
fSliderLow = new ImageSlider(this, sliderImage);
fSliderLow->setId(DistrhoPlugin3BandEQ::paramLow);
fSliderLow->setInverted(true);
fSliderLow->setStartPos(sliderPosStart);
fSliderLow->setEndPos(sliderPosEnd);
fSliderLow->setRange(-24.0f, 24.0f);
fSliderLow->setCallback(this);

// slider Mid
sliderPosStart.setX(120);
sliderPosEnd.setX(120);
fSliderMid = new ImageSlider(this, sliderImage);
fSliderMid->setId(DistrhoPlugin3BandEQ::paramMid);
fSliderMid->setInverted(true);
fSliderMid->setStartPos(sliderPosStart);
fSliderMid->setEndPos(sliderPosEnd);
fSliderMid->setRange(-24.0f, 24.0f);
fSliderMid->setCallback(this);

// slider High
sliderPosStart.setX(183);
sliderPosEnd.setX(183);
fSliderHigh = new ImageSlider(this, sliderImage);
fSliderHigh->setId(DistrhoPlugin3BandEQ::paramHigh);
fSliderHigh->setInverted(true);
fSliderHigh->setStartPos(sliderPosStart);
fSliderHigh->setEndPos(sliderPosEnd);
fSliderHigh->setRange(-24.0f, 24.0f);
fSliderHigh->setCallback(this);

// slider Master
sliderPosStart.setX(287);
sliderPosEnd.setX(287);
fSliderMaster = new ImageSlider(this, sliderImage);
fSliderMaster->setId(DistrhoPlugin3BandEQ::paramMaster);
fSliderMaster->setInverted(true);
fSliderMaster->setStartPos(sliderPosStart);
fSliderMaster->setEndPos(sliderPosEnd);
fSliderMaster->setRange(-24.0f, 24.0f);
fSliderMaster->setCallback(this);

// knobs
Image knobImage(Art::knobData, Art::knobWidth, Art::knobHeight);

// knob Low-Mid
fKnobLowMid = new ImageKnob(this, knobImage, ImageKnob::Vertical);
fKnobLowMid->setId(DistrhoPlugin3BandEQ::paramLowMidFreq);
fKnobLowMid->setAbsolutePos(65, 269);
fKnobLowMid->setRange(0.0f, 1000.0f);
fKnobLowMid->setDefault(440.0f);
fKnobLowMid->setRotationAngle(270);
fKnobLowMid->setCallback(this);

// knob Mid-High
fKnobMidHigh = new ImageKnob(this, knobImage, ImageKnob::Vertical);
fKnobMidHigh->setId(DistrhoPlugin3BandEQ::paramMidHighFreq);
fKnobMidHigh->setAbsolutePos(159, 269);
fKnobMidHigh->setRange(1000.0f, 20000.0f);
fKnobMidHigh->setDefault(1000.0f);
fKnobMidHigh->setRotationAngle(270);
fKnobMidHigh->setCallback(this);

// about button
Image aboutImageNormal(Art::aboutButtonNormalData, Art::aboutButtonNormalWidth, Art::aboutButtonNormalHeight);
Image aboutImageHover(Art::aboutButtonHoverData, Art::aboutButtonHoverWidth, Art::aboutButtonHoverHeight);
fButtonAbout = new ImageButton(this, aboutImageNormal, aboutImageHover, aboutImageHover);
fButtonAbout->setAbsolutePos(264, 300);
fButtonAbout->setCallback(this);

// set default values
programLoaded(0);
}

// -----------------------------------------------------------------------
// DSP Callbacks

void DistrhoUI3BandEQ::parameterChanged(uint32_t index, float value)
{
switch (index)
{
case DistrhoPlugin3BandEQ::paramLow:
fSliderLow->setValue(value);
break;
case DistrhoPlugin3BandEQ::paramMid:
fSliderMid->setValue(value);
break;
case DistrhoPlugin3BandEQ::paramHigh:
fSliderHigh->setValue(value);
break;
case DistrhoPlugin3BandEQ::paramMaster:
fSliderMaster->setValue(value);
break;
case DistrhoPlugin3BandEQ::paramLowMidFreq:
fKnobLowMid->setValue(value);
break;
case DistrhoPlugin3BandEQ::paramMidHighFreq:
fKnobMidHigh->setValue(value);
break;
}
}

void DistrhoUI3BandEQ::programLoaded(uint32_t index)
{
if (index != 0)
return;

// Default values
fSliderLow->setValue(0.0f);
fSliderMid->setValue(0.0f);
fSliderHigh->setValue(0.0f);
fSliderMaster->setValue(0.0f);
fKnobLowMid->setValue(220.0f);
fKnobMidHigh->setValue(2000.0f);
}

// -----------------------------------------------------------------------
// Widget Callbacks

void DistrhoUI3BandEQ::imageButtonClicked(ImageButton* button, int)
{
if (button != fButtonAbout)
return;

fAboutWindow.exec();
}

void DistrhoUI3BandEQ::imageKnobDragStarted(ImageKnob* knob)
{
editParameter(knob->getId(), true);
}

void DistrhoUI3BandEQ::imageKnobDragFinished(ImageKnob* knob)
{
editParameter(knob->getId(), false);
}

void DistrhoUI3BandEQ::imageKnobValueChanged(ImageKnob* knob, float value)
{
setParameterValue(knob->getId(), value);
}

void DistrhoUI3BandEQ::imageSliderDragStarted(ImageSlider* slider)
{
editParameter(slider->getId(), true);
}

void DistrhoUI3BandEQ::imageSliderDragFinished(ImageSlider* slider)
{
editParameter(slider->getId(), false);
}

void DistrhoUI3BandEQ::imageSliderValueChanged(ImageSlider* slider, float value)
{
setParameterValue(slider->getId(), value);
}

void DistrhoUI3BandEQ::onDisplay()
{
fImgBackground.draw();
}

// -----------------------------------------------------------------------

UI* createUI()
{
return new DistrhoUI3BandEQ();
}

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

+ 72
- 0
plugins/3BandEQ/DistrhoUI3BandEQ.hpp View File

@@ -0,0 +1,72 @@
/*
* DISTRHO 3BandEQ Plugin, based on 3BandEQ by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#ifndef DISTRHO_UI_3BANDEQ_HPP_INCLUDED
#define DISTRHO_UI_3BANDEQ_HPP_INCLUDED

#include "DistrhoUI.hpp"
#include "ImageWidgets.hpp"

#include "DistrhoArtwork3BandEQ.hpp"

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------

class DistrhoUI3BandEQ : public UI,
public ImageButton::Callback,
public ImageKnob::Callback,
public ImageSlider::Callback
{
public:
DistrhoUI3BandEQ();

protected:
// -------------------------------------------------------------------
// DSP Callbacks

void parameterChanged(uint32_t index, float value) override;
void programLoaded(uint32_t index) override;

// -------------------------------------------------------------------
// Widget Callbacks

void imageButtonClicked(ImageButton* button, int) override;
void imageKnobDragStarted(ImageKnob* knob) override;
void imageKnobDragFinished(ImageKnob* knob) override;
void imageKnobValueChanged(ImageKnob* knob, float value) override;
void imageSliderDragStarted(ImageSlider* slider) override;
void imageSliderDragFinished(ImageSlider* slider) override;
void imageSliderValueChanged(ImageSlider* slider, float value) override;

void onDisplay() override;

private:
Image fImgBackground;
ImageAboutWindow fAboutWindow;

ScopedPointer<ImageButton> fButtonAbout;
ScopedPointer<ImageKnob> fKnobLowMid, fKnobMidHigh;
ScopedPointer<ImageSlider> fSliderLow, fSliderMid, fSliderHigh, fSliderMaster;

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUI3BandEQ)
};

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

#endif // DISTRHO_UI_3BANDEQ_HPP_INCLUDED

+ 55
- 0
plugins/3BandEQ/Makefile View File

@@ -0,0 +1,55 @@
#!/usr/bin/make -f
# Makefile for DISTRHO Plugins #
# ---------------------------- #
# Created by falkTX
#

# --------------------------------------------------------------
# Project name, used for binaries

NAME = 3BandEQ

# --------------------------------------------------------------
# Files to build

OBJS_DSP = \
DistrhoPlugin3BandEQ.cpp.o

OBJS_UI = \
DistrhoArtwork3BandEQ.cpp.o \
DistrhoUI3BandEQ.cpp.o

# --------------------------------------------------------------
# Do some magic

include ../Makefile.Mini-Series.mk

# --------------------------------------------------------------
# Enable all possible plugin types

ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_JACK),true)
TARGETS += jack
endif
endif

ifeq ($(LINUX),true)
TARGETS += ladspa
ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_LIBLO),true)
TARGETS += dssi
endif
endif
endif

ifeq ($(HAVE_DGL),true)
TARGETS += lv2_sep
else
TARGETS += lv2_dsp
endif

TARGETS += vst

all: $(TARGETS)

# --------------------------------------------------------------

BIN
plugins/3BandEQ/Screenshot.png View File

Before After
Width: 392  |  Height: 372  |  Size: 170KB

BIN
plugins/3BandEQ/artwork/about.png View File

Before After
Width: 303  |  Height: 190  |  Size: 57KB

BIN
plugins/3BandEQ/artwork/aboutButtonHover.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.0KB

BIN
plugins/3BandEQ/artwork/aboutButtonNormal.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.1KB

BIN
plugins/3BandEQ/artwork/background.png View File

Before After
Width: 392  |  Height: 372  |  Size: 144KB

BIN
plugins/3BandEQ/artwork/knob.png View File

Before After
Width: 62  |  Height: 62  |  Size: 3.9KB

BIN
plugins/3BandEQ/artwork/slider.png View File

Before After
Width: 50  |  Height: 30  |  Size: 3.4KB

+ 10107
- 0
plugins/3BandSplitter/DistrhoArtwork3BandSplitter.cpp
File diff suppressed because it is too large
View File


+ 40
- 0
plugins/3BandSplitter/DistrhoArtwork3BandSplitter.hpp View File

@@ -0,0 +1,40 @@
/* (Auto-generated binary data file). */

#ifndef BINARY_DISTRHOARTWORK3BANDSPLITTER_HPP
#define BINARY_DISTRHOARTWORK3BANDSPLITTER_HPP

namespace DistrhoArtwork3BandSplitter
{
extern const char* aboutData;
const unsigned int aboutDataSize = 172710;
const unsigned int aboutWidth = 303;
const unsigned int aboutHeight = 190;

extern const char* aboutButtonHoverData;
const unsigned int aboutButtonHoverDataSize = 5888;
const unsigned int aboutButtonHoverWidth = 92;
const unsigned int aboutButtonHoverHeight = 16;

extern const char* aboutButtonNormalData;
const unsigned int aboutButtonNormalDataSize = 5888;
const unsigned int aboutButtonNormalWidth = 92;
const unsigned int aboutButtonNormalHeight = 16;

extern const char* backgroundData;
const unsigned int backgroundDataSize = 437472;
const unsigned int backgroundWidth = 392;
const unsigned int backgroundHeight = 372;

extern const char* knobData;
const unsigned int knobDataSize = 15376;
const unsigned int knobWidth = 62;
const unsigned int knobHeight = 62;

extern const char* sliderData;
const unsigned int sliderDataSize = 6000;
const unsigned int sliderWidth = 50;
const unsigned int sliderHeight = 30;
}

#endif // BINARY_DISTRHOARTWORK3BANDSPLITTER_HPP


+ 272
- 0
plugins/3BandSplitter/DistrhoPlugin3BandSplitter.cpp View File

@@ -0,0 +1,272 @@
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de>
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/
#include "DistrhoPlugin3BandSplitter.hpp"
#include <cmath>
static const float kAMP_DB = 8.656170245f;
static const float kDC_ADD = 1e-30f;
static const float kPI = 3.141592654f;
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
DistrhoPlugin3BandSplitter::DistrhoPlugin3BandSplitter()
: Plugin(paramCount, 1, 0) // 1 program, 0 states
{
// set default values
loadProgram(0);
// reset
deactivate();
}
// -----------------------------------------------------------------------
// Init
void DistrhoPlugin3BandSplitter::initParameter(uint32_t index, Parameter& parameter)
{
switch (index)
{
case paramLow:
parameter.hints = kParameterIsAutomable;
parameter.name = "Low";
parameter.symbol = "low";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramMid:
parameter.hints = kParameterIsAutomable;
parameter.name = "Mid";
parameter.symbol = "mid";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramHigh:
parameter.hints = kParameterIsAutomable;
parameter.name = "High";
parameter.symbol = "high";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramMaster:
parameter.hints = kParameterIsAutomable;
parameter.name = "Master";
parameter.symbol = "master";
parameter.unit = "dB";
parameter.ranges.def = 0.0f;
parameter.ranges.min = -24.0f;
parameter.ranges.max = 24.0f;
break;
case paramLowMidFreq:
parameter.hints = kParameterIsAutomable;
parameter.name = "Low-Mid Freq";
parameter.symbol = "low_mid";
parameter.unit = "Hz";
parameter.ranges.def = 440.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1000.0f;
break;
case paramMidHighFreq:
parameter.hints = kParameterIsAutomable;
parameter.name = "Mid-High Freq";
parameter.symbol = "mid_high";
parameter.unit = "Hz";
parameter.ranges.def = 1000.0f;
parameter.ranges.min = 1000.0f;
parameter.ranges.max = 20000.0f;
break;
}
}
void DistrhoPlugin3BandSplitter::initProgramName(uint32_t index, String& programName)
{
if (index != 0)
return;
programName = "Default";
}
// -----------------------------------------------------------------------
// Internal data
float DistrhoPlugin3BandSplitter::getParameterValue(uint32_t index) const
{
switch (index)
{
case paramLow:
return fLow;
case paramMid:
return fMid;
case paramHigh:
return fHigh;
case paramMaster:
return fMaster;
case paramLowMidFreq:
return fLowMidFreq;
case paramMidHighFreq:
return fMidHighFreq;
default:
return 0.0f;
}
}
void DistrhoPlugin3BandSplitter::setParameterValue(uint32_t index, float value)
{
if (getSampleRate() <= 0.0)
return;
switch (index)
{
case paramLow:
fLow = value;
lowVol = std::exp( (fLow/48.0f) * 48.0f / kAMP_DB);
break;
case paramMid:
fMid = value;
midVol = std::exp( (fMid/48.0f) * 48.0f / kAMP_DB);
break;
case paramHigh:
fHigh = value;
highVol = std::exp( (fHigh/48.0f) * 48.0f / kAMP_DB);
break;
case paramMaster:
fMaster = value;
outVol = std::exp( (fMaster/48.0f) * 48.0f / kAMP_DB);
break;
case paramLowMidFreq:
fLowMidFreq = std::fmin(value, fMidHighFreq);
freqLP = fLowMidFreq;
xLP = std::exp(-2.0f * kPI * freqLP / (float)getSampleRate());
a0LP = 1.0f - xLP;
b1LP = -xLP;
break;
case paramMidHighFreq:
fMidHighFreq = std::fmax(value, fLowMidFreq);
freqHP = fMidHighFreq;
xHP = std::exp(-2.0f * kPI * freqHP / (float)getSampleRate());
a0HP = 1.0f - xHP;
b1HP = -xHP;
break;
}
}
void DistrhoPlugin3BandSplitter::loadProgram(uint32_t index)
{
if (index != 0)
return;
// Default values
fLow = 0.0f;
fMid = 0.0f;
fHigh = 0.0f;
fMaster = 0.0f;
fLowMidFreq = 220.0f;
fMidHighFreq = 2000.0f;
// Internal stuff
lowVol = midVol = highVol = outVol = 1.0f;
freqLP = 200.0f;
freqHP = 2000.0f;
// reset filter values
activate();
}
// -----------------------------------------------------------------------
// Process
void DistrhoPlugin3BandSplitter::activate()
{
const float sr = (float)getSampleRate();
xLP = std::exp(-2.0f * kPI * freqLP / sr);
#ifdef DISTRHO_OS_WINDOWS
// don't ask me why, but this fixes a crash/exception below on windows...
printf("%f\n", -xLP);
#endif
a0LP = 1.0f - xLP;
b1LP = -xLP;
xHP = std::exp(-2.0f * kPI * freqHP / sr);
a0HP = 1.0f - xHP;
b1HP = -xHP;
}
void DistrhoPlugin3BandSplitter::deactivate()
{
out1LP = out2LP = out1HP = out2HP = 0.0f;
tmp1LP = tmp2LP = tmp1HP = tmp2HP = 0.0f;
}
void DistrhoPlugin3BandSplitter::run(const float** inputs, float** outputs, uint32_t frames)
{
const float* in1 = inputs[0];
const float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
float* out3 = outputs[2];
float* out4 = outputs[3];
float* out5 = outputs[4];
float* out6 = outputs[5];
for (uint32_t i=0; i < frames; ++i)
{
tmp1LP = a0LP * in1[i] - b1LP * tmp1LP + kDC_ADD;
tmp2LP = a0LP * in2[i] - b1LP * tmp2LP + kDC_ADD;
out1LP = tmp1LP - kDC_ADD;
out2LP = tmp2LP - kDC_ADD;
tmp1HP = a0HP * in1[i] - b1HP * tmp1HP + kDC_ADD;
tmp2HP = a0HP * in2[i] - b1HP * tmp2HP + kDC_ADD;
out1HP = in1[i] - tmp1HP - kDC_ADD;
out2HP = in2[i] - tmp2HP - kDC_ADD;
out6[i] = out2HP*highVol * outVol;
out5[i] = out1HP*highVol * outVol;
out4[i] = (in2[i] - out2LP - out2HP)*midVol * outVol;
out3[i] = (in1[i] - out1LP - out1HP)*midVol * outVol;
out2[i] = out2LP*lowVol * outVol;
out1[i] = out1LP*lowVol * outVol;
}
}
// -----------------------------------------------------------------------
Plugin* createPlugin()
{
return new DistrhoPlugin3BandSplitter();
}
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO

+ 123
- 0
plugins/3BandSplitter/DistrhoPlugin3BandSplitter.hpp View File

@@ -0,0 +1,123 @@
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2007 Michael Gruhn <michael-gruhn@web.de>
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/
#ifndef DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class DistrhoPlugin3BandSplitter : public Plugin
{
public:
enum Parameters
{
paramLow = 0,
paramMid,
paramHigh,
paramMaster,
paramLowMidFreq,
paramMidHighFreq,
paramCount
};
DistrhoPlugin3BandSplitter();
protected:
// -------------------------------------------------------------------
// Information
const char* getLabel() const noexcept override
{
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";
}
uint32_t getVersion() const noexcept override
{
return d_version(1, 0, 0);
}
int64_t getUniqueId() const noexcept override
{
return d_cconst('D', '3', 'E', 'S');
}
// -------------------------------------------------------------------
// Init
void initParameter(uint32_t index, Parameter& parameter) override;
void initProgramName(uint32_t index, String& programName) override;
// -------------------------------------------------------------------
// Internal data
float getParameterValue(uint32_t index) const override;
void setParameterValue(uint32_t index, float value) override;
void loadProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
void activate() override;
void deactivate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
private:
float fLow, fMid, fHigh, fMaster, fLowMidFreq, fMidHighFreq;
float lowVol, midVol, highVol, outVol;
float freqLP, freqHP;
float xLP, a0LP, b1LP;
float xHP, a0HP, b1HP;
float out1LP, out2LP, out1HP, out2HP;
float tmp1LP, tmp2LP, tmp1HP, tmp2HP;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPlugin3BandSplitter)
};
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
#endif // DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED

+ 32
- 0
plugins/3BandSplitter/DistrhoPluginInfo.h View File

@@ -0,0 +1,32 @@
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#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
#define DISTRHO_PLUGIN_NUM_INPUTS 2
#define DISTRHO_PLUGIN_NUM_OUTPUTS 6
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1

#define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:EQPlugin"

#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 213
- 0
plugins/3BandSplitter/DistrhoUI3BandSplitter.cpp View File

@@ -0,0 +1,213 @@
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#include "DistrhoPlugin3BandSplitter.hpp"
#include "DistrhoUI3BandSplitter.hpp"

using DGL::Point;

START_NAMESPACE_DISTRHO

namespace Art = DistrhoArtwork3BandSplitter;

// -----------------------------------------------------------------------

DistrhoUI3BandSplitter::DistrhoUI3BandSplitter()
: UI(Art::backgroundWidth, Art::backgroundHeight),
fImgBackground(Art::backgroundData, Art::backgroundWidth, Art::backgroundHeight, GL_BGR),
fAboutWindow(this)
{
// about
Image aboutImage(Art::aboutData, Art::aboutWidth, Art::aboutHeight, GL_BGR);
fAboutWindow.setImage(aboutImage);

// sliders
Image sliderImage(Art::sliderData, Art::sliderWidth, Art::sliderHeight);
Point<int> sliderPosStart(57, 43);
Point<int> sliderPosEnd(57, 43 + 160);

// slider Low
fSliderLow = new ImageSlider(this, sliderImage);
fSliderLow->setId(DistrhoPlugin3BandSplitter::paramLow);
fSliderLow->setInverted(true);
fSliderLow->setStartPos(sliderPosStart);
fSliderLow->setEndPos(sliderPosEnd);
fSliderLow->setRange(-24.0f, 24.0f);
fSliderLow->setCallback(this);

// slider Mid
sliderPosStart.setX(120);
sliderPosEnd.setX(120);
fSliderMid = new ImageSlider(this, sliderImage);
fSliderMid->setId(DistrhoPlugin3BandSplitter::paramMid);
fSliderMid->setInverted(true);
fSliderMid->setStartPos(sliderPosStart);
fSliderMid->setEndPos(sliderPosEnd);
fSliderMid->setRange(-24.0f, 24.0f);
fSliderMid->setCallback(this);

// slider High
sliderPosStart.setX(183);
sliderPosEnd.setX(183);
fSliderHigh = new ImageSlider(this, sliderImage);
fSliderHigh->setId(DistrhoPlugin3BandSplitter::paramHigh);
fSliderHigh->setInverted(true);
fSliderHigh->setStartPos(sliderPosStart);
fSliderHigh->setEndPos(sliderPosEnd);
fSliderHigh->setRange(-24.0f, 24.0f);
fSliderHigh->setCallback(this);

// slider Master
sliderPosStart.setX(287);
sliderPosEnd.setX(287);
fSliderMaster = new ImageSlider(this, sliderImage);
fSliderMaster->setId(DistrhoPlugin3BandSplitter::paramMaster);
fSliderMaster->setInverted(true);
fSliderMaster->setStartPos(sliderPosStart);
fSliderMaster->setEndPos(sliderPosEnd);
fSliderMaster->setRange(-24.0f, 24.0f);
fSliderMaster->setCallback(this);

// knobs
Image knobImage(Art::knobData, Art::knobWidth, Art::knobHeight);

// knob Low-Mid
fKnobLowMid = new ImageKnob(this, knobImage, ImageKnob::Vertical);
fKnobLowMid->setId(DistrhoPlugin3BandSplitter::paramLowMidFreq);
fKnobLowMid->setAbsolutePos(65, 269);
fKnobLowMid->setRange(0.0f, 1000.0f);
fKnobLowMid->setDefault(440.0f);
fKnobLowMid->setRotationAngle(270);
fKnobLowMid->setCallback(this);

// knob Mid-High
fKnobMidHigh = new ImageKnob(this, knobImage, ImageKnob::Vertical);
fKnobMidHigh->setId(DistrhoPlugin3BandSplitter::paramMidHighFreq);
fKnobMidHigh->setAbsolutePos(159, 269);
fKnobMidHigh->setRange(1000.0f, 20000.0f);
fKnobMidHigh->setDefault(1000.0f);
fKnobMidHigh->setRotationAngle(270);
fKnobMidHigh->setCallback(this);

// about button
Image aboutImageNormal(Art::aboutButtonNormalData, Art::aboutButtonNormalWidth, Art::aboutButtonNormalHeight);
Image aboutImageHover(Art::aboutButtonHoverData, Art::aboutButtonHoverWidth, Art::aboutButtonHoverHeight);
fButtonAbout = new ImageButton(this, aboutImageNormal, aboutImageHover, aboutImageHover);
fButtonAbout->setAbsolutePos(264, 300);
fButtonAbout->setCallback(this);

// set default values
programLoaded(0);
}

// -----------------------------------------------------------------------
// DSP Callbacks

void DistrhoUI3BandSplitter::parameterChanged(uint32_t index, float value)
{
switch (index)
{
case DistrhoPlugin3BandSplitter::paramLow:
fSliderLow->setValue(value);
break;
case DistrhoPlugin3BandSplitter::paramMid:
fSliderMid->setValue(value);
break;
case DistrhoPlugin3BandSplitter::paramHigh:
fSliderHigh->setValue(value);
break;
case DistrhoPlugin3BandSplitter::paramMaster:
fSliderMaster->setValue(value);
break;
case DistrhoPlugin3BandSplitter::paramLowMidFreq:
fKnobLowMid->setValue(value);
break;
case DistrhoPlugin3BandSplitter::paramMidHighFreq:
fKnobMidHigh->setValue(value);
break;
}
}

void DistrhoUI3BandSplitter::programLoaded(uint32_t index)
{
if (index != 0)
return;

// Default values
fSliderLow->setValue(0.0f);
fSliderMid->setValue(0.0f);
fSliderHigh->setValue(0.0f);
fSliderMaster->setValue(0.0f);
fKnobLowMid->setValue(220.0f);
fKnobMidHigh->setValue(2000.0f);
}

// -----------------------------------------------------------------------
// Widget Callbacks

void DistrhoUI3BandSplitter::imageButtonClicked(ImageButton* button, int)
{
if (button != fButtonAbout)
return;

fAboutWindow.exec();
}

void DistrhoUI3BandSplitter::imageKnobDragStarted(ImageKnob* knob)
{
editParameter(knob->getId(), true);
}

void DistrhoUI3BandSplitter::imageKnobDragFinished(ImageKnob* knob)
{
editParameter(knob->getId(), false);
}

void DistrhoUI3BandSplitter::imageKnobValueChanged(ImageKnob* knob, float value)
{
setParameterValue(knob->getId(), value);
}

void DistrhoUI3BandSplitter::imageSliderDragStarted(ImageSlider* slider)
{
editParameter(slider->getId(), true);
}

void DistrhoUI3BandSplitter::imageSliderDragFinished(ImageSlider* slider)
{
editParameter(slider->getId(), false);
}

void DistrhoUI3BandSplitter::imageSliderValueChanged(ImageSlider* slider, float value)
{
setParameterValue(slider->getId(), value);
}

void DistrhoUI3BandSplitter::onDisplay()
{
fImgBackground.draw();
}

// -----------------------------------------------------------------------

UI* createUI()
{
return new DistrhoUI3BandSplitter();
}

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

+ 72
- 0
plugins/3BandSplitter/DistrhoUI3BandSplitter.hpp View File

@@ -0,0 +1,72 @@
/*
* DISTRHO 3BandSplitter Plugin, based on 3BandSplitter by Michael Gruhn
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LICENSE file.
*/

#ifndef DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED
#define DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED

#include "DistrhoUI.hpp"
#include "ImageWidgets.hpp"

#include "DistrhoArtwork3BandSplitter.hpp"

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------

class DistrhoUI3BandSplitter : public UI,
public ImageButton::Callback,
public ImageKnob::Callback,
public ImageSlider::Callback
{
public:
DistrhoUI3BandSplitter();

protected:
// -------------------------------------------------------------------
// DSP Callbacks

void parameterChanged(uint32_t index, float value) override;
void programLoaded(uint32_t index) override;

// -------------------------------------------------------------------
// Widget Callbacks

void imageButtonClicked(ImageButton* button, int) override;
void imageKnobDragStarted(ImageKnob* knob) override;
void imageKnobDragFinished(ImageKnob* knob) override;
void imageKnobValueChanged(ImageKnob* knob, float value) override;
void imageSliderDragStarted(ImageSlider* slider) override;
void imageSliderDragFinished(ImageSlider* slider) override;
void imageSliderValueChanged(ImageSlider* slider, float value) override;

void onDisplay() override;

private:
Image fImgBackground;
ImageAboutWindow fAboutWindow;

ScopedPointer<ImageButton> fButtonAbout;
ScopedPointer<ImageKnob> fKnobLowMid, fKnobMidHigh;
ScopedPointer<ImageSlider> fSliderLow, fSliderMid, fSliderHigh, fSliderMaster;

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUI3BandSplitter)
};

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

#endif // DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED

+ 55
- 0
plugins/3BandSplitter/Makefile View File

@@ -0,0 +1,55 @@
#!/usr/bin/make -f
# Makefile for DISTRHO Plugins #
# ---------------------------- #
# Created by falkTX
#

# --------------------------------------------------------------
# Project name, used for binaries

NAME = 3BandSplitter

# --------------------------------------------------------------
# Files to build

OBJS_DSP = \
DistrhoPlugin3BandSplitter.cpp.o

OBJS_UI = \
DistrhoArtwork3BandSplitter.cpp.o \
DistrhoUI3BandSplitter.cpp.o

# --------------------------------------------------------------
# Do some magic

include ../Makefile.Mini-Series.mk

# --------------------------------------------------------------
# Enable all possible plugin types

ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_JACK),true)
TARGETS += jack
endif
endif

ifeq ($(LINUX),true)
TARGETS += ladspa
ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_LIBLO),true)
TARGETS += dssi
endif
endif
endif

ifeq ($(HAVE_DGL),true)
TARGETS += lv2_sep
else
TARGETS += lv2_dsp
endif

TARGETS += vst

all: $(TARGETS)

# --------------------------------------------------------------

BIN
plugins/3BandSplitter/Screenshot.png View File

Before After
Width: 392  |  Height: 372  |  Size: 178KB

BIN
plugins/3BandSplitter/artwork/about.png View File

Before After
Width: 303  |  Height: 190  |  Size: 58KB

BIN
plugins/3BandSplitter/artwork/aboutButtonHover.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.0KB

BIN
plugins/3BandSplitter/artwork/aboutButtonNormal.png View File

Before After
Width: 92  |  Height: 16  |  Size: 4.1KB

BIN
plugins/3BandSplitter/artwork/background.png View File

Before After
Width: 392  |  Height: 372  |  Size: 150KB

BIN
plugins/3BandSplitter/artwork/knob.png View File

Before After
Width: 62  |  Height: 62  |  Size: 3.9KB

BIN
plugins/3BandSplitter/artwork/slider.png View File

Before After
Width: 50  |  Height: 30  |  Size: 3.4KB

+ 2166
- 0
plugins/AmplitudeImposer/DistrhoArtworkAmplitudeImposer.cpp
File diff suppressed because it is too large
View File


+ 20
- 0
plugins/AmplitudeImposer/DistrhoArtworkAmplitudeImposer.hpp View File

@@ -0,0 +1,20 @@
/* (Auto-generated binary data file). */

#ifndef BINARY_DISTRHOARTWORKAMPLITUDEIMPOSER_HPP
#define BINARY_DISTRHOARTWORKAMPLITUDEIMPOSER_HPP

namespace DistrhoArtworkAmplitudeImposer
{
extern const char* backData;
const unsigned int backDataSize = 90000;
const unsigned int backWidth = 300;
const unsigned int backHeight = 150;

extern const char* sliderData;
const unsigned int sliderDataSize = 512;
const unsigned int sliderWidth = 16;
const unsigned int sliderHeight = 16;
}

#endif // BINARY_DISTRHOARTWORKAMPLITUDEIMPOSER_HPP


+ 270
- 0
plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.cpp View File

@@ -0,0 +1,270 @@
/*
* DISTRHO AmplitudeImposer, a DPF'ied AmplitudeImposer.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include "DistrhoPluginAmplitudeImposer.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
struct twofloats {
float left;
float right;
};
// -----------------------------------------------------------------------
DistrhoPluginAmplitudeImposer::DistrhoPluginAmplitudeImposer()
: Plugin(kParameterCount, 1, 0), // 1 program, 0 states
fDepth(1.0f),
fThreshold(0.5f),
ampEnvelope_l(0.0f),
ampEnvelope_r(0.0f),
audioEnvelope_l(0.0f),
audioEnvelope_r(0.0f),
envDecay(0.0001f) {}
// -----------------------------------------------------------------------
// Init
void DistrhoPluginAmplitudeImposer::initAudioPort(bool input, uint32_t index, AudioPort& port)
{
port.hints = 0x0;
if (input)
{
switch (index)
{
case 0:
port.name = "Input Left (Amp Env)";
port.symbol = "in_left_amp";
break;
case 1:
port.name = "Input Right (Amp Env)";
port.symbol = "in_right_amp";
break;
case 2:
port.name = "Input Left (Audio)";
port.symbol = "in_left_audio";
break;
case 3:
port.name = "Input Right (Audio)";
port.symbol = "in_right_audio";
break;
}
}
else
{
switch (index)
{
case 0:
port.name = "Output Left";
port.symbol = "out_left";
break;
case 1:
port.name = "Output Right";
port.symbol = "out_right";
break;
}
}
}
void DistrhoPluginAmplitudeImposer::initParameter(uint32_t index, Parameter& parameter)
{
parameter.hints = kParameterIsAutomable;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
switch (index)
{
case kParameterDepth:
parameter.name = "Depth";
parameter.symbol = "depth";
parameter.ranges.def = 1.0f;
break;
case kParameterThreshold:
parameter.name = "Thres";
parameter.symbol = "thres";
parameter.ranges.def = 0.5f;
break;
}
}
void DistrhoPluginAmplitudeImposer::initProgramName(uint32_t index, String& programName)
{
if (index != 0)
return;
programName = "Default";
}
// -----------------------------------------------------------------------
// Internal data
float DistrhoPluginAmplitudeImposer::getParameterValue(uint32_t index) const
{
switch(index)
{
case kParameterDepth:
return fDepth;
case kParameterThreshold:
return fThreshold;
default:
return 0.0f;
}
}
void DistrhoPluginAmplitudeImposer::setParameterValue(uint32_t index, float value)
{
switch(index)
{
case kParameterDepth:
fDepth = value;
break;
case kParameterThreshold:
fThreshold = value;
break;
}
}
void DistrhoPluginAmplitudeImposer::loadProgram(uint32_t index)
{
if (index != 0)
return;
fDepth = 1.0f;
fThreshold = 0.5f;
}
// -----------------------------------------------------------------------
// Process
void DistrhoPluginAmplitudeImposer::activate()
{
ampEnvelope_l = 0.0f;
ampEnvelope_r = 0.0f;
audioEnvelope_l = 0.0f;
audioEnvelope_r = 0.0f;
envDecay = 0.0001f;
}
void DistrhoPluginAmplitudeImposer::run(const float** inputs, float** outputs, uint32_t frames)
{
const float* const in1 = inputs[0];
const float* const in2 = inputs[1];
const float* const in3 = inputs[2];
const float* const in4 = inputs[3];
/* */ float* const out1 = outputs[0];
/* */ float* const out2 = outputs[1];
float tmp;
twofloats tempf;
twofloats tempin;
for (uint32_t i=0; i<frames; ++i)
{
// calculate envelope from 1st two inputs
tmp = std::abs(in1[i]);
/**/ if (tmp > ampEnvelope_l)
ampEnvelope_l = tmp;
else if (tmp < ampEnvelope_l)
ampEnvelope_l -= envDecay;
tmp = std::abs(in2[i]);
/**/ if (tmp > ampEnvelope_r)
ampEnvelope_r = tmp;
else if (tmp < ampEnvelope_r)
ampEnvelope_r -= envDecay;
// calculate envelope from 2nd two inputs
tmp = std::abs(in3[i]);
/**/ if (tmp > audioEnvelope_l)
audioEnvelope_l = tmp;
else if (tmp < audioEnvelope_l)
audioEnvelope_l -= envDecay;
tmp = std::abs(in4[i]);
/**/ if (tmp > audioEnvelope_r)
audioEnvelope_r = tmp;
else if (tmp < audioEnvelope_r)
audioEnvelope_r -= envDecay;
// make sure we're not multiplying by a negative number
if (ampEnvelope_l < 0.0f)
ampEnvelope_l = 0.0f;
if (ampEnvelope_r < 0.0f)
ampEnvelope_r = 0.0f;
if (audioEnvelope_l < 0.0f)
audioEnvelope_l = 0.0f;
if (audioEnvelope_r < 0.0f)
audioEnvelope_r = 0.0f;
// work out whether we need to multiply audio input
if (audioEnvelope_l > fThreshold)
{
tempin.left = in3[i];
}
else
{
if (audioEnvelope_l > 0.001f)
tempin.left = in3[i] * (fThreshold/audioEnvelope_l);
else
tempin.left = in3[i] * (fThreshold/0.001f); //so it'll decay away smoothly
}
if (audioEnvelope_r > fThreshold)
{
tempin.right = in4[i];
}
else
{
if (audioEnvelope_r > 0.001f)
tempin.right = in4[i] * (fThreshold/audioEnvelope_r);
else
tempin.right = in4[i] * (fThreshold/0.001f);
}
// calculate output
tempf.left = tempin.left * ampEnvelope_l;
tempf.left *= fDepth;
tempf.left = tempf.left + ((1.0f-fDepth)*tempin.left);
tempf.right = tempin.right * ampEnvelope_r;
tempf.right *= fDepth;
tempf.right = tempf.right + ((1.0f-fDepth)*tempin.right);
out1[i] = tempf.left;
out2[i] = tempf.right;
}
}
// -----------------------------------------------------------------------
Plugin* createPlugin()
{
return new DistrhoPluginAmplitudeImposer();
}
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO

+ 127
- 0
plugins/AmplitudeImposer/DistrhoPluginAmplitudeImposer.hpp View File

@@ -0,0 +1,127 @@
/*
* DISTRHO AmplitudeImposer, a DPF'ied AmplitudeImposer.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef DISTRHO_PLUGIN_AMPLITUDE_IMPOSER_HPP_INCLUDED
#define DISTRHO_PLUGIN_AMPLITUDE_IMPOSER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class DistrhoPluginAmplitudeImposer : public Plugin
{
public:
enum Parameters {
kParameterDepth,
kParameterThreshold,
kParameterCount
};
DistrhoPluginAmplitudeImposer();
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";
}
uint32_t getVersion() const noexcept override
{
return d_version(0, 1, 0);
}
int64_t getUniqueId() const noexcept override
{
return d_cconst('A', 'm', 'I', 'm');
}
// -------------------------------------------------------------------
// Init
void initAudioPort(bool input, uint32_t index, AudioPort& port) override;
void initParameter(uint32_t index, Parameter& parameter) override;
void initProgramName(uint32_t index, String& programName) override;
// -------------------------------------------------------------------
// Internal data
float getParameterValue(uint32_t index) const override;
void setParameterValue(uint32_t index, float value) override;
void loadProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
void activate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
private:
float fDepth;
float fThreshold;
float ampEnvelope_l, ampEnvelope_r;
float audioEnvelope_l, audioEnvelope_r;
float envDecay;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPluginAmplitudeImposer)
};
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
#endif // DISTRHO_PLUGIN_AMPLITUDE_IMPOSER_HPP_INCLUDED

+ 40
- 0
plugins/AmplitudeImposer/DistrhoPluginInfo.h View File

@@ -0,0 +1,40 @@
/*
* DISTRHO AmplitudeImposer, a DPF'ied AmplitudeImposer.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#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
#define DISTRHO_PLUGIN_NUM_INPUTS 4
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1

#define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:AmplifierPlugin"

#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 116
- 0
plugins/AmplitudeImposer/DistrhoUIAmplitudeImposer.cpp View File

@@ -0,0 +1,116 @@
/*
* DISTRHO AmplitudeImposer, a DPF'ied AmplitudeImposer.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#include "DistrhoUIAmplitudeImposer.hpp"
#include "DistrhoPluginAmplitudeImposer.hpp"

START_NAMESPACE_DISTRHO

namespace Art = DistrhoArtworkAmplitudeImposer;

// -----------------------------------------------------------------------

DistrhoUIAmplitudeImposer::DistrhoUIAmplitudeImposer()
: UI(Art::backWidth, Art::backHeight),
fImgBackground(Art::backData, Art::backWidth, Art::backHeight, GL_LUMINANCE)
{
// sliders
Image sliderImage(Art::sliderData, Art::sliderWidth, Art::sliderHeight, GL_LUMINANCE);

fSliderDepth = new ImageSlider(this, sliderImage);
fSliderDepth->setId(DistrhoPluginAmplitudeImposer::kParameterDepth);
fSliderDepth->setStartPos(108, 71);
fSliderDepth->setEndPos(268, 71);
fSliderDepth->setRange(0.0f, 1.0f);
fSliderDepth->setCallback(this);

fSliderThres = new ImageSlider(this, sliderImage);
fSliderThres->setId(DistrhoPluginAmplitudeImposer::kParameterThreshold);
fSliderThres->setStartPos(108, 110);
fSliderThres->setEndPos(268, 110);
fSliderThres->setRange(0.0f, 1.0f);
fSliderThres->setCallback(this);

// set initial values
programLoaded(0);
}

// -----------------------------------------------------------------------
// DSP Callbacks

void DistrhoUIAmplitudeImposer::parameterChanged(uint32_t index, float value)
{
switch (index)
{
case DistrhoPluginAmplitudeImposer::kParameterDepth:
fSliderDepth->setValue(value);
break;
case DistrhoPluginAmplitudeImposer::kParameterThreshold:
fSliderThres->setValue(value);
break;
}
}

void DistrhoUIAmplitudeImposer::programLoaded(uint32_t index)
{
if (index != 0)
return;

fSliderDepth->setValue(1.0f);
fSliderThres->setValue(0.5f);
}

// -----------------------------------------------------------------------
// Widget Callbacks

void DistrhoUIAmplitudeImposer::imageSliderDragStarted(ImageSlider* slider)
{
editParameter(slider->getId(), true);
}

void DistrhoUIAmplitudeImposer::imageSliderDragFinished(ImageSlider* slider)
{
editParameter(slider->getId(), false);
}

void DistrhoUIAmplitudeImposer::imageSliderValueChanged(ImageSlider* slider, float value)
{
setParameterValue(slider->getId(), value);
}

void DistrhoUIAmplitudeImposer::onDisplay()
{
fImgBackground.draw();
}

// -----------------------------------------------------------------------

UI* createUI()
{
return new DistrhoUIAmplitudeImposer();
}

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

+ 70
- 0
plugins/AmplitudeImposer/DistrhoUIAmplitudeImposer.hpp View File

@@ -0,0 +1,70 @@
/*
* DISTRHO AmplitudeImposer, a DPF'ied AmplitudeImposer.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#ifndef DISTRHO_UI_AMPLITUDE_IMPOSER_HPP_INCLUDED
#define DISTRHO_UI_AMPLITUDE_IMPOSER_HPP_INCLUDED

#include "DistrhoUI.hpp"
#include "ImageWidgets.hpp"

#include "DistrhoArtworkAmplitudeImposer.hpp"

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------

class DistrhoUIAmplitudeImposer : public UI,
public ImageSlider::Callback
{
public:
DistrhoUIAmplitudeImposer();

protected:
// -------------------------------------------------------------------
// DSP Callbacks

void parameterChanged(uint32_t index, float value) override;
void programLoaded(uint32_t index) override;

// -------------------------------------------------------------------
// Widget Callbacks

void imageSliderDragStarted(ImageSlider* slider) override;
void imageSliderDragFinished(ImageSlider* slider) override;
void imageSliderValueChanged(ImageSlider* slider, float value) override;

void onDisplay() override;

private:
Image fImgBackground;
ScopedPointer<ImageSlider> fSliderDepth, fSliderThres;

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIAmplitudeImposer)
};

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

#endif // DISTRHO_UI_AMPLITUDE_IMPOSER_HPP_INCLUDED

+ 53
- 0
plugins/AmplitudeImposer/Makefile View File

@@ -0,0 +1,53 @@
#!/usr/bin/make -f
# Makefile for DISTRHO Plugins #
# ---------------------------- #
# Created by falkTX
#

# --------------------------------------------------------------
# Project name, used for binaries

NAME = AmplitudeImposer

# --------------------------------------------------------------
# Files to build

OBJS_DSP = \
DistrhoPluginAmplitudeImposer.cpp.o

OBJS_UI = \
DistrhoArtworkAmplitudeImposer.cpp.o \
DistrhoUIAmplitudeImposer.cpp.o

# --------------------------------------------------------------
# Do some magic

include ../Makefile.ndc-Plugs.mk

# --------------------------------------------------------------
# Enable all possible plugin types

ifeq ($(HAVE_JACK),true)
TARGETS += jack
endif

ifeq ($(LINUX),true)
TARGETS += ladspa
ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_LIBLO),true)
TARGETS += dssi
endif
endif
endif

ifeq ($(HAVE_DGL),true)
TARGETS += lv2_sep
else
TARGETS += lv2_dsp
endif

TARGETS += vst

all: $(TARGETS)

# --------------------------------------------------------------

BIN
plugins/AmplitudeImposer/Screenshot.png View File

Before After
Width: 300  |  Height: 150  |  Size: 7.1KB

BIN
plugins/AmplitudeImposer/artwork/back.png View File

Before After
Width: 300  |  Height: 150  |  Size: 3.3KB

BIN
plugins/AmplitudeImposer/artwork/slider.png View File

Before After
Width: 16  |  Height: 16  |  Size: 363B

+ 1386
- 0
plugins/CycleShifter/DistrhoArtworkCycleShifter.cpp
File diff suppressed because it is too large
View File


+ 20
- 0
plugins/CycleShifter/DistrhoArtworkCycleShifter.hpp View File

@@ -0,0 +1,20 @@
/* (Auto-generated binary data file). */

#ifndef BINARY_DISTRHOARTWORKCYCLESHIFTER_HPP
#define BINARY_DISTRHOARTWORKCYCLESHIFTER_HPP

namespace DistrhoArtworkCycleShifter
{
extern const char* backData;
const unsigned int backDataSize = 57352;
const unsigned int backWidth = 268;
const unsigned int backHeight = 107;

extern const char* sliderData;
const unsigned int sliderDataSize = 392;
const unsigned int sliderWidth = 14;
const unsigned int sliderHeight = 14;
}

#endif // BINARY_DISTRHOARTWORKCYCLESHIFTER_HPP


+ 193
- 0
plugins/CycleShifter/DistrhoPluginCycleShifter.cpp View File

@@ -0,0 +1,193 @@
/*
* DISTRHO CycleShifter, a DPF'ied CycleShifter.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include "DistrhoPluginCycleShifter.hpp"
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
DistrhoPluginCycleShifter::DistrhoPluginCycleShifter()
: Plugin(kParameterCount, 1, 0), // 1 program, 0 states
fNewCycleVolume(1.0f),
fInputVolume(1.0f),
OutIndex(0),
InCount(0),
ReadWrite(false),
EnvOld(0.0f)
{
std::memset(CycleBuffer, 0, sizeof(float)*BUFFER_SIZE);
}
// -----------------------------------------------------------------------
// Init
void DistrhoPluginCycleShifter::initParameter(uint32_t index, Parameter& parameter)
{
parameter.hints = kParameterIsAutomable;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
switch (index)
{
case kParameterNewCycleVolume:
parameter.name = "New Cycle Vol";
parameter.symbol = "ncvolume";
parameter.ranges.def = 1.0f;
break;
case kParameterInputVolume:
parameter.name = "Input Vol";
parameter.symbol = "ipvolume";
parameter.ranges.def = 1.0f;
break;
}
}
void DistrhoPluginCycleShifter::initProgramName(uint32_t index, String& programName)
{
if (index != 0)
return;
programName = "Default";
}
// -----------------------------------------------------------------------
// Internal data
float DistrhoPluginCycleShifter::getParameterValue(uint32_t index) const
{
switch(index)
{
case kParameterNewCycleVolume:
return fNewCycleVolume;
case kParameterInputVolume:
return fInputVolume;
default:
return 0.0f;
}
}
void DistrhoPluginCycleShifter::setParameterValue(uint32_t index, float value)
{
switch(index)
{
case kParameterNewCycleVolume:
fNewCycleVolume = value;
break;
case kParameterInputVolume:
fInputVolume = value;
break;
}
}
void DistrhoPluginCycleShifter::loadProgram(uint32_t index)
{
if (index != 0)
return;
fNewCycleVolume = 1.0f;
fInputVolume = 1.0f;
}
// -----------------------------------------------------------------------
// Process
void DistrhoPluginCycleShifter::activate()
{
std::memset(CycleBuffer, 0, sizeof(float)*BUFFER_SIZE);
OutIndex = 0;
InCount = 0;
ReadWrite = false;
EnvOld = 0.0f;
}
void DistrhoPluginCycleShifter::run(const float** inputs, float** outputs, uint32_t frames)
{
const float* in = inputs[0];
/**/ float* out = outputs[0];
for (uint32_t i=0; i<frames; ++i)
*out++ = DoProcess(*in++);
}
// -----------------------------------------------------------------------
// Borrowed this from Toby Bear's Delphi template - it maybe adds a bit to cpu
// usage, but it makes things simpler...
// -----------------------------------------------------------------------
float DistrhoPluginCycleShifter::DoProcess(float a)
{
const float tempval = a;
if (! ReadWrite) // if we're in read mode
{
if (InCount == 0) // if we're waiting for the start of a new cycle to read
{
if (EnvOld < 0.0f && tempval >= 0.0f) // as soon as the input goes past 0 we start reading
{
CycleBuffer[InCount++] = tempval;
}
}
else if (! (EnvOld < 0.0f && tempval >= 0.0f)) // if we've not reached the end of the cycle yet
{
CycleBuffer[InCount] = tempval;
if (++InCount >= BUFFER_SIZE) // if we've reached the end of the buffer
{
InCount = BUFFER_SIZE;
ReadWrite = true; // we're in write mode now
}
}
else // we've reached the end of the cycle
{
CycleBuffer[InCount++] = 0.0f;
ReadWrite = true;
}
a *= fInputVolume;
}
else // we're in write mode
{
a = (a*fInputVolume) + (CycleBuffer[OutIndex]*fNewCycleVolume);
if (++OutIndex == InCount) // we've reached the end of our stored cycle
{
InCount = 0;
OutIndex = 0;
ReadWrite = false;
}
}
EnvOld = tempval;
return a;
}
// -----------------------------------------------------------------------
Plugin* createPlugin()
{
return new DistrhoPluginCycleShifter();
}
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO

+ 127
- 0
plugins/CycleShifter/DistrhoPluginCycleShifter.hpp View File

@@ -0,0 +1,127 @@
/*
* DISTRHO CycleShifter, a DPF'ied CycleShifter.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef DISTRHO_PLUGIN_CYCLE_SHIFTER_HPP_INCLUDED
#define DISTRHO_PLUGIN_CYCLE_SHIFTER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
#define BUFFER_SIZE 11025
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
class DistrhoPluginCycleShifter : public Plugin
{
public:
enum Parameters {
kParameterNewCycleVolume,
kParameterInputVolume,
kParameterCount
};
DistrhoPluginCycleShifter();
protected:
// -------------------------------------------------------------------
// Information
const char* getLabel() const noexcept override
{
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";
}
uint32_t getVersion() const noexcept override
{
return d_version(0, 1, 0);
}
int64_t getUniqueId() const noexcept override
{
return d_cconst('C', 'S', 'f', 't');
}
// -------------------------------------------------------------------
// Init
void initParameter(uint32_t index, Parameter& parameter) override;
void initProgramName(uint32_t index, String& programName) override;
// -------------------------------------------------------------------
// Internal data
float getParameterValue(uint32_t index) const override;
void setParameterValue(uint32_t index, float value) override;
void loadProgram(uint32_t index) override;
// -------------------------------------------------------------------
// Process
void activate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
// -------------------------------------------------------------------
private:
float fNewCycleVolume;
float fInputVolume;
float CycleBuffer[BUFFER_SIZE]; // buffer to store the cycle in
int OutIndex; // index for playing the buffer
int InCount; // counts how many samples we've recorded
bool ReadWrite; // 0=read, 1=write
float EnvOld; // last (input) sample - used to determine zero-crossings
float DoProcess(float a);
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoPluginCycleShifter)
};
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
#endif // DISTRHO_PLUGIN_CYCLE_SHIFTER_HPP_INCLUDED

+ 38
- 0
plugins/CycleShifter/DistrhoPluginInfo.h View File

@@ -0,0 +1,38 @@
/*
* DISTRHO CycleShifter, a DPF'ied CycleShifter.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#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
#define DISTRHO_PLUGIN_NUM_INPUTS 1
#define DISTRHO_PLUGIN_NUM_OUTPUTS 1
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1

#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 116
- 0
plugins/CycleShifter/DistrhoUICycleShifter.cpp View File

@@ -0,0 +1,116 @@
/*
* DISTRHO CycleShifter, a DPF'ied CycleShifter.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#include "DistrhoUICycleShifter.hpp"
#include "DistrhoPluginCycleShifter.hpp"

START_NAMESPACE_DISTRHO

namespace Art = DistrhoArtworkCycleShifter;

// -----------------------------------------------------------------------

DistrhoUICycleShifter::DistrhoUICycleShifter()
: UI(Art::backWidth, Art::backHeight),
fImgBackground(Art::backData, Art::backWidth, Art::backHeight, GL_LUMINANCE)
{
// sliders
Image sliderImage(Art::sliderData, Art::sliderWidth, Art::sliderHeight, GL_LUMINANCE);

fSliderNewCycleVol = new ImageSlider(this, sliderImage);
fSliderNewCycleVol->setId(DistrhoPluginCycleShifter::kParameterNewCycleVolume);
fSliderNewCycleVol->setStartPos(6, 49);
fSliderNewCycleVol->setEndPos(247, 49);
fSliderNewCycleVol->setRange(0.0f, 1.0f);
fSliderNewCycleVol->setCallback(this);

fSliderInputVol = new ImageSlider(this, sliderImage);
fSliderInputVol->setId(DistrhoPluginCycleShifter::kParameterInputVolume);
fSliderInputVol->setStartPos(6, 80);
fSliderInputVol->setEndPos(247, 80);
fSliderInputVol->setRange(0.0f, 1.0f);
fSliderInputVol->setCallback(this);

// set initial values
programLoaded(0);
}

// -----------------------------------------------------------------------
// DSP Callbacks

void DistrhoUICycleShifter::parameterChanged(uint32_t index, float value)
{
switch (index)
{
case DistrhoPluginCycleShifter::kParameterNewCycleVolume:
fSliderNewCycleVol->setValue(value);
break;
case DistrhoPluginCycleShifter::kParameterInputVolume:
fSliderInputVol->setValue(value);
break;
}
}

void DistrhoUICycleShifter::programLoaded(uint32_t index)
{
if (index != 0)
return;

fSliderNewCycleVol->setValue(1.0f);
fSliderInputVol->setValue(1.0f);
}

// -----------------------------------------------------------------------
// Widget Callbacks

void DistrhoUICycleShifter::imageSliderDragStarted(ImageSlider* slider)
{
editParameter(slider->getId(), true);
}

void DistrhoUICycleShifter::imageSliderDragFinished(ImageSlider* slider)
{
editParameter(slider->getId(), false);
}

void DistrhoUICycleShifter::imageSliderValueChanged(ImageSlider* slider, float value)
{
setParameterValue(slider->getId(), value);
}

void DistrhoUICycleShifter::onDisplay()
{
fImgBackground.draw();
}

// -----------------------------------------------------------------------

UI* createUI()
{
return new DistrhoUICycleShifter();
}

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

+ 70
- 0
plugins/CycleShifter/DistrhoUICycleShifter.hpp View File

@@ -0,0 +1,70 @@
/*
* DISTRHO CycleShifter, a DPF'ied CycleShifter.
* Copyright (C) 2004 Niall Moody
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

#ifndef DISTRHO_UI_CYCLE_SHIFTER_HPP_INCLUDED
#define DISTRHO_UI_CYCLE_SHIFTER_HPP_INCLUDED

#include "DistrhoUI.hpp"
#include "ImageWidgets.hpp"

#include "DistrhoArtworkCycleShifter.hpp"

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------

class DistrhoUICycleShifter : public UI,
public ImageSlider::Callback
{
public:
DistrhoUICycleShifter();

protected:
// -------------------------------------------------------------------
// DSP Callbacks

void parameterChanged(uint32_t index, float value) override;
void programLoaded(uint32_t index) override;

// -------------------------------------------------------------------
// Widget Callbacks

void imageSliderDragStarted(ImageSlider* slider) override;
void imageSliderDragFinished(ImageSlider* slider) override;
void imageSliderValueChanged(ImageSlider* slider, float value) override;

void onDisplay() override;

private:
Image fImgBackground;
ScopedPointer<ImageSlider> fSliderNewCycleVol, fSliderInputVol;

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUICycleShifter)
};

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO

#endif // DISTRHO_UI_CYCLE_SHIFTER_HPP_INCLUDED

+ 53
- 0
plugins/CycleShifter/Makefile View File

@@ -0,0 +1,53 @@
#!/usr/bin/make -f
# Makefile for DISTRHO Plugins #
# ---------------------------- #
# Created by falkTX
#

# --------------------------------------------------------------
# Project name, used for binaries

NAME = CycleShifter

# --------------------------------------------------------------
# Files to build

OBJS_DSP = \
DistrhoPluginCycleShifter.cpp.o

OBJS_UI = \
DistrhoArtworkCycleShifter.cpp.o \
DistrhoUICycleShifter.cpp.o

# --------------------------------------------------------------
# Do some magic

include ../Makefile.ndc-Plugs.mk

# --------------------------------------------------------------
# Enable all possible plugin types

ifeq ($(HAVE_JACK),true)
TARGETS += jack
endif

ifeq ($(LINUX),true)
TARGETS += ladspa
ifeq ($(HAVE_DGL),true)
ifeq ($(HAVE_LIBLO),true)
TARGETS += dssi
endif
endif
endif

ifeq ($(HAVE_DGL),true)
TARGETS += lv2_sep
else
TARGETS += lv2_dsp
endif

TARGETS += vst

all: $(TARGETS)

# --------------------------------------------------------------

BIN
plugins/CycleShifter/Screenshot.png View File

Before After
Width: 268  |  Height: 107  |  Size: 5.4KB

BIN
plugins/CycleShifter/artwork/back.png View File

Before After
Width: 268  |  Height: 107  |  Size: 1.8KB

BIN
plugins/CycleShifter/artwork/slider.png View File

Before After
Width: 14  |  Height: 14  |  Size: 260B

+ 1
- 1
plugins/Kars/Makefile View File

@@ -22,7 +22,7 @@ OBJS_UI = \
# --------------------------------------------------------------
# Do some magic

include ../Makefile.mk
include ../Makefile.Kars.mk

# --------------------------------------------------------------
# Enable all possible plugin types


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save