{"version":3,"sources":["jsdelivr-header.js","/npm/midi-player@8.0.26/build/es5/bundle.js"],"names":[],"mappings":"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","file":"/npm/midi-player@8.0.26/build/es5/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/midi-player@8.0.26/build/es5/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('worker-timers'), require('midi-file-slicer'), require('@babel/runtime/helpers/defineProperty'), require('json-midi-message-encoder'), require('@babel/runtime/helpers/toConsumableArray'), require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass')) :\n    typeof define === 'function' && define.amd ? define(['exports', 'worker-timers', 'midi-file-slicer', '@babel/runtime/helpers/defineProperty', 'json-midi-message-encoder', '@babel/runtime/helpers/toConsumableArray', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.midiPlayer = {}, global.workerTimers, global.midiFileSlicer, global._defineProperty, global.jsonMidiMessageEncoder, global._toConsumableArray, global._slicedToArray, global._classCallCheck, global._createClass));\n})(this, (function (exports, workerTimers, midiFileSlicer, _defineProperty, jsonMidiMessageEncoder, _toConsumableArray, _slicedToArray, _classCallCheck, _createClass) { 'use strict';\n\n    var createMidiFileSlicer = function createMidiFileSlicer(json) {\n      return new midiFileSlicer.MidiFileSlicer({\n        json: json\n      });\n    };\n\n    var encodeMidiMessage = function encodeMidiMessage(event) {\n      return new Uint8Array(jsonMidiMessageEncoder.encode(event));\n    };\n\n    function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n    function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n    var ALL_SOUND_OFF_EVENT_DATA = Array.from({\n      length: 16\n    }, function (_, index) {\n      return new Uint8Array([176 + index, 120, 0]);\n    });\n    var MidiPlayer = /*#__PURE__*/function () {\n      function MidiPlayer(_ref) {\n        var encodeMidiMessage = _ref.encodeMidiMessage,\n          filterMidiMessage = _ref.filterMidiMessage,\n          json = _ref.json,\n          midiFileSlicer = _ref.midiFileSlicer,\n          midiOutput = _ref.midiOutput,\n          startIntervalScheduler = _ref.startIntervalScheduler,\n          startTimeoutScheduler = _ref.startTimeoutScheduler;\n        _classCallCheck(this, MidiPlayer);\n        this._encodeMidiMessage = encodeMidiMessage;\n        this._filterMidiMessage = filterMidiMessage;\n        this._json = json;\n        this._midiFileSlicer = midiFileSlicer;\n        this._midiOutput = midiOutput;\n        this._startIntervalScheduler = startIntervalScheduler;\n        this._startTimeoutScheduler = startTimeoutScheduler;\n        this._state = null;\n      }\n      return _createClass(MidiPlayer, [{\n        key: \"position\",\n        get: function get() {\n          return this._state === null ? 0 : this._state.peekScheduler === null ? this._state.offset : this._state.peekScheduler() - this._state.offset;\n        }\n      }, {\n        key: \"state\",\n        get: function get() {\n          return this._state === null ? 'stopped' : this._state.peekScheduler === null ? 'paused' : 'playing';\n        }\n      }, {\n        key: \"pause\",\n        value: function pause() {\n          if (this._state === null || this._state.peekScheduler === null) {\n            throw new Error('The player is not playing.');\n          }\n          this._clear();\n          var _this$_state = this._state,\n            endOfTrackEventTimes = _this$_state.endOfTrackEventTimes,\n            resolve = _this$_state.resolve,\n            peekScheduler = _this$_state.peekScheduler,\n            stopScheduler = _this$_state.stopScheduler;\n          var positionWithOffset = peekScheduler();\n          this._state = _objectSpread$1(_objectSpread$1({}, this._state), {}, {\n            endOfTrackEventTimes: endOfTrackEventTimes.filter(function (time) {\n              return time < positionWithOffset;\n            }),\n            offset: positionWithOffset - this._state.offset,\n            peekScheduler: null,\n            stopScheduler: null\n          });\n          stopScheduler();\n          resolve();\n        }\n      }, {\n        key: \"play\",\n        value: function play() {\n          if (this._state !== null) {\n            throw new Error('The player is not stopped.');\n          }\n          return this._schedule([], 0);\n        }\n      }, {\n        key: \"resume\",\n        value: function resume() {\n          if (this._state === null || this._state.peekScheduler !== null) {\n            throw new Error('The player is not paused.');\n          }\n          var _this$_state2 = this._state,\n            endOfTrackEventTimes = _this$_state2.endOfTrackEventTimes,\n            offset = _this$_state2.offset;\n          this._state = null;\n          return this._schedule(endOfTrackEventTimes, offset);\n        }\n      }, {\n        key: \"stop\",\n        value: function stop() {\n          if (this._state === null) {\n            throw new Error('The player is already stopped.');\n          }\n          if (this._state.stopScheduler === null) {\n            this._state = null;\n          } else {\n            this._clear();\n            this._stop(this._state);\n          }\n        }\n      }, {\n        key: \"_clear\",\n        value: function _clear() {\n          var _this = this;\n          var _a, _b;\n          // Bug #1: Chrome does not yet implement the clear() method.\n          (_b = (_a = this._midiOutput).clear) === null || _b === void 0 ? void 0 : _b.call(_a);\n          ALL_SOUND_OFF_EVENT_DATA.forEach(function (data) {\n            return _this._midiOutput.send(data);\n          });\n        }\n      }, {\n        key: \"_schedule\",\n        value: function _schedule(endOfTrackEventTimes, offset) {\n          var _this2 = this;\n          return new Promise(function (resolve) {\n            var _a;\n            var _this2$_startInterval = _this2._startIntervalScheduler(function (_ref2) {\n                var _this2$_state$endOfTr;\n                var end = _ref2.end,\n                  start = _ref2.start;\n                var _a, _b, _c, _d, _e;\n                if (_this2._state === null) {\n                  _this2._state = {\n                    endOfTrackEventTimes: endOfTrackEventTimes,\n                    offset: start - offset,\n                    resolve: resolve,\n                    peekScheduler: null,\n                    stopScheduler: null\n                  };\n                }\n                var events = _this2._midiFileSlicer.slice(start - _this2._state.offset, end - _this2._state.offset);\n                events.filter(function (_ref3) {\n                  var event = _ref3.event;\n                  return _this2._filterMidiMessage(event);\n                }).forEach(function (_ref4) {\n                  var event = _ref4.event,\n                    time = _ref4.time;\n                  return _this2._midiOutput.send(_this2._encodeMidiMessage(event), start + time);\n                });\n                var newEndOfTrackEventTimes = events.filter(function (_ref5) {\n                  var event = _ref5.event;\n                  return MidiPlayer._isEndOfTrack(event);\n                }).map(function (_ref6) {\n                  var time = _ref6.time;\n                  return start + time;\n                });\n                (_this2$_state$endOfTr = _this2._state.endOfTrackEventTimes).push.apply(_this2$_state$endOfTr, _toConsumableArray(newEndOfTrackEventTimes));\n                if (_this2._state.endOfTrackEventTimes.length === _this2._json.tracks.length) {\n                  var timeout = Math.max.apply(Math, _toConsumableArray(newEndOfTrackEventTimes)) - ((_c = (_b = (_a = _this2._state).peekScheduler) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : start);\n                  if (timeout > 0) {\n                    (_e = (_d = _this2._state).stopScheduler) === null || _e === void 0 ? void 0 : _e.call(_d);\n                    _this2._state = _objectSpread$1(_objectSpread$1({}, _this2._state), {}, {\n                      stopScheduler: _this2._startTimeoutScheduler(function () {\n                        _this2._state = null;\n                        resolve();\n                      }, timeout)\n                    });\n                  } else {\n                    _this2._stop(_this2._state);\n                  }\n                }\n              }),\n              _this2$_startInterval2 = _slicedToArray(_this2$_startInterval, 2),\n              peekScheduler = _this2$_startInterval2[0],\n              stopScheduler = _this2$_startInterval2[1];\n            if (((_a = _this2._state) === null || _a === void 0 ? void 0 : _a.stopScheduler) === null) {\n              _this2._state = _objectSpread$1(_objectSpread$1({}, _this2._state), {}, {\n                peekScheduler: peekScheduler,\n                stopScheduler: stopScheduler\n              });\n            } else {\n              stopScheduler();\n              if (_this2._state !== null) {\n                _this2._state = _objectSpread$1(_objectSpread$1({}, _this2._state), {}, {\n                  peekScheduler: peekScheduler\n                });\n              }\n            }\n          });\n        }\n      }, {\n        key: \"_stop\",\n        value: function _stop(_ref7) {\n          var resolve = _ref7.resolve,\n            stopScheduler = _ref7.stopScheduler;\n          this._state = null;\n          stopScheduler === null || stopScheduler === void 0 ? void 0 : stopScheduler();\n          resolve();\n        }\n      }], [{\n        key: \"_isEndOfTrack\",\n        value: function _isEndOfTrack(event) {\n          return 'endOfTrack' in event;\n        }\n      }]);\n    }();\n\n    function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\n    function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n    var createMidiPlayerFactory = function createMidiPlayerFactory(createMidiFileSlicer, startIntervalScheduler, startTimeoutScheduler) {\n      return function (options) {\n        var midiFileSlicer = createMidiFileSlicer(options.json);\n        return new MidiPlayer(_objectSpread(_objectSpread({\n          filterMidiMessage: function filterMidiMessage(event) {\n            return 'channel' in event;\n          }\n        }, options), {}, {\n          encodeMidiMessage: encodeMidiMessage,\n          midiFileSlicer: midiFileSlicer,\n          startIntervalScheduler: startIntervalScheduler,\n          startTimeoutScheduler: startTimeoutScheduler\n        }));\n      };\n    };\n\n    var INTERVAL = 500;\n    var createStartIntervalScheduler = function createStartIntervalScheduler(clearInterval, performance, setInterval) {\n      return function (next) {\n        var start = performance.now();\n        var nextTick = start + INTERVAL;\n        var end = nextTick + INTERVAL;\n        var intervalId = setInterval(function () {\n          if (performance.now() >= nextTick) {\n            nextTick = end;\n            end += INTERVAL;\n            next({\n              end: end,\n              start: nextTick\n            });\n          }\n        }, INTERVAL / 10);\n        next({\n          end: end,\n          start: start\n        });\n        return [function () {\n          return performance.now();\n        }, function () {\n          return clearInterval(intervalId);\n        }];\n      };\n    };\n\n    var createStartTimeoutScheduler = function createStartTimeoutScheduler(clearTimeout, setTimeout) {\n      return function (handler, timeout) {\n        var timeoutId = setTimeout(handler, timeout);\n        return function () {\n          return clearTimeout(timeoutId);\n        };\n      };\n    };\n\n    var createMidiPlayer = createMidiPlayerFactory(createMidiFileSlicer, createStartIntervalScheduler(workerTimers.clearInterval, performance, workerTimers.setInterval), createStartTimeoutScheduler(workerTimers.clearTimeout, workerTimers.setTimeout));\n    var create = function create(options) {\n      return createMidiPlayer(options);\n    };\n\n    exports.create = create;\n\n}));\n"]}