2019-01-27 18:05:20 +00:00
|
|
|
import AmplitudeEnvelope from "Tone/component/AmplitudeEnvelope";
|
|
|
|
import Basic from "helper/Basic";
|
|
|
|
import Offline from "helper/Offline";
|
|
|
|
import Envelope from "Tone/component/Envelope";
|
|
|
|
import Test from "helper/Test";
|
|
|
|
import Signal from "Tone/signal/Signal";
|
|
|
|
import CompareToFile from "helper/CompareToFile";
|
|
|
|
import Oscillator from "Tone/source/Oscillator";
|
|
|
|
describe("AmplitudeEnvelope", function(){
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
Basic(AmplitudeEnvelope);
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
context("Comparisons", function(){
|
2018-05-28 22:19:44 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("matches a file", function(){
|
|
|
|
return CompareToFile(function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope({
|
|
|
|
attack : 0.1,
|
|
|
|
decay : 0.2,
|
|
|
|
sustain : 0.1,
|
|
|
|
release : 0.2,
|
|
|
|
}).toMaster();
|
|
|
|
var osc = new Oscillator().start(0).connect(ampEnv);
|
|
|
|
ampEnv.triggerAttack(0);
|
|
|
|
ampEnv.triggerRelease(0.3);
|
|
|
|
}, "ampEnvelope.wav");
|
|
|
|
});
|
2018-05-28 22:19:44 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("matches a file with multiple retriggers", function(){
|
|
|
|
return CompareToFile(function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope({
|
|
|
|
attack : 0.1,
|
|
|
|
decay : 0.2,
|
|
|
|
sustain : 0.1,
|
|
|
|
release : 0.2,
|
|
|
|
}).toMaster();
|
|
|
|
var osc = new Oscillator().start(0).connect(ampEnv);
|
|
|
|
ampEnv.triggerAttack(0);
|
|
|
|
ampEnv.triggerAttack(0.3);
|
2019-08-02 17:09:24 +00:00
|
|
|
}, "ampEnvelope2.wav", 0.004);
|
2019-01-27 18:05:20 +00:00
|
|
|
});
|
2018-05-28 22:19:44 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("matches a file with ripple attack/release", function(){
|
|
|
|
return CompareToFile(function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope({
|
|
|
|
attack : 0.5,
|
|
|
|
attackCurve : "ripple",
|
|
|
|
decay : 0.2,
|
|
|
|
sustain : 0.1,
|
|
|
|
release : 0.3,
|
|
|
|
releaseCurve : "ripple",
|
|
|
|
}).toMaster();
|
|
|
|
var osc = new Oscillator().start(0).connect(ampEnv);
|
|
|
|
ampEnv.triggerAttack(0);
|
|
|
|
ampEnv.triggerRelease(0.7);
|
|
|
|
ampEnv.triggerAttack(1);
|
|
|
|
ampEnv.triggerRelease(1.6);
|
2019-08-02 17:09:24 +00:00
|
|
|
}, "ampEnvelope3.wav", 0.002);
|
2018-05-28 22:19:44 +00:00
|
|
|
});
|
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
context("Envelope", function(){
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("handles input and output connections", function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope();
|
|
|
|
Test.connect(ampEnv);
|
|
|
|
ampEnv.connect(Test);
|
|
|
|
ampEnv.dispose();
|
|
|
|
});
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("extends envelope", function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope();
|
|
|
|
expect(ampEnv).to.be.instanceOf(Envelope);
|
|
|
|
ampEnv.dispose();
|
|
|
|
});
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("passes no signal before being triggered", function(){
|
|
|
|
return Offline(function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope().toMaster();
|
|
|
|
new Signal(1).connect(ampEnv);
|
|
|
|
}).then(function(buffer){
|
|
|
|
expect(buffer.isSilent()).to.be.true;
|
2015-08-28 22:42:08 +00:00
|
|
|
});
|
2019-01-27 18:05:20 +00:00
|
|
|
});
|
2015-08-28 22:42:08 +00:00
|
|
|
|
2019-01-27 18:05:20 +00:00
|
|
|
it("passes signal once triggered", function(){
|
|
|
|
return Offline(function(){
|
|
|
|
var ampEnv = new AmplitudeEnvelope().toMaster();
|
|
|
|
new Signal(1).connect(ampEnv);
|
|
|
|
ampEnv.triggerAttack(0.1);
|
|
|
|
}, 0.2).then(function(buffer){
|
|
|
|
expect(buffer.getFirstSoundTime()).to.be.closeTo(0.1, 0.001);
|
2017-02-20 04:55:55 +00:00
|
|
|
});
|
2015-08-28 22:42:08 +00:00
|
|
|
});
|
|
|
|
});
|
2017-12-30 16:26:29 +00:00
|
|
|
});
|
2019-01-27 18:05:20 +00:00
|
|
|
|