Skip to content

Commit

Permalink
Make envelope parameters into proper AudioletParameters so they can b…
Browse files Browse the repository at this point in the history
…e modified using setValue. Fixes #31.
  • Loading branch information
oampo committed Apr 27, 2012
1 parent 4745109 commit e5c32eb
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 17 deletions.
32 changes: 25 additions & 7 deletions src/audiolet/Audiolet.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1567,16 +1567,24 @@ var Envelope = function(audiolet, gate, levels, times, releaseStage,
AudioletNode.call(this, audiolet, 1, 1); AudioletNode.call(this, audiolet, 1, 1);
this.gate = new AudioletParameter(this, 0, gate || 1); this.gate = new AudioletParameter(this, 0, gate || 1);


this.levels = levels; this.levels = [];
this.times = times; for (var i=0; i<levels.length; i++) {
this.levels.push(new AudioletParameter(this, null, levels[i]));
}

this.times = [];
for (var i=0; i<times.length; i++) {
this.times.push(new AudioletParameter(this, null, times[i]));
}

this.releaseStage = releaseStage; this.releaseStage = releaseStage;
this.onComplete = onComplete; this.onComplete = onComplete;


this.stage = null; this.stage = null;
this.time = null; this.time = null;
this.changeTime = null; this.changeTime = null;


this.level = this.levels[0]; this.level = this.levels[0].getValue();
this.delta = 0; this.delta = 0;
this.gateOn = false; this.gateOn = false;
}; };
Expand All @@ -1596,7 +1604,7 @@ Envelope.prototype.generate = function() {
this.stage = 0; this.stage = 0;
this.time = 0; this.time = 0;
this.delta = 0; this.delta = 0;
this.level = this.levels[0]; this.level = this.levels[0].getValue();
if (this.stage != this.releaseStage) { if (this.stage != this.releaseStage) {
stageChanged = true; stageChanged = true;
} }
Expand Down Expand Up @@ -1664,8 +1672,9 @@ Envelope.prototype.generate = function() {
* @return {Number} The change in level. * @return {Number} The change in level.
*/ */
Envelope.prototype.calculateDelta = function(stage, level) { Envelope.prototype.calculateDelta = function(stage, level) {
var delta = this.levels[stage + 1] - level; var delta = this.levels[stage + 1].getValue() - level;
var stageTime = this.times[stage] * this.audiolet.device.sampleRate; var stageTime = this.times[stage].getValue() *
this.audiolet.device.sampleRate;
return (delta / stageTime); return (delta / stageTime);
}; };


Expand All @@ -1677,7 +1686,8 @@ Envelope.prototype.calculateDelta = function(stage, level) {
* @return {Number} The change time. * @return {Number} The change time.
*/ */
Envelope.prototype.calculateChangeTime = function(stage, time) { Envelope.prototype.calculateChangeTime = function(stage, time) {
var stageTime = this.times[stage] * this.audiolet.device.sampleRate; var stageTime = this.times[stage].getValue() *
this.audiolet.device.sampleRate;
return (time + stageTime); return (time + stageTime);
}; };


Expand Down Expand Up @@ -1726,6 +1736,11 @@ var ADSREnvelope = function(audiolet, gate, attack, decay, sustain, release,
var levels = [0, 1, sustain, 0]; var levels = [0, 1, sustain, 0];
var times = [attack, decay, release]; var times = [attack, decay, release];
Envelope.call(this, audiolet, gate, levels, times, 2, onComplete); Envelope.call(this, audiolet, gate, levels, times, 2, onComplete);

this.attack = this.times[0];
this.decay = this.times[1];
this.sustain = this.levels[2];
this.release = this.levels[2];
}; };
extend(ADSREnvelope, Envelope); extend(ADSREnvelope, Envelope);


Expand Down Expand Up @@ -3834,6 +3849,9 @@ var PercussiveEnvelope = function(audiolet, gate, attack, release,
var levels = [0, 1, 0]; var levels = [0, 1, 0];
var times = [attack, release]; var times = [attack, release];
Envelope.call(this, audiolet, gate, levels, times, null, onComplete); Envelope.call(this, audiolet, gate, levels, times, null, onComplete);

this.attack = this.times[0];
this.release = this.times[1];
}; };
extend(PercussiveEnvelope, Envelope); extend(PercussiveEnvelope, Envelope);


Expand Down
6 changes: 3 additions & 3 deletions src/audiolet/Audiolet.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/dsp/ADSREnvelope.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ var ADSREnvelope = function(audiolet, gate, attack, decay, sustain, release,
var levels = [0, 1, sustain, 0]; var levels = [0, 1, sustain, 0];
var times = [attack, decay, release]; var times = [attack, decay, release];
Envelope.call(this, audiolet, gate, levels, times, 2, onComplete); Envelope.call(this, audiolet, gate, levels, times, 2, onComplete);

this.attack = this.times[0];
this.decay = this.times[1];
this.sustain = this.levels[2];
this.release = this.levels[2];
}; };
extend(ADSREnvelope, Envelope); extend(ADSREnvelope, Envelope);


Expand Down
24 changes: 17 additions & 7 deletions src/dsp/Envelope.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -33,16 +33,24 @@ var Envelope = function(audiolet, gate, levels, times, releaseStage,
AudioletNode.call(this, audiolet, 1, 1); AudioletNode.call(this, audiolet, 1, 1);
this.gate = new AudioletParameter(this, 0, gate || 1); this.gate = new AudioletParameter(this, 0, gate || 1);


this.levels = levels; this.levels = [];
this.times = times; for (var i=0; i<levels.length; i++) {
this.levels.push(new AudioletParameter(this, null, levels[i]));
}

this.times = [];
for (var i=0; i<times.length; i++) {
this.times.push(new AudioletParameter(this, null, times[i]));
}

this.releaseStage = releaseStage; this.releaseStage = releaseStage;
this.onComplete = onComplete; this.onComplete = onComplete;


this.stage = null; this.stage = null;
this.time = null; this.time = null;
this.changeTime = null; this.changeTime = null;


this.level = this.levels[0]; this.level = this.levels[0].getValue();
this.delta = 0; this.delta = 0;
this.gateOn = false; this.gateOn = false;
}; };
Expand All @@ -62,7 +70,7 @@ Envelope.prototype.generate = function() {
this.stage = 0; this.stage = 0;
this.time = 0; this.time = 0;
this.delta = 0; this.delta = 0;
this.level = this.levels[0]; this.level = this.levels[0].getValue();
if (this.stage != this.releaseStage) { if (this.stage != this.releaseStage) {
stageChanged = true; stageChanged = true;
} }
Expand Down Expand Up @@ -130,8 +138,9 @@ Envelope.prototype.generate = function() {
* @return {Number} The change in level. * @return {Number} The change in level.
*/ */
Envelope.prototype.calculateDelta = function(stage, level) { Envelope.prototype.calculateDelta = function(stage, level) {
var delta = this.levels[stage + 1] - level; var delta = this.levels[stage + 1].getValue() - level;
var stageTime = this.times[stage] * this.audiolet.device.sampleRate; var stageTime = this.times[stage].getValue() *
this.audiolet.device.sampleRate;
return (delta / stageTime); return (delta / stageTime);
}; };


Expand All @@ -143,7 +152,8 @@ Envelope.prototype.calculateDelta = function(stage, level) {
* @return {Number} The change time. * @return {Number} The change time.
*/ */
Envelope.prototype.calculateChangeTime = function(stage, time) { Envelope.prototype.calculateChangeTime = function(stage, time) {
var stageTime = this.times[stage] * this.audiolet.device.sampleRate; var stageTime = this.times[stage].getValue() *
this.audiolet.device.sampleRate;
return (time + stageTime); return (time + stageTime);
}; };


Expand Down
3 changes: 3 additions & 0 deletions src/dsp/PercussiveEnvelope.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ var PercussiveEnvelope = function(audiolet, gate, attack, release,
var levels = [0, 1, 0]; var levels = [0, 1, 0];
var times = [attack, release]; var times = [attack, release];
Envelope.call(this, audiolet, gate, levels, times, null, onComplete); Envelope.call(this, audiolet, gate, levels, times, null, onComplete);

this.attack = this.times[0];
this.release = this.times[1];
}; };
extend(PercussiveEnvelope, Envelope); extend(PercussiveEnvelope, Envelope);


Expand Down

0 comments on commit e5c32eb

Please sign in to comment.