Skip to content

Commit b5470ba

Browse files
committed
Small changes to ADSR example
1 parent 904252b commit b5470ba

File tree

2 files changed

+48
-40
lines changed

2 files changed

+48
-40
lines changed
Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
var attackTime = 0.001
32
var attackLevel = 1.0;
43
var decayTime = 0.2;
@@ -7,22 +6,19 @@ var releaseTime = 0.5;
76
var releaseLevel = 0;
87
var sustainTime = 0.5;
98

10-
var attackTimeInput;
11-
var attackLevelInput;
12-
var decayTimeInput;
13-
var decayLevelInput;
14-
var releaseTimeInput;
15-
var releaseLevelInput;
9+
var attackTimeInput, attackLevelInput;
10+
var decayTimeInput, decayLevelInput;
11+
var releaseTimeInput, releaseLevelInput;
1612
var sustainTimeInput;
1713

18-
var MAX_TIME = 1;
19-
var MAX_LEVEL = 5;
20-
var drawScale = 100;
14+
var maxTime = 1;
15+
var maxLevel = 5;
16+
var xScale = 100;
2117

2218
var env, osc;
2319

2420
function setup() {
25-
var cnv = createCanvas(4*MAX_TIME*drawScale, MAX_LEVEL*drawScale);
21+
var cnv = createCanvas(500, 500);
2622
cnv.mousePressed(playEnv);
2723

2824
env = new p5.Env();
@@ -31,24 +27,24 @@ function setup() {
3127
osc.start();
3228
osc.freq(440);
3329

34-
attackTimeInput = createSlider(0, MAX_TIME, attackTime, 0);
35-
attackTimeInput.position(10, 10);
36-
attackLevelInput = createSlider(0, MAX_LEVEL, attackLevel, 0);
37-
attackLevelInput.position(10, 40);
38-
decayTimeInput = createSlider(0, MAX_TIME, decayTime, 0);
39-
decayTimeInput.position(10, 70);
40-
decayLevelInput = createSlider(0, MAX_LEVEL, decayLevel, 0);
41-
decayLevelInput.position(10, 100);
42-
sustainTimeInput = createSlider(0, MAX_TIME, sustainTime, 0);
43-
sustainTimeInput.position(10, 120);
44-
releaseTimeInput = createSlider(0, MAX_TIME, releaseTime, 0);
45-
releaseTimeInput.position(10, 150);
46-
releaseLevelInput = createSlider(0, MAX_LEVEL, releaseLevel, 0);
47-
releaseLevelInput.position(10, 180);
30+
attackTimeInput = createSlider(0, maxTime, attackTime, 0);
31+
attackTimeInput.position(20, 15);
32+
attackLevelInput = createSlider(0, maxLevel, attackLevel, 0);
33+
attackLevelInput.position(160, 15);
34+
decayTimeInput = createSlider(0, maxTime, decayTime, 0);
35+
decayTimeInput.position(20, 45);
36+
decayLevelInput = createSlider(0, maxLevel, decayLevel, 0);
37+
decayLevelInput.position(160, 45);
38+
sustainTimeInput = createSlider(0, maxTime, sustainTime, 0);
39+
sustainTimeInput.position(20, 75);
40+
releaseTimeInput = createSlider(0, maxTime, releaseTime, 0);
41+
releaseTimeInput.position(20, 105);
42+
releaseLevelInput = createSlider(0, maxLevel, releaseLevel, 0);
43+
releaseLevelInput.position(160, 105);
4844
}
4945

5046
function draw() {
51-
background(255);
47+
background(30, 100, 155);
5248
attackTime = attackTimeInput.value();
5349
attackLevel = attackLevelInput.value();
5450
decayTime = decayTimeInput.value();
@@ -58,39 +54,50 @@ function draw() {
5854
releaseLevel = releaseLevelInput.value();
5955
drawADSR();
6056

61-
fill(0);
57+
// Text
6258
textAlign(CENTER);
6359
text('click to play', width/2, height/2);
6460
}
6561

62+
function playEnv() {
63+
env.set(attackTime, attackLevel, decayTime, decayLevel, releaseTime, releaseLevel);
64+
env.play(osc, 0, sustainTime);
65+
}
66+
6667
function drawADSR() {
68+
var textPadding = 50;
69+
var xScale = (width - textPadding) / maxTime / 4;
70+
var yScale = (height - textPadding) / maxLevel;
71+
6772
fill(130, 200, 255);
6873
noStroke();
74+
textAlign(LEFT, BOTTOM);
75+
6976
beginShape();
77+
// Start
7078
vertex(0, height);
7179
// Attack
72-
x = attackTime*drawScale;
73-
y = height - attackLevel*drawScale;
80+
x = attackTime*xScale;
81+
y = height - attackLevel*yScale;
7482
vertex(x, y);
83+
text(`Attack: \n${attackTime.toFixed(3)}s \n${attackLevel.toFixed(3)}`, x, y);
7584
// Decay
76-
x = x + decayTime*drawScale;
77-
y = height - decayLevel*drawScale;
85+
x = x + decayTime*xScale;
86+
y = height - decayLevel*yScale;
7887
vertex(x, y);
88+
text(`Decay: \n${decayTime.toFixed(3)}s \n${decayLevel.toFixed(3)}`, x, y);
7989
// Sustain
80-
x = x + sustainTime*drawScale;
90+
x = x + sustainTime*xScale;
8191
y = y;
8292
vertex(x, y);
93+
text(`Sustain: \n${sustainTime.toFixed(3)}s`, x, y);
8394
// Release
84-
x = x + releaseTime*drawScale;
85-
y = height - releaseLevel*drawScale;
95+
x = x + releaseTime*xScale;
96+
y = height - releaseLevel*yScale;
97+
text(`Release: \n${releaseTime.toFixed(3)}s \n${releaseLevel.toFixed(3)}`, x, y);
8698
vertex(x, y);
87-
// Forever
99+
// End
88100
vertex(width, y);
89101
vertex(width, height);
90102
endShape();
91-
}
92-
93-
function playEnv() {
94-
env.set(attackTime, attackLevel, decayTime, decayLevel, releaseTime, releaseLevel);
95-
env.play(osc, 0, sustainTime);
96103
}

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ <h2>p5.sound
1919
<div><a href="examples/distortion">distortion</a></div>
2020
<div><a href="examples/envAmpFreq">envAmpFreq</a></div>
2121
<div><a href="examples/envelope">envelope</a></div>
22+
<div><a href="examples/envelope_designer">envelope_designer</a></div>
2223
<div><a href="examples/envelope_exponential_play">envelope_exponential_play</a></div>
2324
<div><a href="examples/envelope_exponential_trig_rel">envelope_exponential_trig_rel</a></div>
2425
<div><a href="examples/envelopeMultipleSources">envelopeMultipleSources</a></div>

0 commit comments

Comments
 (0)