Tone.js/test/core/Bus.js

60 lines
1.7 KiB
JavaScript
Raw Normal View History

define(["Test", "Tone/core/Bus", "Tone/core/Tone", "helper/Offline",
"helper/PassAudio", "Tone/signal/Signal", "Tone/core/Gain", "Tone/component/Merge"],
function (Test, Bus, Tone, Offline, PassAudio, Signal, Gain, Merge) {
2015-08-16 18:23:40 +00:00
describe("Bus", function(){
it ("provides a send and receive method", function(){
expect(Tone.prototype.send).is.a("function");
expect(Tone.prototype.receive).is.a("function");
});
it ("passes audio from a send to a receive with the same name", function(){
return PassAudio(function(input){
2015-08-16 18:23:40 +00:00
//make them pass through nodes
var send = new Gain();
var recv = new Gain().toMaster();
2015-08-16 18:23:40 +00:00
input.connect(send);
send.send("test");
recv.receive("test");
});
});
it ("can create the recieve before the send", function(){
return PassAudio(function(input){
//make them pass through nodes
var send = new Gain();
var recv = new Gain().toMaster();
input.connect(send);
recv.receive("test");
send.send("test");
});
2015-08-16 18:23:40 +00:00
});
it ("passes audio from a send to a receive at the given level", function(){
return Offline(function(){
var sig = new Signal(1);
var recv = new Gain().toMaster();
sig.send("test", -12);
recv.receive("test");
}, 0.05).then(function(buffer){
2017-02-20 03:50:39 +00:00
buffer.forEach(function(sample){
expect(sample).to.be.closeTo(0.25, 0.1);
2017-02-19 20:29:53 +00:00
});
});
});
it ("can receive from a specific channel", function(){
return Offline(function(){
var sig = new Signal(2);
var recv = new Merge().toMaster();
sig.send("test");
recv.receive("test", 1);
}, 0.05, 2).then(function(buffer){
buffer.forEach(function(l, r){
expect(l).to.be.closeTo(0, 0.01);
expect(r).to.be.closeTo(2, 0.01);
});
});
});
2015-08-16 18:23:40 +00:00
});
});