UNPKG

signaljs

Version:

A library that helps apply some common signal processing techniques (filters, modulations) to series of numbers, which can also be processed while they are passed to the library.

970 lines (754 loc) 77.8 kB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _ModulesBag = require('./modules/ModulesBag'); var _ModulesBag2 = _interopRequireDefault(_ModulesBag); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Signal = function () { function Signal(configuration) { _classCallCheck(this, Signal); //Configuration is an array this._processingChain = this._parseConfiguration(configuration); //This should accept the single signal configuration } _createClass(Signal, [{ key: '_parseConfiguration', value: function _parseConfiguration(configuration, prevModule) { //TODO fix bug that wipes out configuration if (!configuration || !configuration.length) return; var newModuleConfiguration = configuration.pop(); var newModuleClass = _ModulesBag2.default.getModulesMap()[newModuleConfiguration.type]; var newModule = new newModuleClass(newModuleConfiguration); if (prevModule) prevModule.chain(newModule); this._parseConfiguration(configuration, newModule); return newModule; } }, { key: 'push', value: function push(value) { if (this._processingChain) return this._processingChain.queueSample(value);else return undefined; } }, { key: 'output', value: function output() { return this._processingChain.output(); } //TODO move inside modules bag }], [{ key: 'getModulesList', value: function getModulesList() { var modulesList = []; for (var i in _ModulesBag2.default.getModulesMap()) { modulesList.push(i); } return modulesList; } }, { key: 'getConfigurationSchemaForModule', value: function getConfigurationSchemaForModule(moduleName) { return _ModulesBag2.default.getModule(moduleName).getConfigurationSchema(); } }, { key: 'getModule', value: function getModule(moduleName) { return _ModulesBag2.default.getModule(moduleName); } }]); return Signal; }(); exports.default = Signal; },{"./modules/ModulesBag":8}],2:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var SignalBuffer = function () { function SignalBuffer(size) { _classCallCheck(this, SignalBuffer); this._maxSize = size; this.length = 0; } _createClass(SignalBuffer, [{ key: "push", value: function push(item) { var record = { value: item }; if (!this.hasOwnProperty("_firstItem")) this._firstItem = record;else this._lastItem.next = record; this._lastItem = record; this.length++; if (this._maxSize && this.length > this._maxSize) return this.shift();else return this._firstItem; } }, { key: "shift", value: function shift() { var shiftedElement; if (this.hasOwnProperty("_firstItem")) shiftedElement = this._firstItem; this._firstItem = this._firstItem.next; this.length--; return shiftedElement; } }, { key: "getFirstItem", value: function getFirstItem() { return this._firstItem.value; } }, { key: "iterate", value: regeneratorRuntime.mark(function iterate() { var counter, currentItem, i; return regeneratorRuntime.wrap(function iterate$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: counter = 0; currentItem = this._firstItem; i = 0; case 3: if (!(i < this.length)) { _context.next = 10; break; } _context.next = 6; return currentItem.value; case 6: currentItem = currentItem.next; case 7: i++; _context.next = 3; break; case 10: return _context.abrupt("return"); case 11: case "end": return _context.stop(); } } }, iterate, this); }) }]); return SignalBuffer; }(); exports.default = SignalBuffer; },{}],3:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _SignalBuffer = require("./SignalBuffer"); var _SignalBuffer2 = _interopRequireDefault(_SignalBuffer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var SignalModule = function () { function SignalModule(bufferSize) { _classCallCheck(this, SignalModule); //Update to accept a configuration object this._buffer = new _SignalBuffer2.default(bufferSize); } _createClass(SignalModule, [{ key: "queueSample", value: function queueSample(value) { if (isNaN(value)) throw "Signals only accept numbers"; if (this.hasOwnProperty("_chainedModule")) { var backPropagatedValue = this._chainedModule.queueSample(value); this._buffer.push(backPropagatedValue); } else { this._buffer.push(value); } return this.output(); } }, { key: "output", value: function output() { return this._processOutput(); } }, { key: "_processOutput", value: function _processOutput() { return this._buffer.getFirstItem() || 0; } }, { key: "chain", value: function chain(module) { this._chainedModule = module; module.addChainPredecessor(this); return module; } }, { key: "addChainPredecessor", value: function addChainPredecessor(module) { this._chainPredecessor = module; } }, { key: "getConfigurationSchema", value: function getConfigurationSchema() { return {}; } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { return {}; } }]); return SignalModule; }(); exports.default = SignalModule; },{"./SignalBuffer":2}],4:[function(require,module,exports){ 'use strict'; var _Signal = require('./Signal'); var _Signal2 = _interopRequireDefault(_Signal); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } define(function () { return _Signal2.default; }); },{"./Signal":1}],5:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var ADSRCurve = function (_SignalModule) { _inherits(ADSRCurve, _SignalModule); function ADSRCurve(configuration) { _classCallCheck(this, ADSRCurve); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ADSRCurve).call(this, 2)); _this._state = ADSRCurve.STATES.WAITING; _this._previousReturnValue = 0; var attackValue = configuration.attack.value; _this.attackStep = attackValue ? 1 / attackValue : 1; var decayValue = configuration.decay.value; _this.decayStep = decayValue ? 1 / decayValue : 1; var releaseValue = configuration.release.value; _this.releaseStep = releaseValue ? 1 / releaseValue : 1; _this.sustain = configuration.sustain.value ? configuration.sustain.value / 100 : 0; return _this; } _createClass(ADSRCurve, [{ key: "_processOutput", value: function _processOutput() { //Only looks at current value and precedent value // 0 -> 1 triggers attack logic // 1 -> 0 triggers release logic // 1 -> 1 keeps the sustain/decay sequence going var values = []; var result = this._previousReturnValue; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this._buffer.iterate()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; values.push(value); //Should get 2 values in total } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } if (values.length != 2) return 0; //Transition state based on input velocity switch (values.join("")) { case "01": this._state = ADSRCurve.STATES.ATTACKING; break; case "10": this._state = ADSRCurve.STATES.RELEASING; break; } //Execute state logic and transition based on result switch (this._state) { case ADSRCurve.STATES.WAITING: break; case ADSRCurve.STATES.ATTACKING: if (this._previousReturnValue < 1) { result = Math.min(this._previousReturnValue + this.attackStep, 1); } else { result = this._previousReturnValue; this._state = ADSRCurve.STATES.DECAYING; } break; case ADSRCurve.STATES.DECAYING: if (this._previousReturnValue > this.sustain) { result = Math.max(this._previousReturnValue - this.decayStep, this.sustain); } else { result = this._previousReturnValue; this._state = ADSRCurve.STATES.SUSTAINING; } break; case ADSRCurve.STATES.RELEASING: if (this._previousReturnValue > 0) { result = Math.max(this._previousReturnValue - this.releaseStep, 0); } else { result = 0; this._state = ADSRCurve.STATES.WAITING; } break; case ADSRCurve.STATES.SUSTAINING: result = this._previousReturnValue; break; } this._previousReturnValue = result; return result; } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(ADSRCurve), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: ADSRCurve.MODULE_NAME, attack: { display: "Attack frames count", type: "number", range: [0, 10000], value: 0 }, sustain: { display: "Sustain percentage", type: "number", range: [0, 100], value: 100 }, decay: { display: "Decay frames count", type: "number", range: [0, 10000], value: 20 }, release: { display: "Release frames count", type: "number", range: [0, 10000], value: 50 } }); } }]); return ADSRCurve; }(_SignalModule3.default); ADSRCurve.MODULE_NAME = "ADSRCurve"; ADSRCurve.STATES = { WAITING: "waiting", ATTACKING: "attacking", DECAYING: "decaying", SUSTAINING: "sustaining", RELEASING: "releasing" }; exports.default = ADSRCurve; },{"../SignalModule":3}],6:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Delay = function (_SignalModule) { _inherits(Delay, _SignalModule); function Delay(configuration) { _classCallCheck(this, Delay); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Delay).call(this, configuration.frames.value)); for (var i = 0; i < configuration.frames.value; i++) { _this._buffer.push(0); } return _this; } _createClass(Delay, null, [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(Delay), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: Delay.MODULE_NAME, frames: { display: "Frames", type: "number", range: [1, 200], value: 100 } }); } }]); return Delay; }(_SignalModule3.default); Delay.MODULE_NAME = "Delay"; exports.default = Delay; },{"../SignalModule":3}],7:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var LowPass = function (_SignalModule) { _inherits(LowPass, _SignalModule); function LowPass(configuration) { _classCallCheck(this, LowPass); return _possibleConstructorReturn(this, Object.getPrototypeOf(LowPass).call(this, configuration.bufferSize.value)); //Nothing else to add for now but other modules might have more to say } _createClass(LowPass, [{ key: "_processOutput", value: function _processOutput() { //One new value was just pushed into the buffer. The output on the other side is... var sum = 0; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this._buffer.iterate()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; sum += value; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return sum ? sum / this._buffer.length : 0; } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { /*Useful when you want to build a little editor with sliders that lets you modify your effects rack. You would use this metadata to build the UI.*/ var conf = _get(Object.getPrototypeOf(LowPass), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: LowPass.MODULE_NAME, bufferSize: { display: "Buffer Size", type: "number", range: [2, 100], value: 100 } }); } }]); return LowPass; }(_SignalModule3.default); LowPass.MODULE_NAME = "LowPass"; exports.default = LowPass; },{"../SignalModule":3}],8:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _LowPass = require('./LowPass'); var _LowPass2 = _interopRequireDefault(_LowPass); var _Multiplier = require('./Multiplier'); var _Multiplier2 = _interopRequireDefault(_Multiplier); var _ADSRCurve = require('./ADSRCurve'); var _ADSRCurve2 = _interopRequireDefault(_ADSRCurve); var _Offset = require('./Offset'); var _Offset2 = _interopRequireDefault(_Offset); var _WhiteNoise = require('./WhiteNoise'); var _WhiteNoise2 = _interopRequireDefault(_WhiteNoise); var _Threshold = require('./Threshold'); var _Threshold2 = _interopRequireDefault(_Threshold); var _Delay = require('./Delay'); var _Delay2 = _interopRequireDefault(_Delay); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ModulesBag = function () { function ModulesBag() { _classCallCheck(this, ModulesBag); } _createClass(ModulesBag, null, [{ key: 'getModulesMap', value: function getModulesMap() { var _ref; return _ref = {}, _defineProperty(_ref, _LowPass2.default.MODULE_NAME, _LowPass2.default), _defineProperty(_ref, _Multiplier2.default.MODULE_NAME, _Multiplier2.default), _defineProperty(_ref, _ADSRCurve2.default.MODULE_NAME, _ADSRCurve2.default), _defineProperty(_ref, _Offset2.default.MODULE_NAME, _Offset2.default), _defineProperty(_ref, _WhiteNoise2.default.MODULE_NAME, _WhiteNoise2.default), _defineProperty(_ref, _Threshold2.default.MODULE_NAME, _Threshold2.default), _defineProperty(_ref, _Delay2.default.MODULE_NAME, _Delay2.default), _ref; } }, { key: 'getModule', value: function getModule(moduleName) { return ModulesBag.getModulesMap()[moduleName]; } }]); return ModulesBag; }(); exports.default = ModulesBag; },{"./ADSRCurve":5,"./Delay":6,"./LowPass":7,"./Multiplier":9,"./Offset":10,"./Threshold":11,"./WhiteNoise":12}],9:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Multiplier = function (_SignalModule) { _inherits(Multiplier, _SignalModule); function Multiplier(configuration) { _classCallCheck(this, Multiplier); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Multiplier).call(this, 1)); _this._factor = configuration.factor.value; return _this; } _createClass(Multiplier, [{ key: "_processOutput", value: function _processOutput() { return this._buffer.getFirstItem() * parseFloat(this._factor); } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(Multiplier), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: Multiplier.MODULE_NAME, factor: { display: "Factor", type: "number", range: [-1000, 10000], value: 1 } }); } }]); return Multiplier; }(_SignalModule3.default); Multiplier.MODULE_NAME = "Multiplier"; exports.default = Multiplier; },{"../SignalModule":3}],10:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Offset = function (_SignalModule) { _inherits(Offset, _SignalModule); function Offset(configuration) { _classCallCheck(this, Offset); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Offset).call(this, 1)); _this._offset = configuration.offset.value; return _this; } _createClass(Offset, [{ key: "_processOutput", value: function _processOutput() { return this._buffer.getFirstItem() + parseFloat(this._offset); } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(Offset), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: Offset.MODULE_NAME, offset: { display: "Offset", type: "number", range: [-1000, 10000], value: 1 } }); } }]); return Offset; }(_SignalModule3.default); Offset.MODULE_NAME = "Offset"; exports.default = Offset; },{"../SignalModule":3}],11:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Threshold = function (_SignalModule) { _inherits(Threshold, _SignalModule); function Threshold(configuration) { _classCallCheck(this, Threshold); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Threshold).call(this, 1)); _this._threshold = configuration.threshold.value; //Nothing else to add for now but other modules might have more to say return _this; } _createClass(Threshold, [{ key: "_processOutput", value: function _processOutput() { var result = 0; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this._buffer.iterate()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; if (value >= this._threshold) result = value;else result = 0; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return result; } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(Threshold), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: Threshold.MODULE_NAME, threshold: { display: "Buffer Size", type: "number", range: [1, 100], value: 100 } }); } }]); return Threshold; }(_SignalModule3.default); Threshold.MODULE_NAME = "Threshold"; exports.default = Threshold; },{"../SignalModule":3}],12:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _SignalModule2 = require("../SignalModule"); var _SignalModule3 = _interopRequireDefault(_SignalModule2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var WhiteNoise = function (_SignalModule) { _inherits(WhiteNoise, _SignalModule); function WhiteNoise(configuration) { _classCallCheck(this, WhiteNoise); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(WhiteNoise).call(this, 1)); _this._operator = configuration.operator.value; return _this; } _createClass(WhiteNoise, [{ key: "_processOutput", value: function _processOutput() { var result = 0; var noiseValue = Math.random(); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this._buffer.iterate()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; switch (this._operator) { case "addition": // sum result = value + noiseValue; break; case "product": result = value * noiseValue; break; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return result; } }], [{ key: "getConfigurationSchema", value: function getConfigurationSchema() { var conf = _get(Object.getPrototypeOf(WhiteNoise), "getConfigurationSchema", this).call(this); return Object.assign(conf, { type: WhiteNoise.MODULE_NAME, operator: { display: "Operator", type: "description", options: { "addition": "addition", "product": "product" }, value: "addition" } }); } }]); return WhiteNoise; }(_SignalModule3.default); WhiteNoise.MODULE_NAME = "WhiteNoise"; exports.default = WhiteNoise; },{"../SignalModule":3}]},{},[4]) //# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvU2lnbmFsLmpzIiwic3JjL1NpZ25hbEJ1ZmZlci5qcyIsInNyYy9TaWduYWxNb2R1bGUuanMiLCJzcmMvbWFpbi5qcyIsInNyYy9tb2R1bGVzL0FEU1JDdXJ2ZS5qcyIsInNyYy9tb2R1bGVzL0RlbGF5LmpzIiwic3JjL21vZHVsZXMvTG93UGFzcy5qcyIsInNyYy9tb2R1bGVzL01vZHVsZXNCYWcuanMiLCJzcmMvbW9kdWxlcy9NdWx0aXBsaWVyLmpzIiwic3JjL21vZHVsZXMvT2Zmc2V0LmpzIiwic3JjL21vZHVsZXMvVGhyZXNob2xkLmpzIiwic3JjL21vZHVsZXMvV2hpdGVOb2lzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNFTTtBQUNGLGFBREUsTUFDRixDQUFZLGFBQVosRUFBMEI7OEJBRHhCLFFBQ3dCOzs7QUFDdEIsYUFBSyxnQkFBTCxHQUF3QixLQUFLLG1CQUFMLENBQXlCLGFBQXpCLENBQXhCO0FBRHNCLEtBQTFCOztpQkFERTs7NENBS2tCLGVBQWUsWUFBVzs7QUFFMUMsZ0JBQUcsQ0FBQyxhQUFELElBQWtCLENBQUMsY0FBYyxNQUFkLEVBQXNCLE9BQTVDO0FBQ0EsZ0JBQUkseUJBQXlCLGNBQWMsR0FBZCxFQUF6QixDQUhzQztBQUkxQyxnQkFBSSxpQkFBaUIscUJBQVcsYUFBWCxHQUEyQix1QkFBdUIsSUFBdkIsQ0FBNUMsQ0FKc0M7QUFLMUMsZ0JBQUksWUFBWSxJQUFJLGNBQUosQ0FBbUIsc0JBQW5CLENBQVosQ0FMc0M7QUFNMUMsZ0JBQUcsVUFBSCxFQUFlLFdBQVcsS0FBWCxDQUFpQixTQUFqQixFQUFmO0FBQ0EsaUJBQUssbUJBQUwsQ0FBeUIsYUFBekIsRUFBd0MsU0FBeEMsRUFQMEM7O0FBUzFDLG1CQUFPLFNBQVAsQ0FUMEM7Ozs7NkJBWXpDLE9BQU07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