!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("jQuery")):"function"==typeof define&&define.amd?define(["jQuery"],e):"object"==typeof exports?exports.Notone=e(require("jQuery")):n.Notone=e(n.jQuery)}(this,function(__WEBPACK_EXTERNAL_MODULE_2__){return function(n){function e(i){if(t[i])return t[i].exports;var o=t[i]={exports:{},id:i,loaded:!1};return n[i].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var t={};return e.m=n,e.c=t,e.p="",e(0)}([function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(7), __webpack_require__(1), __webpack_require__(13), __webpack_require__(12), __webpack_require__(14)], __WEBPACK_AMD_DEFINE_RESULT__ = function ($, Core, Util, GUI, Drawer, Meter) {\n\n var Notone = {};\n\n /**\n * the drawer if it exists\n */\n Notone.drawer = null;\n\n /**\n * all of the GUIs\n * @type {Object}\n */\n Notone.guis = {};\n\n /**\n * the default configutation \n * @type {Object}\n * @private\n */\n Notone._defaultConfig = {\n "expandInDrawer" : false,\n "expandChildren" : false,\n "hideDrawer" : false,\n "search" : false,\n "drawer" : true,\n "container" : "body",\n };\n\n /**\n * the configured options\n * @private\n */\n Notone._options = {};\n\n /**\n * configuration\n * @param {Object} obj \n */\n Notone.config = function(obj){\n Core.config(obj);\n Notone._options = Util.defaultArg(obj, Notone._defaultConfig);\n };\n\n /**\n * Create a new Tone object of the Constructor type\n * automatically adds it to the tracked objects\n * with the given name (or the class\' name)\n * if no name is given.\n * @param {function} Constr\n * @param {string=} name\n * @return {Object} an instance of the constructor\n */\n Notone.create = function(Constr, name, parameters){\n var tone = new Constr();\n Notone.add(tone, name, parameters);\n return tone;\n };\n\n /**\n * Adds an insteance of a tone object to the list of tracked\n * objects\n * @param {Tone} tone the tone object to track\n * @param {string=} name the name the object should be remembered as.\n */\n Notone.add = function(tone, name, parameters){\n Core.add(tone, name, parameters);\n\n //get the description\n var GUIConstr = GUI;\n if (tone.toString() === "Meter"){\n GUIConstr = Meter;\n } \n var gui = new GUIConstr(tone, {\n "name" : name,\n "container" : Notone._options.container,\n "parameters" : parameters,\n "expanded" : Notone._options.expandChildren,\n });\n\n if (Notone._options.drawer){\n if (Notone.drawer === null){\n Notone.drawer = new Drawer(Notone._options);\n }\n Notone.drawer.add(gui);\n }\n Notone.guis[name] = gui;\n return gui;\n };\n\n /**\n * set the attributes from a JSON object\n * @param {JSON} json \n */\n Notone.load = function(json){\n Core.load(json);\n };\n\n /**\n * Save the current configuration to local storage\n * or a file.\n */\n Notone.save = function(){\n Core.save();\n };\n\n /**\n * get the GUI object from the name\n * @param {string} name\n */\n Notone.get = function(name){\n return Notone.guis[name];\n };\n\n return Notone;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/*****************\n ** WEBPACK FOOTER\n ** ./GUI/Main.js\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./GUI/Main.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\n var Util = {};\n\n //borrowed from underscore.js\n Util.isUndef = function(val){\n return val === void 0;\n };\n\n Util.isFunction = function(val){\n return typeof val === "function";\n };\n\n Util.isObject = function(val){\n return typeof val === "object";\n };\n\n Util.isArray = function(val){\n return Array.isArray(val);\n };\n\n Util.isString = function(val){\n return typeof val === "string";\n };\n\n Util.isNumber = function(val){\n return isFinite(val);\n };\n\n /**\n * if a the given is undefined, use the fallback. \n * if both given and fallback are objects, given\n * will be augmented with whatever properties it\'s\n * missing which are in fallback\n *\n * Borrowed from Tone.js\n * \n * @param {*} given \n * @param {*} fallback \n * @return {*} \n */\n Util.defaultArg = function(given, fallback){\n if (typeof given === "object" && typeof fallback === "object" && \n !Array.isArray(given) && !(given instanceof jQuery)){\n var ret = {};\n //make a deep copy of the given object\n for (var givenProp in given) {\n ret[givenProp] = Util.defaultArg(given[givenProp], given[givenProp]);\n }\n for (var prop in fallback) {\n ret[prop] = Util.defaultArg(given[prop], fallback[prop]);\n }\n return ret;\n } else {\n return Util.isUndef(given) ? fallback : given;\n }\n };\n\n /**\n * extend the child with the parent\n * @param {function} Child \n * @param {function} Parent \n */\n Util.extend = function(Child, Parent){\n function TempConstructor(){}\n TempConstructor.prototype = Parent.prototype;\n Child.prototype = new TempConstructor();\n /** @override */\n Child.prototype.constructor = Child;\n Child.prototype.superConstructor = Parent;\n };\n\n return Util;\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/*****************\n ** WEBPACK FOOTER\n ** ./Core/Util.js\n ** module id = 1\n ** module chunks = 0 1\n **/\n//# sourceURL=webpack:///./Core/Util.js?')},function(module,exports,__webpack_require__){eval('module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/*****************\n ** WEBPACK FOOTER\n ** external "jQuery"\n ** module id = 2\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///external_%22jQuery%22?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(10), __webpack_require__(2), __webpack_require__(30), __webpack_require__(26)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MicroEvent, $, parameterStyle, TypeDefs) {\n\n var Parameter = function(param, name, type, desc){\n\n this.param = param;\n\n this.name = name;\n\n this.element = $("
", {\n "class" : "Parameter",\n "title" : desc\n });\n\n this.title = $("", {\n "id" : "Name",\n "text" : name,\n }).appendTo(this.element);\n\n this.value = $("").prop("id", "Value")\n .appendTo(this.element);\n\n this.unitText = $("", {\n "id" : "Units",\n }).appendTo(this.element);\n\n this._isVisible = false;\n\n this.setUnits(type);\n };\n\n MicroEvent.mixin(Parameter);\n\n Parameter.prototype.setUnits = function(unit){\n var unitText = "";\n this.units = unit;\n for (var typeName in TypeDefs){\n var type = TypeDefs[typeName];\n if (unit === type.value){\n this.units = type.name;\n }\n }\n switch(this.units){\n case "Frequency" : unitText = "hz"; break;\n case "NormalRange" : unitText = "0-1"; break;\n case "Cents" : unitText = "cents"; break;\n case "Time" : unitText = "time"; break;\n case "Positive" : unitText = "0+"; break;\n case "Decibels" : unitText = "db"; break;\n case "Degrees" : unitText = "deg"; break;\n default : unitText = "";\n }\n this.unitText.text(unitText);\n };\n\n Parameter.prototype.validateInput = function(value){\n switch(this.units){\n case "Frequency" : return Math.max(value, 0);\n case "NormalRange" : return Math.max(Math.min(value, 1), 0);\n case "Degrees" : return Math.max(Math.min(value, 360), 0);\n case "Time" : return Math.max(value, 0);\n case "Decibels" : return Math.min(value, 20);\n case "Positive" : return Math.max(value, 0);\n default : return value;\n }\n };\n\n Parameter.prototype.set = function(val){\n try {\n this.param[this.name] = this.validateInput(val);\n //if it\'s not open, open it\n if (this.element.hasClass("Hidden")){\n this.open();\n }\n } catch (e){\n this.value.addClass("Error");\n setTimeout(function(){\n this.value.removeClass("Error");\n }.bind(this), 10);\n }\n return this.get();\n };\n\n Parameter.prototype.get = function(){\n return this.param[this.name];\n };\n\n Parameter.prototype.update = function(){\n this.set(this.get());\n };\n\n Parameter.prototype.open = function(){\n this.element.removeClass("Hidden");\n this._isVisible = true;\n };\n\n Parameter.prototype.close = function(){\n this.element.addClass("Hidden");\n this._isVisible = false;\n };\n\n Parameter.prototype.dispose = function(){\n this.element.children().remove();\n this.element.remove();\n this.param = null;\n };\n\n Parameter.isType = function(param, name){\n return false;\n };\n\n\n /*Parameter.prototype.error = function(){\n //problem with this attribute\n };*/\n\n return Parameter;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/*****************\n ** WEBPACK FOOTER\n ** ./GUI/param/Parameter.js\n ** module id = 3\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./GUI/param/Parameter.js?')},function(module,exports,__webpack_require__){eval('/*\r\n MIT License http://www.opensource.org/licenses/mit-license.php\r\n Author Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n var list = [];\r\n\r\n // return the list of modules as css string\r\n list.toString = function toString() {\r\n var result = [];\r\n for(var i = 0; i < this.length; i++) {\r\n var item = this[i];\r\n if(item[2]) {\r\n result.push("@media " + item[2] + "{" + item[1] + "}");\r\n } else {\r\n result.push(item[1]);\r\n }\r\n }\r\n return result.join("");\r\n };\r\n\r\n // import a list of modules into the list\r\n list.i = function(modules, mediaQuery) {\r\n if(typeof modules === "string")\r\n modules = [[null, modules, ""]];\r\n var alreadyImportedModules = {};\r\n for(var i = 0; i < this.length; i++) {\r\n var id = this[i][0];\r\n if(typeof id === "number")\r\n alreadyImportedModules[id] = true;\r\n }\r\n for(i = 0; i < modules.length; i++) {\r\n var item = modules[i];\r\n // skip already imported module\r\n // this implementation is not 100% perfect for weird media query combinations\r\n // when a module is imported multiple times with different media queries.\r\n // I hope this will never occur (Hey this way we have smaller bundles)\r\n if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {\r\n if(mediaQuery && !item[2]) {\r\n item[2] = mediaQuery;\r\n } else if(mediaQuery) {\r\n item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";\r\n }\r\n list.push(item);\r\n }\r\n }\r\n };\r\n return list;\r\n};\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader/lib/css-base.js\n ** module id = 4\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/css-loader/lib/css-base.js?')},function(module,exports,__webpack_require__){eval('/*\r\n MIT License http://www.opensource.org/licenses/mit-license.php\r\n Author Tobias Koppers @sokra\r\n*/\r\nvar stylesInDom = {},\r\n memoize = function(fn) {\r\n var memo;\r\n return function () {\r\n if (typeof memo === "undefined") memo = fn.apply(this, arguments);\r\n return memo;\r\n };\r\n },\r\n isOldIE = memoize(function() {\r\n return /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\r\n }),\r\n getHeadElement = memoize(function () {\r\n return document.head || document.getElementsByTagName("head")[0];\r\n }),\r\n singletonElement = null,\r\n singletonCounter = 0;\r\n\r\nmodule.exports = function(list, options) {\r\n if(false) {\r\n if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");\r\n }\r\n\r\n options = options || {};\r\n // Force single-tag solution on IE6-9, which has a hard limit on the # of