ciseaux
Version:
utility to chop an audio buffer
44 lines (34 loc) • 1.13 kB
JavaScript
;
var InlineWorker = require("inline-worker");
var render = require("./render-worker");
var worker = new InlineWorker(render, render.self);
var __callbacks = [];
var __data = 1; // data 0 is reserved for silence
worker.onmessage = function (e) {
var channleData = e.data.buffers.map(function (buffer) {
return new Float32Array(buffer);
});
__callbacks[e.data.callbackId](channleData);
__callbacks[e.data.callbackId] = null;
};
module.exports = {
transfer: function transfer(audiodata) {
var data = __data++;
var buffers = audiodata.channelData.map(function (array) {
return array.buffer;
});
worker.postMessage({ type: "transfer", data: data, buffers: buffers }, buffers);
return data;
},
dispose: function dispose(data) {
worker.postMessage({ type: "dispose", data: data });
},
render: function render(tape) {
var callbackId = __callbacks.length;
worker.postMessage({ type: "render", tape: tape, callbackId: callbackId });
return new Promise(function (resolve) {
__callbacks[callbackId] = resolve;
});
},
util: render.util
};