UNPKG

react-hifi

Version:

A set of react components wich provides simple abstraption to manipulate HTML5 AudioContext API (Equalizer, visualisation, stereo, basic controls)

43 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var plugin_factory_1 = require("../_lib/plugin-factory"); var helpers_1 = require("../../helpers"); var EqualizerPlugin = /** @class */ (function () { function EqualizerPlugin() { } EqualizerPlugin.prototype.shouldNotUpdate = function (prevProps, nextProps) { return helpers_1.shallowObject(prevProps.data, nextProps.data) && prevProps.preAmp === nextProps.preAmp; }; EqualizerPlugin.prototype.createNode = function (audioContext, _a) { var data = _a.data, _b = _a.preAmp, preAmp = _b === void 0 ? 0 : _b; var frequencies = Object.keys(data).map(Number); return frequencies.map(function (freq, idx) { var filter = new BiquadFilterNode(audioContext); filter.frequency.value = freq; filter.gain.value = data[freq] + preAmp; switch (idx) { case 0: filter.type = 'lowshelf'; break; case frequencies.length - 1: filter.type = 'highshelf'; break; default: filter.type = 'peaking'; filter.Q.value = (2 * freq) / Math.abs(frequencies[idx + 1] - frequencies[idx - 1]); break; } return filter; }); }; EqualizerPlugin.prototype.updateNode = function (nodes, _a) { var _b = _a.preAmp, preAmp = _b === void 0 ? 0 : _b, data = _a.data; nodes.forEach(function (node, idx) { node.gain.value = data[node.frequency.value] + preAmp; }); }; return EqualizerPlugin; }()); exports.EqualizerPlugin = EqualizerPlugin; exports.default = plugin_factory_1.pluginFactory(new EqualizerPlugin()); //# sourceMappingURL=index.js.map