@@ -17,13 +17,14 @@ define(function (require) {
17
17
* @class p5.MonoSynth
18
18
* @constructor
19
19
*
20
- *
21
20
**/
22
21
23
22
p5 . MonoSynth = function ( ) {
24
23
AudioVoice . call ( this ) ;
25
24
26
25
this . oscillator = new p5 . Oscillator ( ) ;
26
+ this . oscillator . disconnect ( ) ;
27
+
27
28
28
29
this . env = new p5 . Env ( ) ;
29
30
this . env . setRange ( 1 , 0 ) ;
@@ -37,15 +38,16 @@ define(function (require) {
37
38
this . filter . set ( 5 , 1 ) ;
38
39
39
40
// oscillator --> env --> filter --> this.output (gain) --> p5.soundOut
41
+
42
+ this . oscillator . connect ( this . filter ) ;
40
43
this . env . setInput ( this . oscillator ) ;
41
44
this . env . connect ( this . filter ) ;
42
45
this . filter . connect ( this . output ) ;
43
46
44
- // connect to master output by default
45
- this . connect ( ) ;
46
-
47
47
this . oscillator . start ( ) ;
48
48
49
+ //Audiovoices are connected to soundout by default
50
+
49
51
this . _isOn = false ;
50
52
51
53
p5sound . soundArray . push ( this ) ;
@@ -69,8 +71,7 @@ define(function (require) {
69
71
*/
70
72
p5 . MonoSynth . prototype . _setNote = function ( note , secondsFromNow ) {
71
73
var freqVal = p5 . prototype . midiToFreq ( note ) ;
72
- var t = secondsFromNow || 0 ;
73
- this . oscillator . freq ( freqVal , 0 , t ) ;
74
+ this . oscillator . freq ( freqVal , 0 , secondsFromNow ) ;
74
75
} ;
75
76
76
77
/**
@@ -85,13 +86,8 @@ define(function (require) {
85
86
*/
86
87
87
88
p5 . MonoSynth . prototype . play = function ( note , velocity , secondsFromNow , susTime ) {
88
- this . _setNote ( note , secondsFromNow ) ;
89
-
90
89
// set range of env (TO DO: allow this to be scheduled in advance)
91
90
var vel = velocity || 1 ;
92
- // this.env.setRange(vel, 0);
93
-
94
- // this.env.play(this.output, secondsFromNow, susTime);
95
91
96
92
this . triggerAttack ( note , velocity , secondsFromNow ) ;
97
93
this . triggerRelease ( secondsFromNow + susTime ) ;
@@ -108,10 +104,15 @@ define(function (require) {
108
104
* @method triggerAttack
109
105
*/
110
106
p5 . MonoSynth . prototype . triggerAttack = function ( note , velocity , secondsFromNow ) {
111
- this . _setNote ( note , secondsFromNow ) ;
107
+
108
+ var now = p5sound . audiocontext . currentTime ;
109
+ var tFromNow = secondsFromNow || 0 ;
110
+ var t = now + tFromNow ;
111
+ var n = p5 . prototype . midiToFreq ( note ) ;
112
+
112
113
this . _isOn = true ;
113
- this . env . ramp ( this . output , secondsFromNow , velocity ) ;
114
- // this.env.triggerAttack (this.output, secondsFromNow );
114
+ this . oscillator . freq ( n , 0 , t ) ;
115
+ this . env . ramp ( this . output , t , velocity ) ;
115
116
} ;
116
117
117
118
/**
@@ -163,7 +164,6 @@ define(function (require) {
163
164
} ;
164
165
165
166
//PRESETS
166
- //
167
167
p5 . MonoSynth . prototype . default = {
168
168
'oscillator' : {
169
169
'type' : 'sine'
0 commit comments