Skip to content

Commit 3e80dc1

Browse files
committed
Fix sustain ratio error and tweak color scheme
1 parent 87d0342 commit 3e80dc1

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

examples/envelope_designer/sketch.js

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
var attackTime = 0.001
22
var attackLevel = 1.0;
33
var decayTime = 0.2;
4-
var decayLevel = 0.2;
4+
var sustainTime = 0.5;
5+
var sustainRatio = 0.2;
56
var releaseTime = 0.5;
67
var releaseLevel = 0.0;
7-
var sustainTime = 0.5;
88

99
var attackTimeInput, attackLevelInput;
10-
var decayTimeInput, decayLevelInput;
10+
var decayTimeInput;
11+
var sustainTimeInput, sustainRatioInput;
1112
var releaseTimeInput, releaseLevelInput;
12-
var sustainTimeInput;
1313

1414
var maxTime = 1;
1515
var maxLevel = 5;
16-
var xScale = 100;
1716

1817
var env, osc;
1918

@@ -30,21 +29,21 @@ function setup() {
3029
attackTimeInput = createLabeledSlider('Attack time', 0, maxTime, attackTime, 20, 15);
3130
attackLevelInput = createLabeledSlider('Attack level', 0, maxLevel, attackLevel, 20, 40);
3231
decayTimeInput = createLabeledSlider('Decay time', 0, maxTime, decayTime, 20, 65);
33-
decayLevelInput = createLabeledSlider('Decay level', 0, maxLevel, decayLevel, 20, 90);
34-
sustainTimeInput = createLabeledSlider('Sustain time', 0, maxTime, sustainTime, 20, 115);
32+
sustainTimeInput = createLabeledSlider('Sustain time', 0, maxTime, sustainTime, 20, 90);
33+
sustainRatioInput = createLabeledSlider('Sustain ratio', 0, 1, sustainRatio, 20, 115);
3534
releaseTimeInput = createLabeledSlider('Release time', 0, maxTime, releaseTime, 20, 140);
3635
releaseLevelInput = createLabeledSlider('Release level', 0, maxLevel, 0, 20, 165);
3736
}
3837

3938
function draw() {
40-
background(30, 100, 155);
39+
background(255);
4140

4241
// Update latest values
4342
attackTime = float(attackTimeInput.value());
4443
attackLevel = float(attackLevelInput.value());
4544
decayTime = float(decayTimeInput.value());
46-
decayLevel = float(decayLevelInput.value());
4745
sustainTime = float(sustainTimeInput.value());
46+
sustainRatio = float(sustainRatioInput.value());
4847
releaseTime = float(releaseTimeInput.value());
4948
releaseLevel = float(releaseLevelInput.value());
5049

@@ -56,7 +55,7 @@ function draw() {
5655
}
5756

5857
function playEnv() {
59-
env.set(attackTime, attackLevel, decayTime, decayLevel, releaseTime, releaseLevel);
58+
env.set(attackTime, attackLevel, decayTime, sustainRatio, releaseTime, releaseLevel);
6059
env.play(osc, 0, sustainTime);
6160
}
6261

@@ -65,33 +64,42 @@ function drawADSR() {
6564
var xScale = (width - textPadding) / maxTime / 4;
6665
var yScale = (height - textPadding) / maxLevel;
6766
var x, y;
67+
var shape_color = color(30, 200, 205);
6868

69-
fill(130, 200, 255);
69+
fill(shape_color);
7070
noStroke();
7171
textAlign(LEFT, BOTTOM);
7272

7373
beginShape();
7474
// Start
7575
vertex(0, height);
7676
// Attack
77-
x = attackTime*xScale;
78-
y = height - attackLevel*yScale;
77+
x = attackTime * xScale;
78+
y = height - attackLevel * yScale;
7979
vertex(x, y);
80+
fill(0);
8081
text("Attack", x, y);
82+
fill(shape_color);
8183
// Decay
8284
x = x + decayTime*xScale;
83-
y = height - decayLevel*yScale;
85+
y = height - (releaseLevel + sustainRatio * (attackLevel - releaseLevel)) * yScale;
8486
vertex(x, y);
87+
fill(0);
8588
text("Decay", x, y);
89+
fill(shape_color);
8690
// Sustain
87-
x = x + sustainTime*xScale;
91+
x = x + sustainTime * xScale;
8892
y = y;
8993
vertex(x, y);
94+
fill(0);
9095
text("Sustain", x, y);
96+
fill(shape_color);
9197
// Release
92-
x = x + releaseTime*xScale;
93-
y = height - releaseLevel*yScale;
94-
text("Sustain", x, y);
98+
x = x + releaseTime * xScale;
99+
y = height - releaseLevel * yScale;
100+
fill(0);
101+
text("Release", x, y);
102+
fill(shape_color);
95103
vertex(x, y);
96104
// End
97105
vertex(width, y);

0 commit comments

Comments
 (0)