1-
21var attackTime = 0.001
32var attackLevel = 1.0 ;
43var decayTime = 0.2 ;
@@ -7,22 +6,19 @@ var releaseTime = 0.5;
76var releaseLevel = 0 ;
87var 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 ;
1612var 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
2218var env , osc ;
2319
2420function 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
5046function 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+
6667function 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}
0 commit comments