UNPKG

@pixi/sound

Version:

WebAudio API playback library with filters

48 lines (44 loc) 1.27 kB
'use strict'; var pixi_js = require('pixi.js'); var WebAudioMedia = require('../webaudio/WebAudioMedia.js'); function render(sound, options) { const canvas = document.createElement("canvas"); options = { width: 512, height: 128, fill: "black", ...options || {} }; canvas.width = options.width; canvas.height = options.height; const textureSource = new pixi_js.CanvasSource({ resource: canvas }); if (!(sound.media instanceof WebAudioMedia.WebAudioMedia)) { return textureSource; } const media = sound.media; console.assert(!!media.buffer, "No buffer found, load first"); const context = canvas.getContext("2d"); context.fillStyle = options.fill; const data = media.buffer.getChannelData(0); const step = Math.ceil(data.length / options.width); const amp = options.height / 2; for (let i = 0; i < options.width; i++) { let min = 1; let max = -1; for (let j = 0; j < step; j++) { const datum = data[i * step + j]; if (datum < min) { min = datum; } if (datum > max) { max = datum; } } context.fillRect(i, (1 + min) * amp, 1, Math.max(1, (max - min) * amp)); } return textureSource; } exports.render = render; //# sourceMappingURL=render.js.map