Skip to content

Commit 01538c1

Browse files
committed
add Stereo ver
1 parent acd20a0 commit 01538c1

File tree

6 files changed

+277
-75
lines changed

6 files changed

+277
-75
lines changed

Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
all: hvcc plugins
33

4-
PLUGIN = vSwell
4+
PLUGIN = vSwell vSwellST
55

66
DEST_LV2 = .lv2
77
DEST_VST = .vst
@@ -20,13 +20,13 @@ binmove:
2020
$(foreach var, $(PLUGIN), mv $(var)/bin/* bin/;)
2121

2222
install:
23-
rm -rf $(HM)$(DEST_LV2)/$(PLUGIN).lv2
24-
cp -r $(PLUGIN)/bin/$(PLUGIN).lv2 $(HM)$(DEST_LV2)/
25-
rm -rf $(HM)$(DEST_VST)/$(PLUGIN)-vst.so
26-
cp -r $(PLUGIN)/bin/$(PLUGIN)-vst.so $(HM)$(DEST_VST)/
27-
rm -rf $(HM)$(DEST_CLAP)/$(PLUGIN).clap
28-
cp -r $(PLUGIN)/bin/$(PLUGIN).clap $(HM)$(DEST_CLAP)/
29-
23+
$(foreach var, $(PLUGIN), rm -rf $(HM)$(DEST_LV2)/$(var).lv2 ;)
24+
$(foreach var, $(PLUGIN), cp -r $(var)/bin/$(var).lv2 $(HM)$(DEST_LV2)/ ;)
25+
$(foreach var, $(PLUGIN), rm -rf $(HM)$(DEST_VST)/$(var)-vst.so ;)
26+
$(foreach var, $(PLUGIN), cp -r $(var)/bin/$(var)-vst.so $(HM)$(DEST_VST)/ ;)
27+
$(foreach var, $(PLUGIN), rm -rf $(HM)$(DEST_CLAP)/$(var).clap ;)
28+
$(foreach var, $(PLUGIN), cp -r $(var)/bin/$(var).clap $(HM)$(DEST_CLAP)/ ;)
29+
3030
modduo: all
3131
modduox: all
3232
moddwarf: all

README.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,25 @@ Markdown
44

55
## vSwell
66

7-
*vSwell* is a volume envelope audio effect plugin. The effect can be triggered by an audio signal, CV or a MIDI notein.
7+
*vSwell* is a volume envelope audio effect plugin. The effect can be triggered by an audio signal, CV or a MIDI notein.
88

9-
The effect signal input is separate from the trigger signal input. This is *mostly* so alternative signal dynamics can act as a trigger (a fuzz can run through the effect, but the unboosted "clean" signal can be the trigger). However, other unrelated sounds can serve as the trigger, also.
9+
The plugin is provided in two versions:
10+
11+
* vSwell
12+
* Mono, with a separate trigger input
13+
* vSwellST
14+
* Stereo, with selectable trigger channels
1015

1116
Plugins are provided in LV2, VST, VST3 and CLAP formats, compiled for Linux environments. With a working hvcc environment, the patch *should* compile for other systems.
1217

18+
### Mono vs. Stereo
19+
20+
On the mono version the effect signal input is separate from the trigger signal input. This is *mostly* so alternative signal dynamics can act as a trigger (a fuzz can run through the effect, but the unboosted "clean" signal can be the trigger). However, other unrelated sounds can serve as the trigger, also.
21+
22+
The stereo version can select either channel (or both, or neither) as the trigger, and both channels have the envelope applied.
23+
24+
The mono version doesn't always work well with DAWs or other track-oriented applications. Two inputs and one output is more difficult to integrate into an automatic interface.
25+
1326
### Parameters
1427

1528
* Attack Level
@@ -34,13 +47,27 @@ Plugins are provided in LV2, VST, VST3 and CLAP formats, compiled for Linux envi
3447
* Threshold Low
3548
* db level BELOW the High Threshold where the effect resets for a new trigger
3649
* REPEAT: this value is *subtracted* from the Threshold High for the low threshold
50+
* Threshold Strict
51+
* vSwell has some triggering enhancements, and selecting this turns them OFF. The trigger inputs in "strict" mode will more closely follow the RMS value of the *Threshold High* setting.
3752
* Trigger Delay
3853
* Delay before an envelope begins, after a trigger event. A longer delay can reduce artifacts at the start of an envelope
3954
* Trigger EXT
4055
* An external trigger parameter, like a CV
41-
* Trigger by audio ON
56+
57+
#### vSwell only
58+
59+
* Trigger by audio ON (Mono only)
4260
* If ON, the audio trigger is active. Turn this off if only an external or MIDI trigger is needed
4361

62+
#### vSwellST only
63+
64+
* Trigger Left (Stereo only)
65+
* If ON, the audio trigger is active on the Left channel
66+
* Turn BOTH left and right off for external trigger only.
67+
* Trigger Right (Stereo only)
68+
* If ON, the audio trigger is active on the Right channel
69+
* Turn BOTH left and right off for external trigger only.
70+
4471
### Envelope Terminology
4572

4673
vSwell uses the terms outlined on the graphic below for envelopes. The choice of terms is largely dictated by the Heavy (hvcc) compiler, as it only organizes parameters alphabetically. While relatively self-explanatory, here's a visual guide:
@@ -62,6 +89,8 @@ vSwell uses the terms outlined on the graphic below for envelopes. The choice of
6289

6390
* Release fades to the SubEnvelope level.
6491

92+
* Higher settings for *Threshold High* raise the threshold, and make triggering less likely. Higher threshold == less sensitive. *Threshold Low* is the # of decibels **below** *Threshold High* at which the trigger resets. I.E., the signal must drop by this amount before a new trigger event can occur.
93+
6594
* Setting the SubEnv Level above 0.1 and adjusting the envelope to slowly raise the level can create an effect similar to compression. It's not really compression *per se*, but it sounds cool (adding reverb also is cool).
6695

6796
* The Shape parameter is exponential. When set to 1.0, the envelope curves are linear. Below 1.0, the curves are convex, above 1.0 they become concave (scooped):

vSwell.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"maker": "GModal-GMoon",
77
"homepage": "https://github.com/GModal",
88
"plugin_uri": "lv2://github.com/GModal/vSwell",
9-
"version": "0, 2, 0",
9+
"version": "0, 3, 0",
1010
"license": "MIT",
1111
"midi_input": 1,
1212
"midi_output": 0,

vSwell.pd

Lines changed: 75 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,72 @@
1-
#N canvas 613 82 937 823 10;
2-
#X obj 63 753 *~;
3-
#X obj 214 270 t b b;
1+
#N canvas 636 73 937 823 10;
2+
#X obj 65 766 *~;
3+
#X obj 214 292 t b b;
44
#X obj 63 34 adc~;
5-
#X obj 279 154 t f f;
6-
#X text 469 48 vswell by Doug Garmon \, 2019 \, 2023;
7-
#X obj 214 172 env~;
8-
#X obj 62 781 dac~ 1;
9-
#X obj 306 180 - 2;
10-
#X obj 214 199 schmitt;
5+
#X obj 312 161 t f f;
6+
#X text 490 751 vswell by Doug Garmon \, 2019 \, 2023;
7+
#X obj 214 199 env~;
8+
#X obj 64 794 dac~ 1;
9+
#X obj 339 187 - 2;
10+
#X obj 214 228 schmitt;
1111
#X text 116 11 Audio effect is input #1 Trigger is input #2, f 24;
12-
#X obj 321 152 r Threshold_Low @hv_param 0.3 8 1.5;
13-
#X obj 128 187 notein;
14-
#X obj 214 628 line~;
15-
#X obj 271 633 r Shape @hv_param 0.1 3 1.5;
16-
#X obj 356 493 loadbang;
17-
#X obj 214 424 lcurve, f 10;
18-
#X obj 271 491 lcurve, f 10;
19-
#X obj 328 590 lcurve, f 10;
20-
#X obj 241 300 s ecancel;
21-
#X obj 271 398 r ecancel;
22-
#X obj 328 467 r ecancel;
23-
#X obj 420 563 r ecancel;
24-
#X text 497 65 Inspired by 'GuitarExtended' blog \, Pierre Massat \, 2012;
25-
#X obj 279 127 r Threshold_High @hv_param 30 85 52;
26-
#X obj 214 232 spigot 1;
27-
#X obj 280 239 r Trigger_EXT @hv_param 0 1 0 trig;
28-
#X obj 289 206 r Trigger_by_Audio_ON @hv_param 0 1 1 bool;
29-
#X obj 144 211 > 0;
30-
#X obj 144 235 sel 1;
31-
#X obj 242 349 r Attack_Level @hv_param 0 3 0.6;
32-
#X obj 256 372 r Attack_ms @hv_param 10 3000 400;
33-
#X obj 299 422 r Mid_Level @hv_param 0 3 0.65;
34-
#X obj 313 445 r Mid_ms @hv_param 10 4000 1000;
35-
#X obj 413 538 r Release_ms @hv_param 10 4000 2200;
36-
#X obj 118 425 f 1e-07;
37-
#X obj 356 538 f 1e-07;
38-
#X obj 126 653 sig~;
39-
#X obj 180 691 max~;
40-
#X msg 126 601 \$1 25;
41-
#X obj 126 627 line;
42-
#X obj 214 660 pow~;
43-
#X obj 181 716 min~ 2.5;
44-
#X msg 118 455 \$1 3;
45-
#X obj 214 325 del 5;
46-
#X obj 395 515 r subenv;
47-
#X obj 126 575 r subenv;
48-
#X obj 157 384 r subenv;
49-
#X obj 555 357 r SubEnv_Level @hv_param 1e-07 0.7 1e-07;
50-
#X obj 555 383 s subenv;
51-
#X obj 213 118 sqrt~;
52-
#X obj 213 143 /~ 90;
53-
#X obj 213 94 *~ 80;
54-
#X obj 213 69 lop~ 500;
55-
#X obj 313 275 r Trigger_Delay @hv_param 0 50 2;
56-
#X obj 313 302 + 3;
12+
#X obj 354 159 r Threshold_Low @hv_param 0.3 8 1.5;
13+
#X obj 128 209 notein;
14+
#X obj 214 650 line~;
15+
#X obj 271 655 r Shape @hv_param 0.1 3 1.5;
16+
#X obj 356 515 loadbang;
17+
#X obj 214 446 lcurve, f 10;
18+
#X obj 271 513 lcurve, f 10;
19+
#X obj 328 612 lcurve, f 10;
20+
#X obj 241 322 s ecancel;
21+
#X obj 271 420 r ecancel;
22+
#X obj 328 489 r ecancel;
23+
#X obj 420 585 r ecancel;
24+
#X text 518 768 Inspired by 'GuitarExtended' blog \, Pierre Massat \, 2012;
25+
#X obj 312 134 r Threshold_High @hv_param 30 85 52;
26+
#X obj 214 254 spigot 1;
27+
#X obj 280 261 r Trigger_EXT @hv_param 0 1 0 trig;
28+
#X obj 289 228 r Trigger_by_Audio_ON @hv_param 0 1 1 bool;
29+
#X obj 144 233 > 0;
30+
#X obj 144 257 sel 1;
31+
#X obj 242 371 r Attack_Level @hv_param 0 3 0.6;
32+
#X obj 256 394 r Attack_ms @hv_param 10 3000 400;
33+
#X obj 299 444 r Mid_Level @hv_param 0 3 0.65;
34+
#X obj 313 467 r Mid_ms @hv_param 10 4000 1000;
35+
#X obj 413 560 r Release_ms @hv_param 10 4000 2200;
36+
#X obj 118 447 f 1e-07;
37+
#X obj 356 560 f 1e-07;
38+
#X obj 126 675 sig~;
39+
#X obj 180 713 max~;
40+
#X msg 126 623 \$1 25;
41+
#X obj 126 649 line;
42+
#X obj 214 682 pow~;
43+
#X obj 181 738 min~ 2.5;
44+
#X msg 118 477 \$1 3;
45+
#X obj 214 347 del 5;
46+
#X obj 395 537 r subenv;
47+
#X obj 126 597 r subenv;
48+
#X obj 157 406 r subenv;
49+
#X obj 555 379 r SubEnv_Level @hv_param 1e-07 0.7 1e-07;
50+
#X obj 555 405 s subenv;
51+
#X obj 214 69 lop~ 500;
52+
#X obj 313 297 r Trigger_Delay @hv_param 0 50 2;
53+
#X obj 313 324 + 3;
5754
#X obj 64 120 delwrite~ \$0-swell 8;
5855
#X obj 64 149 delread~ \$0-swell 8;
56+
#X obj 253 144 sqrt~;
57+
#X obj 253 120 *~ 80;
58+
#X obj 253 169 /~ 80;
59+
#X obj 252 97 *~;
60+
#X obj 213 115 *~;
61+
#X obj 300 25 r Threshold_Strict @hv_param 0 1 0 bool;
62+
#X obj 300 51 - 1;
63+
#X obj 300 76 abs;
5964
#X connect 0 0 6 0;
6065
#X connect 1 0 43 0;
6166
#X connect 1 1 18 0;
6267
#X connect 1 1 34 0;
63-
#X connect 2 0 55 0;
64-
#X connect 2 1 52 0;
68+
#X connect 2 0 52 0;
69+
#X connect 2 1 49 0;
6570
#X connect 3 0 8 1;
6671
#X connect 3 1 7 0;
6772
#X connect 5 0 8 0;
@@ -108,10 +113,17 @@
108113
#X connect 46 0 34 1;
109114
#X connect 46 0 15 1;
110115
#X connect 47 0 48 0;
111-
#X connect 49 0 50 0;
112-
#X connect 50 0 5 0;
113-
#X connect 51 0 49 0;
114-
#X connect 52 0 51 0;
115-
#X connect 53 0 54 0;
116-
#X connect 54 0 43 1;
117-
#X connect 56 0 0 0;
116+
#X connect 49 0 57 0;
117+
#X connect 49 0 58 0;
118+
#X connect 50 0 51 0;
119+
#X connect 51 0 43 1;
120+
#X connect 53 0 0 0;
121+
#X connect 54 0 56 0;
122+
#X connect 55 0 54 0;
123+
#X connect 56 0 5 0;
124+
#X connect 57 0 55 0;
125+
#X connect 58 0 5 0;
126+
#X connect 59 0 60 0;
127+
#X connect 59 0 58 1;
128+
#X connect 60 0 61 0;
129+
#X connect 61 0 57 1;

vSwellST.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"dpf": {
3+
"dpf_path": "../",
4+
"project": true,
5+
"description": "Volume Swell effect, Stereo",
6+
"maker": "GModal-GMoon",
7+
"homepage": "https://github.com/GModal",
8+
"plugin_uri": "lv2://github.com/GModal/vSwell/ST",
9+
"version": "0, 3, 0",
10+
"license": "MIT",
11+
"midi_input": 1,
12+
"midi_output": 0,
13+
"plugin_formats": [
14+
"lv2_dsp",
15+
"vst2",
16+
"vst3",
17+
"clap"
18+
]
19+
}
20+
}

0 commit comments

Comments
 (0)