{"version":3,"sources":["webpack://Tone/webpack/universalModuleDefinition","webpack://Tone/webpack/bootstrap","webpack://Tone/./node_modules/automation-events/build/es5/bundle.js","webpack://Tone/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://Tone/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://Tone/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://Tone/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://Tone/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://Tone/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://Tone/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://Tone/./node_modules/@babel/runtime/helpers/createClass.js","webpack://Tone/./Tone/version.ts","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/abort-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/globals.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-constructible.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/split-import-statements.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-audio-worklet-module.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-value-for-key.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/pick-element-from-set.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-event-listeners-of-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-active.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/audio-worklet-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive-when-necessary.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/analyser-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-owned-by-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/index-size-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-get-channel-data-method.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/constants.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-active-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-audio-node-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-audio-param-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/deactivate-active-audio-node-input-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/audio-buffer-source-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/biquad-filter-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/constant-source-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/gain-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/oscillator-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/stereo-panner-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/deactivate-audio-graph.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-valid-latency-hint.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/audio-node-output-connection.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/insert-element-in-set.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/add-active-input-connection-to-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/add-passive-input-connection-to-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/native-audio-node-faker.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/connect-native-audio-node-to-native-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/delete-event-listeners-of-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/disconnect-native-audio-node-from-native-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-part-of-a-cycle.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-passive-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-node-disconnect-method-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/visit-each-audio-node-once.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/native-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection-to-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/read-only-map.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/copy-from-channel.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/copy-to-channel.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/create-nested-arrays.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/get-audio-worklet-processor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/biquad-filter-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/channel-merger-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/channel-splitter-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/constant-source-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/convolver-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/delay-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/disconnect-multiple-outputs.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/dynamics-compressor-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/gain-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/invalid-state-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/invalid-access-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/iir-filter-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/filter-buffer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/media-stream-audio-destination-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-promise-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/minimal-offline-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-option.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-analyser-node-get-float-time-domain-data-method-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-audio-param-value.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/compute-buffer-size.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor-promise.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/clone-audio-worklet-node-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-biquad-filter-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-channel-splitter-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-channel-splitter-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/intercept-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-delay-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-gain-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-iir-filter-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-script-processor-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/not-supported-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/offline-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/oscillator-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/panner-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/periodic-wave-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/stereo-panner-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/unknown-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wave-shaper-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/is-dc-curve.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/overwrite-accessors.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/set-value-at-time-until-possible.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-dom-exception-constructor-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-transferables-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-event-listener.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/module.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-active-input-connection-to-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-passive-input-connection-to-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/delete-active-input-connection-to-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-tail-time.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/cache-test-result.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/window.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-analyser-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-analyser-node-get-float-time-domain-data-method.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-renderer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/analyser-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-native-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-offline-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-native-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/event-target-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-node-disconnect-method.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-audio-node-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-connection-to-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/increment-cycle-counter-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/decrement-cycle-counter.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/detect-cycles.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/guards/delay-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/convert-number-to-unsigned-long.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-buffer-constructor-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-silent-connection.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/connect-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-source-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/render-automation.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-audio-param-renderer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-param-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-audio-param-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-param-renderer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-destination-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/biquad-filter-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/set-audio-node-tail-time.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/monitor-connections.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wrap-channel-merger-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-channel-merger-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/channel-merger-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/channel-splitter-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/sanitize-channel-splitter-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/constant-source-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-convolver-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/convolver-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/delay-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-dynamics-compressor-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/dynamics-compressor-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/gain-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/render-native-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-offline-audio-context-current-time-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/iir-filter-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-iir-filter-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/wrap-iir-filter-node-get-frequency-response-method.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-listener-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/minimal-base-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-oscillator-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/oscillator-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/connected-native-audio-buffer-source-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-wave-shaper-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-wave-shaper-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-panner-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-panner-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/panner-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-periodic-wave-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/sanitize-periodic-wave-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-stereo-panner-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-stereo-panner-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/stereo-panner-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/wave-shaper-node-renderer-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-secure-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/expose-current-frame-and-current-time.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-or-create-backup-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/evaluate-source.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/fetch-source.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-worklet-processor-post-message-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-native-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/decode-audio-data.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/detach-array-buffer.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/data-clone-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/encoding-error.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/base-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/media-element-audio-source-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-media-element-audio-source-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-audio-destination-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/media-stream-audio-source-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-audio-source-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/media-stream-track-audio-source-node-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-track-audio-source-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-unrendered-audio-worklet-nodes.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/add-unrendered-audio-worklet-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/connect-multiple-outputs.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/delete-unrendered-audio-worklet-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-active-audio-worklet-node-inputs.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-faker-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-factory.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/test-clonability-of-audio-worklet-node-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/get-backup-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/set-active-audio-worklet-node-inputs.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/helpers/sanitize-audio-worklet-node-options.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/minimal-audio-context-constructor.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/create-native-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/start-rendering.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-node.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-param.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-any-offline-audio-context.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/is-supported-promise.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-buffer-copy-channel-methods-subarray-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-close-method-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-decode-audio-data-method-type-error-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-options-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-node-connect-method-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-audio-worklet-processor-no-outputs-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-channel-merger-node-channel-count-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-constant-source-node-accurate-scheduling-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-convolver-node-buffer-reassignability-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-convolver-node-channel-count-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-is-secure-context-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support.js","webpack://Tone/./node_modules/standardized-audio-context/build/es2019/factories/test-stereo-panner-node-default-value-support.js","webpack://Tone/./Tone/core/util/Debug.ts","webpack://Tone/./Tone/core/util/TypeCheck.ts","webpack://Tone/./Tone/core/context/AudioContext.ts","webpack://Tone/./node_modules/tslib/tslib.es6.js","webpack://Tone/./Tone/core/clock/Ticker.ts","webpack://Tone/./Tone/core/util/AdvancedTypeCheck.ts","webpack://Tone/./Tone/core/util/Defaults.ts","webpack://Tone/./Tone/core/Tone.ts","webpack://Tone/./Tone/core/util/Math.ts","webpack://Tone/./Tone/core/util/Timeline.ts","webpack://Tone/./Tone/core/context/ContextInitialization.ts","webpack://Tone/./Tone/core/util/Emitter.ts","webpack://Tone/./Tone/core/context/BaseContext.ts","webpack://Tone/./Tone/core/context/Context.ts","webpack://Tone/./Tone/core/util/Interface.ts","webpack://Tone/./Tone/core/context/ToneAudioBuffer.ts","webpack://Tone/./Tone/core/context/OfflineContext.ts","webpack://Tone/./Tone/core/Global.ts","webpack://Tone/./Tone/core/context/DummyContext.ts","webpack://Tone/./Tone/core/type/Conversions.ts","webpack://Tone/./Tone/core/type/TimeBase.ts","webpack://Tone/./Tone/core/type/Time.ts","webpack://Tone/./Tone/core/type/Frequency.ts","webpack://Tone/./Tone/core/type/TransportTime.ts","webpack://Tone/./Tone/core/context/ToneWithContext.ts","webpack://Tone/./Tone/core/util/StateTimeline.ts","webpack://Tone/./Tone/core/context/Param.ts","webpack://Tone/./Tone/core/context/ToneAudioNode.ts","webpack://Tone/./Tone/core/context/Gain.ts","webpack://Tone/./Tone/source/OneShotSource.ts","webpack://Tone/./Tone/signal/ToneConstantSource.ts","webpack://Tone/./Tone/signal/Signal.ts","webpack://Tone/./Tone/core/clock/TickParam.ts","webpack://Tone/./Tone/core/clock/TickSignal.ts","webpack://Tone/./Tone/core/clock/TickSource.ts","webpack://Tone/./Tone/core/clock/Clock.ts","webpack://Tone/./Tone/core/context/Delay.ts","webpack://Tone/./Tone/core/context/Offline.ts","webpack://Tone/./Tone/core/context/ToneAudioBuffers.ts","webpack://Tone/./Tone/core/type/Midi.ts","webpack://Tone/./Tone/core/type/Ticks.ts","webpack://Tone/./Tone/core/util/Draw.ts","webpack://Tone/./Tone/core/util/IntervalTimeline.ts","webpack://Tone/./Tone/component/channel/Volume.ts","webpack://Tone/./Tone/core/context/Destination.ts","webpack://Tone/./Tone/core/util/TimelineValue.ts","webpack://Tone/./Tone/core/clock/TransportEvent.ts","webpack://Tone/./Tone/core/clock/TransportRepeatEvent.ts","webpack://Tone/./Tone/core/clock/Transport.ts","webpack://Tone/./Tone/source/Source.ts","webpack://Tone/./Tone/source/buffer/ToneBufferSource.ts","webpack://Tone/./Tone/source/Noise.ts","webpack://Tone/./Tone/source/UserMedia.ts","webpack://Tone/./Tone/source/oscillator/OscillatorInterface.ts","webpack://Tone/./Tone/source/oscillator/ToneOscillatorNode.ts","webpack://Tone/./Tone/source/oscillator/Oscillator.ts","webpack://Tone/./Tone/signal/SignalOperator.ts","webpack://Tone/./Tone/signal/WaveShaper.ts","webpack://Tone/./Tone/signal/AudioToGain.ts","webpack://Tone/./Tone/signal/Multiply.ts","webpack://Tone/./Tone/source/oscillator/AMOscillator.ts","webpack://Tone/./Tone/source/oscillator/FMOscillator.ts","webpack://Tone/./Tone/source/oscillator/PulseOscillator.ts","webpack://Tone/./Tone/source/oscillator/FatOscillator.ts","webpack://Tone/./Tone/source/oscillator/PWMOscillator.ts","webpack://Tone/./Tone/source/oscillator/OmniOscillator.ts","webpack://Tone/./Tone/signal/Add.ts","webpack://Tone/./Tone/signal/Scale.ts","webpack://Tone/./Tone/signal/Zero.ts","webpack://Tone/./Tone/source/oscillator/LFO.ts","webpack://Tone/./Tone/core/util/Decorator.ts","webpack://Tone/./Tone/source/buffer/Player.ts","webpack://Tone/./Tone/source/buffer/Players.ts","webpack://Tone/./Tone/source/buffer/GrainPlayer.ts","webpack://Tone/./Tone/signal/Abs.ts","webpack://Tone/./Tone/signal/GainToAudio.ts","webpack://Tone/./Tone/signal/Negate.ts","webpack://Tone/./Tone/signal/Subtract.ts","webpack://Tone/./Tone/signal/GreaterThanZero.ts","webpack://Tone/./Tone/signal/GreaterThan.ts","webpack://Tone/./Tone/signal/Pow.ts","webpack://Tone/./Tone/signal/ScaleExp.ts","webpack://Tone/./Tone/signal/SyncedSignal.ts","webpack://Tone/./Tone/component/envelope/Envelope.ts","webpack://Tone/./Tone/instrument/Instrument.ts","webpack://Tone/./Tone/instrument/Monophonic.ts","webpack://Tone/./Tone/component/envelope/AmplitudeEnvelope.ts","webpack://Tone/./Tone/instrument/Synth.ts","webpack://Tone/./Tone/instrument/ModulationSynth.ts","webpack://Tone/./Tone/instrument/AMSynth.ts","webpack://Tone/./Tone/component/filter/BiquadFilter.ts","webpack://Tone/./Tone/component/filter/Filter.ts","webpack://Tone/./Tone/component/envelope/FrequencyEnvelope.ts","webpack://Tone/./Tone/instrument/MonoSynth.ts","webpack://Tone/./Tone/instrument/DuoSynth.ts","webpack://Tone/./Tone/instrument/FMSynth.ts","webpack://Tone/./Tone/instrument/MetalSynth.ts","webpack://Tone/./Tone/instrument/MembraneSynth.ts","webpack://Tone/./Tone/instrument/NoiseSynth.ts","webpack://Tone/./Tone/core/worklet/WorkletGlobalScope.ts","webpack://Tone/./Tone/core/worklet/ToneAudioWorklet.ts","webpack://Tone/./Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts","webpack://Tone/./Tone/core/worklet/SingleIOProcessor.worklet.ts","webpack://Tone/./Tone/core/worklet/DelayLine.worklet.ts","webpack://Tone/./Tone/component/filter/FeedbackCombFilter.worklet.ts","webpack://Tone/./Tone/component/filter/FeedbackCombFilter.ts","webpack://Tone/./Tone/component/filter/OnePoleFilter.ts","webpack://Tone/./Tone/component/filter/LowpassCombFilter.ts","webpack://Tone/./Tone/instrument/PluckSynth.ts","webpack://Tone/./Tone/instrument/PolySynth.ts","webpack://Tone/./Tone/instrument/Sampler.ts","webpack://Tone/./Tone/event/ToneEvent.ts","webpack://Tone/./Tone/event/Loop.ts","webpack://Tone/./Tone/event/Part.ts","webpack://Tone/./Tone/event/PatternGenerator.ts","webpack://Tone/./Tone/event/Pattern.ts","webpack://Tone/./Tone/event/Sequence.ts","webpack://Tone/./Tone/component/channel/CrossFade.ts","webpack://Tone/./Tone/effect/Effect.ts","webpack://Tone/./Tone/effect/LFOEffect.ts","webpack://Tone/./Tone/effect/AutoFilter.ts","webpack://Tone/./Tone/component/channel/Panner.ts","webpack://Tone/./Tone/effect/AutoPanner.ts","webpack://Tone/./Tone/component/analysis/Follower.ts","webpack://Tone/./Tone/effect/AutoWah.ts","webpack://Tone/./Tone/effect/BitCrusher.worklet.ts","webpack://Tone/./Tone/effect/BitCrusher.ts","webpack://Tone/./Tone/effect/Chebyshev.ts","webpack://Tone/./Tone/component/channel/Split.ts","webpack://Tone/./Tone/component/channel/Merge.ts","webpack://Tone/./Tone/effect/StereoEffect.ts","webpack://Tone/./Tone/effect/StereoFeedbackEffect.ts","webpack://Tone/./Tone/effect/Chorus.ts","webpack://Tone/./Tone/effect/Distortion.ts","webpack://Tone/./Tone/effect/FeedbackEffect.ts","webpack://Tone/./Tone/effect/FeedbackDelay.ts","webpack://Tone/./Tone/component/filter/PhaseShiftAllpass.ts","webpack://Tone/./Tone/effect/FrequencyShifter.ts","webpack://Tone/./Tone/effect/Freeverb.ts","webpack://Tone/./Tone/effect/JCReverb.ts","webpack://Tone/./Tone/effect/StereoXFeedbackEffect.ts","webpack://Tone/./Tone/effect/PingPongDelay.ts","webpack://Tone/./Tone/effect/PitchShift.ts","webpack://Tone/./Tone/effect/Phaser.ts","webpack://Tone/./Tone/effect/Reverb.ts","webpack://Tone/./Tone/component/channel/MidSideSplit.ts","webpack://Tone/./Tone/component/channel/MidSideMerge.ts","webpack://Tone/./Tone/effect/MidSideEffect.ts","webpack://Tone/./Tone/effect/StereoWidener.ts","webpack://Tone/./Tone/effect/Tremolo.ts","webpack://Tone/./Tone/effect/Vibrato.ts","webpack://Tone/./Tone/component/analysis/Analyser.ts","webpack://Tone/./Tone/component/analysis/MeterBase.ts","webpack://Tone/./Tone/component/analysis/Meter.ts","webpack://Tone/./Tone/component/analysis/FFT.ts","webpack://Tone/./Tone/component/analysis/DCMeter.ts","webpack://Tone/./Tone/component/analysis/Waveform.ts","webpack://Tone/./Tone/component/channel/Solo.ts","webpack://Tone/./Tone/component/channel/PanVol.ts","webpack://Tone/./Tone/component/channel/Channel.ts","webpack://Tone/./Tone/component/channel/Mono.ts","webpack://Tone/./Tone/component/channel/MultibandSplit.ts","webpack://Tone/./Tone/core/context/Listener.ts","webpack://Tone/./Tone/component/channel/Panner3D.ts","webpack://Tone/./Tone/component/channel/Recorder.ts","webpack://Tone/./Tone/component/dynamics/Compressor.ts","webpack://Tone/./Tone/component/dynamics/Gate.ts","webpack://Tone/./Tone/component/dynamics/Limiter.ts","webpack://Tone/./Tone/component/dynamics/MidSideCompressor.ts","webpack://Tone/./Tone/component/dynamics/MultibandCompressor.ts","webpack://Tone/./Tone/component/filter/EQ3.ts","webpack://Tone/./Tone/component/filter/Convolver.ts","webpack://Tone/./Tone/index.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","_classCallCheck","_createClass","_interopDefaultLegacy","e","_slicedToArray__default","_classCallCheck__default","_createClass__default","createExtendedExponentialRampToValueAutomationEvent","endTime","insertTime","type","createExtendedLinearRampToValueAutomationEvent","createSetValueAutomationEvent","startTime","createSetValueCurveAutomationEvent","values","duration","getTargetValueAtTime","time","valueAtStartTime","_ref","target","timeConstant","Math","exp","isExponentialRampToValueAutomationEvent","automationEvent","isLinearRampToValueAutomationEvent","isAnyRampToValueAutomationEvent","isSetValueAutomationEvent","isSetValueCurveAutomationEvent","getValueOfAutomationEventAtIndexAtTime","automationEvents","index","defaultValue","undefined","length","getEndTimeAndValueOfPreviousAutomationEvent","currentAutomationEvent","nextAutomationEvent","isCancelAndHoldAutomationEvent","isCancelScheduledValuesAutomationEvent","getEventTime","cancelTime","getExponentialRampValueAtTime","pow","getLinearRampValueAtTime","getValueCurveValueAtTime","theoreticIndex","lowerIndex","floor","upperIndex","ceil","interpolateValue","isSetTargetAutomationEvent","AutomationEventList","_automationEvents","_currenTime","_defaultValue","iterator","eventTime","findIndex","removedAutomationEvent","slice","lastAutomationEvent","Error","startValue","truncatedAutomationEvent","push","getValue","Float32Array","_index","previousAutomationEvent","persistentAutomationEvent","splice","remainingAutomationEvents","firstRemainingAutomationEvent","unshift","_getEndTimeAndValueOf","_getEndTimeAndValueOf2","_getEndTimeAndValueOf3","_getEndTimeAndValueOf4","_startTime","_value","createCancelAndHoldAutomationEvent","createCancelScheduledValuesAutomationEvent","createExponentialRampToValueAutomationEvent","createLinearRampToValueAutomationEvent","createSetTargetAutomationEvent","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arr","Array","isArray","_arr","_n","_d","_e","_s","_i","next","done","err","arrayLikeToArray","minLen","toString","constructor","from","test","len","arr2","TypeError","instance","Constructor","_defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","version","ACTIVE_AUDIO_NODE_STORE","WeakSet","AUDIO_NODE_CONNECTIONS_STORE","WeakMap","AUDIO_NODE_STORE","AUDIO_PARAM_CONNECTIONS_STORE","AUDIO_PARAM_STORE","CONTEXT_STORE","EVENT_LISTENERS","CYCLE_COUNTERS","NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS","NODE_TO_PROCESSOR_MAPS","handler","construct","IMPORT_STATEMENT_REGEX","splitImportStatements","source","url","importStatements","sourceWithoutImportStatements","replace","result","match","unresolvedUrl","importStatementWithResolvedUrl","URL","join","verifyParameterDescriptors","parameterDescriptors","verifyProcessorCtor","processorCtor","constructible","Proxy","isConstructible","map","pickElementFromSet","set","predicate","matchingElements","filter","matchingElement","delete","deletePassiveInputConnectionToAudioNode","passiveInputs","output","input","passiveInputConnections","matchingConnection","passiveInputConnection","size","audioNode","setInternalStateToActive","has","add","forEach","eventListener","isAudioWorkletNode","setInternalStateToPassive","setInternalStateToPassiveWhenNecessary","activeInputs","every","connections","DEFAULT_OPTIONS","channelCount","channelCountMode","channelInterpretation","fftSize","maxDecibels","minDecibels","smoothingTimeConstant","isOwnedByContext","nativeAudioNode","nativeContext","context","nativeAudioBuffer","copyToChannel","DOMException","wrapAudioBufferGetChannelDataMethod","audioBuffer","getChannelData","channel","code","numberOfChannels","MOST_NEGATIVE_SINGLE_FLOAT","MOST_POSITIVE_SINGLE_FLOAT","buffer","loop","loopEnd","loopStart","playbackRate","getAudioParamConnections","audioParam","deactivateActiveAudioNodeInputConnections","trace","includes","audioParams","isAudioBufferSourceNode","parameters","isBiquadFilterNode","Q","detune","frequency","gain","isConstantSourceNode","offset","isGainNode","isOscillatorNode","isStereoPannerNode","pan","audioParamConnections","deactivateAudioGraph","destination","isValidLatencyHint","latencyHint","isAudioNode","audioNodeOrAudioParam","isAudioNodeOutputConnection","outputConnection","element","ignoreDuplicates","lmnt","addActiveInputConnectionToAudioParam","activeInputConnection","addPassiveInputConnectionToAudioParam","Set","isNativeAudioNodeFaker","nativeAudioNodeOrNativeAudioNodeFaker","nativeSourceAudioNode","nativeDestinationAudioNode","fakeNativeDestinationAudioNode","inputs","connect","deleteActiveInputConnection","activeInputConnections","deleteEventListenerOfAudioNode","deletePassiveInputConnectionToAudioParam","disconnect","testAudioNodeDisconnectMethodSupport","nativeAudioContext","Promise","resolve","analyzer","createScriptProcessor","dummy","createGain","ones","createBuffer","channelData","createBufferSource","onaudioprocess","event","chnnlDt","inputBuffer","some","sample","stop","start","visitEachAudioNodeOnce","cycles","visitor","counts","Map","cycle","count","nativeAudioNodeOrAudioParam","addConnectionToAudioParamOfAudioContext","isOffline","outputs","eventListeners","isActive","nativeAudioParam","partialConnection","deleteActiveInputConnectionToAudioParam","deleteInputsOfAudioNode","listener","deleteInputConnectionOfAudioNode","deleteInputsOfAudioParam","deleteInputConnectionOfAudioParam","ReadOnlyMap","_map","entries","callback","thisArg","keys","numberOfInputs","numberOfOutputs","parameterData","processorOptions","copyFromChannel","parent","channelNumber","bufferOffset","byteLength","slicedInput","BYTES_PER_ELEMENT","createNestedArrays","x","y","arrays","array","j","processBuffer","async","proxy","renderedBuffer","nativeOfflineAudioContext","options","outputChannelCount","processorConstructor","exposeCurrentFrameAndCurrentTime","numberOfInputChannels","numberOfOutputChannels","reduce","sum","processedBuffer","sampleRate","audioNodeConnections","audioWorkletProcessor","nodeToProcessorMap","nativeAudioWorkletNode","getAudioWorkletProcessor","prmtrs","k","potentiallyEmptyInputs","activeSourceFlag","process","outputChannelSplitterNodeOutput","error","dispatchEvent","ErrorEvent","colno","filename","lineno","message","disableNormalization","delayTime","maxDelayTime","getOutputAudioNodeAtIndex","createIndexSizeError","outputAudioNodes","outputAudioNode","attack","knee","ratio","release","threshold","filterBuffer","feedback","feedbackLength","feedforward","feedforwardLength","minLength","xBuffer","yBuffer","bufferIndex","bufferLength","inputLength","uint32Array","Uint32Array","promise","decodeAudioData","catch","assignNativeAudioNodeOption","option","assignNativeAudioNodeOptions","testAnalyserNodeGetFloatTimeDomainDataMethodSupport","nativeAnalyserNode","getFloatTimeDomainData","assignNativeAudioNodeAudioParamValue","wrapAudioScheduledSourceNodeStartMethodNegativeParameters","nativeAudioScheduledSourceNode","when","RangeError","wrapAudioScheduledSourceNodeStopMethodNegativeParameters","computeBufferSize","baseLatency","max","min","round","log2","createAudioWorkletProcessorPromise","audioWorkletNodeOptions","reject","port1","port2","MessageChannel","onmessage","data","close","onmessageerror","postMessage","cloneAudioWorkletNodeOptions","nativeBiquadFilterNode","createBiquadFilter","nativeChannelSplitterNode","createChannelSplitter","channelSplitterNode","wrapChannelSplitterNode","interceptConnections","original","interceptor","nativeDelayNode","createDelay","nativeGainNode","divide","a","b","denominator","evaluatePolynomial","coefficient","z","bufferSize","periodicWave","coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","orientationX","orientationY","orientationZ","panningModel","positionX","positionY","positionZ","refDistance","rolloffFactor","curve","oversample","createGetter","createSetter","getPrototypeOf","getOwnPropertyDescriptor","setValueAtTime","nativeAudioBufferSourceNode","createOscillator","testDomExceptionConstructorSupport","testTransferablesSupport","arrayBuffer","ArrayBuffer","disconnectGainNode","removeEventListener","addEventListener","isStopped","defineProperties","currentTarget","handleEvent","insertElementInSet","createAddPassiveInputConnectionToAudioNode","createDeleteActiveInputConnectionToAudioNode","audioNodeTailTimeStore","_a","createGetAudioNodeTailTime","ongoingTests","testResults","tester","cachedTestResult","ongoingTest","synchronousTestResult","then","finalTestResult","window","cacheTestResult","createAnalyser","byteTimeDomainData","Uint8Array","getByteTimeDomainData","wrapAnalyserNodeGetFloatTimeDomainDataMethod","getAudioNodeConnections","renderer","getAudioNodeRenderer","isPartOfACycle","nextTrace","all","audioNodeRenderer","renderedNativeAudioNode","render","allRenderingPromises","renderingPromises","createRenderInputsOfAudioNode","createAnalyserNodeRenderer","createNativeAnalyserNode","getNativeAudioNode","renderInputsOfAudioNode","renderedNativeAnalyserNodes","renderedNativeAnalyserNode","createAnalyserNode","contextStore","OfflineAudioContext","webkitOfflineAudioContext","createNativeOfflineAudioContextConstructor","nativeOfflineAudioContextConstructor","anything","wrapEventListener","_nativeEventTarget","_listeners","wrappedEventListener","AudioContext","webkitAudioContext","createNativeAudioContextConstructor","nativeAudioContextConstructor","AudioNode","createIsNativeAudioNode","AudioParam","createIsNativeAudioParam","addAudioNodeConnections","addConnectionToAudioNode","createIncrementCycleCounter","createInvalidAccessError","createNotSupportedError","decrementCycleCounter","detectCycles","eventTargetConstructor","getNativeContext","isNativeAudioContext","isNativeAudioNode","isNativeAudioParam","isNativeOfflineAudioContext","super","_context","_nativeAudioNode","returnValue","connectionsToDestination","connection","destinationOrOutput","apply","clear","filteredConnections","wrapAudioNodeDisconnectMethod","state","isPassive","destinations","audioNodeConnectionsOfSource","deleteAnyConnection","deleteConnectionAtOutput","deleteConnectionToDestination","createAudioNodeConstructor","audioNodeConnectionsStore","addActiveInputConnectionToAudioNode","addPassiveInputConnectionToAudioNode","connectNativeAudioNodeToNativeAudioNode","deleteActiveInputConnectionToAudioNode","disconnectNativeAudioNodeFromNativeAudioNode","getAudioNodeTailTime","getEventListenersOfAudioNode","isActiveAudioNode","isPassiveAudioNode","tailTime","setTimeout","createAddConnectionToAudioNode","cycleCounters","getNativeAudioParam","cycleCounter","nativeDestinationAudioParam","createIncrementCycleCounterFactory","createDecrementCycleCounter","audioParamAudioNodeStore","getValueForKey","chain","nextLink","isDelayNode","mergedCycles","nestedCycles","concat","createDetectCycles","analyserNodeConstructor","audionNodeConstructor","mergedOptions","_nativeAnalyserNode","frequencyBinCount","getByteFrequencyData","getFloatFrequencyData","createAnalyserNodeConstructor","AudioBuffer","createNativeAudioBufferConstructor","convertNumberToUnsignedLong","unit32Array","channelNumberAsNumber","bufferOffsetAsNumber","audioBufferLength","destinationLength","sourceLength","createWrapAudioBufferCopyChannelMethods","createWrapAudioBufferCopyChannelMethodsOutOfBounds","audioBufferConstructor","audioBufferStore","nativeAudioBufferConstructor","testNativeAudioBufferConstructorSupport","wrapAudioBufferCopyChannelMethods","wrapAudioBufferCopyChannelMethodsOutOfBounds","hasInstance","createAudioBufferConstructor","createNativeGainNode","renderInputsOfAudioParam","createRenderInputsOfAudioParam","createConnectAudioParam","addSilentConnection","testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport","testAudioBufferSourceNodeStartMethodOffsetClampingSupport","testAudioBufferSourceNodeStopMethodNullifiedBufferSupport","testAudioScheduledSourceNodeStartMethodNegativeParametersSupport","testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport","testAudioScheduledSourceNodeStopMethodNegativeParametersSupport","wrapAudioBufferSourceNodeStartMethodOffsetClampling","wrapAudioBufferSourceNodeStopMethodNullifiedBuffer","wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls","isScheduled","wrapAudioBufferSourceNodeStartMethodConsecutiveCalls","createNativeAudioBufferSourceNodeFactory","clampedOffset","overwriteAccessors","nullifiedBuffer","getAudioParamRenderer","replay","createRenderAutomation","createGetAudioParamRenderer","connectAudioParam","createNativeAudioBufferSourceNode","renderAutomation","renderedNativeAudioBufferSourceNodes","renderedNativeAudioBufferSourceNode","nativeAudioBufferSourceNodeIsOwnedByContext","createAudioBufferSourceNode","createAudioBufferSourceNodeRendererFactory","addAudioParamConnections","audioParamStore","createAudioParamRenderer","setValueAtTimeUntilPossible","isAudioParamOfOfflineAudioContext","maxValue","minValue","automationEventList","audioParamRenderer","currentTime","cancelAndHoldAtTime","flush","previousLastEvent","pop","currentLastEvent","cancelScheduledValues","exponentialRampToValueAtTime","linearRampToValueAtTime","setValueCurveAtTime","Number","isFinite","setTargetAtTime","convertedValues","firstSample","lastSample","numberOfInterpolatedValues","interpolatedValues","timeOfLastSample","createAudioParamFactory","audioParamConnectionsStore","audioBufferSourceNodeConstructor","audioNodeConstructor","createAudioBufferSourceNodeRenderer","createAudioParam","createInvalidStateError","audioBufferSourceNodeRenderer","_audioBufferSourceNodeRenderer","_isBufferNullified","_isBufferSet","_nativeAudioBufferSourceNode","_onended","_playbackRate","wrappedListener","onended","nativeOnEnded","resetInternalStateToPassive","createAudioBufferSourceNodeConstructor","createAudioDestinationNodeRenderer","createNativeAudioDestinationNode","nativeAudioDestinationNode","_isNodeOfNativeOfflineAudioContext","_nativeAudioDestinationNode","maxChannelCount","createAudioDestinationNodeConstructor","nativeAudioDestinationNodePromise","createAudioDestinationNode","isNodeOfNativeOfflineAudioContext","gainNode","createNativeAudioDestinationNodeFactory","createNativeBiquadFilterNode","renderedNativeBiquadFilterNodes","renderedNativeBiquadFilterNode","nativeBiquadFilterNodeIsOwnedByContext","createBiquadFilterNode","createBiquadFilterNodeRendererFactory","createSetAudioNodeTailTime","biquadFilterNodeConstructor","createBiquadFilterNodeRenderer","setAudioNodeTailTime","_Q","_detune","_frequency","_gain","log10","_nativeBiquadFilterNode","frequencyHz","magResponse","phaseResponse","getFrequencyResponse","whenConnected","whenDisconnected","wasDisconnected","wasConnected","isDisconnected","createMonitorConnections","monitorConnections","channelMergerNode","audioBufferSourceNode","wrapChannelMergerNode","nativeChannelMergerNode","createChannelMerger","createNativeChannelMergerNodeFactory","channelMergerNodeConstructor","createChannelMergerNodeRenderer","createNativeChannelMergerNode","createChannelMergerNodeConstructor","renderedNativeAudioNodes","createAudioNode","createChannelMergerNodeRendererFactory","channelSplitterNodeConstructor","createChannelSplitterNodeRenderer","createNativeChannelSplitterNode","sanitizeChannelSplitterOptions","createChannelSplitterNodeConstructor","createChannelSplitterNodeRendererFactory","audioNodeOptions","nativeConstantSourceNodeFaker","args","createNativeConstantSourceNodeFakerFactory","createNativeConstantSourceNodeFaker","createConstantSource","nativeConstantSourceNode","createNativeConstantSourceNodeFactory","constantSourceNodeConstructor","createConstantSourceNodeRendererFactory","createNativeConstantSourceNode","constantSourceNodeRenderer","_constantSourceNodeRenderer","_nativeConstantSourceNode","_offset","createConstantSourceNodeConstructor","renderedNativeConstantSourceNodes","renderedNativeConstantSourceNode","nativeConstantSourceNodeIsOwnedByContext","createConstantSourceNode","nativeConvolverNode","createConvolver","normalize","createNativeConvolverNodeFactory","convolverNodeConstructor","createConvolverNodeRenderer","createNativeConvolverNode","_nativeConvolverNode","createConvolverNodeConstructor","renderedNativeConvolverNodes","renderedNativeConvolverNode","createConvolverNode","createConvolverNodeRendererFactory","delayNodeConstructor","createDelayNodeRenderer","createNativeDelayNode","_delayTime","createDelayNodeConstructor","renderedNativeDelayNodes","renderedNativeDelayNode","nativeDelayNodeIsOwnedByContext","createDelayNode","createDelayNodeRendererFactory","nativeDynamicsCompressorNode","createDynamicsCompressor","dynamicsCompressorNodeConstructor","createDynamicsCompressorNodeRenderer","createNativeDynamicsCompressorNode","_attack","_knee","_nativeDynamicsCompressorNode","_ratio","_release","_threshold","previousChannelCount","reduction","createDynamicsCompressorNodeConstructor","renderedNativeDynamicsCompressorNodes","renderedNativeDynamicsCompressorNode","nativeDynamicsCompressorNodeIsOwnedByContext","createDynamicsCompressorNode","createDynamicsCompressorNodeRendererFactory","gainNodeConstructor","createGainNodeRenderer","createGainNodeConstructor","renderedNativeGainNodes","renderedNativeGainNode","nativeGainNodeIsOwnedByContext","createGainNode","createGainNodeRendererFactory","createNativeScriptProcessorNode","convertedFeedback","Float64Array","convertedFeedforward","scriptProcessorNode","bufferIndexes","xBuffers","yBuffers","fill","outputBuffer","nyquist","omega","PI","cos","sin","response","sqrt","atan2","createNativeIIRFilterNodeFakerFactory","testOfflineAudioContextCurrentTimeSupport","isOfflineAudioContextCurrentTimeSupported","oncomplete","startRendering","createRenderNativeOfflineAudioContext","createTestOfflineAudioContextCurrentTimeSupport","renderNativeOfflineAudioContext","filteredBufferPromise","nativeIIRFilterNode","nativeIIRFilterNodeIsOwnedByContext","createIIRFilter","partialOfflineAudioContext","filteredBuffer","filterFullBuffer","createIIRFilterNodeRendererFactory","createNativeIIRFilterNodeFaker","iIRFilterNodeConstructor","createNativeIIRFilterNode","createIIRFilterNodeRenderer","wrapIIRFilterNodeGetFrequencyResponseMethod","_nativeIIRFilterNode","createIIRFilterNodeConstructor","nativeListener","forwardX","forwardY","forwardZ","upX","upY","upZ","createFakeAudioParam","constantSourceNode","lastOrientation","lastPosition","orientation","setOrientation","positon","setPosition","createFakeAudioParams","createAudioListenerFactory","audioDestinationNodeConstructor","createAudioListener","unrenderedAudioWorkletNodeStore","_nativeContext","_destination","_listener","_onstatechange","onstatechange","nativeOnStateChange","createMinimalBaseAudioContextConstructor","nativeOscillatorNode","setPeriodicWave","createNativeOscillatorNodeFactory","oscillatorNodeConstructor","createNativeOscillatorNode","createOscillatorNodeRenderer","oscillatorNodeRenderer","_nativeOscillatorNode","_oscillatorNodeRenderer","createOscillatorNodeConstructor","renderedNativeOscillatorNodes","renderedNativeOscillatorNode","nativeOscillatorNodeIsOwnedByContext","createOscillatorNode","createOscillatorNodeRendererFactory","createConnectedNativeAudioBufferSourceNode","isDCCurve","negativeWaveShaperNode","createWaveShaper","positiveWaveShaperNode","inputGainNode","invertGainNode","outputGainNode","revertGainNode","disconnectNativeAudioBufferSourceNode","isConnected","unmodifiedCurve","nativeWaveShaperNodeFaker","curveLength","negativeCurve","positiveCurve","centerIndex","createNativeWaveShaperNodeFakerFactory","createNativeWaveShaperNodeFaker","nativeWaveShaperNode","automationRate","createNativeWaveShaperNodeFactory","createNativeWaveShaperNode","pannerNode","createPanner","SINGLE_CHANNEL_OPTIONS","orientationXGainNode","orientationYGainNode","orientationZGainNode","positionXGainNode","positionYGainNode","positionZGainNode","waveShaperNode","nativePannerNodeFaker","createNativePannerNodeFakerFactory","createNativePannerNodeFaker","nativePannerNode","pannerNodeConstructor","createNativePannerNode","createPannerNodeRenderer","_nativePannerNode","_orientationX","_orientationY","_orientationZ","_positionX","_positionY","_positionZ","createPannerNodeConstructor","renderedBufferPromise","renderedNativeGainNodeOrNativePannerNode","commonAudioNodeOptions","commonNativePannerNodeOptions","nativePannerNodeIsOwnedByContext","nativeConstantSourceNodes","channelDatas","gateGainNode","partialPannerNode","createPannerNodeRendererFactory","periodicWaveConstructor","createNativePeriodicWave","periodicWaveStore","sanitizePeriodicWaveOptions","PeriodicWave","createPeriodicWaveConstructor","imag","real","convertedImag","convertedReal","nativePeriodicWave","createPeriodicWave","createNativePeriodicWaveFactory","createNativeStereoPannerNodeFaker","createStereoPanner","nativeStereoPannerNode","createNativeStereoPannerNodeFactory","DC_CURVE","HALF_PI","SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS","buildInternalGraph","panGainNode","leftWaveShaperCurve","rightWaveShaperCurve","leftGainNode","leftWaveShaperNode","panWaveShaperNode","rightGainNode","rightWaveShaperNode","buildInternalGraphForMono","leftInputForLeftOutputWaveShaperCurve","leftInputForRightOutputWaveShaperCurve","rightInputForLeftOutputWaveShaperCurve","rightInputForRightOutputWaveShaperCurve","CURVE_SIZE","leftInputForLeftOutputGainNode","leftInputForLeftOutputWaveShaperNode","leftInputForRightOutputGainNode","leftInputForRightOutputWaveShaperNode","rightInputForLeftOutputGainNode","rightInputForLeftOutputWaveShaperNode","rightInputForRightOutputGainNode","rightInputForRightOutputWaveShaperNode","buildInternalGraphForStereo","connectGraph","disconnectGraph","nativeStereoPannerNodeFakerFactory","createNativeStereoPannerNodeFakerFactory","stereoPannerNodeConstructor","createNativeStereoPannerNode","createStereoPannerNodeRenderer","_pan","createStereoPannerNodeConstructor","renderedNativeStereoPannerNodes","renderedNativeStereoPannerNode","nativeStereoPannerNodeIsOwnedByContext","createStereoPannerNode","createStereoPannerNodeRendererFactory","createWaveShaperNodeRenderer","renderedNativeWaveShaperNodes","renderedNativeWaveShaperNode","createWaveShaperNode","createWaveShaperNodeRendererFactory","waveShaperNodeConstructor","_isCurveNullified","_nativeWaveShaperNode","createWaveShaperNodeConstructor","isSecureContext","createIsSecureContext","fn","currentFrame","createExposeCurrentFrameAndCurrentTime","backupOfflineAudioContextStore","backupOfflineAudioContext","createGetOrCreateBackupOfflineAudioContext","AudioWorkletNode","createNativeAudioWorkletNodeConstructor","addAudioWorkletModule","evaluateSource","fetchSource","getOrCreateBackupOfflineAudioContext","ongoingRequests","resolvedRequests","testAudioWorkletProcessorPostMessageSupport","moduleURL","credentials","audioWorklet","absoluteUrl","isSupportingPostMessage","patchedSourceWithoutImportStatements","blob","Blob","createObjectURL","addModule","finally","revokeObjectURL","resolvedRequestsOfContext","ongoingRequestsOfContext","promiseOfOngoingRequest","evaluateAudioWorkletGlobalScope","_AWGS","SyntaxError","trim","nodeNameToProcessorConstructorMap","rslvdRqstsFCntxt","ngngRqstsFCntxt","createAddAudioWorkletModule","head","document","script","createElement","originalOnErrorHandler","onerror","removeErrorEventListenerAndRevokeUrl","src","location","href","onload","appendChild","createEvaluateSource","createAbortError","fetch","ok","text","createFetchSource","nativeAudioWorkletNodeConstructor","offlineAudioContext","isEmittingMessageEvents","isEmittingProcessorErrorEvents","audioWorkletNode","oscillator","port","onprocessorerror","createTestAudioWorkletProcessorPostMessageSupport","createIsNativeContext","createDataCloneError","createEncodingError","detachedArrayBuffers","isNativeContext","testAudioBufferCopyChannelMethodsOutOfBoundsSupport","testPromiseSupport","anyContext","audioData","complete","detachArrayBuffer","fail","createDecodeAudioData","minimalBaseAudioContextConstructor","_audioWorklet","constraints","successCallback","errorCallback","createBaseAudioContextConstructor","createNativeMediaElementAudioSourceNode","nativeMediaElementAudioSourceNode","_nativeMediaElementAudioSourceNode","mediaElement","createMediaElementAudioSourceNodeConstructor","createMediaElementSource","createNativeMediaStreamAudioDestinationNode","nativeMediaStreamAudioDestinationNode","_nativeMediaStreamAudioDestinationNode","stream","createMediaStreamAudioDestinationNodeConstructor","createMediaStreamDestination","createNativeMediaStreamAudioSourceNode","nativeMediaStreamAudioSourceNode","_nativeMediaStreamAudioSourceNode","mediaStream","createMediaStreamAudioSourceNodeConstructor","audioStreamTracks","getAudioTracks","sort","id","filteredAudioStreamTracks","createMediaStreamSource","MediaStream","createNativeMediaStreamTrackAudioSourceNode","createMediaStreamTrackAudioSourceNodeConstructor","mediaStreamTrack","createMediaStreamTrackSource","kind","createNativeMediaStreamTrackAudioSourceNodeFactory","audioContextConstructor","baseAudioContextConstructor","createUnknownError","mediaElementAudioSourceNodeConstructor","mediaStreamAudioDestinationNodeConstructor","mediaStreamAudioSourceNodeConstructor","mediaStreamTrackAudioSourceNodeConstructor","_baseLatency","_nativeAudioContext","_nativeGainNode","_state","revokeState","resolvePromise","resume","suspend","createAudioContextConstructor","unrenderedAudioWorkletNodes","getUnrenderedAudioWorkletNodes","createConnectMultipleOutputs","createDeleteUnrenderedAudioWorkletNode","createDisconnectMultipleOutputs","activeAudioWorkletNodeInputsStore","createGetActiveAudioWorkletNodeInputs","connectMultipleOutputs","disconnectMultipleOutputs","getActiveAudioWorkletNodeInputs","numberOfParameters","messageChannel","gainNodes","inputChannelSplitterNodes","constantSourceNodes","inputChannelMergerNode","outputChannelSplitterNode","outputChannelMergerNodes","parameterMap","nativeAudioWorkletNodeFaker","_","patchedEventListeners","unpatchedEventListener","patchedEventListener","audioWorkletProcessorPromise","createAudioWorkletProcessor","dWrkltPrcssr","disconnectOutputsGraph","outputChannelMergerNode","activeInputIndexes","disconnectFakeGraph","connectFakeGraph","createNativeAudioWorkletNodeFakerFactory","createNativeAudioWorkletNodeFaker","testClonabilityOfAudioWorkletNodeOptions","createNativeAudioWorkletNodeFactory","deleteUnrenderedAudioWorkletNode","processedBufferPromise","renderedNativeAudioWorkletNodeOrGainNode","nativeOutputNodes","nativeAudioWorkletNodeIsOwnedByContext","renderBuffer","nm","createAudioWorkletNodeRendererFactory","createGetBackupOfflineAudioContext","createSetActiveAudioWorkletNodeInputs","audioWorkletNodeConstructor","addUnrenderedAudioWorkletNode","createAudioWorkletNodeRenderer","createNativeAudioWorkletNode","getBackupOfflineAudioContext","sanitizeAudioWorkletNodeOptions","setActiveAudioWorkletNodeInputs","nativeContextOrBackupOfflineAudioContext","_nativeAudioWorkletNode","_onprocessorerror","_parameters","nativeOnProcessorError","createAudioWorkletNodeConstructor","createMinimalAudioContextConstructor","createCreateNativeOfflineAudioContext","createStartRendering","offlineAudioContextConstructor","createNativeOfflineAudioContext","createMinimalOfflineAudioContextConstructor","delayStateChangeEvent","stopImmediatePropagation","_waitForThePromiseToSettle","_length","_nativeOfflineAudioContext","createOfflineAudioContextConstructor","isAnyAudioContext","createIsAnyAudioContext","isAnyAudioNode","audioNodeStore","isAnyAudioParam","isAnyOfflineAudioContext","createIsAnyOfflineAudioContext","isSupported","testAudioBufferCopyChannelMethodsSubarraySupport","testAudioContextCloseMethodSupport","testAudioContextDecodeAudioDataMethodTypeErrorSupport","testAudioContextOptionsSupport","testAudioNodeConnectMethodSupport","testAudioWorkletProcessorNoOutputsSupport","testChannelMergerNodeChannelCountSupport","testConstantSourceNodeAccurateSchedulingSupport","testConvolverNodeBufferReassignabilitySupport","testConvolverNodeChannelCountSupport","testDomExceptionContrucorSupport","testIsSecureContextSupport","testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport","testStereoPannerNodeDefaultValueSupport","createIsSupportedPromise","createTestAudioBufferCopyChannelMethodsSubarraySupport","audioContext","isAudioContextClosable","createTestAudioContextCloseMethodSupport","isPending","createTestAudioContextDecodeAudioDataMethodTypeErrorSupport","createTestAudioContextOptionsSupport","createTestAudioNodeConnectMethodSupport","isCallingProcess","createTestAudioWorkletProcessorNoOutputsSupport","createTestChannelMergerNodeChannelCountSupport","POSITIVE_INFINITY","createTestConstantSourceNodeAccurateSchedulingSupport","createTestConvolverNodeBufferReassignabilitySupport","createTestConvolverNodeChannelCountSupport","createTestIsSecureContextSupport","createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport","stereoPanner","createTestStereoPannerNodeDefaultValueSupport","assert","statement","assertRange","gte","lte","Infinity","assertContextRunning","warn","defaultLogger","console","setLogger","logger","log","isUndef","arg","isDefined","isFunction","isNumber","isObject","isBoolean","isString","isNote","theWindow","hasAudioContext","__decorate","decorators","desc","arguments","Reflect","decorate","__awaiter","_arguments","P","generator","fulfilled","step","rejected","Ticker","updateInterval","_callback","_type","_updateInterval","_createClock","toFixed","blobUrl","worker","Worker","_worker","_timeout","_createTimeout","_createWorker","clearTimeout","terminate","interval","_disposeClock","isAudioParam","isOfflineAudioContext","isAudioContext","isAudioBuffer","noCopy","deepMerge","sources","shift","assign","optionsFromArguments","defaults","argsArray","objKey","opts","indexOf","defaultArg","given","fallback","omitFromObject","obj","omit","prop","debug","_wasDisposed","TONE_DEBUG_CLASS","GT","GTE","EQ","LT","abs","clamp","_timeline","getDefaults","memory","increasing","valueOf","lastValue","_search","diff","param","after","beginning","end","midPoint","nextEvent","lowerBound","upperBound","_iterate","dispose","notifyNewContext","onContextInit","cb","notifyCloseContext","onContextClose","split","eventName","_events","boundCallback","off","on","eventList","constr","_constants","_timeouts","_timeoutIds","_initialized","_workletModules","createAudioContext","_ticker","emit","clockSource","_timeoutLoop","_setLatencyHint","lookAhead","ctx","feedForward","initialize","_transport","_draw","createAudioWorkletNode","rawContext","promises","_latencyHint","hint","lookAheadValue","val","constant","now","firstEvent","peek","timeout","remove","intervalFn","readOnly","str","noOp","reverse","load","_buffer","getContext","loaded","_reversed","_reverse","doneLoading","downloads","isMultidimensional","channels","multiChannelArray","chanNum","fromArray","toArray","outputArray","numChannels","channelArray","ret","startSamples","endSamples","retBuffer","subarray","rev","matches","extensions","extension","ext","supportsType","baseUrl","endsWith","canPlayType","_currentTime","_duration","asynchronous","yieldEvery","workletsAreReady","_renderClock","dummyContext","_numberOfChannels","_sampleRate","_numberOfInputs","_numberOfOutputs","_maxDelayTime","_feedForward","_feedback","_real","_imag","_constraints","_stream","_element","_audioData","_name","_options","_url","_fn","_id","_interval","_val","globalContext","setContext","TONE_SILENCE_LOGGING","prefix","printString","dbToGain","db","gainToDb","LN10","intervalToFrequencyRatio","A4","ftom","ftomf","mtof","midi","units","defaultUnits","_units","_expressions","_getExpressions","hz","method","_frequencyToUnits","parseFloat","regexp","_ticksToUnits","parseInt","_beatsToUnits","_getTimeSignature","dot","numericValue","scalar","number","_secondsToUnits","samples","tr","q","total","fromType","_noArg","typeName","quantity","expr","matching","freq","beats","_getBpm","seconds","ticks","_getPPQ","_now","transport","bpm","timeSignature","PPQ","toSeconds","toTicks","toFrequency","toMidi","capture","quantize","quantTo","nextSubdivision","subdiv","percent","subdivision","testNotations","power","closest","closestSeconds","notation","notationSeconds","quarterTime","quarters","measures","sixteenths","sixteenthString","Time","setA4","note","pitch","octave","noteNumber","noteToScaleIndex","toLowerCase","intervals","transpose","scaleIndexToNote","cbb","cx","dbb","dx","ebb","eb","ex","fbb","fb","f","fx","gbb","gb","g","gx","abb","ab","ax","bbb","bb","bx","Frequency","TransportTime","defaultContext","attribute","member","_getPartialProperties","initial","_initial","setStateAtTime","overridden","_minOutput","_param","_swappable","swappable","_initialValue","convert","_minValue","_maxValue","_toType","getValueAtTime","_fromType","_is","computedTime","JSON","stringify","_assertRange","getAfter","before","beforeValue","previous","getBefore","_linearInterpolate","_exponentialInterpolate","previousVal","_exponentialApproach","currentVal","rampTime","setRampPoint","exponentialApproachValueAtTime","scaling","startingValue","segTime","cancel","valueAtTime","sampleTime","exponentialRampTo","linearRampTo","previousEvent","subdivisions","forEachAfter","t0","v0","v1","t1","_internalChannels","node","nodeList","_isAudioNode","_getInternalNodes","_getChannelProperties","_setChannelProperties","outputNum","inputNum","toDestination","nodes","connectSeries","first","prev","current","srcNode","dstNode","outputNumber","inputNumber","fanIn","_gainNode","_stopTime","getStateAtTime","_fadeIn","fadeIn","_fadeOut","fadeOut","_curve","fadeInTime","_stopGain","cancelStop","fadeOutTime","targetRampTo","additionalTail","_stopSource","disposeCallback","requestIdleCallback","_source","_startGain","override","_constantSource","connectSignal","rampTo","signal","_multiplier","multiplier","computedValue","prevEvent","segments","rampVal","ticksUntilTime","_getTicksUntilEvent","computedVal","segmentDur","val0","val1","onTheLineEvent","currentTick","getTicksAtTime","getTimeOfTick","tick","delta","sol1","sol2","getDurationOfTicks","computedDuration","startTicks","ticksToTime","timeToTicks","_tickOffset","setTicksAtTime","stopEvent","getLastState","tmpEvent","lastState","elapsedTicks","forEachBetween","periodStartTime","offsetEvent","getSecondsAtTime","elapsedSeconds","absoluteTicks","lastStateEvent","forEachTickBetween","maxStartTime","nextTickTime","_lastUpdate","_boundLoop","_loop","_tickSource","pause","mixin","maxDelayInSeconds","maxDelay","_maxDelay","_delayNode","Offline","originalContext","bufferPromise","_buffers","_loadingCount","urls","_bufferLoaded","Midi","Ticks","expiration","anticipation","_boundDrawLoop","_drawLoop","_animationFrame","requestAnimationFrame","cancelAnimationFrame","draw","_root","IntervalNode","insert","updateHeight","updateMax","_rebalance","results","search","_removeNode","forEachFrom","replacement","isLeftChild","left","right","_setRoot","_replaceNodeInParent","temp","getBalance","pivotNode","balance","_rotateLeft","_rotateRight","low","allNodes","traverse","searchAfter","high","_left","_right","height","point","volume","_unmutedVolume","mute","initialValue","_eventId","_remainderTime","_once","once","tickDuration","_currentId","_nextId","_nextTick","_boundRestart","_restart","_createEvents","invoke","floatTime","scheduleOnce","_createEvent","_loopStart","_loopEnd","_scheduledEvents","_repeatedEvents","_syncedSignals","_swingAmount","_ppq","ppq","_clock","_processTick","_bindClockEvents","_timeSignature","_swingTicks","swing","swingSubdivision","tickTime","progress","amount","forEachAtTime","_addEvent","eventId","item","timeline","computedAfter","offsetTicks","timeSig","startPosition","endPosition","toNotation","toBarsBeatsSixteenths","remainingTicks","computedFreq","ratioSignal","syncedSignal","_synced","_scheduled","_syncedStart","_syncedStop","_volume","onstop","_clampToCurrentTime","sched","schedule","_start","immediate","restart","getNextState","_stop","stateEvent","startOffset","unsync","_sourceStarted","_sourceStopped","computedOffset","loopDuration","computedDur","_noiseBuffers","rate","random","_noiseCache","brown","pink","white","channelNum","lastOut","b0","b1","b2","b3","b4","b5","b6","labelOrId","supported","devices","enumerateDevices","_device","find","device","label","deviceId","audio","echoCancellation","noiseSuppression","mozNoiseSuppression","navigator","mediaDevices","getUserMedia","mediaStreamNode","_mediaStream","track","active","groupId","generateWaveform","_oscillator","_partials","partials","_partialCount","partialCount","baseType","phase","_wave","syncSignal","unsyncSignal","_periodicWaveCache","description","_phase","arrayA","arrayB","oscProps","isBasicType","cache","_getCachedPeriodicWave","wave","_getRealImaginary","partial","exec","fullPartials","v","periodicWaveSize","piFactor","twoPi","_inverseFFT","_shaper","mapping","setMap","normalized","oversampling","_norm","_mult","factor","_modulationScale","_modulationNode","_carrier","_modulator","modulationType","harmonicity","modulationIndex","_widthGate","_thresh","width","_triangle","_oscillators","_spread","spread","_forEach","osc","sourceType","_scale","_pulse","modulationFrequency","carrierType","OmniOscillatorSourceMap","am","fat","fm","pulse","pwm","_sourceType","substr","_createNewOscillator","_getOscType","oscType","OscConstructor","oldOsc","blockTime","sType","mType","_sum","addend","_add","_min","_max","_setRange","getConstant","_stoppedValue","_clampValue","_amplitudeGain","amplitude","_stoppedSignal","_zeros","_a2g","_scaler","sync","syncFrequency","unsyncFrequency","getInitialValue","_setStoppedValue","currentMin","currentMax","range","valueMap","propertyKey","newValue","timeRange","_activeSources","_onload","autostart","origDuration","_onSourceEnd","implicitEnd","_players","player","_tick","grainSize","_grainSize","_overlap","overlap","_onstop","_abs","_multiply","_neg","subtrahend","_subtract","_gtz","comparator","_exponentScaler","_expFunc","_exponent","exponent","_exp","_lastVal","scheduleRepeat","_onTick","_syncedCallback","_anchorValue","_sig","decay","sustain","attackCurve","releaseCurve","decayCurve","direction","curveName","EnvelopeCurves","curveDef","_getCurve","_attackCurve","_setCurve","_releaseCurve","_decayCurve","velocity","currentValue","decayValue","decayStart","triggerAttack","triggerRelease","attackPortion","envelopeDuration","sustainTime","totalDuration","clone","triggerAttackRelease","cosineCurve","rippleCurve","curveLen","sineWave","stairsCurve","sineCurve","bounceCurve","invertCurve","out","bounce","In","Out","cosine","exponential","linear","ripple","sine","_original_triggerAttack","_original_triggerRelease","_syncState","_syncMethod","changed","timePosition","originalMethod","portamento","onsilence","_triggerEnvelopeAttack","setNote","_triggerEnvelopeRelease","computedFrequency","getLevelAtTime","portTime","envelope","computedAttack","computedDecay","modulation","modulationEnvelope","fan","_filter","freqValues","magValues","phaseValues","filterClone","_filters","rolloff","_rolloff","rolloffNum","possibilities","cascadingCount","totalResponse","_octaves","octaves","_baseFrequency","baseFrequency","filterEnvelope","voice0","voice1","_vibrato","vibratoRate","_vibratoGain","vibratoAmount","inharmRatios","_freqMultipliers","_amplitude","_highpass","mult","_filterFreqScaler","resonance","freqMult","pitchDecay","hertz","maxNote","noise","workletContext","addToWorklet","classOrFunction","registerProcessor","classDesc","processor","workletOptions","_audioWorkletName","_dummyGain","_dummyParam","disposed","_worklet","onReady","setParam","_createFilter","oldFilter","a0","fq","_combFilter","_lowpass","dampening","_noise","attackNoise","_lfcf","delayAmount","_availableVoices","_activeVoices","_voices","_gcTimeout","_averageActiveVoices","voice","maxPolyphony","_dummyVoice","_getNextAvailableVoice","setInterval","_collectGarbage","activeVoiceIndex","_makeVoiceAvailable","activeVoices","firstAvail","notes","midiNote","released","_triggerAttack","_triggerRelease","_scheduleEvent","durationSeconds","sanitizedOptions","clearInterval","urlMap","mid","midiFloat","remainder","difference","_findClosest","closestNote","_startOffset","_probability","probability","_humanize","humanize","_rescheduleEvents","startTick","_getLoopDuration","prob","variation","rescheduleTime","lastEvent","_event","iterations","iters","events","_startNote","timeInTicks","at","_restartEvent","attr","_setAll","_testLoopBoundries","upPatternGen","clampToArraySize","downPatternGen","infiniteGen","gen","alternatingGenerator","directionUp","jumpUp","stepIndex","jumpDown","randomOnce","copy","PatternGenerator","pattern","randomIndex","randomGen","randomWalk","_values","_pattern","_part","_seqCallback","_eventsArray","_subdivision","_createSequence","_eventsUpdated","_indexTime","_rescheduleSequence","sequence","eventOffset","_panner","_split","_g2a","fade","_dryWet","wet","effectSend","effectReturn","effect","_lfo","depth","connectEffect","oct","smoothing","_smoothing","_follower","follower","_sweepRange","_inputBoost","_bandpass","_peaking","_setSweepRange","sensitivity","baseFreq","_bitCrusherWorklet","bits","_order","order","degree","memo","_getCoefficient","isInteger","_splitter","_merger","_merge","_feedbackL","_feedbackR","_feedbackSplit","_feedbackMerge","_depth","_lfoL","_lfoR","_delayNodeL","_delayNodeR","connectEffectLeft","connectEffectRight","deviation","_distortion","distortion","deg","_feedbackGain","offset90","_bank0","_createAllPassFilterBank","_bank1","_oneSampleDelay","bankValues","coefficients","_sine","_cosine","_sineMultiply","_cosineMultiply","_negate","_phaseShifter","combFilterTunings","allpassFilterFrequencies","_combFilters","_allpassFiltersL","_allpassFiltersR","roomSize","allpassL","allpassR","lfpf","al","ar","cf","combFilterDelayTimes","combFilterResonances","allpassFilterFreqs","_allpassFilters","_feedbackCombFilters","_scaleRoomSize","allpass","fbcf","apf","_leftDelay","_rightDelay","_rightPreDelay","_delayA","_lfoA","_delayB","_lfoB","_crossFade","_crossFadeLFO","_feedbackDelay","_pitch","_windowSize","windowSize","_filtersL","_makeFilters","stages","_filtersR","connectToFreq","filters","_convolver","ready","_decay","_preDelay","preDelay","generate","previousReady","noiseL","noiseR","merge","renderPromise","_midAdd","SQRT1_2","_sideSubtract","side","_leftMult","_rightMult","_midSideMerge","_midSideSplit","_midSend","_sideSend","_midReturn","_sideReturn","_twoTimesWidthMid","_twoTimesWidthSide","_midMult","connectEffectMid","_oneMinusWidth","_sideMult","connectEffectSide","_amplitudeL","_amplitudeR","_analysers","analyser","_analyser","_rms","normalRange","aValues","vals","totalSquared","rms","_allSolos","solo","_isSoloed","_addSolo","_removeSolo","_updateSolo","_soloed","_noSolos","_solo","_panVol","muted","buses","bus","_getBus","sendKnob","_lowMidFilter","lowFrequency","highFrequency","_recorder","MediaRecorder","mimeType","startPromise","handleStart","dataPromise","handleData","_compressor","_gt","_gate","thresh","smoothingTime","_multibandSplit","_lowGain","_midGain","_highGain","buff","norm","getTransport","Master","getDestination","getListener","getDraw","Buffer","Buffers","BufferSource"],"mappings":"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","file":"Tone.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Tone\"] = factory();\n\telse\n\t\troot[\"Tone\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass')) :\n typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.automationEvents = {}, global._slicedToArray, global._classCallCheck, global._createClass));\n}(this, (function (exports, _slicedToArray, _classCallCheck, _createClass) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\n var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\n var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\n\n var createExtendedExponentialRampToValueAutomationEvent = function createExtendedExponentialRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createExtendedLinearRampToValueAutomationEvent = function createExtendedLinearRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetValueAutomationEvent = function createSetValueAutomationEvent(value, startTime) {\n return {\n startTime: startTime,\n type: 'setValue',\n value: value\n };\n };\n\n var createSetValueCurveAutomationEvent = function createSetValueCurveAutomationEvent(values, startTime, duration) {\n return {\n duration: duration,\n startTime: startTime,\n type: 'setValueCurve',\n values: values\n };\n };\n\n var getTargetValueAtTime = function getTargetValueAtTime(time, valueAtStartTime, _ref) {\n var startTime = _ref.startTime,\n target = _ref.target,\n timeConstant = _ref.timeConstant;\n return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant);\n };\n\n var isExponentialRampToValueAutomationEvent = function isExponentialRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'exponentialRampToValue';\n };\n\n var isLinearRampToValueAutomationEvent = function isLinearRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'linearRampToValue';\n };\n\n var isAnyRampToValueAutomationEvent = function isAnyRampToValueAutomationEvent(automationEvent) {\n return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent);\n };\n\n var isSetValueAutomationEvent = function isSetValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValue';\n };\n\n var isSetValueCurveAutomationEvent = function isSetValueCurveAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValueCurve';\n };\n\n var getValueOfAutomationEventAtIndexAtTime = function getValueOfAutomationEventAtIndexAtTime(automationEvents, index, time, defaultValue) {\n var automationEvent = automationEvents[index];\n return automationEvent === undefined ? defaultValue : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) ? automationEvent.value : isSetValueCurveAutomationEvent(automationEvent) ? automationEvent.values[automationEvent.values.length - 1] : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent);\n };\n\n var getEndTimeAndValueOfPreviousAutomationEvent = function getEndTimeAndValueOfPreviousAutomationEvent(automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) {\n return currentAutomationEvent === undefined ? [nextAutomationEvent.insertTime, defaultValue] : isAnyRampToValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.endTime, currentAutomationEvent.value] : isSetValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime, currentAutomationEvent.value] : isSetValueCurveAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime + currentAutomationEvent.duration, currentAutomationEvent.values[currentAutomationEvent.values.length - 1]] : [currentAutomationEvent.startTime, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue)];\n };\n\n var isCancelAndHoldAutomationEvent = function isCancelAndHoldAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelAndHold';\n };\n\n var isCancelScheduledValuesAutomationEvent = function isCancelScheduledValuesAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelScheduledValues';\n };\n\n var getEventTime = function getEventTime(automationEvent) {\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n return automationEvent.cancelTime;\n }\n\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\n\n return automationEvent.startTime;\n };\n\n var getExponentialRampValueAtTime = function getExponentialRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n\n if (valueAtStartTime === value) {\n return value;\n }\n\n if (0 < valueAtStartTime && 0 < value || valueAtStartTime < 0 && value < 0) {\n return valueAtStartTime * Math.pow(value / valueAtStartTime, (time - startTime) / (endTime - startTime));\n }\n\n return 0;\n };\n\n var getLinearRampValueAtTime = function getLinearRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n return valueAtStartTime + (time - startTime) / (endTime - startTime) * (value - valueAtStartTime);\n };\n\n var interpolateValue = function interpolateValue(values, theoreticIndex) {\n var lowerIndex = Math.floor(theoreticIndex);\n var upperIndex = Math.ceil(theoreticIndex);\n\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\n\n return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex];\n };\n\n var getValueCurveValueAtTime = function getValueCurveValueAtTime(time, _ref) {\n var duration = _ref.duration,\n startTime = _ref.startTime,\n values = _ref.values;\n var theoreticIndex = (time - startTime) / duration * (values.length - 1);\n return interpolateValue(values, theoreticIndex);\n };\n\n var isSetTargetAutomationEvent = function isSetTargetAutomationEvent(automationEvent) {\n return automationEvent.type === 'setTarget';\n };\n\n var AutomationEventList = /*#__PURE__*/function () {\n function AutomationEventList(defaultValue) {\n _classCallCheck__default['default'](this, AutomationEventList);\n\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n\n _createClass__default['default'](AutomationEventList, [{\n key: Symbol.iterator,\n value: function value() {\n return this._automationEvents[Symbol.iterator]();\n }\n }, {\n key: \"add\",\n value: function add(automationEvent) {\n var eventTime = getEventTime(automationEvent);\n\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) {\n return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime;\n }\n\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n\n var removedAutomationEvent = this._automationEvents[index];\n\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n\n var startTime = isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.startTime + lastAutomationEvent.duration : getEventTime(lastAutomationEvent);\n var startValue = isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] : lastAutomationEvent.value;\n var value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent);\n var truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime);\n\n this._automationEvents.push(truncatedAutomationEvent);\n }\n\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n\n if (lastAutomationEvent !== undefined && isSetValueCurveAutomationEvent(lastAutomationEvent) && lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(new Float32Array([6, 7]), lastAutomationEvent.startTime, eventTime - lastAutomationEvent.startTime);\n }\n }\n } else {\n var _index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > eventTime;\n });\n\n var previousAutomationEvent = _index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[_index - 1];\n\n if (previousAutomationEvent !== undefined && isSetValueCurveAutomationEvent(previousAutomationEvent) && getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n\n var persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) : isLinearRampToValueAutomationEvent(automationEvent) ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) : automationEvent;\n\n if (_index === -1) {\n this._automationEvents.push(persistentAutomationEvent);\n } else {\n if (isSetValueCurveAutomationEvent(automationEvent) && eventTime + automationEvent.duration > getEventTime(this._automationEvents[_index])) {\n return false;\n }\n\n this._automationEvents.splice(_index, 0, persistentAutomationEvent);\n }\n }\n\n return true;\n }\n }, {\n key: \"flush\",\n value: function flush(time) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > time;\n });\n\n if (index > 1) {\n var remainingAutomationEvents = this._automationEvents.slice(index - 1);\n\n var firstRemainingAutomationEvent = remainingAutomationEvents[0];\n\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\n\n this._automationEvents = remainingAutomationEvents;\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(time) {\n if (this._automationEvents.length === 0) {\n return this._defaultValue;\n }\n\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n\n var index = this._automationEvents.findIndex(function (automationEvent) {\n return getEventTime(automationEvent) > time;\n });\n\n var nextAutomationEvent = this._automationEvents[index];\n var currentAutomationEvent = getEventTime(lastAutomationEvent) <= time ? lastAutomationEvent : this._automationEvents[index - 1];\n\n if (currentAutomationEvent !== undefined && isSetTargetAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n\n if (currentAutomationEvent !== undefined && isSetValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n\n if (currentAutomationEvent !== undefined && isSetValueCurveAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) {\n if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) {\n return getValueCurveValueAtTime(time, currentAutomationEvent);\n }\n\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n\n if (currentAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, index - 1, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf2 = _slicedToArray__default['default'](_getEndTimeAndValueOf, 2),\n startTime = _getEndTimeAndValueOf2[0],\n value = _getEndTimeAndValueOf2[1];\n\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf3 = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, index - 1, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf4 = _slicedToArray__default['default'](_getEndTimeAndValueOf3, 2),\n _startTime = _getEndTimeAndValueOf4[0],\n _value = _getEndTimeAndValueOf4[1];\n\n return getLinearRampValueAtTime(time, _startTime, _value, nextAutomationEvent);\n }\n\n return this._defaultValue;\n }\n }]);\n\n return AutomationEventList;\n }();\n\n var createCancelAndHoldAutomationEvent = function createCancelAndHoldAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelAndHold'\n };\n };\n\n var createCancelScheduledValuesAutomationEvent = function createCancelScheduledValuesAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelScheduledValues'\n };\n };\n\n var createExponentialRampToValueAutomationEvent = function createExponentialRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createLinearRampToValueAutomationEvent = function createLinearRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetTargetAutomationEvent = function createSetTargetAutomationEvent(target, startTime, timeConstant) {\n return {\n startTime: startTime,\n target: target,\n timeConstant: timeConstant,\n type: 'setTarget'\n };\n };\n\n exports.AutomationEventList = AutomationEventList;\n exports.createCancelAndHoldAutomationEvent = createCancelAndHoldAutomationEvent;\n exports.createCancelScheduledValuesAutomationEvent = createCancelScheduledValuesAutomationEvent;\n exports.createExponentialRampToValueAutomationEvent = createExponentialRampToValueAutomationEvent;\n exports.createLinearRampToValueAutomationEvent = createLinearRampToValueAutomationEvent;\n exports.createSetTargetAutomationEvent = createSetTargetAutomationEvent;\n exports.createSetValueAutomationEvent = createSetValueAutomationEvent;\n exports.createSetValueCurveAutomationEvent = createSetValueCurveAutomationEvent;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","export const version: string = \"14.8.25\";\n","export const createAbortError = () => new DOMException('', 'AbortError');\n//# sourceMappingURL=abort-error.js.map","export const ACTIVE_AUDIO_NODE_STORE = new WeakSet();\nexport const AUDIO_NODE_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_NODE_STORE = new WeakMap();\nexport const AUDIO_PARAM_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_PARAM_STORE = new WeakMap();\nexport const CONTEXT_STORE = new WeakMap();\nexport const EVENT_LISTENERS = new WeakMap();\nexport const CYCLE_COUNTERS = new WeakMap();\n// This clunky name is borrowed from the spec. :-)\nexport const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS = new WeakMap();\nexport const NODE_TO_PROCESSOR_MAPS = new WeakMap();\n//# sourceMappingURL=globals.js.map","const handler = {\n construct() {\n return handler;\n }\n};\nexport const isConstructible = (constructible) => {\n try {\n const proxy = new Proxy(constructible, handler);\n new proxy(); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=is-constructible.js.map","/*\n * This massive regex tries to cover all the following cases.\n *\n * import './path';\n * import defaultImport from './path';\n * import { namedImport } from './path';\n * import { namedImport as renamendImport } from './path';\n * import * as namespaceImport from './path';\n * import defaultImport, { namedImport } from './path';\n * import defaultImport, { namedImport as renamendImport } from './path';\n * import defaultImport, * as namespaceImport from './path';\n */\nconst IMPORT_STATEMENT_REGEX = /^import(?:(?:[\\s]+[\\w]+|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\{[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?(?:[\\s]*,[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?)*[\\s]*}|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\*[\\s]+as[\\s]+[\\w]+)[\\s]+from)?(?:[\\s]*)(\"([^\"\\\\]|\\\\.)+\"|'([^'\\\\]|\\\\.)+')(?:[\\s]*);?/; // tslint:disable-line:max-line-length\nexport const splitImportStatements = (source, url) => {\n const importStatements = [];\n let sourceWithoutImportStatements = source.replace(/^[\\s]+/, '');\n let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n while (result !== null) {\n const unresolvedUrl = result[1].slice(1, -1);\n const importStatementWithResolvedUrl = result[0]\n .replace(/([\\s]+)?;?$/, '')\n .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString());\n importStatements.push(importStatementWithResolvedUrl);\n sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\\s]+/, '');\n result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n }\n return [importStatements.join(';'), sourceWithoutImportStatements];\n};\n//# sourceMappingURL=split-import-statements.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { isConstructible } from '../helpers/is-constructible';\nimport { splitImportStatements } from '../helpers/split-import-statements';\nconst verifyParameterDescriptors = (parameterDescriptors) => {\n if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) {\n throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.');\n }\n};\nconst verifyProcessorCtor = (processorCtor) => {\n if (!isConstructible(processorCtor)) {\n throw new TypeError('The given value for processorCtor should be a constructor.');\n }\n if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') {\n throw new TypeError('The given value for processorCtor should have a prototype.');\n }\n};\nexport const createAddAudioWorkletModule = (cacheTestResult, createNotSupportedError, evaluateSource, exposeCurrentFrameAndCurrentTime, fetchSource, getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, ongoingRequests, resolvedRequests, testAudioWorkletProcessorPostMessageSupport, window) => {\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const nativeContext = getNativeContext(context);\n // Bug #59: Safari does not implement the audioWorklet property.\n if (nativeContext.audioWorklet !== undefined) {\n return Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport))\n ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below.\n *\n * ```js\n * class extends AudioWorkletProcessor {\n *\n * __buffers = new WeakSet();\n *\n * constructor () {\n * super();\n *\n * this.port.postMessage = ((postMessage) => {\n * return (message, transferables) => {\n * const filteredTransferables = (transferables)\n * ? transferables.filter((transferable) => !this.__buffers.has(transferable))\n * : transferables;\n *\n * return postMessage.call(this.port, message, filteredTransferables);\n * };\n * })(this.port.postMessage);\n * }\n * }\n * ```\n */\n const patchedSourceWithoutImportStatements = isSupportingPostMessage\n ? sourceWithoutImportStatements\n : sourceWithoutImportStatements.replace(/\\s+extends\\s+AudioWorkletProcessor\\s*{/, ` extends (class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}){`);\n /*\n * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected.\n *\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((registerProcessor) => {${ sourceWithoutImportStatements }\n * })((name, processorCtor) => registerProcessor(name, class extends processorCtor {\n *\n * __collectBuffers = (array) => {\n * array.forEach((element) => this.__buffers.add(element.buffer));\n * };\n *\n * process (inputs, outputs, parameters) {\n * inputs.forEach(this.__collectBuffers);\n * outputs.forEach(this.__collectBuffers);\n * this.__collectBuffers(Object.values(parameters));\n *\n * return super.process(\n * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input),\n * outputs,\n * parameters\n * );\n * }\n *\n * }))`\n * ```\n */\n const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));';\n const bufferRegistration = isSupportingPostMessage\n ? ''\n : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));';\n const wrappedSource = `${importStatements};(registerProcessor=>{${patchedSourceWithoutImportStatements}\n})((n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}))`;\n const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' });\n const url = URL.createObjectURL(blob);\n return nativeContext.audioWorklet\n .addModule(url, options)\n .then(() => {\n if (isNativeOfflineAudioContext(nativeContext)) {\n return;\n }\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n return backupOfflineAudioContext.audioWorklet.addModule(url, options);\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n }\n const resolvedRequestsOfContext = resolvedRequests.get(context);\n if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) {\n return Promise.resolve();\n }\n const ongoingRequestsOfContext = ongoingRequests.get(context);\n if (ongoingRequestsOfContext !== undefined) {\n const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL);\n if (promiseOfOngoingRequest !== undefined) {\n return promiseOfOngoingRequest;\n }\n }\n const promise = fetchSource(moduleURL)\n .then(([source, absoluteUrl]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * This is the unminified version of the code used below:\n *\n * ```js\n * ${ importStatements };\n * ((a, b) => {\n * (a[b] = a[b] || [ ]).push(\n * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => {\n * ${ sourceWithoutImportStatements }\n * }\n * );\n * })(window, '_AWGS');\n * ```\n */\n // tslint:disable-next-line:max-line-length\n const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements}\n})})(window,'_AWGS')`;\n // @todo Evaluating the given source code is a possible security problem.\n return evaluateSource(wrappedSource);\n })\n .then(() => {\n const evaluateAudioWorkletGlobalScope = window._AWGS.pop();\n if (evaluateAudioWorkletGlobalScope === undefined) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n throw new SyntaxError();\n }\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => evaluateAudioWorkletGlobalScope(class AudioWorkletProcessor {\n }, undefined, (name, processorCtor) => {\n if (name.trim() === '') {\n throw createNotSupportedError();\n }\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n if (nodeNameToProcessorConstructorMap !== undefined) {\n if (nodeNameToProcessorConstructorMap.has(name)) {\n throw createNotSupportedError();\n }\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n nodeNameToProcessorConstructorMap.set(name, processorCtor);\n }\n else {\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]]));\n }\n }, nativeContext.sampleRate, undefined, undefined));\n });\n if (ongoingRequestsOfContext === undefined) {\n ongoingRequests.set(context, new Map([[moduleURL, promise]]));\n }\n else {\n ongoingRequestsOfContext.set(moduleURL, promise);\n }\n promise\n .then(() => {\n const rslvdRqstsFCntxt = resolvedRequests.get(context);\n if (rslvdRqstsFCntxt === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n }\n else {\n rslvdRqstsFCntxt.add(moduleURL);\n }\n })\n .finally(() => {\n const ngngRqstsFCntxt = ongoingRequests.get(context);\n if (ngngRqstsFCntxt !== undefined) {\n ngngRqstsFCntxt.delete(moduleURL);\n }\n });\n return promise;\n };\n};\n//# sourceMappingURL=add-audio-worklet-module.js.map","export const getValueForKey = (map, key) => {\n const value = map.get(key);\n if (value === undefined) {\n throw new Error('A value with the given key could not be found.');\n }\n return value;\n};\n//# sourceMappingURL=get-value-for-key.js.map","export const pickElementFromSet = (set, predicate) => {\n const matchingElements = Array.from(set).filter(predicate);\n if (matchingElements.length > 1) {\n throw Error('More than one element was found.');\n }\n if (matchingElements.length === 0) {\n throw Error('No element was found.');\n }\n const [matchingElement] = matchingElements;\n set.delete(matchingElement);\n return matchingElement;\n};\n//# sourceMappingURL=pick-element-from-set.js.map","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioNode = (passiveInputs, source, output, input) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-node.js.map","import { EVENT_LISTENERS } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getEventListenersOfAudioNode = (audioNode) => {\n return getValueForKey(EVENT_LISTENERS, audioNode);\n};\n//# sourceMappingURL=get-event-listeners-of-audio-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToActive = (audioNode) => {\n if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is already stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.add(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true));\n};\n//# sourceMappingURL=set-internal-state-to-active.js.map","export const isAudioWorkletNode = (audioNode) => {\n return 'port' in audioNode;\n};\n//# sourceMappingURL=audio-worklet-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToPassive = (audioNode) => {\n if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is not stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.delete(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false));\n};\n//# sourceMappingURL=set-internal-state-to-passive.js.map","import { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections.\nexport const setInternalStateToPassiveWhenNecessary = (audioNode, activeInputs) => {\n if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=set-internal-state-to-passive-when-necessary.js.map","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n fftSize: 2048,\n maxDecibels: -30,\n minDecibels: -100,\n smoothingTimeConstant: 0.8\n};\nexport const createAnalyserNodeConstructor = (audionNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class AnalyserNode extends audionNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions);\n const analyserNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null));\n super(context, false, nativeAnalyserNode, analyserNodeRenderer);\n this._nativeAnalyserNode = nativeAnalyserNode;\n }\n get fftSize() {\n return this._nativeAnalyserNode.fftSize;\n }\n set fftSize(value) {\n this._nativeAnalyserNode.fftSize = value;\n }\n get frequencyBinCount() {\n return this._nativeAnalyserNode.frequencyBinCount;\n }\n get maxDecibels() {\n return this._nativeAnalyserNode.maxDecibels;\n }\n set maxDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const maxDecibels = this._nativeAnalyserNode.maxDecibels;\n this._nativeAnalyserNode.maxDecibels = value;\n if (!(value > this._nativeAnalyserNode.minDecibels)) {\n this._nativeAnalyserNode.maxDecibels = maxDecibels;\n throw createIndexSizeError();\n }\n }\n get minDecibels() {\n return this._nativeAnalyserNode.minDecibels;\n }\n set minDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const minDecibels = this._nativeAnalyserNode.minDecibels;\n this._nativeAnalyserNode.minDecibels = value;\n if (!(this._nativeAnalyserNode.maxDecibels > value)) {\n this._nativeAnalyserNode.minDecibels = minDecibels;\n throw createIndexSizeError();\n }\n }\n get smoothingTimeConstant() {\n return this._nativeAnalyserNode.smoothingTimeConstant;\n }\n set smoothingTimeConstant(value) {\n this._nativeAnalyserNode.smoothingTimeConstant = value;\n }\n getByteFrequencyData(array) {\n this._nativeAnalyserNode.getByteFrequencyData(array);\n }\n getByteTimeDomainData(array) {\n this._nativeAnalyserNode.getByteTimeDomainData(array);\n }\n getFloatFrequencyData(array) {\n this._nativeAnalyserNode.getFloatFrequencyData(array);\n }\n getFloatTimeDomainData(array) {\n this._nativeAnalyserNode.getFloatTimeDomainData(array);\n }\n };\n};\n//# sourceMappingURL=analyser-node-constructor.js.map","export const isOwnedByContext = (nativeAudioNode, nativeContext) => {\n return nativeAudioNode.context === nativeContext;\n};\n//# sourceMappingURL=is-owned-by-context.js.map","export const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer) => {\n try {\n nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-copy-channel-methods-out-of-bounds-support.js.map","export const createIndexSizeError = () => new DOMException('', 'IndexSizeError');\n//# sourceMappingURL=index-size-error.js.map","import { createIndexSizeError } from '../factories/index-size-error';\nexport const wrapAudioBufferGetChannelDataMethod = (audioBuffer) => {\n audioBuffer.getChannelData = ((getChannelData) => {\n return (channel) => {\n try {\n return getChannelData.call(audioBuffer, channel);\n }\n catch (err) {\n if (err.code === 12) {\n throw createIndexSizeError();\n }\n throw err;\n }\n };\n })(audioBuffer.getChannelData);\n};\n//# sourceMappingURL=wrap-audio-buffer-get-channel-data-method.js.map","import { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from '../helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createAudioBufferConstructor = (audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, testNativeAudioBufferConstructorSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n let nativeOfflineAudioContext = null;\n return class AudioBuffer {\n constructor(options) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n if (nativeOfflineAudioContext === null) {\n nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n }\n /*\n * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the\n * factory function. But since Firefox also supports the constructor everything should be fine.\n */\n const audioBuffer = nativeAudioBufferConstructor !== null &&\n cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport)\n ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate })\n : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate);\n // Bug #99: Safari does not throw an error when the numberOfChannels is zero.\n if (audioBuffer.numberOfChannels === 0) {\n throw createNotSupportedError();\n }\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n }\n else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n /*\n * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native\n * (Offline)AudioContexts.\n */\n return audioBuffer;\n }\n static [Symbol.hasInstance](instance) {\n return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) ||\n audioBufferStore.has(instance));\n }\n };\n};\n//# sourceMappingURL=audio-buffer-constructor.js.map","export const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38;\nexport const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT;\n//# sourceMappingURL=constants.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isActiveAudioNode = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n//# sourceMappingURL=is-active-audio-node.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n};\nexport const createAudioBufferSourceNodeConstructor = (audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class AudioBufferSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const audioBufferSourceNodeRenderer = ((isOffline ? createAudioBufferSourceNodeRenderer() : null));\n super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer);\n this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer;\n this._isBufferNullified = false;\n this._isBufferSet = mergedOptions.buffer !== null;\n this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode;\n this._onended = null;\n // Bug #73: Safari does not export the correct values for maxValue and minValue.\n this._playbackRate = createAudioParam(this, isOffline, nativeAudioBufferSourceNode.playbackRate, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n get buffer() {\n if (this._isBufferNullified) {\n return null;\n }\n return this._nativeAudioBufferSourceNode.buffer;\n }\n set buffer(value) {\n this._nativeAudioBufferSourceNode.buffer = value;\n // Bug #72: Only Chrome, Edge & Opera do not allow to reassign the buffer yet.\n if (value !== null) {\n if (this._isBufferSet) {\n throw createInvalidStateError();\n }\n this._isBufferSet = true;\n }\n }\n get loop() {\n return this._nativeAudioBufferSourceNode.loop;\n }\n set loop(value) {\n this._nativeAudioBufferSourceNode.loop = value;\n }\n get loopEnd() {\n return this._nativeAudioBufferSourceNode.loopEnd;\n }\n set loopEnd(value) {\n this._nativeAudioBufferSourceNode.loopEnd = value;\n }\n get loopStart() {\n return this._nativeAudioBufferSourceNode.loopStart;\n }\n set loopStart(value) {\n this._nativeAudioBufferSourceNode.loopStart = value;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioBufferSourceNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeAudioBufferSourceNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n get playbackRate() {\n return this._playbackRate;\n }\n start(when = 0, offset = 0, duration) {\n this._nativeAudioBufferSourceNode.start(when, offset, duration);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration];\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeAudioBufferSourceNode.stop(when);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-constructor.js.map","import { AUDIO_NODE_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioNodeConnections = (audioNode) => {\n return getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode);\n};\n//# sourceMappingURL=get-audio-node-connections.js.map","import { AUDIO_PARAM_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioParamConnections = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam);\n};\n//# sourceMappingURL=get-audio-param-connections.js.map","import { isAudioBufferSourceNode } from '../guards/audio-buffer-source-node';\nimport { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { isBiquadFilterNode } from '../guards/biquad-filter-node';\nimport { isConstantSourceNode } from '../guards/constant-source-node';\nimport { isGainNode } from '../guards/gain-node';\nimport { isOscillatorNode } from '../guards/oscillator-node';\nimport { isStereoPannerNode } from '../guards/stereo-panner-node';\nimport { getAudioNodeConnections } from './get-audio-node-connections';\nimport { getAudioParamConnections } from './get-audio-param-connections';\nimport { isActiveAudioNode } from './is-active-audio-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\nexport const deactivateActiveAudioNodeInputConnections = (audioNode, trace) => {\n const { activeInputs } = getAudioNodeConnections(audioNode);\n activeInputs.forEach((connections) => connections.forEach(([source]) => {\n if (!trace.includes(audioNode)) {\n deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]);\n }\n }));\n const audioParams = isAudioBufferSourceNode(audioNode)\n ? [\n // Bug #149: Safari does not yet support the detune AudioParam.\n audioNode.playbackRate\n ]\n : isAudioWorkletNode(audioNode)\n ? Array.from(audioNode.parameters.values())\n : isBiquadFilterNode(audioNode)\n ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain]\n : isConstantSourceNode(audioNode)\n ? [audioNode.offset]\n : isGainNode(audioNode)\n ? [audioNode.gain]\n : isOscillatorNode(audioNode)\n ? [audioNode.detune, audioNode.frequency]\n : isStereoPannerNode(audioNode)\n ? [audioNode.pan]\n : [];\n for (const audioParam of audioParams) {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections !== undefined) {\n audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace));\n }\n }\n if (isActiveAudioNode(audioNode)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=deactivate-active-audio-node-input-connections.js.map","export const isAudioBufferSourceNode = (audioNode) => {\n return 'playbackRate' in audioNode;\n};\n//# sourceMappingURL=audio-buffer-source-node.js.map","export const isBiquadFilterNode = (audioNode) => {\n return 'frequency' in audioNode && 'gain' in audioNode;\n};\n//# sourceMappingURL=biquad-filter-node.js.map","export const isConstantSourceNode = (audioNode) => {\n return 'offset' in audioNode;\n};\n//# sourceMappingURL=constant-source-node.js.map","export const isGainNode = (audioNode) => {\n return !('frequency' in audioNode) && 'gain' in audioNode;\n};\n//# sourceMappingURL=gain-node.js.map","export const isOscillatorNode = (audioNode) => {\n return 'detune' in audioNode && 'frequency' in audioNode;\n};\n//# sourceMappingURL=oscillator-node.js.map","export const isStereoPannerNode = (audioNode) => {\n return 'pan' in audioNode;\n};\n//# sourceMappingURL=stereo-panner-node.js.map","import { deactivateActiveAudioNodeInputConnections } from './deactivate-active-audio-node-input-connections';\nexport const deactivateAudioGraph = (context) => {\n deactivateActiveAudioNodeInputConnections(context.destination, []);\n};\n//# sourceMappingURL=deactivate-audio-graph.js.map","export const isValidLatencyHint = (latencyHint) => {\n return (latencyHint === undefined ||\n typeof latencyHint === 'number' ||\n (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback')));\n};\n//# sourceMappingURL=is-valid-latency-hint.js.map","export const isAudioNode = (audioNodeOrAudioParam) => {\n return 'context' in audioNodeOrAudioParam;\n};\n//# sourceMappingURL=audio-node.js.map","import { isAudioNode } from './audio-node';\nexport const isAudioNodeOutputConnection = (outputConnection) => {\n return isAudioNode(outputConnection[0]);\n};\n//# sourceMappingURL=audio-node-output-connection.js.map","export const insertElementInSet = (set, element, predicate, ignoreDuplicates) => {\n for (const lmnt of set) {\n if (predicate(lmnt)) {\n if (ignoreDuplicates) {\n return false;\n }\n throw Error('The set contains at least one similar element.');\n }\n }\n set.add(element);\n return true;\n};\n//# sourceMappingURL=insert-element-in-set.js.map","import { insertElementInSet } from './insert-element-in-set';\nexport const addActiveInputConnectionToAudioParam = (activeInputs, source, [output, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs, [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-param.js.map","import { insertElementInSet } from './insert-element-in-set';\nexport const addPassiveInputConnectionToAudioParam = (passiveInputs, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output, ignoreDuplicates);\n }\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-param.js.map","export const isNativeAudioNodeFaker = (nativeAudioNodeOrNativeAudioNodeFaker) => {\n return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker;\n};\n//# sourceMappingURL=native-audio-node-faker.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const connectNativeAudioNodeToNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input];\n nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0);\n return [fakeNativeDestinationAudioNode, output, 0];\n }\n nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input);\n return [nativeDestinationAudioNode, output, input];\n};\n//# sourceMappingURL=connect-native-audio-node-to-native-audio-node.js.map","export const deleteActiveInputConnection = (activeInputConnections, source, output) => {\n for (const activeInputConnection of activeInputConnections) {\n if (activeInputConnection[0] === source && activeInputConnection[1] === output) {\n activeInputConnections.delete(activeInputConnection);\n return activeInputConnection;\n }\n }\n return null;\n};\n//# sourceMappingURL=delete-active-input-connection.js.map","import { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const deleteEventListenerOfAudioNode = (audioNode, eventListener) => {\n const eventListeners = getEventListenersOfAudioNode(audioNode);\n if (!eventListeners.delete(eventListener)) {\n throw new Error('Missing the expected event listener.');\n }\n};\n//# sourceMappingURL=delete-event-listeners-of-audio-node.js.map","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioParam = (passiveInputs, source, output) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-param.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const disconnectNativeAudioNodeFromNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0);\n }\n else {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input);\n }\n};\n//# sourceMappingURL=disconnect-native-audio-node-from-native-audio-node.js.map","import { AUDIO_NODE_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioNode = (audioNode) => {\n return getValueForKey(AUDIO_NODE_STORE, audioNode);\n};\n//# sourceMappingURL=get-native-audio-node.js.map","import { AUDIO_PARAM_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioParam = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_STORE, audioParam);\n};\n//# sourceMappingURL=get-native-audio-param.js.map","import { CYCLE_COUNTERS } from '../globals';\nexport const isPartOfACycle = (audioNode) => {\n return CYCLE_COUNTERS.has(audioNode);\n};\n//# sourceMappingURL=is-part-of-a-cycle.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isPassiveAudioNode = (audioNode) => {\n return !ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n};\n//# sourceMappingURL=is-passive-audio-node.js.map","export const testAudioNodeDisconnectMethodSupport = (nativeAudioContext) => {\n return new Promise((resolve) => {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1);\n const dummy = nativeAudioContext.createGain();\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n const channelData = ones.getChannelData(0);\n channelData[0] = 1;\n channelData[1] = 1;\n const source = nativeAudioContext.createBufferSource();\n source.buffer = ones;\n source.loop = true;\n source.connect(analyzer).connect(nativeAudioContext.destination);\n source.connect(dummy);\n source.disconnect(dummy);\n // tslint:disable-next-line:deprecation\n analyzer.onaudioprocess = (event) => {\n const chnnlDt = event.inputBuffer.getChannelData(0);\n if (Array.prototype.some.call(chnnlDt, (sample) => sample === 1)) {\n resolve(true);\n }\n else {\n resolve(false);\n }\n source.stop();\n analyzer.onaudioprocess = null; // tslint:disable-line:deprecation\n source.disconnect(analyzer);\n analyzer.disconnect(nativeAudioContext.destination);\n };\n source.start();\n });\n};\n//# sourceMappingURL=test-audio-node-disconnect-method-support.js.map","export const visitEachAudioNodeOnce = (cycles, visitor) => {\n const counts = new Map();\n for (const cycle of cycles) {\n for (const audioNode of cycle) {\n const count = counts.get(audioNode);\n counts.set(audioNode, count === undefined ? 1 : count + 1);\n }\n }\n counts.forEach((count, audioNode) => visitor(audioNode, count));\n};\n//# sourceMappingURL=visit-each-audio-node-once.js.map","export const isNativeAudioNode = (nativeAudioNodeOrAudioParam) => {\n return 'context' in nativeAudioNodeOrAudioParam;\n};\n//# sourceMappingURL=native-audio-node.js.map","import { AUDIO_NODE_STORE, EVENT_LISTENERS } from '../globals';\nimport { isAudioNode } from '../guards/audio-node';\nimport { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { addActiveInputConnectionToAudioParam } from '../helpers/add-active-input-connection-to-audio-param';\nimport { addPassiveInputConnectionToAudioParam } from '../helpers/add-passive-input-connection-to-audio-param';\nimport { connectNativeAudioNodeToNativeAudioNode } from '../helpers/connect-native-audio-node-to-native-audio-node';\nimport { deleteActiveInputConnection } from '../helpers/delete-active-input-connection';\nimport { deleteActiveInputConnectionToAudioParam } from '../helpers/delete-active-input-connection-to-audio-param';\nimport { deleteEventListenerOfAudioNode } from '../helpers/delete-event-listeners-of-audio-node';\nimport { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { deletePassiveInputConnectionToAudioParam } from '../helpers/delete-passive-input-connection-to-audio-param';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from '../helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from '../helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from '../helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from '../helpers/get-native-audio-node';\nimport { getNativeAudioParam } from '../helpers/get-native-audio-param';\nimport { insertElementInSet } from '../helpers/insert-element-in-set';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { isPartOfACycle } from '../helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from '../helpers/is-passive-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { testAudioNodeDisconnectMethodSupport } from '../helpers/test-audio-node-disconnect-method-support';\nimport { visitEachAudioNodeOnce } from '../helpers/visit-each-audio-node-once';\nimport { wrapAudioNodeDisconnectMethod } from '../helpers/wrap-audio-node-disconnect-method';\nconst addConnectionToAudioParamOfAudioContext = (source, destination, output, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeAudioNode = getNativeAudioNode(source);\n const nativeAudioParam = getNativeAudioParam(destination);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.connect(nativeAudioParam, output);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output);\n addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n};\nconst deleteInputConnectionOfAudioNode = (source, destination, output, input) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n return [passiveInputConnection[2], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputConnectionOfAudioParam = (source, destination, output) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n return [passiveInputConnection[1], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputsOfAudioNode = (source, isOffline, destination, output, input) => {\n const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input);\n }\n }\n if (isActiveAudioNode(destination)) {\n const { activeInputs } = getAudioNodeConnections(destination);\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n};\nconst deleteInputsOfAudioParam = (source, isOffline, destination, output) => {\n const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output);\n }\n }\n};\nconst deleteAnyConnection = (source, isOffline) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n }\n audioNodeConnectionsOfSource.outputs.clear();\n return destinations;\n};\nconst deleteConnectionAtOutput = (source, isOffline, output) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (outputConnection[1] === output) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n }\n }\n return destinations;\n};\nconst deleteConnectionToDestination = (source, isOffline, destination, output, input) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n return Array.from(audioNodeConnectionsOfSource.outputs)\n .filter((outputConnection) => outputConnection[0] === destination &&\n (output === undefined || outputConnection[1] === output) &&\n (input === undefined || outputConnection[2] === input))\n .map((outputConnection) => {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n return outputConnection[0];\n });\n};\nexport const createAudioNodeConstructor = (addAudioNodeConnections, addConnectionToAudioNode, cacheTestResult, createIncrementCycleCounter, createIndexSizeError, createInvalidAccessError, createNotSupportedError, decrementCycleCounter, detectCycles, eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext) => {\n return class AudioNode extends eventTargetConstructor {\n constructor(context, isActive, nativeAudioNode, audioNodeRenderer) {\n super(nativeAudioNode);\n this._context = context;\n this._nativeAudioNode = nativeAudioNode;\n const nativeContext = getNativeContext(context);\n // Bug #12: Safari does not support to disconnect a specific destination.\n if (isNativeAudioContext(nativeContext) &&\n true !==\n cacheTestResult(testAudioNodeDisconnectMethodSupport, () => {\n return testAudioNodeDisconnectMethodSupport(nativeContext);\n })) {\n wrapAudioNodeDisconnectMethod(nativeAudioNode);\n }\n AUDIO_NODE_STORE.set(this, nativeAudioNode);\n EVENT_LISTENERS.set(this, new Set());\n if (context.state !== 'closed' && isActive) {\n setInternalStateToActive(this);\n }\n addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode);\n }\n get channelCount() {\n return this._nativeAudioNode.channelCount;\n }\n set channelCount(value) {\n this._nativeAudioNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioNode.channelCountMode;\n }\n set channelCountMode(value) {\n this._nativeAudioNode.channelCountMode = value;\n }\n get channelInterpretation() {\n return this._nativeAudioNode.channelInterpretation;\n }\n set channelInterpretation(value) {\n this._nativeAudioNode.channelInterpretation = value;\n }\n get context() {\n return this._context;\n }\n get numberOfInputs() {\n return this._nativeAudioNode.numberOfInputs;\n }\n get numberOfOutputs() {\n return this._nativeAudioNode.numberOfOutputs;\n }\n // tslint:disable-next-line:invalid-void\n connect(destination, output = 0, input = 0) {\n // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes.\n if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) {\n throw createIndexSizeError();\n }\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) {\n throw createInvalidAccessError();\n }\n if (isAudioNode(destination)) {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n try {\n const connection = connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode, nativeDestinationAudioNode, output, input);\n const isPassive = isPassiveAudioNode(this);\n if (isOffline || isPassive) {\n this._nativeAudioNode.disconnect(...connection);\n }\n if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n catch (err) {\n // Bug #41: Safari does not throw the correct exception so far.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioNode = addConnectionToAudioNode(this, destination, output, input, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioNode) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n return destination;\n }\n const nativeAudioParam = getNativeAudioParam(destination);\n /*\n * Bug #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an\n * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify\n * Safari.\n */\n if (nativeAudioParam.name === 'playbackRate') {\n throw createNotSupportedError();\n }\n try {\n this._nativeAudioNode.connect(nativeAudioParam, output);\n if (isOffline || isPassiveAudioNode(this)) {\n this._nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n catch (err) {\n // Bug #58: Only Firefox does throw an InvalidStateError yet.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioParam) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n }\n disconnect(destinationOrOutput, output, input) {\n let destinations;\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (destinationOrOutput === undefined) {\n destinations = deleteAnyConnection(this, isOffline);\n }\n else if (typeof destinationOrOutput === 'number') {\n if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput);\n }\n else {\n if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) {\n throw createIndexSizeError();\n }\n if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input);\n if (destinations.length === 0) {\n throw createInvalidAccessError();\n }\n }\n // Bug #164: Only Firefox detects cycles so far.\n for (const destination of destinations) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, decrementCycleCounter);\n }\n }\n };\n};\n//# sourceMappingURL=audio-node-constructor.js.map","import { pickElementFromSet } from './pick-element-from-set';\nexport const deleteActiveInputConnectionToAudioParam = (activeInputs, source, output) => {\n return pickElementFromSet(activeInputs, (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-param.js.map","export class ReadOnlyMap {\n constructor(parameters) {\n this._map = new Map(parameters);\n }\n get size() {\n return this._map.size;\n }\n entries() {\n return this._map.entries();\n }\n forEach(callback, thisArg = null) {\n return this._map.forEach((value, key) => callback.call(thisArg, value, key, this));\n }\n get(name) {\n return this._map.get(name);\n }\n has(name) {\n return this._map.has(name);\n }\n keys() {\n return this._map.keys();\n }\n values() {\n return this._map.values();\n }\n}\n//# sourceMappingURL=read-only-map.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { ReadOnlyMap } from '../read-only-map';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior.\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 1,\n numberOfOutputs: 1,\n parameterData: {},\n processorOptions: {}\n};\nexport const createAudioWorkletNodeConstructor = (addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, wrapEventListener) => {\n return class AudioWorkletNode extends audioNodeConstructor {\n constructor(context, name, options) {\n var _a;\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS, ...options });\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap === null || nodeNameToProcessorConstructorMap === void 0 ? void 0 : nodeNameToProcessorConstructorMap.get(name);\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const nativeContextOrBackupOfflineAudioContext = isOffline || nativeContext.state !== 'closed'\n ? nativeContext\n : (_a = getBackupOfflineAudioContext(nativeContext)) !== null && _a !== void 0 ? _a : nativeContext;\n const nativeAudioWorkletNode = createNativeAudioWorkletNode(nativeContextOrBackupOfflineAudioContext, isOffline ? null : context.baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, mergedOptions);\n const audioWorkletNodeRenderer = ((isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null));\n /*\n * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor\n * returns false.\n */\n super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer);\n const parameters = [];\n nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => {\n const audioParam = createAudioParam(this, isOffline, nativeAudioParam);\n parameters.push([nm, audioParam]);\n });\n this._nativeAudioWorkletNode = nativeAudioWorkletNode;\n this._onprocessorerror = null;\n this._parameters = new ReadOnlyMap(parameters);\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to\n * the destination.\n */\n if (isOffline) {\n addUnrenderedAudioWorkletNode(nativeContext, this);\n }\n const { activeInputs } = getAudioNodeConnections(this);\n setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs);\n }\n get onprocessorerror() {\n return this._onprocessorerror;\n }\n set onprocessorerror(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioWorkletNode.onprocessorerror = wrappedListener;\n const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror;\n this._onprocessorerror =\n nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener\n ? value\n : nativeOnProcessorError;\n }\n get parameters() {\n if (this._parameters === null) {\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n return this._nativeAudioWorkletNode.parameters;\n }\n return this._parameters;\n }\n get port() {\n return this._nativeAudioWorkletNode.port;\n }\n };\n};\n//# sourceMappingURL=audio-worklet-node-constructor.js.map","export function copyFromChannel(audioBuffer, \n// @todo There is currently no way to define something like { [ key: number | string ]: Float32Array }\nparent, key, channelNumber, bufferOffset) {\n if (typeof audioBuffer.copyFromChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = new Float32Array(128);\n }\n audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset);\n // Bug #5: Safari does not support copyFromChannel().\n }\n else {\n const channelData = audioBuffer.getChannelData(channelNumber);\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = channelData.slice(bufferOffset, bufferOffset + 128);\n }\n else {\n const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128);\n parent[key].set(slicedInput);\n }\n }\n}\n//# sourceMappingURL=copy-from-channel.js.map","export const copyToChannel = (audioBuffer, parent, key, channelNumber, bufferOffset) => {\n if (typeof audioBuffer.copyToChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset);\n }\n // Bug #5: Safari does not support copyToChannel().\n }\n else {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset);\n }\n }\n};\n//# sourceMappingURL=copy-to-channel.js.map","export const createNestedArrays = (x, y) => {\n const arrays = [];\n for (let i = 0; i < x; i += 1) {\n const array = [];\n const length = typeof y === 'number' ? y : y[i];\n for (let j = 0; j < length; j += 1) {\n array.push(new Float32Array(128));\n }\n arrays.push(array);\n }\n return arrays;\n};\n//# sourceMappingURL=create-nested-arrays.js.map","import { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioWorkletProcessor } from '../helpers/get-audio-worklet-processor';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nconst processBuffer = async (proxy, renderedBuffer, nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime) => {\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length;\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const processedBuffer = numberOfOutputChannels === 0\n ? null\n : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate);\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n const audioNodeConnections = getAudioNodeConnections(proxy);\n const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy);\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = Array.from(proxy.parameters.keys()).reduce((prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n for (let i = 0; i < length; i += 128) {\n if (options.numberOfInputs > 0 && renderedBuffer !== null) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(renderedBuffer, inputs[j], k, k, i);\n }\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n if (audioNodeConnections.activeInputs[index].size === 0) {\n return [];\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(i / nativeOfflineAudioContext.sampleRate, nativeOfflineAudioContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n if (processedBuffer !== null) {\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n if (!activeSourceFlag) {\n break;\n }\n }\n catch (error) {\n proxy.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n break;\n }\n }\n return processedBuffer;\n};\nexport const createAudioWorkletNodeRendererFactory = (connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return (name, options, processorConstructor) => {\n const renderedNativeAudioNodes = new WeakMap();\n let processedBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAudioWorkletNode = getNativeAudioNode(proxy);\n let nativeOutputNodes = null;\n const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext);\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // Bug #61: Only Chrome, Edge, Firefox & Opera have an implementation of the AudioWorkletNode yet.\n if (nativeAudioWorkletNodeConstructor === null) {\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < proxy.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n });\n outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes);\n outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes);\n nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode];\n }\n else if (!nativeAudioWorkletNodeIsOwnedByContext) {\n nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]);\n if (nativeOutputNodes !== null) {\n if (processedBufferPromise === null) {\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs;\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n const numberOfChannels = numberOfInputChannels + numberOfParameters;\n const renderBuffer = async () => {\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(numberOfChannels, \n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n Math.ceil(proxy.context.length / 128) * 128, nativeOfflineAudioContext.sampleRate);\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = await Promise.all(Array.from(proxy.parameters.values()).map(async (audioParam) => {\n const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: audioParam.value\n });\n await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset, trace);\n return constantSourceNode;\n }));\n const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n for (const [index, constantSourceNode] of constantSourceNodes.entries()) {\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n }\n inputChannelMergerNode.connect(partialOfflineAudioContext.destination);\n await Promise.all(gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode, trace)));\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n };\n processedBufferPromise = processBuffer(proxy, numberOfChannels === 0 ? null : await renderBuffer(), nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime);\n }\n const processedBuffer = await processedBufferPromise;\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes;\n if (processedBuffer !== null) {\n audioBufferSourceNode.buffer = processedBuffer;\n audioBufferSourceNode.start(0);\n }\n audioBufferSourceNode.connect(outputChannelSplitterNode);\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n return outputGainNode;\n }\n if (!nativeAudioWorkletNodeIsOwnedByContext) {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await renderAutomation(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm), trace);\n }\n }\n else {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await connectAudioParam(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm), trace);\n }\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode, trace);\n return nativeAudioWorkletNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy);\n const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) {\n return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=audio-worklet-node-renderer-factory.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { getNativeAudioNode } from './get-native-audio-node';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioWorkletProcessor = (nativeOfflineAudioContext, proxy) => {\n const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext);\n const nativeAudioWorkletNode = getNativeAudioNode(proxy);\n return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-audio-worklet-processor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n Q: 1,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 350,\n gain: 0,\n type: 'lowpass'\n};\nexport const createBiquadFilterNodeConstructor = (audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class BiquadFilterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const biquadFilterNodeRenderer = (isOffline ? createBiquadFilterNodeRenderer() : null);\n super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer);\n // Bug #80: Safari does not export the correct values for maxValue and minValue.\n this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeBiquadFilterNode.detune, 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT), -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT));\n // Bug #77: Firefox & Safari do not export the correct value for minValue.\n this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0);\n // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeBiquadFilterNode.gain, 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT), MOST_NEGATIVE_SINGLE_FLOAT);\n this._nativeBiquadFilterNode = nativeBiquadFilterNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get detune() {\n return this._detune;\n }\n get frequency() {\n return this._frequency;\n }\n get gain() {\n return this._gain;\n }\n get Q() {\n return this._Q;\n }\n get type() {\n return this._nativeBiquadFilterNode.type;\n }\n set type(value) {\n this._nativeBiquadFilterNode.type = value;\n }\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n // Bug #189: Safari does throw an InvalidStateError.\n try {\n this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n catch (err) {\n if (err.code === 11) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n // Bug #68: Safari does not throw an error if the parameters differ in their length.\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n }\n };\n};\n//# sourceMappingURL=biquad-filter-node-constructor.js.map","const DEFAULT_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n};\nexport const createChannelMergerNodeConstructor = (audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class ChannelMergerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions);\n const channelMergerNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null));\n super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer);\n }\n };\n};\n//# sourceMappingURL=channel-merger-node-constructor.js.map","const DEFAULT_OPTIONS = {\n channelCount: 6,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 6\n};\nexport const createChannelSplitterNodeConstructor = (audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions) => {\n return class ChannelSplitterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS, ...options });\n const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions);\n const channelSplitterNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null));\n super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer);\n }\n };\n};\n//# sourceMappingURL=channel-splitter-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n offset: 1\n};\nexport const createConstantSourceNodeConstructor = (audioNodeConstructor, createAudioParam, createConstantSourceNodeRendererFactory, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class ConstantSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const constantSourceNodeRenderer = ((isOffline ? createConstantSourceNodeRendererFactory() : null));\n super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer);\n this._constantSourceNodeRenderer = constantSourceNodeRenderer;\n this._nativeConstantSourceNode = nativeConstantSourceNode;\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue\n * for GainNodes.\n */\n this._offset = createAudioParam(this, isOffline, nativeConstantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._onended = null;\n }\n get offset() {\n return this._offset;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeConstantSourceNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeConstantSourceNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n start(when = 0) {\n this._nativeConstantSourceNode.start(when);\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.start = when;\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeConstantSourceNode.stop(when);\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=constant-source-node-constructor.js.map","const DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n disableNormalization: false\n};\nexport const createConvolverNodeConstructor = (audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class ConvolverNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const convolverNodeRenderer = (isOffline ? createConvolverNodeRenderer() : null);\n super(context, false, nativeConvolverNode, convolverNodeRenderer);\n this._isBufferNullified = false;\n this._nativeConvolverNode = nativeConvolverNode;\n if (mergedOptions.buffer !== null) {\n setAudioNodeTailTime(this, mergedOptions.buffer.duration);\n }\n }\n get buffer() {\n if (this._isBufferNullified) {\n return null;\n }\n return this._nativeConvolverNode.buffer;\n }\n set buffer(value) {\n this._nativeConvolverNode.buffer = value;\n // Bug #115: Safari does not allow to set the buffer to null.\n if (value === null && this._nativeConvolverNode.buffer !== null) {\n const nativeContext = this._nativeConvolverNode.context;\n this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, 44100);\n this._isBufferNullified = true;\n setAudioNodeTailTime(this, 0);\n }\n else {\n this._isBufferNullified = false;\n setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration);\n }\n }\n get normalize() {\n return this._nativeConvolverNode.normalize;\n }\n set normalize(value) {\n this._nativeConvolverNode.normalize = value;\n }\n };\n};\n//# sourceMappingURL=convolver-node-constructor.js.map","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n delayTime: 0,\n maxDelayTime: 1\n};\nexport const createDelayNodeConstructor = (audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class DelayNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const delayNodeRenderer = (isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null);\n super(context, false, nativeDelayNode, delayNodeRenderer);\n this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime);\n setAudioNodeTailTime(this, mergedOptions.maxDelayTime);\n }\n get delayTime() {\n return this._delayTime;\n }\n };\n};\n//# sourceMappingURL=delay-node-constructor.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nconst getOutputAudioNodeAtIndex = (createIndexSizeError, outputAudioNodes, output) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n return outputAudioNode;\n};\nexport const createDisconnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => {\n if (destinationOrOutput === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect());\n }\n if (typeof destinationOrOutput === 'number') {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect();\n }\n if (isNativeAudioNode(destinationOrOutput)) {\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n if (input === undefined) {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input);\n }\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n };\n};\n//# sourceMappingURL=disconnect-multiple-outputs.js.map","const DEFAULT_OPTIONS = {\n attack: 0.003,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n knee: 30,\n ratio: 12,\n release: 0.25,\n threshold: -24\n};\nexport const createDynamicsCompressorNodeConstructor = (audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class DynamicsCompressorNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const dynamicsCompressorNodeRenderer = (isOffline ? createDynamicsCompressorNodeRenderer() : null);\n super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer);\n this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack);\n this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee);\n this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode;\n this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio);\n this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release);\n this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold);\n setAudioNodeTailTime(this, 0.006);\n }\n get attack() {\n return this._attack;\n }\n // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here.\n get channelCount() {\n return this._nativeDynamicsCompressorNode.channelCount;\n }\n set channelCount(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount;\n this._nativeDynamicsCompressorNode.channelCount = value;\n if (value > 2) {\n this._nativeDynamicsCompressorNode.channelCount = previousChannelCount;\n throw createNotSupportedError();\n }\n }\n /*\n * Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be\n * overwritten here.\n */\n get channelCountMode() {\n return this._nativeDynamicsCompressorNode.channelCountMode;\n }\n set channelCountMode(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode;\n this._nativeDynamicsCompressorNode.channelCountMode = value;\n if (value === 'max') {\n this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount;\n throw createNotSupportedError();\n }\n }\n get knee() {\n return this._knee;\n }\n get ratio() {\n return this._ratio;\n }\n get reduction() {\n // Bug #111: Safari returns an AudioParam instead of a number.\n if (typeof this._nativeDynamicsCompressorNode.reduction.value === 'number') {\n return this._nativeDynamicsCompressorNode.reduction.value;\n }\n return this._nativeDynamicsCompressorNode.reduction;\n }\n get release() {\n return this._release;\n }\n get threshold() {\n return this._threshold;\n }\n };\n};\n//# sourceMappingURL=dynamics-compressor-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n gain: 1\n};\nexport const createGainNodeConstructor = (audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class GainNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const gainNodeRenderer = (isOffline ? createGainNodeRenderer() : null);\n super(context, false, nativeGainNode, gainNodeRenderer);\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n get gain() {\n return this._gain;\n }\n };\n};\n//# sourceMappingURL=gain-node-constructor.js.map","export const createInvalidStateError = () => new DOMException('', 'InvalidStateError');\n//# sourceMappingURL=invalid-state-error.js.map","export const createInvalidAccessError = () => new DOMException('', 'InvalidAccessError');\n//# sourceMappingURL=invalid-access-error.js.map","import { wrapIIRFilterNodeGetFrequencyResponseMethod } from '../helpers/wrap-iir-filter-node-get-frequency-response-method';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers'\n};\nexport const createIIRFilterNodeConstructor = (audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class IIRFilterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeIIRFilterNode = createNativeIIRFilterNode(nativeContext, isOffline ? null : context.baseLatency, mergedOptions);\n const iirFilterNodeRenderer = ((isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null));\n super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer);\n // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError.\n // @todo Write a test which allows other browsers to remain unpatched.\n wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode);\n this._nativeIIRFilterNode = nativeIIRFilterNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n };\n};\n//# sourceMappingURL=iir-filter-node-constructor.js.map","// This implementation as shamelessly inspired by source code of\n// tslint:disable-next-line:max-line-length\n// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}.\nexport const filterBuffer = (feedback, feedbackLength, feedforward, feedforwardLength, minLength, xBuffer, yBuffer, bufferIndex, bufferLength, input, output) => {\n const inputLength = input.length;\n let i = bufferIndex;\n for (let j = 0; j < inputLength; j += 1) {\n let y = feedforward[0] * input[j];\n for (let k = 1; k < minLength; k += 1) {\n const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n y += feedforward[k] * xBuffer[x];\n y -= feedback[k] * yBuffer[x];\n }\n for (let k = minLength; k < feedforwardLength; k += 1) {\n y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n for (let k = minLength; k < feedbackLength; k += 1) {\n y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n xBuffer[i] = input[j];\n yBuffer[i] = y;\n i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n output[j] = y;\n }\n return i;\n};\n//# sourceMappingURL=filter-buffer.js.map","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers'\n};\nexport const createMediaStreamAudioDestinationNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaStreamAudioDestinationNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions);\n super(context, false, nativeMediaStreamAudioDestinationNode, null);\n this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode;\n }\n get stream() {\n return this._nativeMediaStreamAudioDestinationNode.stream;\n }\n };\n};\n//# sourceMappingURL=media-stream-audio-destination-node-constructor.js.map","export const testPromiseSupport = (nativeContext) => {\n // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample.\n const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]);\n try {\n // Bug #1: Safari requires a successCallback.\n const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => {\n // Ignore the success callback.\n });\n if (promise === undefined) {\n return false;\n }\n promise.catch(() => {\n // Ignore rejected errors.\n });\n return true;\n }\n catch {\n // Ignore errors.\n }\n return false;\n};\n//# sourceMappingURL=test-promise-support.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createMinimalOfflineAudioContextConstructor = (cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, minimalBaseAudioContextConstructor, startRendering) => {\n return class MinimalOfflineAudioContext extends minimalBaseAudioContextConstructor {\n constructor(options) {\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener('statechange', (() => {\n let i = 0;\n const delayStateChangeEvent = (event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n this._waitForThePromiseToSettle(event);\n }\n else {\n i += 1;\n }\n }\n };\n return delayStateChangeEvent;\n })());\n }\n super(nativeOfflineAudioContext, numberOfChannels);\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n get length() {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n return this._nativeOfflineAudioContext.length;\n }\n get state() {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n startRendering() {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n this._state = 'running';\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n deactivateAudioGraph(this);\n });\n }\n _waitForThePromiseToSettle(event) {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n }\n else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n//# sourceMappingURL=minimal-offline-audio-context-constructor.js.map","export const assignNativeAudioNodeOption = (nativeAudioNode, options, option) => {\n const value = options[option];\n if (value !== undefined && value !== nativeAudioNode[option]) {\n nativeAudioNode[option] = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-option.js.map","import { assignNativeAudioNodeOption } from './assign-native-audio-node-option';\nexport const assignNativeAudioNodeOptions = (nativeAudioNode, options) => {\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation');\n};\n//# sourceMappingURL=assign-native-audio-node-options.js.map","export const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode) => {\n return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function';\n};\n//# sourceMappingURL=test-analyser-node-get-float-time-domain-data-method-support.js.map","export const assignNativeAudioNodeAudioParamValue = (nativeAudioNode, options, audioParam) => {\n const value = options[audioParam];\n if (value !== undefined && value !== nativeAudioNode[audioParam].value) {\n nativeAudioNode[audioParam].value = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-audio-param-value.js.map","export const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) {\n throw new RangeError(\"The parameters can't be negative.\");\n }\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n start.call(nativeAudioScheduledSourceNode, when, offset, duration);\n };\n })(nativeAudioScheduledSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-start-method-negative-parameters.js.map","export const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n return (when = 0) => {\n if (when < 0) {\n throw new RangeError(\"The parameter can't be negative.\");\n }\n stop.call(nativeAudioScheduledSourceNode, when);\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-negative-parameters.js.map","export const computeBufferSize = (baseLatency, sampleRate) => {\n if (baseLatency === null) {\n return 512;\n }\n return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate)))));\n};\n//# sourceMappingURL=compute-buffer-size.js.map","import { cloneAudioWorkletNodeOptions } from './clone-audio-worklet-node-options';\nexport const createAudioWorkletProcessorPromise = async (processorConstructor, audioWorkletNodeOptions) => {\n const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions);\n return new processorConstructor(clonedAudioWorkletNodeOptions);\n};\n//# sourceMappingURL=create-audio-worklet-processor-promise.js.map","export const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = ({ data }) => {\n port1.close();\n port2.close();\n resolve(data);\n };\n port1.onmessageerror = ({ data }) => {\n port1.close();\n port2.close();\n reject(data);\n };\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port2.postMessage(audioWorkletNodeOptions);\n });\n};\n//# sourceMappingURL=clone-audio-worklet-node-options.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeBiquadFilterNode = (nativeContext, options) => {\n const nativeBiquadFilterNode = nativeContext.createBiquadFilter();\n assignNativeAudioNodeOptions(nativeBiquadFilterNode, options);\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain');\n assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type');\n return nativeBiquadFilterNode;\n};\n//# sourceMappingURL=native-biquad-filter-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapChannelSplitterNode } from '../helpers/wrap-channel-splitter-node';\nexport const createNativeChannelSplitterNode = (nativeContext, options) => {\n const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs);\n // Bug #96: Safari does not have the correct channelCount.\n // Bug #29: Safari does not have the correct channelCountMode.\n // Bug #31: Safari does not have the correct channelInterpretation.\n assignNativeAudioNodeOptions(nativeChannelSplitterNode, options);\n // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge, Firefox & Opera partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n return nativeChannelSplitterNode;\n};\n//# sourceMappingURL=native-channel-splitter-node.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapChannelSplitterNode = (channelSplitterNode) => {\n const channelCount = channelSplitterNode.numberOfOutputs;\n // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value.\n Object.defineProperty(channelSplitterNode, 'channelCount', {\n get: () => channelCount,\n set: (value) => {\n if (value !== channelCount) {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit.\n Object.defineProperty(channelSplitterNode, 'channelCountMode', {\n get: () => 'explicit',\n set: (value) => {\n if (value !== 'explicit') {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete.\n Object.defineProperty(channelSplitterNode, 'channelInterpretation', {\n get: () => 'discrete',\n set: (value) => {\n if (value !== 'discrete') {\n throw createInvalidStateError();\n }\n }\n });\n};\n//# sourceMappingURL=wrap-channel-splitter-node.js.map","export const interceptConnections = (original, interceptor) => {\n original.connect = interceptor.connect.bind(interceptor);\n original.disconnect = interceptor.disconnect.bind(interceptor);\n return original;\n};\n//# sourceMappingURL=intercept-connections.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeDelayNode = (nativeContext, options) => {\n const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime);\n assignNativeAudioNodeOptions(nativeDelayNode, options);\n assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime');\n return nativeDelayNode;\n};\n//# sourceMappingURL=native-delay-node.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeGainNode = (nativeContext, options) => {\n const nativeGainNode = nativeContext.createGain();\n assignNativeAudioNodeOptions(nativeGainNode, options);\n assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain');\n return nativeGainNode;\n};\n//# sourceMappingURL=native-gain-node.js.map","import { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { filterBuffer } from '../helpers/filter-buffer';\nimport { interceptConnections } from '../helpers/intercept-connections';\nfunction divide(a, b) {\n const denominator = b[0] * b[0] + b[1] * b[1];\n return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator];\n}\nfunction multiply(a, b) {\n return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]];\n}\nfunction evaluatePolynomial(coefficient, z) {\n let result = [0, 0];\n for (let i = coefficient.length - 1; i >= 0; i -= 1) {\n result = multiply(result, z);\n result[0] += coefficient[i];\n }\n return result;\n}\nexport const createNativeIIRFilterNodeFakerFactory = (createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError) => {\n return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => {\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n if (feedbackLength === 0 || feedbackLength > 20) {\n throw createNotSupportedError();\n }\n if (convertedFeedback[0] === 0) {\n throw createInvalidStateError();\n }\n if (feedforwardLength === 0 || feedforwardLength > 20) {\n throw createNotSupportedError();\n }\n if (convertedFeedforward[0] === 0) {\n throw createInvalidStateError();\n }\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedforwardLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n for (let i = 1; i < feedbackLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount);\n scriptProcessorNode.channelCount = channelCount;\n scriptProcessorNode.channelCountMode = channelCountMode;\n scriptProcessorNode.channelInterpretation = channelInterpretation;\n const bufferLength = 32;\n const bufferIndexes = [];\n const xBuffers = [];\n const yBuffers = [];\n for (let i = 0; i < channelCount; i += 1) {\n bufferIndexes.push(0);\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n xBuffer.fill(0);\n yBuffer.fill(0);\n xBuffers.push(xBuffer);\n yBuffers.push(yBuffer);\n }\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = (event) => {\n const inputBuffer = event.inputBuffer;\n const outputBuffer = event.outputBuffer;\n const numberOfChannels = inputBuffer.numberOfChannels;\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = inputBuffer.getChannelData(i);\n const output = outputBuffer.getChannelData(i);\n bufferIndexes[i] = filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffers[i], yBuffers[i], bufferIndexes[i], bufferLength, input, output);\n }\n };\n const nyquist = nativeContext.sampleRate / 2;\n const nativeIIRFilterNodeFaker = {\n get bufferSize() {\n return bufferSize;\n },\n get channelCount() {\n return scriptProcessorNode.channelCount;\n },\n set channelCount(value) {\n scriptProcessorNode.channelCount = value;\n },\n get channelCountMode() {\n return scriptProcessorNode.channelCountMode;\n },\n set channelCountMode(value) {\n scriptProcessorNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return scriptProcessorNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n scriptProcessorNode.channelInterpretation = value;\n },\n get context() {\n return scriptProcessorNode.context;\n },\n get inputs() {\n return [scriptProcessorNode];\n },\n get numberOfInputs() {\n return scriptProcessorNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return scriptProcessorNode.numberOfOutputs;\n },\n addEventListener(...args) {\n // @todo Dissallow adding an audioprocess listener.\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n const length = frequencyHz.length;\n for (let i = 0; i < length; i += 1) {\n const omega = -Math.PI * (frequencyHz[i] / nyquist);\n const z = [Math.cos(omega), Math.sin(omega)];\n const numerator = evaluatePolynomial(convertedFeedforward, z);\n const denominator = evaluatePolynomial(convertedFeedback, z);\n const response = divide(numerator, denominator);\n magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]);\n phaseResponse[i] = Math.atan2(response[1], response[0]);\n }\n },\n removeEventListener(...args) {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode);\n };\n};\n//# sourceMappingURL=native-iir-filter-node-faker-factory.js.map","export const createNativeScriptProcessorNode = (nativeContext, bufferSize, numberOfInputChannels, numberOfOutputChannels) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels);\n};\n//# sourceMappingURL=native-script-processor-node.js.map","export const createNotSupportedError = () => new DOMException('', 'NotSupportedError');\n//# sourceMappingURL=not-supported-error.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createOfflineAudioContextConstructor = (baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering) => {\n return class OfflineAudioContext extends baseAudioContextConstructor {\n constructor(a, b, c) {\n let options;\n if (typeof a === 'number' && b !== undefined && c !== undefined) {\n options = { length: b, numberOfChannels: a, sampleRate: c };\n }\n else if (typeof a === 'object') {\n options = a;\n }\n else {\n throw new Error('The given parameters are not valid.');\n }\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener('statechange', (() => {\n let i = 0;\n const delayStateChangeEvent = (event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n this._waitForThePromiseToSettle(event);\n }\n else {\n i += 1;\n }\n }\n };\n return delayStateChangeEvent;\n })());\n }\n super(nativeOfflineAudioContext, numberOfChannels);\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n get length() {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n return this._nativeOfflineAudioContext.length;\n }\n get state() {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n startRendering() {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n this._state = 'running';\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n deactivateAudioGraph(this);\n });\n }\n _waitForThePromiseToSettle(event) {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n }\n else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n//# sourceMappingURL=offline-audio-context-constructor.js.map","import { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 440,\n periodicWave: undefined,\n type: 'sine'\n};\nexport const createOscillatorNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class OscillatorNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const oscillatorNodeRenderer = (isOffline ? createOscillatorNodeRenderer() : null);\n const nyquist = context.sampleRate / 2;\n super(context, false, nativeOscillatorNode, oscillatorNodeRenderer);\n // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600);\n // Bug #76: Safari does not export the correct values for maxValue and minValue.\n this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist);\n this._nativeOscillatorNode = nativeOscillatorNode;\n this._onended = null;\n this._oscillatorNodeRenderer = oscillatorNodeRenderer;\n if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) {\n this._oscillatorNodeRenderer.periodicWave =\n mergedOptions.periodicWave;\n }\n }\n get detune() {\n return this._detune;\n }\n get frequency() {\n return this._frequency;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeOscillatorNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeOscillatorNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n get type() {\n return this._nativeOscillatorNode.type;\n }\n set type(value) {\n this._nativeOscillatorNode.type = value;\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = null;\n }\n }\n setPeriodicWave(periodicWave) {\n this._nativeOscillatorNode.setPeriodicWave(periodicWave);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = periodicWave;\n }\n }\n start(when = 0) {\n this._nativeOscillatorNode.start(when);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.start = when;\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeOscillatorNode.stop(when);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=oscillator-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n distanceModel: 'inverse',\n maxDistance: 10000,\n orientationX: 1,\n orientationY: 0,\n orientationZ: 0,\n panningModel: 'equalpower',\n positionX: 0,\n positionY: 0,\n positionZ: 0,\n refDistance: 1,\n rolloffFactor: 1\n};\nexport const createPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class PannerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const pannerNodeRenderer = (isOffline ? createPannerNodeRenderer() : null);\n super(context, false, nativePannerNode, pannerNodeRenderer);\n this._nativePannerNode = nativePannerNode;\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._orientationX = createAudioParam(this, isOffline, nativePannerNode.orientationX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._orientationY = createAudioParam(this, isOffline, nativePannerNode.orientationY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._orientationZ = createAudioParam(this, isOffline, nativePannerNode.orientationZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionX = createAudioParam(this, isOffline, nativePannerNode.positionX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionY = createAudioParam(this, isOffline, nativePannerNode.positionY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionZ = createAudioParam(this, isOffline, nativePannerNode.positionZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get coneInnerAngle() {\n return this._nativePannerNode.coneInnerAngle;\n }\n set coneInnerAngle(value) {\n this._nativePannerNode.coneInnerAngle = value;\n }\n get coneOuterAngle() {\n return this._nativePannerNode.coneOuterAngle;\n }\n set coneOuterAngle(value) {\n this._nativePannerNode.coneOuterAngle = value;\n }\n get coneOuterGain() {\n return this._nativePannerNode.coneOuterGain;\n }\n set coneOuterGain(value) {\n this._nativePannerNode.coneOuterGain = value;\n }\n get distanceModel() {\n return this._nativePannerNode.distanceModel;\n }\n set distanceModel(value) {\n this._nativePannerNode.distanceModel = value;\n }\n get maxDistance() {\n return this._nativePannerNode.maxDistance;\n }\n set maxDistance(value) {\n this._nativePannerNode.maxDistance = value;\n }\n get orientationX() {\n return this._orientationX;\n }\n get orientationY() {\n return this._orientationY;\n }\n get orientationZ() {\n return this._orientationZ;\n }\n get panningModel() {\n return this._nativePannerNode.panningModel;\n }\n set panningModel(value) {\n this._nativePannerNode.panningModel = value;\n }\n get positionX() {\n return this._positionX;\n }\n get positionY() {\n return this._positionY;\n }\n get positionZ() {\n return this._positionZ;\n }\n get refDistance() {\n return this._nativePannerNode.refDistance;\n }\n set refDistance(value) {\n this._nativePannerNode.refDistance = value;\n }\n get rolloffFactor() {\n return this._nativePannerNode.rolloffFactor;\n }\n set rolloffFactor(value) {\n this._nativePannerNode.rolloffFactor = value;\n }\n };\n};\n//# sourceMappingURL=panner-node-constructor.js.map","const DEFAULT_OPTIONS = {\n disableNormalization: false\n};\nexport const createPeriodicWaveConstructor = (createNativePeriodicWave, getNativeContext, periodicWaveStore, sanitizePeriodicWaveOptions) => {\n return class PeriodicWave {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS, ...options });\n const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions);\n periodicWaveStore.add(periodicWave);\n // This does violate all good pratices but it is used here to simplify the handling of periodic waves.\n return periodicWave;\n }\n static [Symbol.hasInstance](instance) {\n return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) ||\n periodicWaveStore.has(instance));\n }\n };\n};\n//# sourceMappingURL=periodic-wave-constructor.js.map","const DEFAULT_OPTIONS = {\n channelCount: 2,\n /*\n * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent\n * behavior.\n */\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n pan: 0\n};\nexport const createStereoPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext) => {\n return class StereoPannerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const stereoPannerNodeRenderer = (isOffline ? createStereoPannerNodeRenderer() : null);\n super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer);\n this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan);\n }\n get pan() {\n return this._pan;\n }\n };\n};\n//# sourceMappingURL=stereo-panner-node-constructor.js.map","export const createUnknownError = () => new DOMException('', 'UnknownError');\n//# sourceMappingURL=unknown-error.js.map","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n curve: null,\n oversample: 'none'\n};\nexport const createWaveShaperNodeConstructor = (audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class WaveShaperNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const waveShaperNodeRenderer = (isOffline ? createWaveShaperNodeRenderer() : null);\n // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected.\n super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer);\n this._isCurveNullified = false;\n this._nativeWaveShaperNode = nativeWaveShaperNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get curve() {\n if (this._isCurveNullified) {\n return null;\n }\n return this._nativeWaveShaperNode.curve;\n }\n set curve(value) {\n // Bug #103: Safari does not allow to set the curve to null.\n if (value === null) {\n this._isCurveNullified = true;\n this._nativeWaveShaperNode.curve = new Float32Array([0, 0]);\n }\n else {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (value.length < 2) {\n throw createInvalidStateError();\n }\n this._isCurveNullified = false;\n this._nativeWaveShaperNode.curve = value;\n }\n }\n get oversample() {\n return this._nativeWaveShaperNode.oversample;\n }\n set oversample(value) {\n this._nativeWaveShaperNode.oversample = value;\n }\n };\n};\n//# sourceMappingURL=wave-shaper-node-constructor.js.map","export const isDCCurve = (curve) => {\n if (curve === null) {\n return false;\n }\n const length = curve.length;\n if (length % 2 !== 0) {\n return curve[Math.floor(length / 2)] !== 0;\n }\n return curve[length / 2 - 1] + curve[length / 2] !== 0;\n};\n//# sourceMappingURL=is-dc-curve.js.map","export const overwriteAccessors = (object, property, createGetter, createSetter) => {\n let prototype = Object.getPrototypeOf(object);\n while (!prototype.hasOwnProperty(property)) {\n prototype = Object.getPrototypeOf(prototype);\n }\n const { get, set } = Object.getOwnPropertyDescriptor(prototype, property);\n Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) });\n};\n//# sourceMappingURL=overwrite-accessors.js.map","export const setValueAtTimeUntilPossible = (audioParam, value, startTime) => {\n try {\n audioParam.setValueAtTime(value, startTime);\n }\n catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7);\n }\n};\n//# sourceMappingURL=set-value-at-time-until-possible.js.map","export const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.start(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-start-method-negative-parameters-support.js.map","export const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.start();\n nativeAudioBufferSourceNode.stop();\n try {\n nativeAudioBufferSourceNode.stop();\n return true;\n }\n catch {\n return false;\n }\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js.map","export const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.stop(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-negative-parameters-support.js.map","/*\n * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to\n * test it's used here as a placeholder.\n *\n * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException.\n *\n * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context.\n *\n * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'.\n *\n * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode.\n *\n * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode.\n *\n * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null.\n *\n * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed.\n *\n * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context.\n *\n * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode.\n *\n * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode.\n *\n * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode.\n *\n * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero.\n *\n * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode.\n */\nexport const testDomExceptionConstructorSupport = () => {\n try {\n new DOMException(); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-dom-exception-constructor-support.js.map","// Safari at version 11 did not support transferables.\nexport const testTransferablesSupport = () => new Promise((resolve) => {\n const arrayBuffer = new ArrayBuffer(0);\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = ({ data }) => resolve(data !== null);\n port2.postMessage(arrayBuffer, [arrayBuffer]);\n});\n//# sourceMappingURL=test-transferables-support.js.map","import { interceptConnections } from './intercept-connections';\nexport const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls = (nativeAudioScheduledSourceNode, nativeContext) => {\n const nativeGainNode = nativeContext.createGain();\n nativeAudioScheduledSourceNode.connect(nativeGainNode);\n const disconnectGainNode = ((disconnect) => {\n return () => {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode);\n };\n })(nativeAudioScheduledSourceNode.disconnect);\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode);\n interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n let isStopped = false;\n return (when = 0) => {\n if (isStopped) {\n try {\n stop.call(nativeAudioScheduledSourceNode, when);\n }\n catch {\n nativeGainNode.gain.setValueAtTime(0, when);\n }\n }\n else {\n stop.call(nativeAudioScheduledSourceNode, when);\n isStopped = true;\n }\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js.map","export const wrapEventListener = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n return eventListener.handleEvent.call(target, event);\n };\n};\n//# sourceMappingURL=wrap-event-listener.js.map","import { createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent } from 'automation-events';\nimport { createAbortError } from './factories/abort-error';\nimport { createAddActiveInputConnectionToAudioNode } from './factories/add-active-input-connection-to-audio-node';\nimport { createAddAudioNodeConnections } from './factories/add-audio-node-connections';\nimport { createAddAudioParamConnections } from './factories/add-audio-param-connections';\nimport { createAddAudioWorkletModule } from './factories/add-audio-worklet-module';\nimport { createAddConnectionToAudioNode } from './factories/add-connection-to-audio-node';\nimport { createAddPassiveInputConnectionToAudioNode } from './factories/add-passive-input-connection-to-audio-node';\nimport { createAddSilentConnection } from './factories/add-silent-connection';\nimport { createAddUnrenderedAudioWorkletNode } from './factories/add-unrendered-audio-worklet-node';\nimport { createAnalyserNodeConstructor } from './factories/analyser-node-constructor';\nimport { createAnalyserNodeRendererFactory } from './factories/analyser-node-renderer-factory';\nimport { createAudioBufferConstructor } from './factories/audio-buffer-constructor';\nimport { createAudioBufferSourceNodeConstructor } from './factories/audio-buffer-source-node-constructor';\nimport { createAudioBufferSourceNodeRendererFactory } from './factories/audio-buffer-source-node-renderer-factory';\nimport { createAudioContextConstructor } from './factories/audio-context-constructor';\nimport { createAudioDestinationNodeConstructor } from './factories/audio-destination-node-constructor';\nimport { createAudioDestinationNodeRenderer } from './factories/audio-destination-node-renderer-factory';\nimport { createAudioListenerFactory } from './factories/audio-listener-factory';\nimport { createAudioNodeConstructor } from './factories/audio-node-constructor';\nimport { createAudioParamFactory } from './factories/audio-param-factory';\nimport { createAudioParamRenderer } from './factories/audio-param-renderer';\nimport { createAudioWorkletNodeConstructor } from './factories/audio-worklet-node-constructor';\nimport { createAudioWorkletNodeRendererFactory } from './factories/audio-worklet-node-renderer-factory';\nimport { createBaseAudioContextConstructor } from './factories/base-audio-context-constructor';\nimport { createBiquadFilterNodeConstructor } from './factories/biquad-filter-node-constructor';\nimport { createBiquadFilterNodeRendererFactory } from './factories/biquad-filter-node-renderer-factory';\nimport { createCacheTestResult } from './factories/cache-test-result';\nimport { createChannelMergerNodeConstructor } from './factories/channel-merger-node-constructor';\nimport { createChannelMergerNodeRendererFactory } from './factories/channel-merger-node-renderer-factory';\nimport { createChannelSplitterNodeConstructor } from './factories/channel-splitter-node-constructor';\nimport { createChannelSplitterNodeRendererFactory } from './factories/channel-splitter-node-renderer-factory';\nimport { createConnectAudioParam } from './factories/connect-audio-param';\nimport { createConnectMultipleOutputs } from './factories/connect-multiple-outputs';\nimport { createConnectedNativeAudioBufferSourceNodeFactory } from './factories/connected-native-audio-buffer-source-node-factory';\nimport { createConstantSourceNodeConstructor } from './factories/constant-source-node-constructor';\nimport { createConstantSourceNodeRendererFactory } from './factories/constant-source-node-renderer-factory';\nimport { createConvertNumberToUnsignedLong } from './factories/convert-number-to-unsigned-long';\nimport { createConvolverNodeConstructor } from './factories/convolver-node-constructor';\nimport { createConvolverNodeRendererFactory } from './factories/convolver-node-renderer-factory';\nimport { createCreateNativeOfflineAudioContext } from './factories/create-native-offline-audio-context';\nimport { createDataCloneError } from './factories/data-clone-error';\nimport { createDecodeAudioData } from './factories/decode-audio-data';\nimport { createDecrementCycleCounter } from './factories/decrement-cycle-counter';\nimport { createDelayNodeConstructor } from './factories/delay-node-constructor';\nimport { createDelayNodeRendererFactory } from './factories/delay-node-renderer-factory';\nimport { createDeleteActiveInputConnectionToAudioNode } from './factories/delete-active-input-connection-to-audio-node';\nimport { createDeleteUnrenderedAudioWorkletNode } from './factories/delete-unrendered-audio-worklet-node';\nimport { createDetectCycles } from './factories/detect-cycles';\nimport { createDisconnectMultipleOutputs } from './factories/disconnect-multiple-outputs';\nimport { createDynamicsCompressorNodeConstructor } from './factories/dynamics-compressor-node-constructor';\nimport { createDynamicsCompressorNodeRendererFactory } from './factories/dynamics-compressor-node-renderer-factory';\nimport { createEncodingError } from './factories/encoding-error';\nimport { createEvaluateSource } from './factories/evaluate-source';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createExposeCurrentFrameAndCurrentTime } from './factories/expose-current-frame-and-current-time';\nimport { createFetchSource } from './factories/fetch-source';\nimport { createGainNodeConstructor } from './factories/gain-node-constructor';\nimport { createGainNodeRendererFactory } from './factories/gain-node-renderer-factory';\nimport { createGetActiveAudioWorkletNodeInputs } from './factories/get-active-audio-worklet-node-inputs';\nimport { createGetAudioNodeRenderer } from './factories/get-audio-node-renderer';\nimport { createGetAudioNodeTailTime } from './factories/get-audio-node-tail-time';\nimport { createGetAudioParamRenderer } from './factories/get-audio-param-renderer';\nimport { createGetBackupOfflineAudioContext } from './factories/get-backup-offline-audio-context';\nimport { createGetNativeContext } from './factories/get-native-context';\nimport { createGetOrCreateBackupOfflineAudioContext } from './factories/get-or-create-backup-offline-audio-context';\nimport { createGetUnrenderedAudioWorkletNodes } from './factories/get-unrendered-audio-worklet-nodes';\nimport { createIIRFilterNodeConstructor } from './factories/iir-filter-node-constructor';\nimport { createIIRFilterNodeRendererFactory } from './factories/iir-filter-node-renderer-factory';\nimport { createIncrementCycleCounterFactory } from './factories/increment-cycle-counter-factory';\nimport { createIndexSizeError } from './factories/index-size-error';\nimport { createInvalidAccessError } from './factories/invalid-access-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsAnyAudioContext } from './factories/is-any-audio-context';\nimport { createIsAnyAudioNode } from './factories/is-any-audio-node';\nimport { createIsAnyAudioParam } from './factories/is-any-audio-param';\nimport { createIsAnyOfflineAudioContext } from './factories/is-any-offline-audio-context';\nimport { createIsNativeAudioContext } from './factories/is-native-audio-context';\nimport { createIsNativeAudioNode } from './factories/is-native-audio-node';\nimport { createIsNativeAudioParam } from './factories/is-native-audio-param';\nimport { createIsNativeContext } from './factories/is-native-context';\nimport { createIsNativeOfflineAudioContext } from './factories/is-native-offline-audio-context';\nimport { createIsSecureContext } from './factories/is-secure-context';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaElementAudioSourceNodeConstructor } from './factories/media-element-audio-source-node-constructor';\nimport { createMediaStreamAudioDestinationNodeConstructor } from './factories/media-stream-audio-destination-node-constructor';\nimport { createMediaStreamAudioSourceNodeConstructor } from './factories/media-stream-audio-source-node-constructor';\nimport { createMediaStreamTrackAudioSourceNodeConstructor } from './factories/media-stream-track-audio-source-node-constructor';\nimport { createMinimalAudioContextConstructor } from './factories/minimal-audio-context-constructor';\nimport { createMinimalBaseAudioContextConstructor } from './factories/minimal-base-audio-context-constructor';\nimport { createMinimalOfflineAudioContextConstructor } from './factories/minimal-offline-audio-context-constructor';\nimport { createMonitorConnections } from './factories/monitor-connections';\nimport { createNativeAnalyserNodeFactory } from './factories/native-analyser-node-factory';\nimport { createNativeAudioBufferConstructor } from './factories/native-audio-buffer-constructor';\nimport { createNativeAudioBufferSourceNodeFactory } from './factories/native-audio-buffer-source-node-factory';\nimport { createNativeAudioContextConstructor } from './factories/native-audio-context-constructor';\nimport { createNativeAudioDestinationNodeFactory } from './factories/native-audio-destination-node';\nimport { createNativeAudioWorkletNodeConstructor } from './factories/native-audio-worklet-node-constructor';\nimport { createNativeAudioWorkletNodeFactory } from './factories/native-audio-worklet-node-factory';\nimport { createNativeAudioWorkletNodeFakerFactory } from './factories/native-audio-worklet-node-faker-factory';\nimport { createNativeBiquadFilterNode } from './factories/native-biquad-filter-node';\nimport { createNativeChannelMergerNodeFactory } from './factories/native-channel-merger-node-factory';\nimport { createNativeChannelSplitterNode } from './factories/native-channel-splitter-node';\nimport { createNativeConstantSourceNodeFactory } from './factories/native-constant-source-node-factory';\nimport { createNativeConstantSourceNodeFakerFactory } from './factories/native-constant-source-node-faker-factory';\nimport { createNativeConvolverNodeFactory } from './factories/native-convolver-node-factory';\nimport { createNativeDelayNode } from './factories/native-delay-node';\nimport { createNativeDynamicsCompressorNodeFactory } from './factories/native-dynamics-compressor-node-factory';\nimport { createNativeGainNode } from './factories/native-gain-node';\nimport { createNativeIIRFilterNodeFactory } from './factories/native-iir-filter-node-factory';\nimport { createNativeIIRFilterNodeFakerFactory } from './factories/native-iir-filter-node-faker-factory';\nimport { createNativeMediaElementAudioSourceNode } from './factories/native-media-element-audio-source-node';\nimport { createNativeMediaStreamAudioDestinationNode } from './factories/native-media-stream-audio-destination-node';\nimport { createNativeMediaStreamAudioSourceNode } from './factories/native-media-stream-audio-source-node';\nimport { createNativeMediaStreamTrackAudioSourceNodeFactory } from './factories/native-media-stream-track-audio-source-node-factory';\nimport { createNativeOfflineAudioContextConstructor } from './factories/native-offline-audio-context-constructor';\nimport { createNativeOscillatorNodeFactory } from './factories/native-oscillator-node-factory';\nimport { createNativePannerNodeFactory } from './factories/native-panner-node-factory';\nimport { createNativePannerNodeFakerFactory } from './factories/native-panner-node-faker-factory';\nimport { createNativePeriodicWaveFactory } from './factories/native-periodic-wave-factory';\nimport { createNativeScriptProcessorNode } from './factories/native-script-processor-node';\nimport { createNativeStereoPannerNodeFactory } from './factories/native-stereo-panner-node-factory';\nimport { createNativeStereoPannerNodeFakerFactory } from './factories/native-stereo-panner-node-faker-factory';\nimport { createNativeWaveShaperNodeFactory } from './factories/native-wave-shaper-node-factory';\nimport { createNativeWaveShaperNodeFakerFactory } from './factories/native-wave-shaper-node-faker-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createOfflineAudioContextConstructor } from './factories/offline-audio-context-constructor';\nimport { createOscillatorNodeConstructor } from './factories/oscillator-node-constructor';\nimport { createOscillatorNodeRendererFactory } from './factories/oscillator-node-renderer-factory';\nimport { createPannerNodeConstructor } from './factories/panner-node-constructor';\nimport { createPannerNodeRendererFactory } from './factories/panner-node-renderer-factory';\nimport { createPeriodicWaveConstructor } from './factories/periodic-wave-constructor';\nimport { createRenderAutomation } from './factories/render-automation';\nimport { createRenderInputsOfAudioNode } from './factories/render-inputs-of-audio-node';\nimport { createRenderInputsOfAudioParam } from './factories/render-inputs-of-audio-param';\nimport { createRenderNativeOfflineAudioContext } from './factories/render-native-offline-audio-context';\nimport { createSetActiveAudioWorkletNodeInputs } from './factories/set-active-audio-worklet-node-inputs';\nimport { createSetAudioNodeTailTime } from './factories/set-audio-node-tail-time';\nimport { createStartRendering } from './factories/start-rendering';\nimport { createStereoPannerNodeConstructor } from './factories/stereo-panner-node-constructor';\nimport { createStereoPannerNodeRendererFactory } from './factories/stereo-panner-node-renderer-factory';\nimport { createTestAudioBufferConstructorSupport } from './factories/test-audio-buffer-constructor-support';\nimport { createTestAudioBufferCopyChannelMethodsSubarraySupport } from './factories/test-audio-buffer-copy-channel-methods-subarray-support';\nimport { createTestAudioContextCloseMethodSupport } from './factories/test-audio-context-close-method-support';\nimport { createTestAudioContextDecodeAudioDataMethodTypeErrorSupport } from './factories/test-audio-context-decode-audio-data-method-type-error-support';\nimport { createTestAudioContextOptionsSupport } from './factories/test-audio-context-options-support';\nimport { createTestAudioNodeConnectMethodSupport } from './factories/test-audio-node-connect-method-support';\nimport { createTestAudioWorkletProcessorNoOutputsSupport } from './factories/test-audio-worklet-processor-no-outputs-support';\nimport { createTestAudioWorkletProcessorPostMessageSupport } from './factories/test-audio-worklet-processor-post-message-support';\nimport { createTestChannelMergerNodeChannelCountSupport } from './factories/test-channel-merger-node-channel-count-support';\nimport { createTestConstantSourceNodeAccurateSchedulingSupport } from './factories/test-constant-source-node-accurate-scheduling-support';\nimport { createTestConvolverNodeBufferReassignabilitySupport } from './factories/test-convolver-node-buffer-reassignability-support';\nimport { createTestConvolverNodeChannelCountSupport } from './factories/test-convolver-node-channel-count-support';\nimport { createTestIsSecureContextSupport } from './factories/test-is-secure-context-support';\nimport { createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport } from './factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nimport { createTestOfflineAudioContextCurrentTimeSupport } from './factories/test-offline-audio-context-current-time-support';\nimport { createTestStereoPannerNodeDefaultValueSupport } from './factories/test-stereo-panner-node-default-value-support';\nimport { createUnknownError } from './factories/unknown-error';\nimport { createWaveShaperNodeConstructor } from './factories/wave-shaper-node-constructor';\nimport { createWaveShaperNodeRendererFactory } from './factories/wave-shaper-node-renderer-factory';\nimport { createWindow } from './factories/window';\nimport { createWrapAudioBufferCopyChannelMethods } from './factories/wrap-audio-buffer-copy-channel-methods';\nimport { createWrapAudioBufferCopyChannelMethodsOutOfBounds } from './factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds';\nimport { createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer } from './factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer';\nimport { createWrapChannelMergerNode } from './factories/wrap-channel-merger-node';\nimport { AUDIO_NODE_CONNECTIONS_STORE, AUDIO_NODE_STORE, AUDIO_PARAM_CONNECTIONS_STORE, AUDIO_PARAM_STORE, CONTEXT_STORE, CYCLE_COUNTERS } from './globals';\nimport { connectNativeAudioNodeToNativeAudioNode } from './helpers/connect-native-audio-node-to-native-audio-node';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from './helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from './helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from './helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from './helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from './helpers/get-native-audio-node';\nimport { getNativeAudioParam } from './helpers/get-native-audio-param';\nimport { getValueForKey } from './helpers/get-value-for-key';\nimport { insertElementInSet } from './helpers/insert-element-in-set';\nimport { isActiveAudioNode } from './helpers/is-active-audio-node';\nimport { isDCCurve } from './helpers/is-dc-curve';\nimport { isPartOfACycle } from './helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from './helpers/is-passive-audio-node';\nimport { overwriteAccessors } from './helpers/overwrite-accessors';\nimport { pickElementFromSet } from './helpers/pick-element-from-set';\nimport { sanitizeAudioWorkletNodeOptions } from './helpers/sanitize-audio-worklet-node-options';\nimport { sanitizeChannelSplitterOptions } from './helpers/sanitize-channel-splitter-options';\nimport { sanitizePeriodicWaveOptions } from './helpers/sanitize-periodic-wave-options';\nimport { setValueAtTimeUntilPossible } from './helpers/set-value-at-time-until-possible';\nimport { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from './helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport } from './helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support';\nimport { testAudioBufferSourceNodeStartMethodOffsetClampingSupport } from './helpers/test-audio-buffer-source-node-start-method-offset-clamping-support';\nimport { testAudioBufferSourceNodeStopMethodNullifiedBufferSupport } from './helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support';\nimport { testAudioScheduledSourceNodeStartMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support';\nimport { testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport } from './helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support';\nimport { testAudioScheduledSourceNodeStopMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support';\nimport { testDomExceptionConstructorSupport } from './helpers/test-dom-exception-constructor-support';\nimport { testPromiseSupport } from './helpers/test-promise-support';\nimport { testTransferablesSupport } from './helpers/test-transferables-support';\nimport { wrapAudioBufferSourceNodeStartMethodOffsetClamping } from './helpers/wrap-audio-buffer-source-node-start-method-offset-clamping';\nimport { wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls } from './helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls';\nimport { wrapEventListener } from './helpers/wrap-event-listener';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet);\nconst addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet);\nconst deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet);\nconst audioNodeTailTimeStore = new WeakMap();\nconst getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore);\nconst cacheTestResult = createCacheTestResult(new Map(), new WeakMap());\nconst window = createWindow();\nconst createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError);\nconst getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections);\nconst renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle);\nconst createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst getNativeContext = createGetNativeContext(CONTEXT_STORE);\nconst nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window);\nconst isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor);\nconst audioParamAudioNodeStore = new WeakMap();\nconst eventTargetConstructor = createEventTargetConstructor(wrapEventListener);\nconst nativeAudioContextConstructor = createNativeAudioContextConstructor(window);\nconst isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor);\nconst isNativeAudioNode = createIsNativeAudioNode(window);\nconst isNativeAudioParam = createIsNativeAudioParam(window);\nconst audioNodeConstructor = createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE), createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode), cacheTestResult, createIncrementCycleCounterFactory(CYCLE_COUNTERS, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode), createIndexSizeError, createInvalidAccessError, createNotSupportedError, createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode, CYCLE_COUNTERS, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext), createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey), eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext);\nconst analyserNodeConstructor = createAnalyserNodeConstructor(audioNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext);\nexport { analyserNodeConstructor as AnalyserNode };\nconst audioBufferStore = new WeakSet();\nconst nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window);\nconst convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1));\nconst wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError);\nconst wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong);\nconst audioBufferConstructor = createAudioBufferConstructor(audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor), wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nexport { audioBufferConstructor as AudioBuffer };\nconst addSilentConnection = createAddSilentConnection(createNativeGainNode);\nconst renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle);\nconst connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam);\nconst createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClamping, createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors), wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam);\nconst createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst createAudioParam = createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE), audioParamAudioNodeStore, AUDIO_PARAM_STORE, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible);\nconst audioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nexport { audioBufferSourceNodeConstructor as AudioBufferSourceNode };\nconst audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors), getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode);\nconst createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore);\nconst biquadFilterNodeConstructor = createBiquadFilterNodeConstructor(audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode);\nconst wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections);\nconst createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode);\nconst createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelMergerNodeConstructor = createChannelMergerNodeConstructor(audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext);\nconst createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelSplitterNodeConstructor = createChannelSplitterNodeConstructor(audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions);\nconst createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections);\nconst createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport);\nconst createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst constantSourceNodeConstructor = createConstantSourceNodeConstructor(audioNodeConstructor, createAudioParam, createConstantSourceNodeRenderer, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors);\nconst createConvolverNodeRenderer = createConvolverNodeRendererFactory(createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst convolverNodeConstructor = createConvolverNodeConstructor(audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createDelayNodeRenderer = createDelayNodeRendererFactory(connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst delayNodeConstructor = createDelayNodeConstructor(audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError);\nconst createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst dynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createGainNodeRenderer = createGainNodeRendererFactory(connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst gainNodeConstructor = createGainNodeConstructor(audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError);\nconst renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor));\nconst createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker);\nconst iIRFilterNodeConstructor = createIIRFilterNodeConstructor(audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createAudioListener = createAudioListenerFactory(createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, isNativeOfflineAudioContext);\nconst unrenderedAudioWorkletNodeStore = new WeakMap();\nconst minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener);\nconst createNativeOscillatorNode = createNativeOscillatorNodeFactory(addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst oscillatorNodeConstructor = createOscillatorNodeConstructor(audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode);\nconst createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections);\nconst createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors);\nconst createNativePannerNodeFaker = createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, monitorConnections);\nconst createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker);\nconst createPannerNodeRenderer = createPannerNodeRendererFactory(connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst pannerNodeConstructor = createPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError);\nconst periodicWaveConstructor = createPeriodicWaveConstructor(createNativePeriodicWave, getNativeContext, new WeakSet(), sanitizePeriodicWaveOptions);\nconst nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections);\nconst createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError);\nconst createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst stereoPannerNodeConstructor = createStereoPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext);\nconst createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst waveShaperNodeConstructor = createWaveShaperNodeConstructor(audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst isSecureContext = createIsSecureContext(window);\nconst exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window);\nconst backupOfflineAudioContextStore = new WeakMap();\nconst getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\n// The addAudioWorkletModule() function is only available in a SecureContext.\nexport const addAudioWorkletModule = isSecureContext\n ? createAddAudioWorkletModule(cacheTestResult, createNotSupportedError, createEvaluateSource(window), exposeCurrentFrameAndCurrentTime, createFetchSource(createAbortError), getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, new WeakMap(), new WeakMap(), createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), \n // @todo window is guaranteed to be defined because isSecureContext checks that as well.\n window)\n : undefined;\nconst isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext);\nexport const decodeAudioData = createDecodeAudioData(audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, new WeakSet(), getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst baseAudioContextConstructor = createBaseAudioContextConstructor(addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor);\nconst mediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioDestinationNodeConstructor = createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError, isNativeOfflineAudioContext);\nconst mediaStreamTrackAudioSourceNodeConstructor = createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext);\nconst audioContextConstructor = createAudioContextConstructor(baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor);\nexport { audioContextConstructor as AudioContext };\nconst getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore);\nconst addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError);\nconst deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError);\nconst activeAudioWorkletNodeInputsStore = new WeakMap();\nconst getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey);\nconst createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections);\nconst createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections);\nconst createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore);\nconst setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore);\n// The AudioWorkletNode constructor is only available in a SecureContext.\nconst audioWorkletNodeConstructor = isSecureContext\n ? createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, wrapEventListener)\n : undefined;\nexport { audioWorkletNodeConstructor as AudioWorkletNode };\nexport { biquadFilterNodeConstructor as BiquadFilterNode };\nexport { channelMergerNodeConstructor as ChannelMergerNode };\nexport { channelSplitterNodeConstructor as ChannelSplitterNode };\nexport { convolverNodeConstructor as ConvolverNode };\nexport { constantSourceNodeConstructor as ConstantSourceNode };\nexport { delayNodeConstructor as DelayNode };\nexport { dynamicsCompressorNodeConstructor as DynamicsCompressorNode };\nexport { gainNodeConstructor as GainNode };\nexport { iIRFilterNodeConstructor as IIRFilterNode };\nexport { mediaElementAudioSourceNodeConstructor as MediaElementAudioSourceNode };\nexport { mediaStreamAudioDestinationNodeConstructor as MediaStreamAudioDestinationNode };\nexport { mediaStreamAudioSourceNodeConstructor as MediaStreamAudioSourceNode };\nexport { mediaStreamTrackAudioSourceNodeConstructor as MediaStreamTrackAudioSourceNode };\nconst minimalAudioContextConstructor = createMinimalAudioContextConstructor(createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor);\nexport { minimalAudioContextConstructor as MinimalAudioContext };\nconst createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(createNotSupportedError, nativeOfflineAudioContextConstructor);\nconst startRendering = createStartRendering(audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst minimalOfflineAudioContextConstructor = createMinimalOfflineAudioContextConstructor(cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, minimalBaseAudioContextConstructor, startRendering);\nexport { minimalOfflineAudioContextConstructor as MinimalOfflineAudioContext };\nconst offlineAudioContextConstructor = createOfflineAudioContextConstructor(baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering);\nexport { offlineAudioContextConstructor as OfflineAudioContext };\nexport { oscillatorNodeConstructor as OscillatorNode };\nexport { pannerNodeConstructor as PannerNode };\nexport { periodicWaveConstructor as PeriodicWave };\nexport { stereoPannerNodeConstructor as StereoPannerNode };\nexport { waveShaperNodeConstructor as WaveShaperNode };\nexport const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext);\nexport const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode);\nexport const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam);\nexport const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext);\nexport const isSupported = () => createIsSupportedPromise(cacheTestResult, createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor), createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor), createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor), createTestAudioContextOptionsSupport(nativeAudioContextConstructor), createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor), createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor), createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor), testDomExceptionConstructorSupport, createTestIsSecureContextSupport(window), createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor), createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor), testTransferablesSupport);\n//# sourceMappingURL=module.js.map","export const createAddActiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs[input], [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n };\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-node.js.map","export const createAddPassiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, input, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, input, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input, ignoreDuplicates);\n }\n };\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-node.js.map","export const createDeleteActiveInputConnectionToAudioNode = (pickElementFromSet) => {\n return (activeInputs, source, output, input) => {\n return pickElementFromSet(activeInputs[input], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n };\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-node.js.map","export const createGetAudioNodeTailTime = (audioNodeTailTimeStore) => {\n return (audioNode) => { var _a; return (_a = audioNodeTailTimeStore.get(audioNode)) !== null && _a !== void 0 ? _a : 0; };\n};\n//# sourceMappingURL=get-audio-node-tail-time.js.map","export const createCacheTestResult = (ongoingTests, testResults) => {\n return (tester, test) => {\n const cachedTestResult = testResults.get(tester);\n if (cachedTestResult !== undefined) {\n return cachedTestResult;\n }\n const ongoingTest = ongoingTests.get(tester);\n if (ongoingTest !== undefined) {\n return ongoingTest;\n }\n try {\n const synchronousTestResult = test();\n if (synchronousTestResult instanceof Promise) {\n ongoingTests.set(tester, synchronousTestResult);\n return synchronousTestResult\n .catch(() => false)\n .then((finalTestResult) => {\n ongoingTests.delete(tester);\n testResults.set(tester, finalTestResult);\n return finalTestResult;\n });\n }\n testResults.set(tester, synchronousTestResult);\n return synchronousTestResult;\n }\n catch {\n testResults.set(tester, false);\n return false;\n }\n };\n};\n//# sourceMappingURL=cache-test-result.js.map","export const createWindow = () => (typeof window === 'undefined' ? null : window);\n//# sourceMappingURL=window.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { testAnalyserNodeGetFloatTimeDomainDataMethodSupport } from '../helpers/test-analyser-node-get-float-time-domain-data-method-support';\nimport { wrapAnalyserNodeGetFloatTimeDomainDataMethod } from '../helpers/wrap-analyser-node-get-float-time-domain-data-method';\nexport const createNativeAnalyserNodeFactory = (cacheTestResult, createIndexSizeError) => {\n return (nativeContext, options) => {\n const nativeAnalyserNode = nativeContext.createAnalyser();\n // Bug #37: Firefox does not create an AnalyserNode with the default properties.\n assignNativeAudioNodeOptions(nativeAnalyserNode, options);\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n if (!(options.maxDecibels > options.minDecibels)) {\n throw createIndexSizeError();\n }\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant');\n // Bug #36: Safari does not support getFloatTimeDomainData() yet.\n if (!cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () => testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode))) {\n wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode);\n }\n return nativeAnalyserNode;\n };\n};\n//# sourceMappingURL=native-analyser-node-factory.js.map","export const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode) => {\n nativeAnalyserNode.getFloatTimeDomainData = (array) => {\n const byteTimeDomainData = new Uint8Array(array.length);\n nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData);\n const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize);\n for (let i = 0; i < length; i += 1) {\n array[i] = (byteTimeDomainData[i] - 128) * 0.0078125;\n }\n return array;\n };\n};\n//# sourceMappingURL=wrap-analyser-node-get-float-time-domain-data-method.js.map","export const createGetAudioNodeRenderer = (getAudioNodeConnections) => {\n return (audioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n if (audioNodeConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioNode in the audio graph.');\n }\n return audioNodeConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-node-renderer.js.map","export const createRenderInputsOfAudioNode = (getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle) => {\n return async (audioNode, nativeOfflineAudioContext, nativeAudioNode, trace) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n const nextTrace = [...trace, audioNode];\n await Promise.all(audioNodeConnections.activeInputs\n .map((connections, input) => Array.from(connections)\n .filter(([source]) => !nextTrace.includes(source))\n .map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext, nextTrace);\n const destination = audioNode.context.destination;\n if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) {\n renderedNativeAudioNode.connect(nativeAudioNode, output, input);\n }\n }))\n .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], []));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-node.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createAnalyserNodeRendererFactory = (createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAnalyserNodes = new WeakMap();\n const createAnalyserNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAnalyserNode = getNativeAudioNode(proxy);\n // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext);\n if (!nativeAnalyserNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAnalyserNode.channelCount,\n channelCountMode: nativeAnalyserNode.channelCountMode,\n channelInterpretation: nativeAnalyserNode.channelInterpretation,\n fftSize: nativeAnalyserNode.fftSize,\n maxDecibels: nativeAnalyserNode.maxDecibels,\n minDecibels: nativeAnalyserNode.minDecibels,\n smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant\n };\n nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode, trace);\n return nativeAnalyserNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAnalyserNode !== undefined) {\n return Promise.resolve(renderedNativeAnalyserNode);\n }\n return createAnalyserNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=analyser-node-renderer-factory.js.map","import { createInvalidStateError } from './invalid-state-error';\nexport const createGetNativeContext = (contextStore) => {\n return (context) => {\n const nativeContext = contextStore.get(context);\n if (nativeContext === undefined) {\n throw createInvalidStateError();\n }\n return (nativeContext);\n };\n};\n//# sourceMappingURL=get-native-context.js.map","export const createNativeOfflineAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('OfflineAudioContext')) {\n return window.OfflineAudioContext;\n }\n return window.hasOwnProperty('webkitOfflineAudioContext') ? window.webkitOfflineAudioContext : null;\n};\n//# sourceMappingURL=native-offline-audio-context-constructor.js.map","export const createIsNativeOfflineAudioContext = (nativeOfflineAudioContextConstructor) => {\n return (anything) => {\n return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-offline-audio-context.js.map","export const createEventTargetConstructor = (wrapEventListener) => {\n return class EventTarget {\n constructor(_nativeEventTarget) {\n this._nativeEventTarget = _nativeEventTarget;\n this._listeners = new WeakMap();\n }\n addEventListener(type, listener, options) {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n dispatchEvent(event) {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n removeEventListener(type, listener, options) {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n//# sourceMappingURL=event-target-constructor.js.map","export const createNativeAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioContext')) {\n return window.AudioContext;\n }\n return window.hasOwnProperty('webkitAudioContext') ? window.webkitAudioContext : null;\n};\n//# sourceMappingURL=native-audio-context-constructor.js.map","export const createIsNativeAudioContext = (nativeAudioContextConstructor) => {\n return (anything) => {\n return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-audio-context.js.map","export const createIsNativeAudioNode = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode;\n };\n};\n//# sourceMappingURL=is-native-audio-node.js.map","export const createIsNativeAudioParam = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam;\n };\n};\n//# sourceMappingURL=is-native-audio-param.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const wrapAudioNodeDisconnectMethod = (nativeAudioNode) => {\n const connections = new Map();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void\n return (destination, output = 0, input = 0) => {\n const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output);\n // Save the new connection only if the calls to connect above didn't throw an error.\n const connectionsToDestination = connections.get(destination);\n if (connectionsToDestination === undefined) {\n connections.set(destination, [{ input, output }]);\n }\n else {\n if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) {\n connectionsToDestination.push({ input, output });\n }\n }\n return returnValue;\n };\n })(nativeAudioNode.connect.bind(nativeAudioNode));\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n disconnect.apply(nativeAudioNode);\n if (destinationOrOutput === undefined) {\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n for (const [destination, connectionsToDestination] of connections) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput);\n if (filteredConnections.length === 0) {\n connections.delete(destination);\n }\n else {\n connections.set(destination, filteredConnections);\n }\n }\n }\n else if (connections.has(destinationOrOutput)) {\n if (output === undefined) {\n connections.delete(destinationOrOutput);\n }\n else {\n const connectionsToDestination = connections.get(destinationOrOutput);\n if (connectionsToDestination !== undefined) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== output && (connection.input !== input || input === undefined));\n if (filteredConnections.length === 0) {\n connections.delete(destinationOrOutput);\n }\n else {\n connections.set(destinationOrOutput, filteredConnections);\n }\n }\n }\n }\n for (const [destination, connectionsToDestination] of connections) {\n connectionsToDestination.forEach((connection) => {\n if (isNativeAudioNode(destination)) {\n nativeAudioNode.connect(destination, connection.output, connection.input);\n }\n else {\n nativeAudioNode.connect(destination, connection.output);\n }\n });\n }\n };\n })(nativeAudioNode.disconnect);\n};\n//# sourceMappingURL=wrap-audio-node-disconnect-method.js.map","export const createAddAudioNodeConnections = (audioNodeConnectionsStore) => {\n return (audioNode, audioNodeRenderer, nativeAudioNode) => {\n const activeInputs = [];\n for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) {\n activeInputs.push(new Set());\n }\n audioNodeConnectionsStore.set(audioNode, {\n activeInputs,\n outputs: new Set(),\n passiveInputs: new WeakMap(),\n renderer: audioNodeRenderer\n });\n };\n};\n//# sourceMappingURL=add-audio-node-connections.js.map","import { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nexport const createAddConnectionToAudioNode = (addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode) => {\n return (source, destination, output, input, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n const nativeSourceAudioNode = getNativeAudioNode(source);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n if (isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input);\n addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n const tailTime = getAudioNodeTailTime(destination);\n if (tailTime === 0) {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }\n else {\n setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000);\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output, input], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n };\n};\n//# sourceMappingURL=add-connection-to-audio-node.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createIncrementCycleCounterFactory = (cycleCounters, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode) => {\n return (isOffline) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n cycleCounters.set(audioNode, count);\n }\n else {\n cycleCounters.set(audioNode, cycleCounter + count);\n }\n };\n };\n};\n//# sourceMappingURL=increment-cycle-counter-factory.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createDecrementCycleCounter = (connectNativeAudioNodeToNativeAudioNode, cycleCounters, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n throw new Error('Missing the expected cycle count.');\n }\n const nativeContext = getNativeContext(audioNode.context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (cycleCounter === count) {\n cycleCounters.delete(audioNode);\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n }\n else {\n cycleCounters.set(audioNode, cycleCounter - count);\n }\n };\n};\n//# sourceMappingURL=decrement-cycle-counter.js.map","import { isAudioNode } from '../guards/audio-node';\nimport { isDelayNode } from '../guards/delay-node';\nexport const createDetectCycles = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => {\n return function detectCycles(chain, nextLink) {\n const audioNode = isAudioNode(nextLink) ? nextLink : getValueForKey(audioParamAudioNodeStore, nextLink);\n if (isDelayNode(audioNode)) {\n return [];\n }\n if (chain[0] === audioNode) {\n return [chain];\n }\n if (chain.includes(audioNode)) {\n return [];\n }\n const { outputs } = getAudioNodeConnections(audioNode);\n return Array.from(outputs)\n .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0]))\n .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []);\n };\n};\n//# sourceMappingURL=detect-cycles.js.map","export const isDelayNode = (audioNode) => {\n return 'delayTime' in audioNode;\n};\n//# sourceMappingURL=delay-node.js.map","export const createNativeAudioBufferConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioBuffer')) {\n return window.AudioBuffer;\n }\n return null;\n};\n//# sourceMappingURL=native-audio-buffer-constructor.js.map","export const createConvertNumberToUnsignedLong = (unit32Array) => {\n return (value) => {\n unit32Array[0] = value;\n return unit32Array[0];\n };\n};\n//# sourceMappingURL=convert-number-to-unsigned-long.js.map","export const createWrapAudioBufferCopyChannelMethods = (convertNumberToUnsignedLong, createIndexSizeError) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const destinationLength = destination.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) {\n destination[i] = channelData[i + bufferOffset];\n }\n };\n audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const sourceLength = source.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) {\n channelData[i + bufferOffset] = source[i];\n }\n };\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods.js.map","export const createWrapAudioBufferCopyChannelMethodsOutOfBounds = (convertNumberToUnsignedLong) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = ((copyFromChannel) => {\n return (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyFromChannel);\n audioBuffer.copyToChannel = ((copyToChannel) => {\n return (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyToChannel);\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods-out-of-bounds.js.map","// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor.\nexport const createTestAudioBufferConstructorSupport = (nativeAudioBufferConstructor) => {\n return () => {\n if (nativeAudioBufferConstructor === null) {\n return false;\n }\n try {\n new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-audio-buffer-constructor-support.js.map","export const createAddSilentConnection = (createNativeGainNode) => {\n return (nativeContext, nativeAudioScheduledSourceNode) => {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnect = () => {\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect);\n nativeAudioScheduledSourceNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnect);\n };\n};\n//# sourceMappingURL=add-silent-connection.js.map","export const createRenderInputsOfAudioParam = (getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle) => {\n return async (audioParam, nativeOfflineAudioContext, nativeAudioParam, trace) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n await Promise.all(Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext, trace);\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\n }));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-param.js.map","export const createConnectAudioParam = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam, trace) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam, trace);\n };\n};\n//# sourceMappingURL=connect-audio-param.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioBufferSourceNodeStartMethodConsecutiveCalls } from '../helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeAudioBufferSourceNodeFactory = (addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClampling, wrapAudioBufferSourceNodeStopMethodNullifiedBuffer, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => {\n return (nativeContext, options) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer');\n // Bug #149: Safari does not yet support the detune AudioParam.\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart');\n // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () => testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode);\n }\n // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () => testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode);\n }\n // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it.\n if (!cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () => testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeAudioBufferSourceNode);\n return nativeAudioBufferSourceNode;\n };\n};\n//# sourceMappingURL=native-audio-buffer-source-node-factory.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n let isScheduled = false;\n return (when = 0, offset = 0, duration) => {\n if (isScheduled) {\n throw createInvalidStateError();\n }\n start.call(nativeAudioBufferSourceNode, when, offset, duration);\n isScheduled = true;\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-consecutive-calls.js.map","export const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.start();\n }\n catch {\n return true;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-consecutive-calls-support.js.map","export const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n try {\n nativeAudioBufferSourceNode.start(0, 1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-offset-clamping-support.js.map","export const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.stop();\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-stop-method-nullified-buffer-support.js.map","export const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n const buffer = nativeAudioBufferSourceNode.buffer;\n // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer.\n const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset);\n // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all.\n if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) {\n start.call(nativeAudioBufferSourceNode, when, 0, 0);\n }\n else {\n start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration);\n }\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-offset-clamping.js.map","export const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer = (overwriteAccessors) => {\n return (nativeAudioBufferSourceNode, nativeContext) => {\n const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100);\n if (nativeAudioBufferSourceNode.buffer === null) {\n nativeAudioBufferSourceNode.buffer = nullifiedBuffer;\n }\n overwriteAccessors(nativeAudioBufferSourceNode, 'buffer', (get) => () => {\n const value = get.call(nativeAudioBufferSourceNode);\n return value === nullifiedBuffer ? null : value;\n }, (set) => (value) => {\n return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value);\n });\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-stop-method-nullified-buffer.js.map","export const createRenderAutomation = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam, trace) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n audioParamRenderer.replay(nativeAudioParam);\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam, trace);\n };\n};\n//# sourceMappingURL=render-automation.js.map","export const createGetAudioParamRenderer = (getAudioParamConnections) => {\n return (audioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioParam in the audio graph.');\n }\n return audioParamConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-param-renderer.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createAudioBufferSourceNodeRendererFactory = (connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioBufferSourceNodes = new WeakMap();\n let start = null;\n let stop = null;\n const createAudioBufferSourceNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAudioBufferSourceNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n const options = {\n buffer: nativeAudioBufferSourceNode.buffer,\n channelCount: nativeAudioBufferSourceNode.channelCount,\n channelCountMode: nativeAudioBufferSourceNode.channelCountMode,\n channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation,\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: nativeAudioBufferSourceNode.loop,\n loopEnd: nativeAudioBufferSourceNode.loopEnd,\n loopStart: nativeAudioBufferSourceNode.loopStart,\n playbackRate: nativeAudioBufferSourceNode.playbackRate.value\n };\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeAudioBufferSourceNode.start(...start);\n }\n if (stop !== null) {\n nativeAudioBufferSourceNode.stop(stop);\n }\n }\n renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate, trace);\n }\n else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode, trace);\n return nativeAudioBufferSourceNode;\n };\n return {\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioBufferSourceNode !== undefined) {\n return Promise.resolve(renderedNativeAudioBufferSourceNode);\n }\n return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-renderer-factory.js.map","import { AutomationEventList } from 'automation-events';\nexport const createAudioParamFactory = (addAudioParamConnections, audioParamAudioNodeStore, audioParamStore, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible) => {\n return (audioNode, isAudioParamOfOfflineAudioContext, nativeAudioParam, maxValue = null, minValue = null) => {\n const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue() {\n return nativeAudioParam.defaultValue;\n },\n get maxValue() {\n return maxValue === null ? nativeAudioParam.maxValue : maxValue;\n },\n get minValue() {\n return minValue === null ? nativeAudioParam.minValue : minValue;\n },\n get value() {\n return nativeAudioParam.value;\n },\n set value(value) {\n nativeAudioParam.value = value;\n // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime().\n audioParam.setValueAtTime(value, audioNode.context.currentTime);\n },\n cancelAndHoldAtTime(cancelTime) {\n // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime().\n if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n nativeAudioParam.cancelAndHoldAtTime(cancelTime);\n }\n else {\n const previousLastEvent = Array.from(automationEventList).pop();\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n const currentLastEvent = Array.from(automationEventList).pop();\n nativeAudioParam.cancelScheduledValues(cancelTime);\n if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) {\n if (currentLastEvent.type === 'exponentialRampToValue') {\n nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'linearRampToValue') {\n nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'setValue') {\n nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime);\n }\n else if (currentLastEvent.type === 'setValueCurve') {\n nativeAudioParam.setValueCurveAtTime(currentLastEvent.values, currentLastEvent.startTime, currentLastEvent.duration);\n }\n }\n }\n return audioParam;\n },\n cancelScheduledValues(cancelTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime));\n nativeAudioParam.cancelScheduledValues(cancelTime);\n return audioParam;\n },\n exponentialRampToValueAtTime(value, endTime) {\n // Bug #45: Safari does not throw an error yet.\n if (value === 0) {\n throw new RangeError();\n }\n // Bug #187: Safari does not throw an error yet.\n if (!Number.isFinite(endTime) || endTime < 0) {\n throw new RangeError();\n }\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.exponentialRampToValueAtTime(value, endTime);\n return audioParam;\n },\n linearRampToValueAtTime(value, endTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.linearRampToValueAtTime(value, endTime);\n return audioParam;\n },\n setTargetAtTime(target, startTime, timeConstant) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant));\n nativeAudioParam.setTargetAtTime(target, startTime, timeConstant);\n return audioParam;\n },\n setValueAtTime(value, startTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueAutomationEvent(value, startTime));\n nativeAudioParam.setValueAtTime(value, startTime);\n return audioParam;\n },\n setValueCurveAtTime(values, startTime, duration) {\n // Bug 183: Safari only accepts a Float32Array.\n const convertedValues = values instanceof Float32Array ? values : new Float32Array(values);\n /*\n * Bug #152: Safari does not correctly interpolate the values of the curve.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the\n * existence of the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n const endTime = startTime + duration;\n const sampleRate = audioNode.context.sampleRate;\n const firstSample = Math.ceil(startTime * sampleRate);\n const lastSample = Math.floor(endTime * sampleRate);\n const numberOfInterpolatedValues = lastSample - firstSample;\n const interpolatedValues = new Float32Array(numberOfInterpolatedValues);\n for (let i = 0; i < numberOfInterpolatedValues; i += 1) {\n const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime);\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n interpolatedValues[i] =\n lowerIndex === upperIndex\n ? convertedValues[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex];\n }\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration);\n const timeOfLastSample = lastSample / sampleRate;\n if (timeOfLastSample < endTime) {\n setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime);\n }\n else {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration);\n }\n return audioParam;\n }\n };\n audioParamStore.set(audioParam, nativeAudioParam);\n audioParamAudioNodeStore.set(audioParam, audioNode);\n addAudioParamConnections(audioParam, audioParamRenderer);\n return audioParam;\n };\n};\n//# sourceMappingURL=audio-param-factory.js.map","export const createAddAudioParamConnections = (audioParamConnectionsStore) => {\n return (audioParam, audioParamRenderer) => {\n audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer });\n };\n};\n//# sourceMappingURL=add-audio-param-connections.js.map","export const createAudioParamRenderer = (automationEventList) => {\n return {\n replay(audioParam) {\n for (const automationEvent of automationEventList) {\n if (automationEvent.type === 'exponentialRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.exponentialRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'linearRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.linearRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'setTarget') {\n const { startTime, target, timeConstant } = automationEvent;\n audioParam.setTargetAtTime(target, startTime, timeConstant);\n }\n else if (automationEvent.type === 'setValue') {\n const { startTime, value } = automationEvent;\n audioParam.setValueAtTime(value, startTime);\n }\n else if (automationEvent.type === 'setValueCurve') {\n const { duration, startTime, values } = automationEvent;\n audioParam.setValueCurveAtTime(values, startTime, duration);\n }\n else {\n throw new Error(\"Can't apply an unknown automation.\");\n }\n }\n }\n };\n};\n//# sourceMappingURL=audio-param-renderer.js.map","export const createAudioDestinationNodeConstructor = (audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode) => {\n return class AudioDestinationNode extends audioNodeConstructor {\n constructor(context, channelCount) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline);\n const audioDestinationNodeRenderer = ((isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null));\n super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer);\n this._isNodeOfNativeOfflineAudioContext = isOffline;\n this._nativeAudioDestinationNode = nativeAudioDestinationNode;\n }\n get channelCount() {\n return this._nativeAudioDestinationNode.channelCount;\n }\n set channelCount(value) {\n // Bug #52: Chrome, Edge, Opera & Safari do not throw an exception at all.\n // Bug #54: Firefox does throw an IndexSizeError.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (value > this._nativeAudioDestinationNode.maxChannelCount) {\n throw createIndexSizeError();\n }\n this._nativeAudioDestinationNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioDestinationNode.channelCountMode;\n }\n set channelCountMode(value) {\n // Bug #53: No browser does throw an exception yet.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n this._nativeAudioDestinationNode.channelCountMode = value;\n }\n get maxChannelCount() {\n return this._nativeAudioDestinationNode.maxChannelCount;\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-constructor.js.map","export const createAudioDestinationNodeRenderer = (renderInputsOfAudioNode) => {\n let nativeAudioDestinationNodePromise = null;\n const createAudioDestinationNode = async (proxy, nativeOfflineAudioContext, trace) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode, trace);\n return nativeAudioDestinationNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n if (nativeAudioDestinationNodePromise === null) {\n nativeAudioDestinationNodePromise = createAudioDestinationNode(proxy, nativeOfflineAudioContext, trace);\n }\n return nativeAudioDestinationNodePromise;\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-renderer-factory.js.map","export const createNativeAudioDestinationNodeFactory = (createNativeGainNode, overwriteAccessors) => {\n return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeContext.destination;\n // Bug #132: Safari does not have the correct channelCount.\n if (nativeAudioDestinationNode.channelCount !== channelCount) {\n try {\n nativeAudioDestinationNode.channelCount = channelCount;\n }\n catch {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n }\n }\n // Bug #83: Safari does not have the correct channelCountMode.\n if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') {\n nativeAudioDestinationNode.channelCountMode = 'explicit';\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (nativeAudioDestinationNode.maxChannelCount === 0) {\n Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', {\n value: channelCount\n });\n }\n // Bug #168: No browser does yet have an AudioDestinationNode with an output.\n const gainNode = createNativeGainNode(nativeContext, {\n channelCount,\n channelCountMode: nativeAudioDestinationNode.channelCountMode,\n channelInterpretation: nativeAudioDestinationNode.channelInterpretation,\n gain: 1\n });\n overwriteAccessors(gainNode, 'channelCount', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n try {\n nativeAudioDestinationNode.channelCount = value;\n }\n catch (err) {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n if (value > nativeAudioDestinationNode.maxChannelCount) {\n throw err;\n }\n }\n });\n overwriteAccessors(gainNode, 'channelCountMode', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelCountMode = value;\n });\n overwriteAccessors(gainNode, 'channelInterpretation', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelInterpretation = value;\n });\n Object.defineProperty(gainNode, 'maxChannelCount', {\n get: () => nativeAudioDestinationNode.maxChannelCount\n });\n // @todo This should be disconnected when the context is closed.\n gainNode.connect(nativeAudioDestinationNode);\n return gainNode;\n };\n};\n//# sourceMappingURL=native-audio-destination-node.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createBiquadFilterNodeRendererFactory = (connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeBiquadFilterNodes = new WeakMap();\n const createBiquadFilterNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeBiquadFilterNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext);\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n const options = {\n Q: nativeBiquadFilterNode.Q.value,\n channelCount: nativeBiquadFilterNode.channelCount,\n channelCountMode: nativeBiquadFilterNode.channelCountMode,\n channelInterpretation: nativeBiquadFilterNode.channelInterpretation,\n detune: nativeBiquadFilterNode.detune.value,\n frequency: nativeBiquadFilterNode.frequency.value,\n gain: nativeBiquadFilterNode.gain.value,\n type: nativeBiquadFilterNode.type\n };\n nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options);\n }\n renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode);\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode, trace);\n return nativeBiquadFilterNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext);\n if (renderedNativeBiquadFilterNode !== undefined) {\n return Promise.resolve(renderedNativeBiquadFilterNode);\n }\n return createBiquadFilterNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=biquad-filter-node-renderer-factory.js.map","export const createSetAudioNodeTailTime = (audioNodeTailTimeStore) => {\n return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime);\n};\n//# sourceMappingURL=set-audio-node-tail-time.js.map","export const createMonitorConnections = (insertElementInSet, isNativeAudioNode) => {\n return (nativeAudioNode, whenConnected, whenDisconnected) => {\n const connections = new Set();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void\n return (destination, output = 0, input = 0) => {\n const wasDisconnected = connections.size === 0;\n if (isNativeAudioNode(destination)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n connect.call(nativeAudioNode, destination, output, input);\n insertElementInSet(connections, [destination, output, input], (connection) => connection[0] === destination && connection[1] === output && connection[2] === input, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return destination;\n }\n connect.call(nativeAudioNode, destination, output);\n insertElementInSet(connections, [destination, output], (connection) => connection[0] === destination && connection[1] === output, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return;\n };\n })(nativeAudioNode.connect);\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n const wasConnected = connections.size > 0;\n if (destinationOrOutput === undefined) {\n disconnect.apply(nativeAudioNode);\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioNode, destinationOrOutput);\n for (const connection of connections) {\n if (connection[1] === destinationOrOutput) {\n connections.delete(connection);\n }\n }\n }\n else {\n if (isNativeAudioNode(destinationOrOutput)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output, input);\n }\n else {\n // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output);\n }\n for (const connection of connections) {\n if (connection[0] === destinationOrOutput &&\n (output === undefined || connection[1] === output) &&\n (input === undefined || connection[2] === input)) {\n connections.delete(connection);\n }\n }\n }\n const isDisconnected = connections.size === 0;\n if (wasConnected && isDisconnected) {\n whenDisconnected();\n }\n };\n })(nativeAudioNode.disconnect);\n return nativeAudioNode;\n };\n};\n//# sourceMappingURL=monitor-connections.js.map","export const createWrapChannelMergerNode = (createInvalidStateError, monitorConnections) => {\n return (nativeContext, channelMergerNode) => {\n // Bug #15: Safari does not return the default properties.\n channelMergerNode.channelCount = 1;\n channelMergerNode.channelCountMode = 'explicit';\n // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode.\n Object.defineProperty(channelMergerNode, 'channelCount', {\n get: () => 1,\n set: () => {\n throw createInvalidStateError();\n }\n });\n Object.defineProperty(channelMergerNode, 'channelCountMode', {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n });\n // Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n const audioBufferSourceNode = nativeContext.createBufferSource();\n const whenConnected = () => {\n const length = channelMergerNode.numberOfInputs;\n for (let i = 0; i < length; i += 1) {\n audioBufferSourceNode.connect(channelMergerNode, 0, i);\n }\n };\n const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode);\n monitorConnections(channelMergerNode, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=wrap-channel-merger-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeChannelMergerNodeFactory = (nativeAudioContextConstructor, wrapChannelMergerNode) => {\n return (nativeContext, options) => {\n const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs);\n /*\n * Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n wrapChannelMergerNode(nativeContext, nativeChannelMergerNode);\n }\n assignNativeAudioNodeOptions(nativeChannelMergerNode, options);\n return nativeChannelMergerNode;\n };\n};\n//# sourceMappingURL=native-channel-merger-node-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createChannelMergerNodeRendererFactory = (createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n const createAudioNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfInputs: nativeAudioNode.numberOfInputs\n };\n nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode, trace);\n return nativeAudioNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=channel-merger-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createChannelSplitterNodeRendererFactory = (createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n const createAudioNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfOutputs: nativeAudioNode.numberOfOutputs\n };\n nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode, trace);\n return nativeAudioNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=channel-splitter-node-renderer-factory.js.map","export const sanitizeChannelSplitterOptions = (options) => {\n return { ...options, channelCount: options.numberOfOutputs };\n};\n//# sourceMappingURL=sanitize-channel-splitter-options.js.map","import { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeConstantSourceNodeFakerFactory = (addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections) => {\n return (nativeContext, { offset, ...audioNodeOptions }) => {\n const audioBuffer = nativeContext.createBuffer(1, 2, 44100);\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset });\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n const channelData = audioBuffer.getChannelData(0);\n // Bug #95: Safari does not play or loop one sample buffers.\n channelData[0] = 1;\n channelData[1] = 1;\n audioBufferSourceNode.buffer = audioBuffer;\n audioBufferSourceNode.loop = true;\n const nativeConstantSourceNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return gainNode.channelCount;\n },\n set channelCount(value) {\n gainNode.channelCount = value;\n },\n get channelCountMode() {\n return gainNode.channelCountMode;\n },\n set channelCountMode(value) {\n gainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return gainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n gainNode.channelInterpretation = value;\n },\n get context() {\n return gainNode.context;\n },\n get inputs() {\n return [];\n },\n get numberOfInputs() {\n return audioBufferSourceNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return gainNode.numberOfOutputs;\n },\n get offset() {\n return gainNode.gain;\n },\n get onended() {\n return audioBufferSourceNode.onended;\n },\n set onended(value) {\n audioBufferSourceNode.onended = value;\n },\n addEventListener(...args) {\n return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return audioBufferSourceNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]);\n },\n start(when = 0) {\n audioBufferSourceNode.start.call(audioBufferSourceNode, when);\n },\n stop(when = 0) {\n audioBufferSourceNode.stop.call(audioBufferSourceNode, when);\n }\n };\n const whenConnected = () => audioBufferSourceNode.connect(gainNode);\n const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode);\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, audioBufferSourceNode);\n return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-constant-source-node-faker-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeConstantSourceNodeFactory = (addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport) => {\n return (nativeContext, options) => {\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeContext.createConstantSource === undefined) {\n return createNativeConstantSourceNodeFaker(nativeContext, options);\n }\n const nativeConstantSourceNode = nativeContext.createConstantSource();\n assignNativeAudioNodeOptions(nativeConstantSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset');\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeConstantSourceNode);\n return nativeConstantSourceNode;\n };\n};\n//# sourceMappingURL=native-constant-source-node-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createConstantSourceNodeRendererFactory = (connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeConstantSourceNodes = new WeakMap();\n let start = null;\n let stop = null;\n const createConstantSourceNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeConstantSourceNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext);\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeConstantSourceNode.channelCount,\n channelCountMode: nativeConstantSourceNode.channelCountMode,\n channelInterpretation: nativeConstantSourceNode.channelInterpretation,\n offset: nativeConstantSourceNode.offset.value\n };\n nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeConstantSourceNode.start(start);\n }\n if (stop !== null) {\n nativeConstantSourceNode.stop(stop);\n }\n }\n renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode);\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode, trace);\n return nativeConstantSourceNode;\n };\n return {\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext);\n if (renderedNativeConstantSourceNode !== undefined) {\n return Promise.resolve(renderedNativeConstantSourceNode);\n }\n return createConstantSourceNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=constant-source-node-renderer-factory.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeConvolverNodeFactory = (createNotSupportedError, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeConvolverNode = nativeContext.createConvolver();\n assignNativeAudioNodeOptions(nativeConvolverNode, options);\n // The normalize property needs to be set before setting the buffer.\n if (options.disableNormalization === nativeConvolverNode.normalize) {\n nativeConvolverNode.normalize = !options.disableNormalization;\n }\n assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer');\n // Bug #113: Safari does allow to set the channelCount to a value larger than 2.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n overwriteAccessors(nativeConvolverNode, 'channelCount', (get) => () => get.call(nativeConvolverNode), (set) => (value) => {\n if (value > 2) {\n throw createNotSupportedError();\n }\n return set.call(nativeConvolverNode, value);\n });\n // Bug #114: Safari allows to set the channelCountMode to 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n overwriteAccessors(nativeConvolverNode, 'channelCountMode', (get) => () => get.call(nativeConvolverNode), (set) => (value) => {\n if (value === 'max') {\n throw createNotSupportedError();\n }\n return set.call(nativeConvolverNode, value);\n });\n return nativeConvolverNode;\n };\n};\n//# sourceMappingURL=native-convolver-node-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createConvolverNodeRendererFactory = (createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeConvolverNodes = new WeakMap();\n const createConvolverNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeConvolverNode = getNativeAudioNode(proxy);\n // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext);\n if (!nativeConvolverNodeIsOwnedByContext) {\n const options = {\n buffer: nativeConvolverNode.buffer,\n channelCount: nativeConvolverNode.channelCount,\n channelCountMode: nativeConvolverNode.channelCountMode,\n channelInterpretation: nativeConvolverNode.channelInterpretation,\n disableNormalization: !nativeConvolverNode.normalize\n };\n nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options);\n }\n renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode);\n if (isNativeAudioNodeFaker(nativeConvolverNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0], trace);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode, trace);\n }\n return nativeConvolverNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext);\n if (renderedNativeConvolverNode !== undefined) {\n return Promise.resolve(renderedNativeConvolverNode);\n }\n return createConvolverNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=convolver-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createDelayNodeRendererFactory = (connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return (maxDelayTime) => {\n const renderedNativeDelayNodes = new WeakMap();\n const createDelayNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeDelayNode = getNativeAudioNode(proxy);\n // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext);\n if (!nativeDelayNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeDelayNode.channelCount,\n channelCountMode: nativeDelayNode.channelCountMode,\n channelInterpretation: nativeDelayNode.channelInterpretation,\n delayTime: nativeDelayNode.delayTime.value,\n maxDelayTime\n };\n nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options);\n }\n renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode);\n if (!nativeDelayNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode, trace);\n return nativeDelayNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext);\n if (renderedNativeDelayNode !== undefined) {\n return Promise.resolve(renderedNativeDelayNode);\n }\n return createDelayNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=delay-node-renderer-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeDynamicsCompressorNodeFactory = (createNotSupportedError) => {\n return (nativeContext, options) => {\n const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor();\n assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options);\n // Bug #108: Safari allows a channelCount of three and above.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n // Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold');\n return nativeDynamicsCompressorNode;\n };\n};\n//# sourceMappingURL=native-dynamics-compressor-node-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createDynamicsCompressorNodeRendererFactory = (connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeDynamicsCompressorNodes = new WeakMap();\n const createDynamicsCompressorNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeDynamicsCompressorNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be\n * created again.\n */\n const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext);\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n const options = {\n attack: nativeDynamicsCompressorNode.attack.value,\n channelCount: nativeDynamicsCompressorNode.channelCount,\n channelCountMode: nativeDynamicsCompressorNode.channelCountMode,\n channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation,\n knee: nativeDynamicsCompressorNode.knee.value,\n ratio: nativeDynamicsCompressorNode.ratio.value,\n release: nativeDynamicsCompressorNode.release.value,\n threshold: nativeDynamicsCompressorNode.threshold.value\n };\n nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options);\n }\n renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode, trace);\n return nativeDynamicsCompressorNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext);\n if (renderedNativeDynamicsCompressorNode !== undefined) {\n return Promise.resolve(renderedNativeDynamicsCompressorNode);\n }\n return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=dynamics-compressor-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createGainNodeRendererFactory = (connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeGainNodes = new WeakMap();\n const createGainNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeGainNode = getNativeAudioNode(proxy);\n // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext);\n if (!nativeGainNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeGainNode.channelCount,\n channelCountMode: nativeGainNode.channelCountMode,\n channelInterpretation: nativeGainNode.channelInterpretation,\n gain: nativeGainNode.gain.value\n };\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options);\n }\n renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode);\n if (!nativeGainNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode, trace);\n return nativeGainNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext);\n if (renderedNativeGainNode !== undefined) {\n return Promise.resolve(renderedNativeGainNode);\n }\n return createGainNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=gain-node-renderer-factory.js.map","import { testPromiseSupport } from '../helpers/test-promise-support';\nexport const createRenderNativeOfflineAudioContext = (cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, testOfflineAudioContextCurrentTimeSupport) => {\n return (nativeOfflineAudioContext) => {\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio.\n return Promise.resolve(cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)).then((isOfflineAudioContextCurrentTimeSupported) => {\n if (!isOfflineAudioContextCurrentTimeSupported) {\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1);\n nativeOfflineAudioContext.oncomplete = () => {\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n scriptProcessorNode.disconnect();\n };\n scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation\n scriptProcessorNode.connect(nativeOfflineAudioContext.destination);\n }\n return nativeOfflineAudioContext.startRendering();\n });\n }\n return new Promise((resolve) => {\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeOfflineAudioContext.oncomplete = (event) => {\n gainNode.disconnect();\n resolve(event.renderedBuffer);\n };\n gainNode.connect(nativeOfflineAudioContext.destination);\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=render-native-offline-audio-context.js.map","export const createTestOfflineAudioContextCurrentTimeSupport = (createNativeGainNode, nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n nativeOfflineAudioContext.oncomplete = () => {\n gainNode.disconnect();\n resolve(nativeOfflineAudioContext.currentTime !== 0);\n };\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=test-offline-audio-context-current-time-support.js.map","import { filterBuffer } from '../helpers/filter-buffer';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nconst filterFullBuffer = (renderedBuffer, nativeOfflineAudioContext, feedback, feedforward) => {\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedbackLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n for (let i = 1; i < feedforwardLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n const bufferLength = 32;\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n const filteredBuffer = nativeOfflineAudioContext.createBuffer(renderedBuffer.numberOfChannels, renderedBuffer.length, renderedBuffer.sampleRate);\n const numberOfChannels = renderedBuffer.numberOfChannels;\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = renderedBuffer.getChannelData(i);\n const output = filteredBuffer.getChannelData(i);\n xBuffer.fill(0);\n yBuffer.fill(0);\n filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffer, yBuffer, 0, bufferLength, input, output);\n }\n return filteredBuffer;\n};\nexport const createIIRFilterNodeRendererFactory = (createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return (feedback, feedforward) => {\n const renderedNativeAudioNodes = new WeakMap();\n let filteredBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeAudioBufferSourceNode = null;\n let nativeIIRFilterNode = getNativeAudioNode(proxy);\n // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext);\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeOfflineAudioContext.createIIRFilter === undefined) {\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n }\n else if (!nativeIIRFilterNodeIsOwnedByContext) {\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode);\n if (nativeAudioBufferSourceNode !== null) {\n if (filteredBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n proxy.context.destination.channelCount, \n // Bug #17: Safari does not yet expose the length.\n proxy.context.length, nativeOfflineAudioContext.sampleRate);\n filteredBufferPromise = (async () => {\n await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination, trace);\n const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext);\n return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward);\n })();\n }\n const filteredBuffer = await filteredBufferPromise;\n nativeAudioBufferSourceNode.buffer = filteredBuffer;\n nativeAudioBufferSourceNode.start(0);\n return nativeAudioBufferSourceNode;\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode, trace);\n return nativeIIRFilterNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=iir-filter-node-renderer-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeIIRFilterNodeFactory = (createNativeIIRFilterNodeFaker) => {\n return (nativeContext, baseLatency, options) => {\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeContext.createIIRFilter === undefined) {\n return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options);\n }\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback);\n assignNativeAudioNodeOptions(nativeIIRFilterNode, options);\n return nativeIIRFilterNode;\n };\n};\n//# sourceMappingURL=native-iir-filter-node-factory.js.map","import { createInvalidAccessError } from '../factories/invalid-access-error';\nexport const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode) => {\n nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => {\n return (frequencyHz, magResponse, phaseResponse) => {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse);\n };\n })(nativeIIRFilterNode.getFrequencyResponse);\n};\n//# sourceMappingURL=wrap-iir-filter-node-get-frequency-response-method.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nexport const createAudioListenerFactory = (createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, isNativeOfflineAudioContext) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n // Bug #117: Only Chrome, Edge & Opera support the new interface already.\n const createFakeAudioParams = () => {\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n const createFakeAudioParam = (input, value) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: value\n });\n constantSourceNode.connect(channelMergerNode, 0, input);\n // @todo This should be stopped when the context is closed.\n constantSourceNode.start();\n Object.defineProperty(constantSourceNode.offset, 'defaultValue', {\n get() {\n return value;\n }\n });\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and\n * minValue for GainNodes.\n */\n return createAudioParam({ context }, isOffline, constantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n };\n let lastOrientation = [0, 0, -1, 0, 1, 0];\n let lastPosition = [0, 0, 0];\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation = [\n inputBuffer.getChannelData(0)[0],\n inputBuffer.getChannelData(1)[0],\n inputBuffer.getChannelData(2)[0],\n inputBuffer.getChannelData(3)[0],\n inputBuffer.getChannelData(4)[0],\n inputBuffer.getChannelData(5)[0]\n ];\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation\n lastOrientation = orientation;\n }\n const positon = [\n inputBuffer.getChannelData(6)[0],\n inputBuffer.getChannelData(7)[0],\n inputBuffer.getChannelData(8)[0]\n ];\n if (positon.some((value, index) => value !== lastPosition[index])) {\n nativeListener.setPosition(...positon); // tslint:disable-line:deprecation\n lastPosition = positon;\n }\n };\n channelMergerNode.connect(scriptProcessorNode);\n return {\n forwardX: createFakeAudioParam(0, 0),\n forwardY: createFakeAudioParam(1, 0),\n forwardZ: createFakeAudioParam(2, -1),\n positionX: createFakeAudioParam(6, 0),\n positionY: createFakeAudioParam(7, 0),\n positionZ: createFakeAudioParam(8, 0),\n upX: createFakeAudioParam(3, 0),\n upY: createFakeAudioParam(4, 1),\n upZ: createFakeAudioParam(5, 0)\n };\n };\n const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } = nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener;\n return {\n get forwardX() {\n return forwardX;\n },\n get forwardY() {\n return forwardY;\n },\n get forwardZ() {\n return forwardZ;\n },\n get positionX() {\n return positionX;\n },\n get positionY() {\n return positionY;\n },\n get positionZ() {\n return positionZ;\n },\n get upX() {\n return upX;\n },\n get upY() {\n return upY;\n },\n get upZ() {\n return upZ;\n }\n };\n };\n};\n//# sourceMappingURL=audio-listener-factory.js.map","import { CONTEXT_STORE } from '../globals';\nexport const createMinimalBaseAudioContextConstructor = (audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener) => {\n return class MinimalBaseAudioContext extends eventTargetConstructor {\n constructor(_nativeContext, numberOfChannels) {\n super(_nativeContext);\n this._nativeContext = _nativeContext;\n CONTEXT_STORE.set(this, _nativeContext);\n if (isNativeOfflineAudioContext(_nativeContext)) {\n unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set());\n }\n this._destination = new audioDestinationNodeConstructor(this, numberOfChannels);\n this._listener = createAudioListener(this, _nativeContext);\n this._onstatechange = null;\n }\n get currentTime() {\n return this._nativeContext.currentTime;\n }\n get destination() {\n return this._destination;\n }\n get listener() {\n return this._listener;\n }\n get onstatechange() {\n return this._onstatechange;\n }\n set onstatechange(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeContext.onstatechange = wrappedListener;\n const nativeOnStateChange = this._nativeContext.onstatechange;\n this._onstatechange =\n nativeOnStateChange !== null && nativeOnStateChange === wrappedListener\n ? value\n : nativeOnStateChange;\n }\n get sampleRate() {\n return this._nativeContext.sampleRate;\n }\n get state() {\n return this._nativeContext.state;\n }\n };\n};\n//# sourceMappingURL=minimal-base-audio-context-constructor.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeOscillatorNodeFactory = (addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => {\n return (nativeContext, options) => {\n const nativeOscillatorNode = nativeContext.createOscillator();\n assignNativeAudioNodeOptions(nativeOscillatorNode, options);\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency');\n if (options.periodicWave !== undefined) {\n nativeOscillatorNode.setPeriodicWave(options.periodicWave);\n }\n else {\n assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type');\n }\n // Bug #44: Only Chrome, Edge & Opera throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode);\n }\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode);\n }\n // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected.\n addSilentConnection(nativeContext, nativeOscillatorNode);\n return nativeOscillatorNode;\n };\n};\n//# sourceMappingURL=native-oscillator-node-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createOscillatorNodeRendererFactory = (connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeOscillatorNodes = new WeakMap();\n let periodicWave = null;\n let start = null;\n let stop = null;\n const createOscillatorNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeOscillatorNode = getNativeAudioNode(proxy);\n // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext);\n if (!nativeOscillatorNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeOscillatorNode.channelCount,\n channelCountMode: nativeOscillatorNode.channelCountMode,\n channelInterpretation: nativeOscillatorNode.channelInterpretation,\n detune: nativeOscillatorNode.detune.value,\n frequency: nativeOscillatorNode.frequency.value,\n periodicWave: periodicWave === null ? undefined : periodicWave,\n type: nativeOscillatorNode.type\n };\n nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeOscillatorNode.start(start);\n }\n if (stop !== null) {\n nativeOscillatorNode.stop(stop);\n }\n }\n renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode);\n if (!nativeOscillatorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency, trace);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode, trace);\n return nativeOscillatorNode;\n };\n return {\n set periodicWave(value) {\n periodicWave = value;\n },\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext);\n if (renderedNativeOscillatorNode !== undefined) {\n return Promise.resolve(renderedNativeOscillatorNode);\n }\n return createOscillatorNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=oscillator-node-renderer-factory.js.map","export const createConnectedNativeAudioBufferSourceNodeFactory = (createNativeAudioBufferSourceNode) => {\n return (nativeContext, nativeAudioNode) => {\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100);\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.loop = true;\n nativeAudioBufferSourceNode.connect(nativeAudioNode);\n nativeAudioBufferSourceNode.start();\n return () => {\n nativeAudioBufferSourceNode.stop();\n nativeAudioBufferSourceNode.disconnect(nativeAudioNode);\n };\n };\n};\n//# sourceMappingURL=connected-native-audio-buffer-source-node-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeWaveShaperNodeFakerFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections) => {\n return (nativeContext, { curve, oversample, ...audioNodeOptions }) => {\n const negativeWaveShaperNode = nativeContext.createWaveShaper();\n const positiveWaveShaperNode = nativeContext.createWaveShaper();\n assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions);\n assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions);\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n let disconnectNativeAudioBufferSourceNode = null;\n let isConnected = false;\n let unmodifiedCurve = null;\n const nativeWaveShaperNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return negativeWaveShaperNode.channelCount;\n },\n set channelCount(value) {\n inputGainNode.channelCount = value;\n invertGainNode.channelCount = value;\n negativeWaveShaperNode.channelCount = value;\n outputGainNode.channelCount = value;\n positiveWaveShaperNode.channelCount = value;\n revertGainNode.channelCount = value;\n },\n get channelCountMode() {\n return negativeWaveShaperNode.channelCountMode;\n },\n set channelCountMode(value) {\n inputGainNode.channelCountMode = value;\n invertGainNode.channelCountMode = value;\n negativeWaveShaperNode.channelCountMode = value;\n outputGainNode.channelCountMode = value;\n positiveWaveShaperNode.channelCountMode = value;\n revertGainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return negativeWaveShaperNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n invertGainNode.channelInterpretation = value;\n negativeWaveShaperNode.channelInterpretation = value;\n outputGainNode.channelInterpretation = value;\n positiveWaveShaperNode.channelInterpretation = value;\n revertGainNode.channelInterpretation = value;\n },\n get context() {\n return negativeWaveShaperNode.context;\n },\n get curve() {\n return unmodifiedCurve;\n },\n set curve(value) {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n if (value !== null && value.length < 2) {\n throw createInvalidStateError();\n }\n if (value === null) {\n negativeWaveShaperNode.curve = value;\n positiveWaveShaperNode.curve = value;\n }\n else {\n const curveLength = value.length;\n const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n negativeCurve[0] = value[0];\n positiveCurve[0] = -value[curveLength - 1];\n const length = Math.ceil((curveLength + 1) / 2);\n const centerIndex = (curveLength + 1) / 2 - 1;\n for (let i = 1; i < length; i += 1) {\n const theoreticIndex = (i / length) * centerIndex;\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n negativeCurve[i] =\n lowerIndex === upperIndex\n ? value[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * value[upperIndex];\n positiveCurve[i] =\n lowerIndex === upperIndex\n ? -value[curveLength - 1 - lowerIndex]\n : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) -\n (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex];\n }\n negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2;\n negativeWaveShaperNode.curve = negativeCurve;\n positiveWaveShaperNode.curve = positiveCurve;\n }\n unmodifiedCurve = value;\n if (isConnected) {\n if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n else if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n },\n get inputs() {\n return [inputGainNode];\n },\n get numberOfInputs() {\n return negativeWaveShaperNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return negativeWaveShaperNode.numberOfOutputs;\n },\n get oversample() {\n return negativeWaveShaperNode.oversample;\n },\n set oversample(value) {\n negativeWaveShaperNode.oversample = value;\n positiveWaveShaperNode.oversample = value;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n if (curve !== null) {\n // Only values of type Float32Array can be assigned to the curve property.\n nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve);\n }\n if (oversample !== nativeWaveShaperNodeFaker.oversample) {\n nativeWaveShaperNodeFaker.oversample = oversample;\n }\n const whenConnected = () => {\n inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode);\n inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode);\n isConnected = true;\n if (isDCCurve(unmodifiedCurve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(negativeWaveShaperNode);\n negativeWaveShaperNode.disconnect(outputGainNode);\n inputGainNode.disconnect(invertGainNode);\n invertGainNode.disconnect(positiveWaveShaperNode);\n positiveWaveShaperNode.disconnect(revertGainNode);\n revertGainNode.disconnect(outputGainNode);\n isConnected = false;\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-wave-shaper-node-faker-factory.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeWaveShaperNodeFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeWaveShaperNode = nativeContext.createWaveShaper();\n /*\n * Bug #119: Safari does not correctly map the values.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround\n * isn't necessary anymore since v14.0.2 of Safari.\n */\n if (nativeAudioContextConstructor !== null &&\n nativeAudioContextConstructor.name === 'webkitAudioContext' &&\n nativeContext.createGain().gain.automationRate === undefined) {\n return createNativeWaveShaperNodeFaker(nativeContext, options);\n }\n assignNativeAudioNodeOptions(nativeWaveShaperNode, options);\n const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve);\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (curve !== null && curve.length < 2) {\n throw createInvalidStateError();\n }\n // Only values of type Float32Array can be assigned to the curve property.\n assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve');\n assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample');\n let disconnectNativeAudioBufferSourceNode = null;\n let isConnected = false;\n overwriteAccessors(nativeWaveShaperNode, 'curve', (get) => () => get.call(nativeWaveShaperNode), (set) => (value) => {\n set.call(nativeWaveShaperNode, value);\n if (isConnected) {\n if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n return value;\n });\n const whenConnected = () => {\n isConnected = true;\n if (isDCCurve(nativeWaveShaperNode.curve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n };\n const whenDisconnected = () => {\n isConnected = false;\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-wave-shaper-node-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativePannerNodeFakerFactory = (connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, monitorConnections) => {\n return (nativeContext, { coneInnerAngle, coneOuterAngle, coneOuterGain, distanceModel, maxDistance, orientationX, orientationY, orientationZ, panningModel, positionX, positionY, positionZ, refDistance, rolloffFactor, ...audioNodeOptions }) => {\n const pannerNode = nativeContext.createPanner();\n // Bug #125: Safari does not throw an error yet.\n if (audioNodeOptions.channelCount > 2) {\n throw createNotSupportedError();\n }\n // Bug #126: Safari does not throw an error yet.\n if (audioNodeOptions.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n assignNativeAudioNodeOptions(pannerNode, audioNodeOptions);\n const SINGLE_CHANNEL_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete'\n };\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 });\n const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1);\n const waveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n curve: new Float32Array([1, 1]),\n oversample: 'none'\n });\n let lastOrientation = [orientationX, orientationY, orientationZ];\n let lastPosition = [positionX, positionY, positionZ];\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation = [\n inputBuffer.getChannelData(0)[0],\n inputBuffer.getChannelData(1)[0],\n inputBuffer.getChannelData(2)[0]\n ];\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation\n lastOrientation = orientation;\n }\n const positon = [\n inputBuffer.getChannelData(3)[0],\n inputBuffer.getChannelData(4)[0],\n inputBuffer.getChannelData(5)[0]\n ];\n if (positon.some((value, index) => value !== lastPosition[index])) {\n pannerNode.setPosition(...positon); // tslint:disable-line:deprecation\n lastPosition = positon;\n }\n };\n Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 });\n const nativePannerNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return pannerNode.channelCount;\n },\n set channelCount(value) {\n // Bug #125: Safari does not throw an error yet.\n if (value > 2) {\n throw createNotSupportedError();\n }\n inputGainNode.channelCount = value;\n pannerNode.channelCount = value;\n },\n get channelCountMode() {\n return pannerNode.channelCountMode;\n },\n set channelCountMode(value) {\n // Bug #126: Safari does not throw an error yet.\n if (value === 'max') {\n throw createNotSupportedError();\n }\n inputGainNode.channelCountMode = value;\n pannerNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return pannerNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n pannerNode.channelInterpretation = value;\n },\n get coneInnerAngle() {\n return pannerNode.coneInnerAngle;\n },\n set coneInnerAngle(value) {\n pannerNode.coneInnerAngle = value;\n },\n get coneOuterAngle() {\n return pannerNode.coneOuterAngle;\n },\n set coneOuterAngle(value) {\n pannerNode.coneOuterAngle = value;\n },\n get coneOuterGain() {\n return pannerNode.coneOuterGain;\n },\n set coneOuterGain(value) {\n // Bug #127: Safari does not throw an InvalidStateError yet.\n if (value < 0 || value > 1) {\n throw createInvalidStateError();\n }\n pannerNode.coneOuterGain = value;\n },\n get context() {\n return pannerNode.context;\n },\n get distanceModel() {\n return pannerNode.distanceModel;\n },\n set distanceModel(value) {\n pannerNode.distanceModel = value;\n },\n get inputs() {\n return [inputGainNode];\n },\n get maxDistance() {\n return pannerNode.maxDistance;\n },\n set maxDistance(value) {\n // Bug #128: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.maxDistance = value;\n },\n get numberOfInputs() {\n return pannerNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return pannerNode.numberOfOutputs;\n },\n get orientationX() {\n return orientationXGainNode.gain;\n },\n get orientationY() {\n return orientationYGainNode.gain;\n },\n get orientationZ() {\n return orientationZGainNode.gain;\n },\n get panningModel() {\n return pannerNode.panningModel;\n },\n set panningModel(value) {\n pannerNode.panningModel = value;\n },\n get positionX() {\n return positionXGainNode.gain;\n },\n get positionY() {\n return positionYGainNode.gain;\n },\n get positionZ() {\n return positionZGainNode.gain;\n },\n get refDistance() {\n return pannerNode.refDistance;\n },\n set refDistance(value) {\n // Bug #129: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.refDistance = value;\n },\n get rolloffFactor() {\n return pannerNode.rolloffFactor;\n },\n set rolloffFactor(value) {\n // Bug #130: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.rolloffFactor = value;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) {\n nativePannerNodeFaker.coneInnerAngle = coneInnerAngle;\n }\n if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) {\n nativePannerNodeFaker.coneOuterAngle = coneOuterAngle;\n }\n if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) {\n nativePannerNodeFaker.coneOuterGain = coneOuterGain;\n }\n if (distanceModel !== nativePannerNodeFaker.distanceModel) {\n nativePannerNodeFaker.distanceModel = distanceModel;\n }\n if (maxDistance !== nativePannerNodeFaker.maxDistance) {\n nativePannerNodeFaker.maxDistance = maxDistance;\n }\n if (orientationX !== nativePannerNodeFaker.orientationX.value) {\n nativePannerNodeFaker.orientationX.value = orientationX;\n }\n if (orientationY !== nativePannerNodeFaker.orientationY.value) {\n nativePannerNodeFaker.orientationY.value = orientationY;\n }\n if (orientationZ !== nativePannerNodeFaker.orientationZ.value) {\n nativePannerNodeFaker.orientationZ.value = orientationZ;\n }\n if (panningModel !== nativePannerNodeFaker.panningModel) {\n nativePannerNodeFaker.panningModel = panningModel;\n }\n if (positionX !== nativePannerNodeFaker.positionX.value) {\n nativePannerNodeFaker.positionX.value = positionX;\n }\n if (positionY !== nativePannerNodeFaker.positionY.value) {\n nativePannerNodeFaker.positionY.value = positionY;\n }\n if (positionZ !== nativePannerNodeFaker.positionZ.value) {\n nativePannerNodeFaker.positionZ.value = positionZ;\n }\n if (refDistance !== nativePannerNodeFaker.refDistance) {\n nativePannerNodeFaker.refDistance = refDistance;\n }\n if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) {\n nativePannerNodeFaker.rolloffFactor = rolloffFactor;\n }\n if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) {\n pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) {\n pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n const whenConnected = () => {\n inputGainNode.connect(pannerNode);\n // Bug #119: Safari does not fully support the WaveShaperNode.\n connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0);\n waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1);\n waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2);\n waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3);\n waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4);\n waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5);\n channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination);\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(pannerNode);\n // Bug #119: Safari does not fully support the WaveShaperNode.\n disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n waveShaperNode.disconnect(orientationXGainNode);\n orientationXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationYGainNode);\n orientationYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationZGainNode);\n orientationZGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionXGainNode);\n positionXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionYGainNode);\n positionYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionZGainNode);\n positionZGainNode.disconnect(channelMergerNode);\n channelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.disconnect(nativeContext.destination);\n };\n return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-panner-node-faker-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativePannerNodeFactory = (createNativePannerNodeFaker) => {\n return (nativeContext, options) => {\n const nativePannerNode = nativeContext.createPanner();\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if (nativePannerNode.orientationX === undefined) {\n return createNativePannerNodeFaker(nativeContext, options);\n }\n assignNativeAudioNodeOptions(nativePannerNode, options);\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain');\n assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor');\n return nativePannerNode;\n };\n};\n//# sourceMappingURL=native-panner-node-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createPannerNodeRendererFactory = (connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n let renderedBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeGainNode = null;\n let nativePannerNode = getNativeAudioNode(proxy);\n const commonAudioNodeOptions = {\n channelCount: nativePannerNode.channelCount,\n channelCountMode: nativePannerNode.channelCountMode,\n channelInterpretation: nativePannerNode.channelInterpretation\n };\n const commonNativePannerNodeOptions = {\n ...commonAudioNodeOptions,\n coneInnerAngle: nativePannerNode.coneInnerAngle,\n coneOuterAngle: nativePannerNode.coneOuterAngle,\n coneOuterGain: nativePannerNode.coneOuterGain,\n distanceModel: nativePannerNode.distanceModel,\n maxDistance: nativePannerNode.maxDistance,\n panningModel: nativePannerNode.panningModel,\n refDistance: nativePannerNode.refDistance,\n rolloffFactor: nativePannerNode.rolloffFactor\n };\n // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext);\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if ('bufferSize' in nativePannerNode) {\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n }\n else if (!nativePannerNodeIsOwnedByContext) {\n const options = {\n ...commonNativePannerNodeOptions,\n orientationX: nativePannerNode.orientationX.value,\n orientationY: nativePannerNode.orientationY.value,\n orientationZ: nativePannerNode.orientationZ.value,\n positionX: nativePannerNode.positionX.value,\n positionY: nativePannerNode.positionY.value,\n positionZ: nativePannerNode.positionZ.value\n };\n nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode);\n if (nativeGainNode !== null) {\n if (renderedBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(6, \n // Bug #17: Safari does not yet expose the length.\n proxy.context.length, nativeOfflineAudioContext.sampleRate);\n const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n nativeChannelMergerNode.connect(partialOfflineAudioContext.destination);\n renderedBufferPromise = (async () => {\n const nativeConstantSourceNodes = await Promise.all([\n proxy.orientationX,\n proxy.orientationY,\n proxy.orientationZ,\n proxy.positionX,\n proxy.positionY,\n proxy.positionZ\n ].map(async (audioParam, index) => {\n const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: index === 0 ? 1 : 0\n });\n await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset, trace);\n return nativeConstantSourceNode;\n }));\n for (let i = 0; i < 6; i += 1) {\n nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i);\n nativeConstantSourceNodes[i].start(0);\n }\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n })();\n }\n const renderedBuffer = await renderedBufferPromise;\n const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode, trace);\n const channelDatas = [];\n for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) {\n channelDatas.push(renderedBuffer.getChannelData(i));\n }\n let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]];\n let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]];\n let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n for (let i = 128; i < renderedBuffer.length; i += 128) {\n const orientation = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]];\n const positon = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]];\n if (orientation.some((value, index) => value !== lastOrientation[index]) ||\n positon.some((value, index) => value !== lastPosition[index])) {\n lastOrientation = orientation;\n lastPosition = positon;\n const currentTime = i / nativeOfflineAudioContext.sampleRate;\n gateGainNode.gain.setValueAtTime(0, currentTime);\n gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 });\n partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n gateGainNode.gain.setValueAtTime(1, currentTime);\n inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n }\n }\n return nativeGainNode;\n }\n if (!nativePannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ, trace);\n }\n if (isNativeAudioNodeFaker(nativePannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0], trace);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode, trace);\n }\n return nativePannerNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeGainNodeOrNativePannerNode !== undefined) {\n return Promise.resolve(renderedNativeGainNodeOrNativePannerNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=panner-node-renderer-factory.js.map","export const createNativePeriodicWaveFactory = (createIndexSizeError) => {\n return (nativeContext, { disableNormalization, imag, real }) => {\n // Bug #180: Safari does not allow to use ordinary arrays.\n const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag);\n const convertedReal = real instanceof Float32Array ? real : new Float32Array(real);\n const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization });\n // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values.\n if (Array.from(imag).length < 2) {\n throw createIndexSizeError();\n }\n return nativePeriodicWave;\n };\n};\n//# sourceMappingURL=native-periodic-wave-factory.js.map","export const sanitizePeriodicWaveOptions = (options) => {\n const { imag, real } = options;\n if (imag === undefined) {\n if (real === undefined) {\n return { ...options, imag: [0, 0], real: [0, 0] };\n }\n return { ...options, imag: Array.from(real, () => 0), real };\n }\n if (real === undefined) {\n return { ...options, imag, real: Array.from(imag, () => 0) };\n }\n return { ...options, imag, real };\n};\n//# sourceMappingURL=sanitize-periodic-wave-options.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeStereoPannerNodeFactory = (createNativeStereoPannerNodeFaker, createNotSupportedError) => {\n return (nativeContext, options) => {\n const channelCountMode = options.channelCountMode;\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n if (channelCountMode === 'clamped-max') {\n throw createNotSupportedError();\n }\n // Bug #105: Safari does not support the StereoPannerNode.\n if (nativeContext.createStereoPanner === undefined) {\n return createNativeStereoPannerNodeFaker(nativeContext, options);\n }\n const nativeStereoPannerNode = nativeContext.createStereoPanner();\n assignNativeAudioNodeOptions(nativeStereoPannerNode, options);\n assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan');\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', {\n get: () => channelCountMode,\n set: (value) => {\n if (value !== channelCountMode) {\n throw createNotSupportedError();\n }\n }\n });\n return nativeStereoPannerNode;\n };\n};\n//# sourceMappingURL=native-stereo-panner-node-factory.js.map","import { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeStereoPannerNodeFakerFactory = (createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections) => {\n // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally.\n const CURVE_SIZE = 16385;\n const DC_CURVE = new Float32Array([1, 1]);\n const HALF_PI = Math.PI / 2;\n const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' };\n const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' };\n const buildInternalGraphForMono = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => {\n const leftWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightWaveShaperCurve = new Float32Array(CURVE_SIZE);\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n const x = (i / (CURVE_SIZE - 1)) * HALF_PI;\n leftWaveShaperCurve[i] = Math.cos(x);\n rightWaveShaperCurve[i] = Math.sin(x);\n }\n const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve }));\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE }));\n const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve }));\n return {\n connectGraph() {\n inputGainNode.connect(leftGainNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.connect(rightGainNode);\n panWaveShaperNode.connect(panGainNode);\n panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n leftWaveShaperNode.connect(leftGainNode.gain);\n rightWaveShaperNode.connect(rightGainNode.gain);\n leftGainNode.connect(channelMergerNode, 0, 0);\n rightGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph() {\n inputGainNode.disconnect(leftGainNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.disconnect(rightGainNode);\n panWaveShaperNode.disconnect(panGainNode);\n panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n leftWaveShaperNode.disconnect(leftGainNode.gain);\n rightWaveShaperNode.disconnect(rightGainNode.gain);\n leftGainNode.disconnect(channelMergerNode, 0, 0);\n rightGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n const buildInternalGraphForStereo = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => {\n const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const centerIndex = Math.floor(CURVE_SIZE / 2);\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n if (i > centerIndex) {\n const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n rightInputForLeftOutputWaveShaperCurve[i] = 0;\n rightInputForRightOutputWaveShaperCurve[i] = 1;\n }\n else {\n const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n leftInputForLeftOutputWaveShaperCurve[i] = 1;\n leftInputForRightOutputWaveShaperCurve[i] = 0;\n rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n }\n }\n const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 2\n });\n const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForLeftOutputWaveShaperCurve\n });\n const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForRightOutputWaveShaperCurve\n });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE }));\n const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForLeftOutputWaveShaperCurve\n });\n const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForRightOutputWaveShaperCurve\n });\n return {\n connectGraph() {\n inputGainNode.connect(channelSplitterNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.connect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.connect(rightInputForRightOutputGainNode, 1);\n panWaveShaperNode.connect(panGainNode);\n panGainNode.connect(leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]);\n leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain);\n leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph() {\n inputGainNode.disconnect(channelSplitterNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1);\n panWaveShaperNode.disconnect(panGainNode);\n panGainNode.disconnect(leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]);\n leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain);\n leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n const buildInternalGraph = (nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode) => {\n if (channelCount === 1) {\n return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n if (channelCount === 2) {\n return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n throw createNotSupportedError();\n };\n return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => {\n if (channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...audioNodeOptions,\n channelCount: 1,\n channelCountMode,\n numberOfInputs: 2\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 });\n const panGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: pan\n });\n let { connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode);\n Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 });\n Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 });\n const nativeStereoPannerNodeFakerFactory = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return inputGainNode.channelCount;\n },\n set channelCount(value) {\n if (inputGainNode.channelCount !== value) {\n if (isConnected) {\n disconnectGraph();\n }\n ({ connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, value, inputGainNode, panGainNode, channelMergerNode));\n if (isConnected) {\n connectGraph();\n }\n }\n inputGainNode.channelCount = value;\n },\n get channelCountMode() {\n return inputGainNode.channelCountMode;\n },\n set channelCountMode(value) {\n if (value === 'clamped-max' || value === 'max') {\n throw createNotSupportedError();\n }\n inputGainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return inputGainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n },\n get context() {\n return inputGainNode.context;\n },\n get inputs() {\n return [inputGainNode];\n },\n get numberOfInputs() {\n return inputGainNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return inputGainNode.numberOfOutputs;\n },\n get pan() {\n return panGainNode.gain;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n let isConnected = false;\n const whenConnected = () => {\n connectGraph();\n isConnected = true;\n };\n const whenDisconnected = () => {\n disconnectGraph();\n isConnected = false;\n };\n return monitorConnections(interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-stereo-panner-node-faker-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createStereoPannerNodeRendererFactory = (connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeStereoPannerNodes = new WeakMap();\n const createStereoPannerNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeStereoPannerNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext);\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeStereoPannerNode.channelCount,\n channelCountMode: nativeStereoPannerNode.channelCountMode,\n channelInterpretation: nativeStereoPannerNode.channelInterpretation,\n pan: nativeStereoPannerNode.pan.value\n };\n nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode);\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan, trace);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan, trace);\n }\n if (isNativeAudioNodeFaker(nativeStereoPannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0], trace);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode, trace);\n }\n return nativeStereoPannerNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext);\n if (renderedNativeStereoPannerNode !== undefined) {\n return Promise.resolve(renderedNativeStereoPannerNode);\n }\n return createStereoPannerNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=stereo-panner-node-renderer-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createWaveShaperNodeRendererFactory = (createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeWaveShaperNodes = new WeakMap();\n const createWaveShaperNode = async (proxy, nativeOfflineAudioContext, trace) => {\n let nativeWaveShaperNode = getNativeAudioNode(proxy);\n // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext);\n if (!nativeWaveShaperNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeWaveShaperNode.channelCount,\n channelCountMode: nativeWaveShaperNode.channelCountMode,\n channelInterpretation: nativeWaveShaperNode.channelInterpretation,\n curve: nativeWaveShaperNode.curve,\n oversample: nativeWaveShaperNode.oversample\n };\n nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options);\n }\n renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode);\n if (isNativeAudioNodeFaker(nativeWaveShaperNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0], trace);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode, trace);\n }\n return nativeWaveShaperNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext, trace) {\n const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext);\n if (renderedNativeWaveShaperNode !== undefined) {\n return Promise.resolve(renderedNativeWaveShaperNode);\n }\n return createWaveShaperNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n//# sourceMappingURL=wave-shaper-node-renderer-factory.js.map","export const createIsSecureContext = (window) => window !== null && window.isSecureContext;\n//# sourceMappingURL=is-secure-context.js.map","export const createExposeCurrentFrameAndCurrentTime = (window) => {\n return (currentTime, sampleRate, fn) => {\n Object.defineProperties(window, {\n currentFrame: {\n configurable: true,\n get() {\n return Math.round(currentTime * sampleRate);\n }\n },\n currentTime: {\n configurable: true,\n get() {\n return currentTime;\n }\n }\n });\n try {\n return fn();\n }\n finally {\n if (window !== null) {\n delete window.currentFrame;\n delete window.currentTime;\n }\n }\n };\n};\n//# sourceMappingURL=expose-current-frame-and-current-time.js.map","export const createGetOrCreateBackupOfflineAudioContext = (backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor) => {\n return (nativeContext) => {\n let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext);\n if (backupOfflineAudioContext !== undefined) {\n return backupOfflineAudioContext;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 8000);\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n return backupOfflineAudioContext;\n };\n};\n//# sourceMappingURL=get-or-create-backup-offline-audio-context.js.map","export const createNativeAudioWorkletNodeConstructor = (window) => {\n if (window === null) {\n return null;\n }\n return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null;\n};\n//# sourceMappingURL=native-audio-worklet-node-constructor.js.map","export const createEvaluateSource = (window) => {\n return (source) => new Promise((resolve, reject) => {\n if (window === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n return;\n }\n const head = window.document.head;\n if (head === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n }\n else {\n const script = window.document.createElement('script');\n // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'.\n const blob = new Blob([source], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n const originalOnErrorHandler = window.onerror;\n const removeErrorEventListenerAndRevokeUrl = () => {\n window.onerror = originalOnErrorHandler;\n URL.revokeObjectURL(url);\n };\n window.onerror = (message, src, lineno, colno, error) => {\n // @todo Edge thinks the source is the one of the html document.\n if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) {\n removeErrorEventListenerAndRevokeUrl();\n reject(error);\n return false;\n }\n if (originalOnErrorHandler !== null) {\n return originalOnErrorHandler(message, src, lineno, colno, error);\n }\n };\n script.onerror = () => {\n removeErrorEventListenerAndRevokeUrl();\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n };\n script.onload = () => {\n removeErrorEventListenerAndRevokeUrl();\n resolve();\n };\n script.src = url;\n script.type = 'module';\n head.appendChild(script);\n }\n });\n};\n//# sourceMappingURL=evaluate-source.js.map","export const createFetchSource = (createAbortError) => {\n return async (url) => {\n try {\n const response = await fetch(url);\n if (response.ok) {\n return [await response.text(), response.url];\n }\n }\n catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n throw createAbortError();\n };\n};\n//# sourceMappingURL=fetch-source.js.map","// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\nexport const createTestAudioWorkletProcessorPostMessageSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const blob = new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor(\"a\",A)'], {\n type: 'application/javascript; charset=utf-8'\n });\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 8000);\n const url = URL.createObjectURL(blob);\n let isEmittingMessageEvents = false;\n let isEmittingProcessorErrorEvents = false;\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true);\n audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true);\n oscillator.connect(audioWorkletNode);\n await offlineAudioContext.startRendering();\n }\n catch {\n // Ignore errors.\n }\n finally {\n URL.revokeObjectURL(url);\n }\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n//# sourceMappingURL=test-audio-worklet-processor-post-message-support.js.map","export const createIsNativeContext = (isNativeAudioContext, isNativeOfflineAudioContext) => {\n return (anything) => {\n return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-native-context.js.map","import { detachArrayBuffer } from '../helpers/detach-array-buffer';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nexport const createDecodeAudioData = (audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, detachedArrayBuffers, getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n return (anyContext, audioData) => {\n const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext);\n // Bug #43: Only Chrome, Edge and Opera do throw a DataCloneError.\n if (detachedArrayBuffers.has(audioData)) {\n const err = createDataCloneError();\n return Promise.reject(err);\n }\n // The audioData parameter maybe of a type which can't be added to a WeakSet.\n try {\n detachedArrayBuffers.add(audioData);\n }\n catch {\n // Ignore errors.\n }\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) {\n return nativeContext.decodeAudioData(audioData).then((audioBuffer) => {\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n return audioBuffer;\n });\n }\n // Bug #21: Safari does not return a Promise yet.\n return new Promise((resolve, reject) => {\n const complete = () => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n try {\n detachArrayBuffer(audioData);\n }\n catch {\n // Ignore errors.\n }\n };\n const fail = (err) => {\n reject(err);\n complete();\n };\n // Bug #26: Safari throws a synchronous error.\n try {\n // Bug #1: Safari requires a successCallback.\n nativeContext.decodeAudioData(audioData, (audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n complete();\n resolve(audioBuffer);\n }, (err) => {\n // Bug #4: Safari returns null instead of an error.\n if (err === null) {\n fail(createEncodingError());\n }\n else {\n fail(err);\n }\n });\n }\n catch (err) {\n fail(err);\n }\n });\n };\n};\n//# sourceMappingURL=decode-audio-data.js.map","export const detachArrayBuffer = (arrayBuffer) => {\n const { port1 } = new MessageChannel();\n port1.postMessage(arrayBuffer, [arrayBuffer]);\n};\n//# sourceMappingURL=detach-array-buffer.js.map","export const createDataCloneError = () => new DOMException('', 'DataCloneError');\n//# sourceMappingURL=data-clone-error.js.map","export const createEncodingError = () => new DOMException('', 'EncodingError');\n//# sourceMappingURL=encoding-error.js.map","export const createBaseAudioContextConstructor = (addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor) => {\n return class BaseAudioContext extends minimalBaseAudioContextConstructor {\n constructor(_nativeContext, numberOfChannels) {\n super(_nativeContext, numberOfChannels);\n this._nativeContext = _nativeContext;\n this._audioWorklet =\n addAudioWorkletModule === undefined\n ? undefined\n : {\n addModule: (moduleURL, options) => {\n return addAudioWorkletModule(this, moduleURL, options);\n }\n };\n }\n get audioWorklet() {\n return this._audioWorklet;\n }\n createAnalyser() {\n return new analyserNodeConstructor(this);\n }\n createBiquadFilter() {\n return new biquadFilterNodeConstructor(this);\n }\n createBuffer(numberOfChannels, length, sampleRate) {\n return new audioBufferConstructor({ length, numberOfChannels, sampleRate });\n }\n createBufferSource() {\n return new audioBufferSourceNodeConstructor(this);\n }\n createChannelMerger(numberOfInputs = 6) {\n return new channelMergerNodeConstructor(this, { numberOfInputs });\n }\n createChannelSplitter(numberOfOutputs = 6) {\n return new channelSplitterNodeConstructor(this, { numberOfOutputs });\n }\n createConstantSource() {\n return new constantSourceNodeConstructor(this);\n }\n createConvolver() {\n return new convolverNodeConstructor(this);\n }\n createDelay(maxDelayTime = 1) {\n return new delayNodeConstructor(this, { maxDelayTime });\n }\n createDynamicsCompressor() {\n return new dynamicsCompressorNodeConstructor(this);\n }\n createGain() {\n return new gainNodeConstructor(this);\n }\n createIIRFilter(feedforward, feedback) {\n return new iIRFilterNodeConstructor(this, { feedback, feedforward });\n }\n createOscillator() {\n return new oscillatorNodeConstructor(this);\n }\n createPanner() {\n return new pannerNodeConstructor(this);\n }\n createPeriodicWave(real, imag, constraints = { disableNormalization: false }) {\n return new periodicWaveConstructor(this, { ...constraints, imag, real });\n }\n createStereoPanner() {\n return new stereoPannerNodeConstructor(this);\n }\n createWaveShaper() {\n return new waveShaperNodeConstructor(this);\n }\n decodeAudioData(audioData, successCallback, errorCallback) {\n return decodeAudioData(this._nativeContext, audioData)\n .then((audioBuffer) => {\n if (typeof successCallback === 'function') {\n successCallback(audioBuffer);\n }\n return audioBuffer;\n })\n .catch((err) => {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=base-audio-context-constructor.js.map","export const createMediaElementAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaElementAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options);\n // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw TypeError();\n }\n super(context, true, nativeMediaElementAudioSourceNode, null);\n this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode;\n }\n get mediaElement() {\n return this._nativeMediaElementAudioSourceNode.mediaElement;\n }\n };\n};\n//# sourceMappingURL=media-element-audio-source-node-constructor.js.map","export const createNativeMediaElementAudioSourceNode = (nativeAudioContext, options) => {\n return nativeAudioContext.createMediaElementSource(options.mediaElement);\n};\n//# sourceMappingURL=native-media-element-audio-source-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeMediaStreamAudioDestinationNode = (nativeAudioContext, options) => {\n const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination();\n assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options);\n // Bug #174: Safari does expose a wrong numberOfOutputs.\n if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) {\n Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 });\n }\n return nativeMediaStreamAudioDestinationNode;\n};\n//# sourceMappingURL=native-media-stream-audio-destination-node.js.map","export const createMediaStreamAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaStreamAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options);\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n super(context, true, nativeMediaStreamAudioSourceNode, null);\n this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode;\n }\n get mediaStream() {\n return this._nativeMediaStreamAudioSourceNode.mediaStream;\n }\n };\n};\n//# sourceMappingURL=media-stream-audio-source-node-constructor.js.map","export const createNativeMediaStreamAudioSourceNode = (nativeAudioContext, { mediaStream }) => {\n const audioStreamTracks = mediaStream.getAudioTracks();\n /*\n * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction.\n * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track.\n */\n audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks));\n /*\n * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs\n * to be overwritten as it would otherwise expose the reconstructed version.\n */\n Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream });\n return nativeMediaStreamAudioSourceNode;\n};\n//# sourceMappingURL=native-media-stream-audio-source-node.js.map","export const createMediaStreamTrackAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext) => {\n return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options);\n super(context, true, nativeMediaStreamTrackAudioSourceNode, null);\n }\n };\n};\n//# sourceMappingURL=media-stream-track-audio-source-node-constructor.js.map","export const createNativeMediaStreamTrackAudioSourceNodeFactory = (createInvalidStateError, isNativeOfflineAudioContext) => {\n return (nativeAudioContext, { mediaStreamTrack }) => {\n // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode.\n if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') {\n return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack);\n }\n const mediaStream = new MediaStream([mediaStreamTrack]);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream);\n // Bug #120: Firefox does not throw an error if the mediaStream has no audio track.\n if (mediaStreamTrack.kind !== 'audio') {\n throw createInvalidStateError();\n }\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeAudioContext)) {\n throw new TypeError();\n }\n return nativeMediaStreamAudioSourceNode;\n };\n};\n//# sourceMappingURL=native-media-stream-track-audio-source-node-factory.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nexport const createAudioContextConstructor = (baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor) => {\n return class AudioContext extends baseAudioContextConstructor {\n constructor(options = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n const nativeAudioContext = new nativeAudioContextConstructor(options);\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n // Bug #51 Only Chrome, Edge and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);\n }\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n super(nativeAudioContext, 2);\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n this._nativeGainNode.gain.value = 1e-37;\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n }\n else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n this._state = null;\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n get baseLatency() {\n return this._baseLatency;\n }\n get state() {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n close() {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n deactivateAudioGraph(this);\n });\n }\n createMediaElementSource(mediaElement) {\n return new mediaElementAudioSourceNodeConstructor(this, { mediaElement });\n }\n createMediaStreamDestination() {\n return new mediaStreamAudioDestinationNodeConstructor(this);\n }\n createMediaStreamSource(mediaStream) {\n return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream });\n }\n createMediaStreamTrackSource(mediaStreamTrack) {\n return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack });\n }\n resume() {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n }\n else {\n this.resume().then(resolve, reject);\n }\n };\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n suspend() {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=audio-context-constructor.js.map","export const createGetUnrenderedAudioWorkletNodes = (unrenderedAudioWorkletNodeStore) => {\n return (nativeContext) => {\n const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext);\n if (unrenderedAudioWorkletNodes === undefined) {\n throw new Error('The context has no set of AudioWorkletNodes.');\n }\n return unrenderedAudioWorkletNodes;\n };\n};\n//# sourceMappingURL=get-unrendered-audio-worklet-nodes.js.map","export const createAddUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\n };\n};\n//# sourceMappingURL=add-unrendered-audio-worklet-node.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const createConnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destination, output = 0, input = 0) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n if (isNativeAudioNode(destination)) {\n return outputAudioNode.connect(destination, 0, input);\n }\n return outputAudioNode.connect(destination, 0);\n };\n};\n//# sourceMappingURL=connect-multiple-outputs.js.map","export const createDeleteUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\n };\n};\n//# sourceMappingURL=delete-unrendered-audio-worklet-node.js.map","export const createGetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore, getValueForKey) => {\n return (nativeAudioWorkletNode) => getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-active-audio-worklet-node-inputs.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createAudioWorkletProcessor } from '../helpers/create-audio-worklet-processor';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { ReadOnlyMap } from '../read-only-map';\nexport const createNativeAudioWorkletNodeFakerFactory = (connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections) => {\n return (nativeContext, baseLatency, processorConstructor, options) => {\n if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) {\n throw createNotSupportedError();\n }\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels.\n if (outputChannelCount.some((channelCount) => channelCount < 1)) {\n throw createNotSupportedError();\n }\n if (outputChannelCount.length !== options.numberOfOutputs) {\n throw createIndexSizeError();\n }\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (options.channelCountMode !== 'explicit') {\n throw createNotSupportedError();\n }\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) {\n throw createNotSupportedError();\n }\n const messageChannel = new MessageChannel();\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = [];\n if (processorConstructor.parameterDescriptors !== undefined) {\n for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: options.parameterData[name] !== undefined\n ? options.parameterData[name]\n : defaultValue === undefined\n ? 0\n : defaultValue\n });\n Object.defineProperties(constantSourceNode.offset, {\n defaultValue: {\n get: () => (defaultValue === undefined ? 0 : defaultValue)\n },\n maxValue: {\n get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue)\n },\n minValue: {\n get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue)\n }\n });\n constantSourceNodes.push(constantSourceNode);\n }\n }\n const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, numberOfInputChannels + numberOfParameters, \n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n Math.max(1, numberOfOutputChannels));\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < options.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n const parameterMap = new ReadOnlyMap(processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.map(({ name }, index) => {\n const constantSourceNode = constantSourceNodes[index];\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n return [name, constantSourceNode.offset];\n }));\n inputChannelMergerNode.connect(scriptProcessorNode);\n let channelInterpretation = options.channelInterpretation;\n let onprocessorerror = null;\n // Bug #87: Expose at least one output to make this node connectable.\n const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes;\n const nativeAudioWorkletNodeFaker = {\n get bufferSize() {\n return bufferSize;\n },\n get channelCount() {\n return options.channelCount;\n },\n set channelCount(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelCountMode() {\n return options.channelCountMode;\n },\n set channelCountMode(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelInterpretation() {\n return channelInterpretation;\n },\n set channelInterpretation(value) {\n for (const gainNode of gainNodes) {\n gainNode.channelInterpretation = value;\n }\n channelInterpretation = value;\n },\n get context() {\n return scriptProcessorNode.context;\n },\n get inputs() {\n return gainNodes;\n },\n get numberOfInputs() {\n return options.numberOfInputs;\n },\n get numberOfOutputs() {\n return options.numberOfOutputs;\n },\n get onprocessorerror() {\n return onprocessorerror;\n },\n set onprocessorerror(value) {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror);\n }\n },\n get parameters() {\n return parameterMap;\n },\n get port() {\n return messageChannel.port2;\n },\n addEventListener(...args) {\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n connect: connectMultipleOutputs.bind(null, outputAudioNodes),\n disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes),\n dispatchEvent(...args) {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n const patchedEventListeners = new Map();\n messageChannel.port1.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => unpatchedEventListener(event));\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.addEventListener);\n messageChannel.port1.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.removeEventListener);\n let onmessage = null;\n Object.defineProperty(messageChannel.port1, 'onmessage', {\n get: () => onmessage,\n set: (value) => {\n if (typeof onmessage === 'function') {\n messageChannel.port1.removeEventListener('message', onmessage);\n }\n onmessage = typeof value === 'function' ? value : null;\n if (typeof onmessage === 'function') {\n messageChannel.port1.addEventListener('message', onmessage);\n messageChannel.port1.start();\n }\n }\n });\n processorConstructor.prototype.port = messageChannel.port1;\n let audioWorkletProcessor = null;\n const audioWorkletProcessorPromise = createAudioWorkletProcessor(nativeContext, nativeAudioWorkletNodeFaker, processorConstructor, options);\n audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr));\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.reduce((prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n let isActive = true;\n const disconnectOutputsGraph = () => {\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.disconnect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n };\n const activeInputIndexes = new Map();\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }) => {\n if (audioWorkletProcessor !== null) {\n const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker);\n for (let i = 0; i < bufferSize; i += 128) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(inputBuffer, inputs[j], k, k, i);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n const activeInput = activeInputs[index];\n if (activeInput.size > 0) {\n activeInputIndexes.set(index, bufferSize / 128);\n return input;\n }\n const count = activeInputIndexes.get(index);\n if (count === undefined) {\n return [];\n }\n if (input.every((channelData) => channelData.every((sample) => sample === 0))) {\n if (count === 1) {\n activeInputIndexes.delete(index);\n }\n else {\n activeInputIndexes.set(index, count - 1);\n }\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(nativeContext.currentTime + i / nativeContext.sampleRate, nativeContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n isActive = activeSourceFlag;\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n catch (error) {\n isActive = false;\n nativeAudioWorkletNodeFaker.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n }\n if (!isActive) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n gainNodes[j].disconnect(inputChannelSplitterNodes[j]);\n for (let k = 0; k < options.channelCount; k += 1) {\n inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n const length = processorConstructor.parameterDescriptors.length;\n for (let j = 0; j < length; j += 1) {\n const constantSourceNode = constantSourceNodes[j];\n constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j);\n constantSourceNode.stop();\n }\n }\n inputChannelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n if (isConnected) {\n disconnectOutputsGraph();\n }\n else {\n disconnectFakeGraph();\n }\n break;\n }\n }\n }\n };\n let isConnected = false;\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnectFakeGraph = () => {\n scriptProcessorNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n const whenConnected = () => {\n if (isActive) {\n disconnectFakeGraph();\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.connect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n }\n isConnected = true;\n };\n const whenDisconnected = () => {\n if (isActive) {\n connectFakeGraph();\n disconnectOutputsGraph();\n }\n isConnected = false;\n };\n connectFakeGraph();\n return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-faker-factory.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { createAudioWorkletProcessorPromise } from './create-audio-worklet-processor-promise';\nexport const createAudioWorkletProcessor = (nativeContext, nativeAudioWorkletNode, processorConstructor, audioWorkletNodeOptions) => {\n let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext);\n if (nodeToProcessorMap === undefined) {\n nodeToProcessorMap = new WeakMap();\n NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap);\n }\n const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions);\n nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise);\n return audioWorkletProcessorPromise;\n};\n//# sourceMappingURL=create-audio-worklet-processor.js.map","import { testClonabilityOfAudioWorkletNodeOptions } from '../helpers/test-clonability-of-audio-worklet-node-options';\nexport const createNativeAudioWorkletNodeFactory = (createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections) => {\n return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => {\n if (nativeAudioWorkletNodeConstructor !== null) {\n try {\n const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeContext, name, options);\n const patchedEventListeners = new Map();\n let onprocessorerror = null;\n Object.defineProperties(nativeAudioWorkletNode, {\n /*\n * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some\n * browsers have no native implementation to achieve a consistent behavior.\n */\n channelCount: {\n get: () => options.channelCount,\n set: () => {\n throw createInvalidStateError();\n }\n },\n channelCountMode: {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n },\n // Bug #156: Chrome and Edge do not yet fire an ErrorEvent.\n onprocessorerror: {\n get: () => onprocessorerror,\n set: (value) => {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror);\n }\n }\n }\n });\n nativeAudioWorkletNode.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n if (event.type === 'error') {\n Object.defineProperties(event, {\n type: { value: 'processorerror' }\n });\n unpatchedEventListener(event);\n }\n else {\n unpatchedEventListener(new ErrorEvent(args[0], { ...event }));\n }\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return addEventListener.call(nativeAudioWorkletNode, ...args);\n };\n })(nativeAudioWorkletNode.addEventListener);\n nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]);\n };\n })(nativeAudioWorkletNode.removeEventListener);\n /*\n * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but\n * has an output.\n */\n if (options.numberOfOutputs !== 0) {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination);\n const whenConnected = () => nativeGainNode.disconnect();\n const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination);\n // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false.\n return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected);\n }\n return nativeAudioWorkletNode;\n }\n catch (err) {\n // Bug #60: Chrome, Edge & Opera throw an InvalidStateError instead of a NotSupportedError.\n if (err.code === 11) {\n throw createNotSupportedError();\n }\n throw err;\n }\n }\n // Bug #61: Only Chrome & Opera have an implementation of the AudioWorkletNode yet.\n if (processorConstructor === undefined) {\n throw createNotSupportedError();\n }\n testClonabilityOfAudioWorkletNodeOptions(options);\n return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-factory.js.map","export const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n const { port1 } = new MessageChannel();\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n }\n finally {\n port1.close();\n }\n};\n//# sourceMappingURL=test-clonability-of-audio-worklet-node-options.js.map","export const createGetBackupOfflineAudioContext = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n//# sourceMappingURL=get-backup-offline-audio-context.js.map","export const createSetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n//# sourceMappingURL=set-active-audio-worklet-node-inputs.js.map","export const sanitizeAudioWorkletNodeOptions = (options) => {\n return {\n ...options,\n outputChannelCount: options.outputChannelCount !== undefined\n ? options.outputChannelCount\n : options.numberOfInputs === 1 && options.numberOfOutputs === 1\n ? /*\n * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why\n * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That\n * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute.\n */\n [options.channelCount]\n : Array.from({ length: options.numberOfOutputs }, () => 1)\n };\n};\n//# sourceMappingURL=sanitize-audio-worklet-node-options.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nexport const createMinimalAudioContextConstructor = (createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor) => {\n return class MinimalAudioContext extends minimalBaseAudioContextConstructor {\n constructor(options = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n const nativeAudioContext = new nativeAudioContextConstructor(options);\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n // Bug #51 Only Chrome Edge, and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);\n }\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n super(nativeAudioContext, 2);\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n this._nativeGainNode.gain.value = 1e-37;\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n }\n else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n this._state = null;\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n get baseLatency() {\n return this._baseLatency;\n }\n get state() {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n close() {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n deactivateAudioGraph(this);\n });\n }\n resume() {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n }\n else {\n this.resume().then(resolve, reject);\n }\n };\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n suspend() {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=minimal-audio-context-constructor.js.map","export const createCreateNativeOfflineAudioContext = (createNotSupportedError, nativeOfflineAudioContextConstructor) => {\n return (numberOfChannels, length, sampleRate) => {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n try {\n return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate);\n }\n catch (err) {\n // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid.\n if (err.name === 'SyntaxError') {\n throw createNotSupportedError();\n }\n throw err;\n }\n };\n};\n//# sourceMappingURL=create-native-offline-audio-context.js.map","import { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nexport const createStartRendering = (audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n const trace = [];\n return (destination, nativeOfflineAudioContext) => getAudioNodeRenderer(destination)\n .render(destination, nativeOfflineAudioContext, trace)\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the\n * destination.\n */\n .then(() => Promise.all(Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) => getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext, trace))))\n .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext))\n .then((audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n }\n else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n return audioBuffer;\n });\n};\n//# sourceMappingURL=start-rendering.js.map","export const createIsAnyAudioContext = (contextStore, isNativeAudioContext) => {\n return (anything) => {\n const nativeContext = contextStore.get(anything);\n return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-any-audio-context.js.map","export const createIsAnyAudioNode = (audioNodeStore, isNativeAudioNode) => {\n return (anything) => audioNodeStore.has(anything) || isNativeAudioNode(anything);\n};\n//# sourceMappingURL=is-any-audio-node.js.map","export const createIsAnyAudioParam = (audioParamStore, isNativeAudioParam) => {\n return (anything) => audioParamStore.has(anything) || isNativeAudioParam(anything);\n};\n//# sourceMappingURL=is-any-audio-param.js.map","export const createIsAnyOfflineAudioContext = (contextStore, isNativeOfflineAudioContext) => {\n return (anything) => {\n const nativeContext = contextStore.get(anything);\n return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-any-offline-audio-context.js.map","export const createIsSupportedPromise = async (cacheTestResult, testAudioBufferCopyChannelMethodsSubarraySupport, testAudioContextCloseMethodSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextOptionsSupport, testAudioNodeConnectMethodSupport, testAudioWorkletProcessorNoOutputsSupport, testChannelMergerNodeChannelCountSupport, testConstantSourceNodeAccurateSchedulingSupport, testConvolverNodeBufferReassignabilitySupport, testConvolverNodeChannelCountSupport, testDomExceptionContrucorSupport, testIsSecureContextSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testStereoPannerNodeDefaultValueSupport, testTransferablesSupport) => {\n if (cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) &&\n cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) &&\n cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) &&\n cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) &&\n cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) &&\n cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) &&\n cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) &&\n cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) &&\n cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) &&\n cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) &&\n cacheTestResult(testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport)) {\n const results = await Promise.all([\n cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport),\n cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport),\n cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport),\n cacheTestResult(testTransferablesSupport, testTransferablesSupport)\n ]);\n return results.every((result) => result);\n }\n return false;\n};\n//# sourceMappingURL=is-supported-promise.js.map","/*\n * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods\n * is enough to know if the other one is supported as well.\n */\nexport const createTestAudioBufferCopyChannelMethodsSubarraySupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100);\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (nativeAudioBuffer.copyToChannel === undefined) {\n return true;\n }\n const source = new Float32Array(2);\n try {\n nativeAudioBuffer.copyFromChannel(source, 0, 0);\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-audio-buffer-copy-channel-methods-subarray-support.js.map","export const createTestAudioContextCloseMethodSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n // Try to check the prototype before constructing the AudioContext.\n if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) {\n return true;\n }\n const audioContext = new nativeAudioContextConstructor();\n const isAudioContextClosable = audioContext.close !== undefined;\n try {\n audioContext.close();\n }\n catch {\n // Ignore errors.\n }\n return isAudioContextClosable;\n };\n};\n//# sourceMappingURL=test-audio-context-close-method-support.js.map","/**\n * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers\n * did not refuse to decode invalid parameters with a TypeError.\n */\nexport const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n let isPending = true;\n const resolvePromise = (err) => {\n if (isPending) {\n isPending = false;\n offlineAudioContext.startRendering();\n resolve(err instanceof TypeError);\n }\n };\n let promise;\n // Bug #26: Safari throws a synchronous error.\n try {\n promise = offlineAudioContext\n // Bug #1: Safari requires a successCallback.\n .decodeAudioData(null, () => {\n // Ignore the success callback.\n }, resolvePromise);\n }\n catch (err) {\n resolvePromise(err);\n }\n // Bug #21: Safari does not support promises yet.\n if (promise !== undefined) {\n // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback.\n promise.catch(resolvePromise);\n }\n });\n };\n};\n//# sourceMappingURL=test-audio-context-decode-audio-data-method-type-error-support.js.map","export const createTestAudioContextOptionsSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n let audioContext;\n try {\n audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' });\n }\n catch {\n return false;\n }\n audioContext.close();\n return true;\n };\n};\n//# sourceMappingURL=test-audio-context-options-support.js.map","// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode.\nexport const createTestAudioNodeConnectMethodSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeGainNode = nativeOfflineAudioContext.createGain();\n const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode;\n nativeGainNode.disconnect(nativeGainNode);\n return isSupported;\n };\n};\n//# sourceMappingURL=test-audio-node-connect-method-support.js.map","/**\n * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was\n * enabled by default in version 66.\n */\nexport const createTestAudioWorkletProcessorNoOutputsSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const blob = new Blob(['class A extends AudioWorkletProcessor{process(){this.port.postMessage(0)}}registerProcessor(\"a\",A)'], {\n type: 'application/javascript; charset=utf-8'\n });\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 8000);\n const url = URL.createObjectURL(blob);\n let isCallingProcess = false;\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n audioWorkletNode.port.onmessage = () => (isCallingProcess = true);\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n await offlineAudioContext.startRendering();\n if (!isCallingProcess) {\n await new Promise((resolve) => setTimeout(resolve, 5));\n }\n }\n catch {\n // Ignore errors.\n }\n finally {\n URL.revokeObjectURL(url);\n }\n return isCallingProcess;\n };\n};\n//# sourceMappingURL=test-audio-worklet-processor-no-outputs-support.js.map","/**\n * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode.\n */\nexport const createTestChannelMergerNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeChannelMergerNode = offlineAudioContext.createChannelMerger();\n /**\n * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support\n * in other browsers.\n */\n if (nativeChannelMergerNode.channelCountMode === 'max') {\n return true;\n }\n try {\n nativeChannelMergerNode.channelCount = 2;\n }\n catch {\n return true;\n }\n return false;\n };\n};\n//# sourceMappingURL=test-channel-merger-node-channel-count-support.js.map","export const createTestConstantSourceNodeAccurateSchedulingSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return true;\n }\n const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource();\n /*\n * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to\n * the implementation of Firefox right now, but it could probably be done in a better way.\n */\n return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY;\n };\n};\n//# sourceMappingURL=test-constant-source-node-accurate-scheduling-support.js.map","// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode.\nexport const createTestConvolverNodeBufferReassignabilitySupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n try {\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-convolver-node-buffer-reassignability-support.js.map","// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'.\nexport const createTestConvolverNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n try {\n nativeConvolverNode.channelCount = 1;\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-convolver-node-channel-count-support.js.map","export const createTestIsSecureContextSupport = (window) => {\n return () => window !== null && window.hasOwnProperty('isSecureContext');\n};\n//# sourceMappingURL=test-is-secure-context-support.js.map","// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track.\nexport const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n const audioContext = new nativeAudioContextConstructor();\n try {\n audioContext.createMediaStreamSource(new MediaStream());\n return false;\n }\n catch (err) {\n return true;\n }\n };\n};\n//# sourceMappingURL=test-media-stream-audio-source-node-media-stream-without-audio-track-support.js.map","/**\n * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero.\n */\nexport const createTestStereoPannerNodeDefaultValueSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n /*\n * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does\n * support the tested behaviour.\n */\n if (nativeOfflineAudioContext.createStereoPanner === undefined) {\n return Promise.resolve(true);\n }\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return Promise.resolve(true);\n }\n const constantSourceNode = nativeOfflineAudioContext.createConstantSource();\n const stereoPanner = nativeOfflineAudioContext.createStereoPanner();\n constantSourceNode.channelCount = 1;\n constantSourceNode.offset.value = 1;\n stereoPanner.channelCount = 1;\n constantSourceNode.start();\n constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination);\n return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1);\n };\n};\n//# sourceMappingURL=test-stereo-panner-node-default-value-support.js.map","/**\n * Assert that the statement is true, otherwise invoke the error.\n * @param statement\n * @param error The message which is passed into an Error\n */\nexport function assert(statement: boolean, error: string): void {\n\tif (!statement) {\n\t\tthrow new Error(error);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertRange(value: number, gte: number, lte = Infinity): void {\n\tif (!(gte <= value && value <= lte)) {\n\t\tthrow new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertContextRunning(context: import(\"../context/BaseContext\").BaseContext): void {\n\t// add a warning if the context is not started\n\tif (!context.isOffline && context.state !== \"running\") {\n\t\twarn(\"The AudioContext is \\\"suspended\\\". Invoke Tone.start() from a user action to start the audio.\");\n\t}\n}\n\n/**\n * A basic logging interface\n */\ninterface Logger {\n\tlog: (args?: any[]) => void;\n\twarn: (args?: any[]) => void;\n}\n\n/**\n * The default logger is the console\n */\nlet defaultLogger: Logger = console;\n\n/**\n * Set the logging interface\n */\nexport function setLogger(logger: Logger): void {\n\tdefaultLogger = logger;\n}\n\n/**\n * Log anything\n */\nexport function log(...args: any[]): void {\n\tdefaultLogger.log(...args);\n}\n\n/**\n * Warn anything\n */\nexport function warn(...args: any[]): void {\n\tdefaultLogger.warn(...args);\n}\n","import { Note } from \"../type/Units\";\n\n/**\n * Test if the arg is undefined\n */\nexport function isUndef(arg: any): arg is undefined {\n\treturn typeof arg === \"undefined\";\n}\n\n/**\n * Test if the arg is not undefined\n */\nexport function isDefined(arg: T | undefined): arg is T {\n\treturn !isUndef(arg);\n}\n\n/**\n * Test if the arg is a function\n */\nexport function isFunction(arg: any): arg is (a: any) => any {\n\treturn typeof arg === \"function\";\n}\n\n/**\n * Test if the argument is a number.\n */\nexport function isNumber(arg: any): arg is number {\n\treturn (typeof arg === \"number\");\n}\n\n/**\n * Test if the given argument is an object literal (i.e. `{}`);\n */\nexport function isObject(arg: any): arg is object {\n\treturn (Object.prototype.toString.call(arg) === \"[object Object]\" && arg.constructor === Object);\n}\n\n/**\n * Test if the argument is a boolean.\n */\nexport function isBoolean(arg: any): arg is boolean {\n\treturn (typeof arg === \"boolean\");\n}\n\n/**\n * Test if the argument is an Array\n */\nexport function isArray(arg: any): arg is any[] {\n\treturn (Array.isArray(arg));\n}\n\n/**\n * Test if the argument is a string.\n */\nexport function isString(arg: any): arg is string {\n\treturn (typeof arg === \"string\");\n}\n\n/**\n * Test if the argument is in the form of a note in scientific pitch notation.\n * e.g. \"C4\"\n */\nexport function isNote(arg: any): arg is Note {\n\treturn isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg);\n}\n","import {\n\tAudioContext as stdAudioContext,\n\tAudioWorkletNode as stdAudioWorkletNode,\n\tOfflineAudioContext as stdOfflineAudioContext\n} from \"standardized-audio-context\";\nimport { assert } from \"../util/Debug\";\nimport { isDefined } from \"../util/TypeCheck\";\n\n/**\n * Create a new AudioContext\n */\nexport function createAudioContext(options?: AudioContextOptions): AudioContext {\n\treturn new stdAudioContext(options) as unknown as AudioContext;\n}\n\n/**\n * Create a new OfflineAudioContext\n */\nexport function createOfflineAudioContext(channels: number, length: number, sampleRate: number): OfflineAudioContext {\n\treturn new stdOfflineAudioContext(channels, length, sampleRate) as unknown as OfflineAudioContext;\n}\n\n/**\n * Either the online or offline audio context\n */\nexport type AnyAudioContext = AudioContext | OfflineAudioContext;\n\n/**\n * Interface for things that Tone.js adds to the window\n */\ninterface ToneWindow extends Window {\n\tTONE_SILENCE_LOGGING?: boolean;\n\tTONE_DEBUG_CLASS?: string;\n}\n\n/**\n * A reference to the window object\n * @hidden\n */\nexport const theWindow: ToneWindow | null = typeof self === \"object\" ? self : null;\n\n/**\n * If the browser has a window object which has an AudioContext\n * @hidden\n */\nexport const hasAudioContext = theWindow &&\n\t(theWindow.hasOwnProperty(\"AudioContext\") || theWindow.hasOwnProperty(\"webkitAudioContext\"));\n\nexport function createAudioWorkletNode(context: AnyAudioContext, name: string, options?: Partial): AudioWorkletNode {\n\tassert(isDefined(stdAudioWorkletNode), \"This node only works in a secure context (https or localhost)\");\n\t// @ts-ignore\n\treturn new stdAudioWorkletNode(context, name, options);\n}\n\n/**\n * This promise resolves to a boolean which indicates if the \n * functionality is supported within the currently used browse. \n * Taken from [standardized-audio-context](https://github.com/chrisguttandin/standardized-audio-context#issupported)\n */\nexport { isSupported as supported } from \"standardized-audio-context\";\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Seconds } from \"../type/Units\";\n\nexport type TickerClockSource = \"worker\" | \"timeout\" | \"offline\";\n\n/**\n * A class which provides a reliable callback using either\n * a Web Worker, or if that isn't supported, falls back to setTimeout.\n */\nexport class Ticker {\n\n\t/**\n\t * Either \"worker\" or \"timeout\" or \"offline\"\n\t */\n\tprivate _type: TickerClockSource;\n\n\t/**\n\t * The update interval of the worker\n\t */\n\tprivate _updateInterval: Seconds;\n\n\t/**\n\t * The callback to invoke at regular intervals\n\t */\n\tprivate _callback: () => void;\n\n\t/**\n\t * track the callback interval\n\t */\n\tprivate _timeout!: ReturnType;\n\n\t/**\n\t * private reference to the worker\n\t */\n\tprivate _worker!: Worker;\n\n\tconstructor(callback: () => void, type: TickerClockSource, updateInterval: Seconds) {\n\n\t\tthis._callback = callback;\n\t\tthis._type = type;\n\t\tthis._updateInterval = updateInterval;\n\n\t\t// create the clock source for the first time\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Generate a web worker\n\t */\n\tprivate _createWorker(): void {\n\n\t\tconst blob = new Blob([\n\t\t\t/* javascript */`\n\t\t\t// the initial timeout time\n\t\t\tlet timeoutTime = ${(this._updateInterval * 1000).toFixed(1)};\n\t\t\t// onmessage callback\n\t\t\tself.onmessage = function(msg){\n\t\t\t\ttimeoutTime = parseInt(msg.data);\n\t\t\t};\n\t\t\t// the tick function which posts a message\n\t\t\t// and schedules a new tick\n\t\t\tfunction tick(){\n\t\t\t\tsetTimeout(tick, timeoutTime);\n\t\t\t\tself.postMessage('tick');\n\t\t\t}\n\t\t\t// call tick initially\n\t\t\ttick();\n\t\t\t`\n\t\t], { type: \"text/javascript\" });\n\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\tconst worker = new Worker(blobUrl);\n\n\t\tworker.onmessage = this._callback.bind(this);\n\n\t\tthis._worker = worker;\n\t}\n\n\t/**\n\t * Create a timeout loop\n\t */\n\tprivate _createTimeout(): void {\n\t\tthis._timeout = setTimeout(() => {\n\t\t\tthis._createTimeout();\n\t\t\tthis._callback();\n\t\t}, this._updateInterval * 1000);\n\t}\n\n\t/**\n\t * Create the clock source.\n\t */\n\tprivate _createClock(): void {\n\t\tif (this._type === \"worker\") {\n\t\t\ttry {\n\t\t\t\tthis._createWorker();\n\t\t\t} catch (e) {\n\t\t\t\t// workers not supported, fallback to timeout\n\t\t\t\tthis._type = \"timeout\";\n\t\t\t\tthis._createClock();\n\t\t\t}\n\t\t} else if (this._type === \"timeout\") {\n\t\t\tthis._createTimeout();\n\t\t}\n\t}\n\n\t/**\n\t * Clean up the current clock source\n\t */\n\tprivate _disposeClock(): void {\n\t\tif (this._timeout) {\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = 0;\n\t\t}\n\t\tif (this._worker) {\n\t\t\tthis._worker.terminate();\n\t\t\tthis._worker.onmessage = null;\n\t\t}\n\t}\n\n\t/**\n\t * The rate in seconds the ticker will update\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._updateInterval = Math.max(interval, 128 / 44100);\n\t\tif (this._type === \"worker\") {\n\t\t\tthis._worker.postMessage(Math.max(interval * 1000, 1));\n\t\t}\n\t}\n\n\t/**\n\t * The type of the ticker, either a worker or a timeout\n\t */\n\tget type(): TickerClockSource {\n\t\treturn this._type;\n\t}\n\tset type(type: TickerClockSource) {\n\t\tthis._disposeClock();\n\t\tthis._type = type;\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): void {\n\t\tthis._disposeClock();\n\t}\n}\n","import {\n\tAudioBuffer, isAnyAudioContext,\n\tisAnyAudioNode, isAnyAudioParam,\n\tisAnyOfflineAudioContext\n} from \"standardized-audio-context\";\n\n/**\n * Test if the given value is an instanceof AudioParam\n */\nexport function isAudioParam(arg: any): arg is AudioParam {\n\treturn isAnyAudioParam(arg);\n}\n\n/**\n * Test if the given value is an instanceof AudioNode\n */\nexport function isAudioNode(arg: any): arg is AudioNode {\n\treturn isAnyAudioNode(arg);\n}\n\n/**\n * Test if the arg is instanceof an OfflineAudioContext\n */\nexport function isOfflineAudioContext(arg: any): arg is OfflineAudioContext {\n\treturn isAnyOfflineAudioContext(arg);\n}\n\n/**\n * Test if the arg is an instanceof AudioContext\n */\nexport function isAudioContext(arg: any): arg is AudioContext {\n\treturn isAnyAudioContext(arg);\n}\n\n/**\n * Test if the arg is instanceof an AudioBuffer\n */\nexport function isAudioBuffer(arg: any): arg is AudioBuffer {\n\treturn arg instanceof AudioBuffer;\n}\n","import { isAudioBuffer, isAudioNode, isAudioParam } from \"./AdvancedTypeCheck\";\nimport { isDefined, isObject, isUndef } from \"./TypeCheck\";\n\ntype BaseToneOptions = import(\"../Tone\").BaseToneOptions;\n\n/**\n * Some objects should not be merged\n */\nfunction noCopy(key: string, arg: any): boolean {\n\treturn key === \"value\" || isAudioParam(arg) || isAudioNode(arg) || isAudioBuffer(arg);\n}\n\n/**\n * Recursively merge an object\n * @param target the object to merge into\n * @param sources the source objects to merge\n */\nexport function deepMerge(target: T): T;\nexport function deepMerge(target: T, source1: U): T & U;\nexport function deepMerge(target: T, source1: U, source2: V): T & U & V;\nexport function deepMerge(target: T, source1: U, source2: V, source3: W): T & U & V & W;\nexport function deepMerge(target: any, ...sources: any[]): any {\n\tif (!sources.length) {\n\t\treturn target; \n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (noCopy(key, source[key])) {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t} else if (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} }); \n\t\t\t\t}\n\t\t\t\tdeepMerge(target[key], source[key] as any);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, { [key]: source[key] as any });\n\t\t\t}\n\t\t}\n\t}\n\t// @ts-ignore\n\treturn deepMerge(target, ...sources);\n}\n\n/**\n * Returns true if the two arrays have the same value for each of the elements\n */\nexport function deepEquals(arrayA: T[], arrayB: T[]): boolean {\n\treturn arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element);\n}\n\n/**\n * Convert an args array into an object.\n */\nexport function optionsFromArguments(\n\tdefaults: T,\n\targsArray: IArguments,\n\tkeys: Array = [],\n\tobjKey?: keyof T,\n): T {\n\tconst opts: Partial = {};\n\tconst args = Array.from(argsArray);\n\t// if the first argument is an object and has an object key\n\tif (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) {\n\t\t// if it's not part of the defaults\n\t\tconst partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key));\n\t\tif (!partOfDefaults) {\n\t\t\t// merge that key\n\t\t\tdeepMerge(opts, { [objKey]: args[0] });\n\t\t\t// remove the obj key from the keys\n\t\t\tkeys.splice(keys.indexOf(objKey), 1);\n\t\t\t// shift the first argument off\n\t\t\targs.shift();\n\t\t}\n\t}\n\tif (args.length === 1 && isObject(args[0])) {\n\t\tdeepMerge(opts, args[0]);\n\t} else {\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tif (isDefined(args[i])) {\n\t\t\t\topts[keys[i]] = args[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn deepMerge(defaults, opts);\n}\n\n/**\n * Return this instances default values by calling Constructor.getDefaults()\n */\nexport function getDefaultsFromInstance(instance: T): BaseToneOptions {\n\ttype ToneClass = {\n\t\tconstructor: ToneClass;\n\t\tgetDefaults: () => BaseToneOptions;\n\t} & T;\n\n\treturn (instance as ToneClass).constructor.getDefaults();\n}\n\n/**\n * Returns the fallback if the given object is undefined.\n * Take an array of arguments and return a formatted options object.\n */\nexport function defaultArg(given: T, fallback: T): T {\n\tif (isUndef(given)) {\n\t\treturn fallback;\n\t} else {\n\t\treturn given;\n\t}\n}\n\n/**\n * Remove all of the properties belonging to omit from obj.\n */\nexport function omitFromObject(obj: T, omit: O): Omit {\n\tomit.forEach(prop => {\n\t\tif (Reflect.has(obj, prop)) {\n\t\t\tdelete obj[prop];\n\t\t}\n\t});\n\treturn obj;\n}\n","/**\n * Tone.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2014-2019 Yotam Mann\n */\nimport { version } from \"../version\";\nimport { theWindow } from \"./context/AudioContext\";\nimport { log } from \"./util/Debug\";\n\n//-------------------------------------\n// \tTONE\n//-------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseToneOptions { }\n\n/**\n * Tone is the base class of all other classes.\n * \n * @category Core\n * @constructor\n */\nexport abstract class Tone {\n\n\t/**\n\t * The version number semver\n\t */\n\tstatic version: string = version;\n\n\t/**\n\t * The name of the class\n\t */\n\tprotected abstract name: string;\n\n\t/**\n\t * Returns all of the default options belonging to the class.\n\t */\n\tstatic getDefaults(): BaseToneOptions {\n\t\treturn {};\n\t}\n\n\t//-------------------------------------\n\t// \tDEBUGGING\n\t//-------------------------------------\n\n\t/**\n\t * Set this debug flag to log all events that happen in this class.\n\t */\n\tdebug = false;\n\n\t/**\n\t * Prints the outputs to the console log for debugging purposes.\n\t * Prints the contents only if either the object has a property\n\t * called `debug` set to true, or a variable called TONE_DEBUG_CLASS\n\t * is set to the name of the class.\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * // prints all logs originating from this oscillator\n\t * osc.debug = true;\n\t * // calls to start/stop will print in the console\n\t * osc.start();\n\t */\n\tprotected log(...args: any[]): void {\n\t\t// if the object is either set to debug = true\n\t\t// or if there is a string on the Tone.global.with the class name\n\t\tif (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) {\n\t\t\tlog(this, ...args);\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// \tDISPOSING\n\t//-------------------------------------\n\n\t/**\n\t * Indicates if the instance was disposed\n\t */\n\tprivate _wasDisposed = false;\n\n\t/**\n\t * disconnect and dispose.\n\t */\n\tdispose(): this {\n\t\tthis._wasDisposed = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Indicates if the instance was disposed. 'Disposing' an\n\t * instance means that all of the Web Audio nodes that were\n\t * created for the instance are disconnected and freed for garbage collection.\n\t */\n\tget disposed(): boolean {\n\t\treturn this._wasDisposed;\n\t}\n\n\t/**\n\t * Convert the class to a string\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * console.log(osc.toString());\n\t */\n\ttoString(): string {\n\t\treturn this.name;\n\t}\n}\n","/**\n * The threshold for correctness for operators. Less than one sample even \n * at very high sampling rates (e.g. `1e-6 < 1 / 192000`).\n */\nconst EPSILON = 1e-6;\n\n/**\n * Test if A is greater than B\n */\nexport function GT(a: number, b: number): boolean {\n\treturn a > b + EPSILON;\n}\n\n/**\n * Test if A is greater than or equal to B\n */\nexport function GTE(a: number, b: number): boolean {\n\treturn GT(a, b) || EQ(a, b);\n}\n\n/**\n * Test if A is less than B\n */\nexport function LT(a: number, b: number): boolean {\n\treturn a + EPSILON < b;\n}\n\n/**\n * Test if A is less than B\n */\nexport function EQ(a: number, b: number): boolean {\n\treturn Math.abs(a - b) < EPSILON;\n}\n\n/**\n * Clamp the value within the given range\n */\nexport function clamp(value: number, min: number, max: number): number {\n\treturn Math.max(Math.min(value, max), min);\n}\n","import { Tone } from \"../Tone\";\nimport { Seconds } from \"../type/Units\";\nimport { optionsFromArguments } from \"./Defaults\";\nimport { assert } from \"./Debug\";\nimport { EQ, GT, GTE, LT } from \"./Math\";\n\ntype TimelineSearchParam = \"ticks\" | \"time\";\n\n/**\n * The options object for Timeline\n */\ninterface TimelineOptions {\n\tmemory: number;\n\tincreasing: boolean;\n}\n\n/**\n * An event must have a time number\n */\nexport interface TimelineEvent {\n\ttime: number;\n}\n\n/**\n * A Timeline class for scheduling and maintaining state\n * along a timeline. All events must have a \"time\" property.\n * Internally, events are stored in time order for fast\n * retrieval.\n */\nexport class Timeline extends Tone {\n\n\treadonly name: string = \"Timeline\";\n\n\t/**\n\t * The memory of the timeline, i.e.\n\t * how many events in the past it will retain\n\t */\n\tmemory: number;\n\n\t/**\n\t * The array of scheduled timeline events\n\t */\n\tprotected _timeline: GenericEvent[] = [];\n\n\t/**\n\t * If the time value must always be greater than or equal to the last \n\t * element on the list. \n\t */\n\tincreasing: boolean;\n\n\t/**\n\t * @param memory The number of previous events that are retained.\n\t */\n\tconstructor(memory?: number);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Timeline.getDefaults(), arguments, [\"memory\"]);\n\n\t\tthis.memory = options.memory;\n\t\tthis.increasing = options.increasing;\n\t}\n\n\tstatic getDefaults(): TimelineOptions {\n\t\treturn {\n\t\t\tmemory: Infinity,\n\t\t\tincreasing: false,\n\t\t};\n\t}\n\n\t/**\n\t * The number of items in the timeline.\n\t */\n\tget length(): number {\n\t\treturn this._timeline.length;\n\t}\n\n\t/**\n\t * Insert an event object onto the timeline. Events must have a \"time\" attribute.\n\t * @param event The event object to insert into the timeline.\n\t */\n\tadd(event: GenericEvent): this {\n\t\t// the event needs to have a time attribute\n\t\tassert(Reflect.has(event, \"time\"), \"Timeline: events must have a time attribute\");\n\t\tevent.time = event.time.valueOf();\n\t\tif (this.increasing && this.length) {\n\t\t\tconst lastValue = this._timeline[this.length - 1] as GenericEvent;\n\t\t\tassert(GTE(event.time, lastValue.time), \"The time must be greater than or equal to the last scheduled time\");\n\t\t\tthis._timeline.push(event);\n\t\t} else {\n\t\t\tconst index = this._search(event.time);\n\t\t\tthis._timeline.splice(index + 1, 0, event);\n\t\t}\n\t\t// if the length is more than the memory, remove the previous ones\n\t\tif (this.length > this.memory) {\n\t\t\tconst diff = this.length - this.memory;\n\t\t\tthis._timeline.splice(0, diff);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove an event from the timeline.\n\t * @param {Object} event The event object to remove from the list.\n\t * @returns {Timeline} this\n\t */\n\tremove(event: GenericEvent): this {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index !== -1) {\n\t\t\tthis._timeline.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the nearest event whose time is less than or equal to the given time.\n\t * @param time The time to query.\n\t */\n\tget(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index !== -1) {\n\t\t\treturn this._timeline[index];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Return the first event in the timeline without removing it\n\t * @returns {Object} The first event object\n\t */\n\tpeek(): GenericEvent | undefined {\n\t\treturn this._timeline[0];\n\t}\n\n\t/**\n\t * Return the first event in the timeline and remove it\n\t */\n\tshift(): GenericEvent | undefined {\n\t\treturn this._timeline.shift();\n\t}\n\n\t/**\n\t * Get the event which is scheduled after the given time.\n\t * @param time The time to query.\n\t */\n\tgetAfter(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index + 1 < this._timeline.length) {\n\t\t\treturn this._timeline[index + 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the event before the event at the given time.\n\t * @param time The time to query.\n\t */\n\tgetBefore(time: number): GenericEvent | null {\n\t\tconst len = this._timeline.length;\n\t\t// if it's after the last item, return the last item\n\t\tif (len > 0 && this._timeline[len - 1].time < time) {\n\t\t\treturn this._timeline[len - 1];\n\t\t}\n\t\tconst index = this._search(time);\n\t\tif (index - 1 >= 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Cancel events at and after the given time\n\t * @param after The time to query.\n\t */\n\tcancel(after: number): this {\n\t\tif (this._timeline.length > 1) {\n\t\t\tlet index = this._search(after);\n\t\t\tif (index >= 0) {\n\t\t\t\tif (EQ(this._timeline[index].time, after)) {\n\t\t\t\t\t// get the first item with that time\n\t\t\t\t\tfor (let i = index; i >= 0; i--) {\n\t\t\t\t\t\tif (EQ(this._timeline[i].time, after)) {\n\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index);\n\t\t\t\t} else {\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t} else if (this._timeline.length === 1) {\n\t\t\t// the first item's time\n\t\t\tif (GTE(this._timeline[0].time, after)) {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Cancel events before or equal to the given time.\n\t * @param time The time to cancel before.\n\t */\n\tcancelBefore(time: number): this {\n\t\tconst index = this._search(time);\n\t\tif (index >= 0) {\n\t\t\tthis._timeline = this._timeline.slice(index + 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the previous event if there is one. null otherwise\n\t * @param event The event to find the previous one of\n\t * @return The event right before the given event\n\t */\n\tpreviousEvent(event: GenericEvent): GenericEvent | null {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index > 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Does a binary search on the timeline array and returns the\n\t * nearest event index whose time is after or equal to the given time.\n\t * If a time is searched before the first index in the timeline, -1 is returned.\n\t * If the time is after the end, the index of the last item is returned.\n\t */\n\tprotected _search(time: number, param: TimelineSearchParam = \"time\"): number {\n\t\tif (this._timeline.length === 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet beginning = 0;\n\t\tconst len = this._timeline.length;\n\t\tlet end = len;\n\t\tif (len > 0 && this._timeline[len - 1][param] <= time) {\n\t\t\treturn len - 1;\n\t\t}\n\t\twhile (beginning < end) {\n\t\t\t// calculate the midpoint for roughly equal partition\n\t\t\tlet midPoint = Math.floor(beginning + (end - beginning) / 2);\n\t\t\tconst event = this._timeline[midPoint];\n\t\t\tconst nextEvent = this._timeline[midPoint + 1];\n\t\t\tif (EQ(event[param], time)) {\n\t\t\t\t// choose the last one that has the same time\n\t\t\t\tfor (let i = midPoint; i < this._timeline.length; i++) {\n\t\t\t\t\tconst testEvent = this._timeline[i];\n\t\t\t\t\tif (EQ(testEvent[param], time)) {\n\t\t\t\t\t\tmidPoint = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn midPoint;\n\t\t\t} else if (LT(event[param], time) && GT(nextEvent[param], time)) {\n\t\t\t\treturn midPoint;\n\t\t\t} else if (GT(event[param], time)) {\n\t\t\t\t// search lower\n\t\t\t\tend = midPoint;\n\t\t\t} else {\n\t\t\t\t// search upper\n\t\t\t\tbeginning = midPoint + 1;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Internal iterator. Applies extra safety checks for\n\t * removing items from the array.\n\t */\n\tprivate _iterate(\n\t\tcallback: (event: GenericEvent) => void,\n\t\tlowerBound = 0, upperBound = this._timeline.length - 1,\n\t): void {\n\t\tthis._timeline.slice(lowerBound, upperBound + 1).forEach(callback);\n\t}\n\n\t/**\n\t * Iterate over everything in the array\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEach(callback: (event: GenericEvent) => void): this {\n\t\tthis._iterate(callback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or before the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBefore(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array after the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAfter(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst lowerBound = this._search(time);\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array between the startTime and endTime.\n\t * The timerange is inclusive of the startTime, but exclusive of the endTime.\n\t * range = [startTime, endTime).\n\t * @param startTime The time to check if items are before\n\t * @param endTime The end of the test interval.\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBetween(startTime: number, endTime: number, callback: (event: GenericEvent) => void): this {\n\t\tlet lowerBound = this._search(startTime);\n\t\tlet upperBound = this._search(endTime);\n\t\tif (lowerBound !== -1 && upperBound !== -1) {\n\t\t\tif (this._timeline[lowerBound].time !== startTime) {\n\t\t\t\tlowerBound += 1;\n\t\t\t}\n\t\t\t// exclusive of the end time\n\t\t\tif (this._timeline[upperBound].time === endTime) {\n\t\t\t\tupperBound -= 1;\n\t\t\t}\n\t\t\tthis._iterate(callback, lowerBound, upperBound);\n\t\t} else if (lowerBound === -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or after the given time. Similar to\n\t * forEachAfter, but includes the item(s) at the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachFrom(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tlet lowerBound = this._search(time);\n\t\t// work backwards until the event time is less than time\n\t\twhile (lowerBound >= 0 && this._timeline[lowerBound].time >= time) {\n\t\t\tlowerBound--;\n\t\t}\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at the given time\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAtTime(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) {\n\t\t\tlet lowerBound = upperBound;\n\t\t\tfor (let i = upperBound; i >= 0; i--) {\n\t\t\t\tif (EQ(this._timeline[i].time, time)) {\n\t\t\t\t\tlowerBound = i;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._iterate(event => {\n\t\t\t\tcallback(event);\n\t\t\t}, lowerBound, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clean up.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._timeline = [];\n\t\treturn this;\n\t}\n}\n","//-------------------------------------\n// INITIALIZING NEW CONTEXT\n//-------------------------------------\n\ntype Context = import(\"./Context\").Context;\n\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyNewContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to setup a new Context\n */\nexport function onContextInit(cb: (ctx: Context) => void): void {\n\tnotifyNewContext.push(cb);\n}\n\n/**\n * Invoke any classes which need to also be initialized when a new context is created.\n */\nexport function initializeContext(ctx: Context): void {\n\t// add any additional modules\n\tnotifyNewContext.forEach(cb => cb(ctx));\n}\n\n/**\n * Array of callbacks to invoke when a new context is closed\n */\nconst notifyCloseContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to tear down a Context\n */\nexport function onContextClose(cb: (ctx: Context) => void): void {\n\tnotifyCloseContext.push(cb);\n}\n\nexport function closeContext(ctx: Context): void {\n\t// remove any additional modules\n\tnotifyCloseContext.forEach(cb => cb(ctx));\n}\n","import { Tone } from \"../Tone\";\nimport { isUndef } from \"./TypeCheck\";\n\nexport interface EmitterEventObject {\n\t[event: string]: Array<(...args: any[]) => void>;\n}\n\n/**\n * Emitter gives classes which extend it\n * the ability to listen for and emit events.\n * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js).\n * MIT (c) 2011 Jerome Etienne.\n * @category Core\n */\nexport class Emitter extends Tone {\n\n\treadonly name: string = \"Emitter\";\n\n\t/**\n\t * Private container for the events\n\t */\n\tprivate _events?: EmitterEventObject;\n\n\t/**\n\t * Bind a callback to a specific event.\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\ton(event: EventType, callback: (...args: any[]) => void): this {\n\t\t// split the event\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (!this._events.hasOwnProperty(eventName)) {\n\t\t\t\tthis._events[eventName] = [];\n\t\t\t}\n\t\t\tthis._events[eventName].push(callback);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bind a callback which is only invoked once\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\tonce(event: EventType, callback: (...args: any[]) => void): this {\n\t\tconst boundCallback = (...args: any[]) => {\n\t\t\t// invoke the callback\n\t\t\tcallback(...args);\n\t\t\t// remove the event\n\t\t\tthis.off(event, boundCallback);\n\t\t};\n\t\tthis.on(event, boundCallback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove the event listener.\n\t * @param event The event to stop listening to.\n\t * @param callback The callback which was bound to the event with Emitter.on.\n\t * If no callback is given, all callbacks events are removed.\n\t */\n\toff(event: EventType, callback?: (...args: any[]) => void): this {\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (this._events.hasOwnProperty(eventName)) {\n\t\t\t\tif (isUndef(callback)) {\n\t\t\t\t\tthis._events[eventName] = [];\n\t\t\t\t} else {\n\t\t\t\t\tconst eventList = this._events[eventName];\n\t\t\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (eventList[i] === callback) {\n\t\t\t\t\t\t\teventList.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Invoke all of the callbacks bound to the event\n\t * with any arguments passed in.\n\t * @param event The name of the event.\n\t * @param args The arguments to pass to the functions listening.\n\t */\n\temit(event, ...args: any[]): this {\n\t\tif (this._events) {\n\t\t\tif (this._events.hasOwnProperty(event)) {\n\t\t\t\tconst eventList = this._events[event].slice(0);\n\t\t\t\tfor (let i = 0, len = eventList.length; i < len; i++) {\n\t\t\t\t\teventList[i].apply(this, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add Emitter functions (on/off/emit) to the object\n\t */\n\tstatic mixin(constr: any): void {\n\t\t// instance._events = {};\n\t\t[\"on\", \"once\", \"off\", \"emit\"].forEach(name => {\n\t\t\tconst property = Object.getOwnPropertyDescriptor(Emitter.prototype, name) as PropertyDescriptor;\n\t\t\tObject.defineProperty(constr.prototype, name, property);\n\t\t});\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._events = undefined;\n\t\treturn this;\n\t}\n}\n","import { Seconds } from \"../type/Units\";\nimport { Emitter } from \"../util/Emitter\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\n// these are either not used in Tone.js or deprecated and not implemented.\nexport type ExcludedFromBaseAudioContext =\n\t| \"onstatechange\"\n\t| \"addEventListener\"\n\t| \"removeEventListener\"\n\t| \"listener\"\n\t| \"dispatchEvent\"\n\t| \"audioWorklet\"\n\t| \"destination\"\n\t| \"createScriptProcessor\";\n\n// the subset of the BaseAudioContext which Tone.Context implements.\nexport type BaseAudioContextSubset = Omit<\nBaseAudioContext,\nExcludedFromBaseAudioContext\n>;\n\nexport type ContextLatencyHint = AudioContextLatencyCategory;\n\nexport abstract class BaseContext\n\textends Emitter<\"statechange\" | \"tick\">\n\timplements BaseAudioContextSubset {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tabstract createAnalyser(): AnalyserNode;\n\n\tabstract createOscillator(): OscillatorNode;\n\n\tabstract createBufferSource(): AudioBufferSourceNode;\n\n\tabstract createBiquadFilter(): BiquadFilterNode;\n\n\tabstract createBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer;\n\n\tabstract createChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode;\n\n\tabstract createChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode;\n\n\tabstract createConstantSource(): ConstantSourceNode;\n\n\tabstract createConvolver(): ConvolverNode;\n\n\tabstract createDelay(_maxDelayTime?: number | undefined): DelayNode;\n\n\tabstract createDynamicsCompressor(): DynamicsCompressorNode;\n\n\tabstract createGain(): GainNode;\n\n\tabstract createIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode;\n\n\tabstract createPanner(): PannerNode;\n\n\tabstract createPeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave;\n\n\tabstract createStereoPanner(): StereoPannerNode;\n\n\tabstract createWaveShaper(): WaveShaperNode;\n\n\tabstract createMediaStreamSource(\n\t\t_stream: MediaStream\n\t): MediaStreamAudioSourceNode;\n\n\tabstract createMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode;\n\n\tabstract createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n\n\tabstract decodeAudioData(_audioData: ArrayBuffer): Promise;\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tabstract createAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode;\n\n\tabstract get rawContext(): AnyAudioContext;\n\n\tabstract async addAudioWorkletModule(\n\t\t_url: string,\n\t\t_name: string\n\t): Promise;\n\n\tabstract lookAhead: number;\n\n\tabstract latencyHint: ContextLatencyHint | Seconds;\n\n\tabstract resume(): Promise;\n\n\tabstract setTimeout(\n\t\t_fn: (...args: any[]) => void,\n\t\t_timeout: Seconds\n\t): number;\n\n\tabstract clearTimeout(_id: number): this;\n\n\tabstract setInterval(\n\t\t_fn: (...args: any[]) => void,\n\t\t_interval: Seconds\n\t): number;\n\n\tabstract clearInterval(_id: number): this;\n\n\tabstract getConstant(_val: number): AudioBufferSourceNode;\n\n\tabstract get currentTime(): Seconds;\n\n\tabstract get state(): AudioContextState;\n\n\tabstract get sampleRate(): number;\n\n\tabstract get listener(): Listener;\n\n\tabstract get transport(): Transport;\n\n\tabstract get draw(): Draw;\n\n\tabstract get destination(): Destination;\n\n\tabstract now(): Seconds;\n\n\tabstract immediate(): Seconds;\n\n\t/*\n\t * This is a placeholder so that JSON.stringify does not throw an error\n\t * This matches what JSON.stringify(audioContext) returns on a native\n\t * audioContext instance.\n\t */\n\ttoJSON(): Record {\n\t\treturn {};\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { Ticker, TickerClockSource } from \"../clock/Ticker\";\nimport { Seconds } from \"../type/Units\";\nimport { isAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined, isString } from \"../util/TypeCheck\";\nimport {\n\tAnyAudioContext,\n\tcreateAudioContext,\n\tcreateAudioWorkletNode,\n} from \"./AudioContext\";\nimport { closeContext, initializeContext } from \"./ContextInitialization\";\nimport { BaseContext, ContextLatencyHint } from \"./BaseContext\";\nimport { assert } from \"../util/Debug\";\n\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Destination = import(\"./Destination\").Destination;\ntype Listener = import(\"./Listener\").Listener;\ntype Draw = import(\"../util/Draw\").Draw;\n\nexport interface ContextOptions {\n\tclockSource: TickerClockSource;\n\tlatencyHint: ContextLatencyHint;\n\tlookAhead: Seconds;\n\tupdateInterval: Seconds;\n\tcontext: AnyAudioContext;\n}\n\nexport interface ContextTimeoutEvent {\n\tcallback: (...args: any[]) => void;\n\tid: number;\n\ttime: Seconds;\n}\n\n/**\n * Wrapper around the native AudioContext.\n * @category Core\n */\nexport class Context extends BaseContext {\n\treadonly name: string = \"Context\";\n\n\t/**\n\t * The amount of time into the future events are scheduled. Giving Web Audio\n\t * a short amount of time into the future to schedule events can reduce clicks and\n\t * improve performance. This value can be set to 0 to get the lowest latency.\n\t */\n\tlookAhead: Seconds;\n\n\t/**\n\t * private reference to the BaseAudioContext\n\t */\n\tprotected readonly _context: AnyAudioContext;\n\n\t/**\n\t * A reliable callback method\n\t */\n\tprivate readonly _ticker: Ticker;\n\n\t/**\n\t * The default latency hint\n\t */\n\tprivate _latencyHint!: ContextLatencyHint | Seconds;\n\n\t/**\n\t * An object containing all of the constants AudioBufferSourceNodes\n\t */\n\tprivate _constants = new Map();\n\n\t/**\n\t * All of the setTimeout events.\n\t */\n\tprivate _timeouts: Timeline = new Timeline();\n\n\t/**\n\t * The timeout id counter\n\t */\n\tprivate _timeoutIds = 0;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _transport!: Transport;\n\n\t/**\n\t * A reference the Listener singleton belonging to this context\n\t */\n\tprivate _listener!: Listener;\n\n\t/**\n\t * A reference the Destination singleton belonging to this context\n\t */\n\tprivate _destination!: Destination;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _draw!: Draw;\n\n\t/**\n\t * Private indicator if the context has been initialized\n\t */\n\tprivate _initialized = false;\n\n\t/**\n\t * Indicates if the context is an OfflineAudioContext or an AudioContext\n\t */\n\treadonly isOffline: boolean = false;\n\n\tconstructor(context?: AnyAudioContext);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Context.getDefaults(), arguments, [\n\t\t\t\"context\",\n\t\t]);\n\n\t\tif (options.context) {\n\t\t\tthis._context = options.context;\n\t\t} else {\n\t\t\tthis._context = createAudioContext({\n\t\t\t\tlatencyHint: options.latencyHint,\n\t\t\t});\n\t\t}\n\n\t\tthis._ticker = new Ticker(\n\t\t\tthis.emit.bind(this, \"tick\"),\n\t\t\toptions.clockSource,\n\t\t\toptions.updateInterval\n\t\t);\n\t\tthis.on(\"tick\", this._timeoutLoop.bind(this));\n\n\t\t// fwd events from the context\n\t\tthis._context.onstatechange = () => {\n\t\t\tthis.emit(\"statechange\", this.state);\n\t\t};\n\n\t\tthis._setLatencyHint(options.latencyHint);\n\t\tthis.lookAhead = options.lookAhead;\n\t}\n\n\tstatic getDefaults(): ContextOptions {\n\t\treturn {\n\t\t\tclockSource: \"worker\",\n\t\t\tlatencyHint: \"interactive\",\n\t\t\tlookAhead: 0.1,\n\t\t\tupdateInterval: 0.05,\n\t\t} as ContextOptions;\n\t}\n\n\t/**\n\t * Finish setting up the context. **You usually do not need to do this manually.**\n\t */\n\tprivate initialize(): this {\n\t\tif (!this._initialized) {\n\t\t\t// add any additional modules\n\t\t\tinitializeContext(this);\n\t\t\tthis._initialized = true;\n\t\t}\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn this._context.createAnalyser();\n\t}\n\tcreateOscillator(): OscillatorNode {\n\t\treturn this._context.createOscillator();\n\t}\n\tcreateBufferSource(): AudioBufferSourceNode {\n\t\treturn this._context.createBufferSource();\n\t}\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn this._context.createBiquadFilter();\n\t}\n\tcreateBuffer(\n\t\tnumberOfChannels: number,\n\t\tlength: number,\n\t\tsampleRate: number\n\t): AudioBuffer {\n\t\treturn this._context.createBuffer(numberOfChannels, length, sampleRate);\n\t}\n\tcreateChannelMerger(\n\t\tnumberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn this._context.createChannelMerger(numberOfInputs);\n\t}\n\tcreateChannelSplitter(\n\t\tnumberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn this._context.createChannelSplitter(numberOfOutputs);\n\t}\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn this._context.createConstantSource();\n\t}\n\tcreateConvolver(): ConvolverNode {\n\t\treturn this._context.createConvolver();\n\t}\n\tcreateDelay(maxDelayTime?: number | undefined): DelayNode {\n\t\treturn this._context.createDelay(maxDelayTime);\n\t}\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn this._context.createDynamicsCompressor();\n\t}\n\tcreateGain(): GainNode {\n\t\treturn this._context.createGain();\n\t}\n\tcreateIIRFilter(\n\t\tfeedForward: number[] | Float32Array,\n\t\tfeedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\t// @ts-ignore\n\t\treturn this._context.createIIRFilter(feedForward, feedback);\n\t}\n\tcreatePanner(): PannerNode {\n\t\treturn this._context.createPanner();\n\t}\n\tcreatePeriodicWave(\n\t\treal: number[] | Float32Array,\n\t\timag: number[] | Float32Array,\n\t\tconstraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn this._context.createPeriodicWave(real, imag, constraints);\n\t}\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn this._context.createStereoPanner();\n\t}\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn this._context.createWaveShaper();\n\t}\n\tcreateMediaStreamSource(stream: MediaStream): MediaStreamAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamSource(stream);\n\t}\n\tcreateMediaElementSource(\n\t\telement: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaElementSource(element);\n\t}\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamDestination();\n\t}\n\tdecodeAudioData(audioData: ArrayBuffer): Promise {\n\t\treturn this._context.decodeAudioData(audioData);\n\t}\n\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget state(): AudioContextState {\n\t\treturn this._context.state;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget sampleRate(): number {\n\t\treturn this._context.sampleRate;\n\t}\n\n\t/**\n\t * The listener\n\t */\n\tget listener(): Listener {\n\t\tthis.initialize();\n\t\treturn this._listener;\n\t}\n\tset listener(l) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The listener cannot be set after initialization.\"\n\t\t);\n\t\tthis._listener = l;\n\t}\n\n\t/**\n\t * There is only one Transport per Context. It is created on initialization.\n\t */\n\tget transport(): Transport {\n\t\tthis.initialize();\n\t\treturn this._transport;\n\t}\n\tset transport(t: Transport) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The transport cannot be set after initialization.\"\n\t\t);\n\t\tthis._transport = t;\n\t}\n\n\t/**\n\t * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock.\n\t */\n\tget draw(): Draw {\n\t\tthis.initialize();\n\t\treturn this._draw;\n\t}\n\tset draw(d) {\n\t\tassert(!this._initialized, \"Draw cannot be set after initialization.\");\n\t\tthis._draw = d;\n\t}\n\n\t/**\n\t * A reference to the Context's destination node.\n\t */\n\tget destination(): Destination {\n\t\tthis.initialize();\n\t\treturn this._destination;\n\t}\n\tset destination(d: Destination) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The destination cannot be set after initialization.\"\n\t\t);\n\t\tthis._destination = d;\n\t}\n\n\t//--------------------------------------------\n\t// AUDIO WORKLET\n\t//--------------------------------------------\n\n\t/**\n\t * Maps a module name to promise of the addModule method\n\t */\n\tprivate _workletModules: Map> = new Map();\n\n\t/**\n\t * Create an audio worklet node from a name and options. The module\n\t * must first be loaded using [[addAudioWorkletModule]].\n\t */\n\tcreateAudioWorkletNode(\n\t\tname: string,\n\t\toptions?: Partial\n\t): AudioWorkletNode {\n\t\treturn createAudioWorkletNode(this.rawContext, name, options);\n\t}\n\n\t/**\n\t * Add an AudioWorkletProcessor module\n\t * @param url The url of the module\n\t * @param name The name of the module\n\t */\n\tasync addAudioWorkletModule(url: string, name: string): Promise {\n\t\tassert(\n\t\t\tisDefined(this.rawContext.audioWorklet),\n\t\t\t\"AudioWorkletNode is only available in a secure context (https or localhost)\"\n\t\t);\n\t\tif (!this._workletModules.has(name)) {\n\t\t\tthis._workletModules.set(\n\t\t\t\tname,\n\t\t\t\tthis.rawContext.audioWorklet.addModule(url)\n\t\t\t);\n\t\t}\n\t\tawait this._workletModules.get(name);\n\t}\n\n\t/**\n\t * Returns a promise which resolves when all of the worklets have been loaded on this context\n\t */\n\tprotected async workletsAreReady(): Promise {\n\t\tconst promises: Promise[] = [];\n\t\tthis._workletModules.forEach((promise) => promises.push(promise));\n\t\tawait Promise.all(promises);\n\t}\n\n\t//---------------------------\n\t// TICKER\n\t//---------------------------\n\n\t/**\n\t * How often the interval callback is invoked.\n\t * This number corresponds to how responsive the scheduling\n\t * can be. context.updateInterval + context.lookAhead gives you the\n\t * total latency between scheduling an event and hearing it.\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._ticker.updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._ticker.updateInterval = interval;\n\t}\n\n\t/**\n\t * What the source of the clock is, either \"worker\" (default),\n\t * \"timeout\", or \"offline\" (none).\n\t */\n\tget clockSource(): TickerClockSource {\n\t\treturn this._ticker.type;\n\t}\n\tset clockSource(type: TickerClockSource) {\n\t\tthis._ticker.type = type;\n\t}\n\n\t/**\n\t * The type of playback, which affects tradeoffs between audio\n\t * output latency and responsiveness.\n\t * In addition to setting the value in seconds, the latencyHint also\n\t * accepts the strings \"interactive\" (prioritizes low latency),\n\t * \"playback\" (prioritizes sustained playback), \"balanced\" (balances\n\t * latency and performance).\n\t * @example\n\t * // prioritize sustained playback\n\t * const context = new Tone.Context({ latencyHint: \"playback\" });\n\t * // set this context as the global Context\n\t * Tone.setContext(context);\n\t * // the global context is gettable with Tone.getContext()\n\t * console.log(Tone.getContext().latencyHint);\n\t */\n\tget latencyHint(): ContextLatencyHint | Seconds {\n\t\treturn this._latencyHint;\n\t}\n\n\t/**\n\t * Update the lookAhead and updateInterval based on the latencyHint\n\t */\n\tprivate _setLatencyHint(hint: ContextLatencyHint | Seconds): void {\n\t\tlet lookAheadValue = 0;\n\t\tthis._latencyHint = hint;\n\t\tif (isString(hint)) {\n\t\t\tswitch (hint) {\n\t\t\t\tcase \"interactive\":\n\t\t\t\t\tlookAheadValue = 0.1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"playback\":\n\t\t\t\t\tlookAheadValue = 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"balanced\":\n\t\t\t\t\tlookAheadValue = 0.25;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.lookAhead = lookAheadValue;\n\t\tthis.updateInterval = lookAheadValue / 2;\n\t}\n\n\t/**\n\t * The unwrapped AudioContext or OfflineAudioContext\n\t */\n\tget rawContext(): AnyAudioContext {\n\t\treturn this._context;\n\t}\n\n\t/**\n\t * The current audio context time plus a short [[lookAhead]].\n\t */\n\tnow(): Seconds {\n\t\treturn this._context.currentTime + this.lookAhead;\n\t}\n\n\t/**\n\t * The current audio context time without the [[lookAhead]].\n\t * In most cases it is better to use [[now]] instead of [[immediate]] since\n\t * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components,\n\t * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]]\n\t * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`.\n\t */\n\timmediate(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\n\t/**\n\t * Starts the audio context from a suspended state. This is required\n\t * to initially start the AudioContext. See [[Tone.start]]\n\t */\n\tresume(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\treturn this._context.resume();\n\t\t} else {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\n\t/**\n\t * Close the context. Once closed, the context can no longer be used and\n\t * any AudioNodes created from the context will be silent.\n\t */\n\tasync close(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\tawait this._context.close();\n\t\t}\n\t\tif (this._initialized) {\n\t\t\tcloseContext(this);\n\t\t}\n\t}\n\n\t/**\n\t * **Internal** Generate a looped buffer at some constant value.\n\t */\n\tgetConstant(val: number): AudioBufferSourceNode {\n\t\tif (this._constants.has(val)) {\n\t\t\treturn this._constants.get(val) as AudioBufferSourceNode;\n\t\t} else {\n\t\t\tconst buffer = this._context.createBuffer(\n\t\t\t\t1,\n\t\t\t\t128,\n\t\t\t\tthis._context.sampleRate\n\t\t\t);\n\t\t\tconst arr = buffer.getChannelData(0);\n\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\tarr[i] = val;\n\t\t\t}\n\t\t\tconst constant = this._context.createBufferSource();\n\t\t\tconstant.channelCount = 1;\n\t\t\tconstant.channelCountMode = \"explicit\";\n\t\t\tconstant.buffer = buffer;\n\t\t\tconstant.loop = true;\n\t\t\tconstant.start(0);\n\t\t\tthis._constants.set(val, constant);\n\t\t\treturn constant;\n\t\t}\n\t}\n\n\t/**\n\t * Clean up. Also closes the audio context.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._ticker.dispose();\n\t\tthis._timeouts.dispose();\n\t\tObject.keys(this._constants).map((val) =>\n\t\t\tthis._constants[val].disconnect()\n\t\t);\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// TIMEOUTS\n\t//---------------------------\n\n\t/**\n\t * The private loop which keeps track of the context scheduled timeouts\n\t * Is invoked from the clock source\n\t */\n\tprivate _timeoutLoop(): void {\n\t\tconst now = this.now();\n\t\tlet firstEvent = this._timeouts.peek();\n\t\twhile (this._timeouts.length && firstEvent && firstEvent.time <= now) {\n\t\t\t// invoke the callback\n\t\t\tfirstEvent.callback();\n\t\t\t// shift the first event off\n\t\t\tthis._timeouts.shift();\n\t\t\t// get the next one\n\t\t\tfirstEvent = this._timeouts.peek();\n\t\t}\n\t}\n\n\t/**\n\t * A setTimeout which is guaranteed by the clock source.\n\t * Also runs in the offline context.\n\t * @param fn The callback to invoke\n\t * @param timeout The timeout in seconds\n\t * @returns ID to use when invoking Context.clearTimeout\n\t */\n\tsetTimeout(fn: (...args: any[]) => void, timeout: Seconds): number {\n\t\tthis._timeoutIds++;\n\t\tconst now = this.now();\n\t\tthis._timeouts.add({\n\t\t\tcallback: fn,\n\t\t\tid: this._timeoutIds,\n\t\t\ttime: now + timeout,\n\t\t});\n\t\treturn this._timeoutIds;\n\t}\n\n\t/**\n\t * Clears a previously scheduled timeout with Tone.context.setTimeout\n\t * @param id The ID returned from setTimeout\n\t */\n\tclearTimeout(id: number): this {\n\t\tthis._timeouts.forEach((event) => {\n\t\t\tif (event.id === id) {\n\t\t\t\tthis._timeouts.remove(event);\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clear the function scheduled by [[setInterval]]\n\t */\n\tclearInterval(id: number): this {\n\t\treturn this.clearTimeout(id);\n\t}\n\n\t/**\n\t * Adds a repeating event to the context's callback clock\n\t */\n\tsetInterval(fn: (...args: any[]) => void, interval: Seconds): number {\n\t\tconst id = ++this._timeoutIds;\n\t\tconst intervalFn = () => {\n\t\t\tconst now = this.now();\n\t\t\tthis._timeouts.add({\n\t\t\t\tcallback: () => {\n\t\t\t\t\t// invoke the callback\n\t\t\t\t\tfn();\n\t\t\t\t\t// invoke the event to repeat it\n\t\t\t\t\tintervalFn();\n\t\t\t\t},\n\t\t\t\tid,\n\t\t\t\ttime: now + interval,\n\t\t\t});\n\t\t};\n\t\t// kick it off\n\t\tintervalFn();\n\t\treturn id;\n\t}\n}\n","import { isArray } from \"./TypeCheck\";\n\n// return an interface which excludes certain keys\nexport type Omit = Pick>;\n\n/**\n * Make the property not writable using `defineProperty`. Internal use only.\n */\nexport function readOnly(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => readOnly(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t});\n\t}\n}\n\n/**\n * Make an attribute writeable. Internal use only.\n */\nexport function writable(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => writable(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\twritable: true,\n\t\t});\n\t}\n}\n\nexport const noOp: (...args: any[]) => any = () => {\n\t// no operation here!\n};\n\n/**\n * Recursive Partial taken from here: https://stackoverflow.com/a/51365037\n */\nexport type RecursivePartial = {\n\t[P in keyof T]?:\n\tT[P] extends Array ? Array> :\n\t\tT[P] extends object ? RecursivePartial :\n\t\t\tT[P];\n};\n","import { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { Samples, Seconds } from \"../type/Units\";\nimport { isAudioBuffer } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isArray, isNumber, isString } from \"../util/TypeCheck\";\nimport { assert } from \"../util/Debug\";\n\ninterface ToneAudioBufferOptions {\n\turl?: string | AudioBuffer | ToneAudioBuffer;\n\treverse: boolean;\n\tonload: (buffer?: ToneAudioBuffer) => void;\n\tonerror: (error: Error) => void;\n}\n\n/**\n * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all\n * classes that make requests for audio files such as Tone.Player,\n * Tone.Sampler and Tone.Convolver.\n * @example\n * const buffer = new Tone.ToneAudioBuffer(\"https://tonejs.github.io/audio/casio/A1.mp3\", () => {\n * \tconsole.log(\"loaded\");\n * });\n * @category Core\n */\nexport class ToneAudioBuffer extends Tone {\n\n\treadonly name: string = \"ToneAudioBuffer\";\n\n\t/**\n\t * stores the loaded AudioBuffer\n\t */\n\tprivate _buffer?: AudioBuffer;\n\n\t/**\n\t * indicates if the buffer should be reversed or not\n\t */\n\tprivate _reversed!: boolean;\n\n\t/**\n\t * Callback when the buffer is loaded.\n\t */\n\tonload: (buffer: ToneAudioBuffer) => void = noOp;\n\n\t/**\n\t *\n\t * @param url The url to load, or the audio buffer to set.\n\t * @param onload A callback which is invoked after the buffer is loaded.\n\t * It's recommended to use `ToneAudioBuffer.on('load', callback)` instead\n\t * since it will give you a callback when _all_ buffers are loaded.\n\t * @param onerror The callback to invoke if there is an error\n\t */\n\tconstructor(\n\t\turl?: string | ToneAudioBuffer | AudioBuffer,\n\t\tonload?: (buffer: ToneAudioBuffer) => void,\n\t\tonerror?: (error: Error) => void,\n\t);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tconst options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, [\"url\", \"onload\", \"onerror\"]);\n\n\t\tthis.reverse = options.reverse;\n\t\tthis.onload = options.onload;\n\n\t\tif (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) {\n\t\t\tthis.set(options.url);\n\t\t} else if (isString(options.url)) {\n\t\t\t// initiate the download\n\t\t\tthis.load(options.url).catch(options.onerror);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ToneAudioBufferOptions {\n\t\treturn {\n\t\t\tonerror: noOp,\n\t\t\tonload: noOp,\n\t\t\treverse: false,\n\t\t};\n\t}\n\n\t/**\n\t * The sample rate of the AudioBuffer\n\t */\n\tget sampleRate(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.sampleRate;\n\t\t} else {\n\t\t\treturn getContext().sampleRate;\n\t\t}\n\t}\n\n\t/**\n\t * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer.\n\t */\n\tset(buffer: AudioBuffer | ToneAudioBuffer): this {\n\t\tif (buffer instanceof ToneAudioBuffer) {\n\t\t\t// if it's loaded, set it\n\t\t\tif (buffer.loaded) {\n\t\t\t\tthis._buffer = buffer.get();\n\t\t\t} else {\n\t\t\t\t// otherwise when it's loaded, invoke it's callback\n\t\t\t\tbuffer.onload = () => {\n\t\t\t\t\tthis.set(buffer);\n\t\t\t\t\tthis.onload(this);\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tthis._buffer = buffer;\n\t\t}\n\t\t// reverse it initially\n\t\tif (this._reversed) {\n\t\t\tthis._reverse();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * The audio buffer stored in the object.\n\t */\n\tget(): AudioBuffer | undefined {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Makes an fetch request for the selected url then decodes the file as an audio buffer.\n\t * Invokes the callback once the audio buffer loads.\n\t * @param url The url of the buffer to load. filetype support depends on the browser.\n\t * @returns A Promise which resolves with this ToneAudioBuffer\n\t */\n\tasync load(url: string): Promise {\n\t\tconst doneLoading: Promise = ToneAudioBuffer.load(url).then(audioBuffer => {\n\t\t\tthis.set(audioBuffer);\n\t\t\t// invoke the onload method\n\t\t\tthis.onload(this);\n\t\t});\n\t\tToneAudioBuffer.downloads.push(doneLoading);\n\t\ttry {\n\t\t\tawait doneLoading;\n\t\t} finally {\n\t\t\t// remove the downloaded file\n\t\t\tconst index = ToneAudioBuffer.downloads.indexOf(doneLoading);\n\t\t\tToneAudioBuffer.downloads.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._buffer = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the audio buffer from the array.\n\t * To create a multichannel AudioBuffer, pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t */\n\tfromArray(array: Float32Array | Float32Array[]): this {\n\t\tconst isMultidimensional = isArray(array) && array[0].length > 0;\n\t\tconst channels = isMultidimensional ? array.length : 1;\n\t\tconst len = isMultidimensional ? (array[0] as Float32Array).length : array.length;\n\t\tconst context = getContext();\n\t\tconst buffer = context.createBuffer(channels, len, context.sampleRate);\n\t\tconst multiChannelArray: Float32Array[] = !isMultidimensional && channels === 1 ?\n\t\t\t[array as Float32Array] : array as Float32Array[];\n\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\tbuffer.copyToChannel(multiChannelArray[c], c);\n\t\t}\n\t\tthis._buffer = buffer;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sums multiple channels into 1 channel\n\t * @param chanNum Optionally only copy a single channel from the array.\n\t */\n\ttoMono(chanNum?: number): this {\n\t\tif (isNumber(chanNum)) {\n\t\t\tthis.fromArray(this.toArray(chanNum));\n\t\t} else {\n\t\t\tlet outputArray = new Float32Array(this.length as number);\n\t\t\tconst numChannels = this.numberOfChannels;\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst channelArray = this.toArray(channel) as Float32Array;\n\t\t\t\tfor (let i = 0; i < channelArray.length; i++) {\n\t\t\t\t\toutputArray[i] += channelArray[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// divide by the number of channels\n\t\t\toutputArray = outputArray.map(sample => sample / numChannels);\n\t\t\tthis.fromArray(outputArray);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the buffer as an array. Single channel buffers will return a 1-dimensional\n\t * Float32Array, and multichannel buffers will return multidimensional arrays.\n\t * @param channel Optionally only copy a single channel from the array.\n\t */\n\ttoArray(channel?: number): Float32Array | Float32Array[] {\n\t\tif (isNumber(channel)) {\n\t\t\treturn this.getChannelData(channel);\n\t\t} else if (this.numberOfChannels === 1) {\n\t\t\treturn this.toArray(0);\n\t\t} else {\n\t\t\tconst ret: Float32Array[] = [];\n\t\t\tfor (let c = 0; c < this.numberOfChannels; c++) {\n\t\t\t\tret[c] = this.getChannelData(c);\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the Float32Array representing the PCM audio data for the specific channel.\n\t * @param channel The channel number to return\n\t * @return The audio as a TypedArray\n\t */\n\tgetChannelData(channel: number): Float32Array {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.getChannelData(channel);\n\t\t} else {\n\t\t\treturn new Float32Array(0);\n\t\t}\n\t}\n\n\t/**\n\t * Cut a subsection of the array and return a buffer of the\n\t * subsection. Does not modify the original buffer\n\t * @param start The time to start the slice\n\t * @param end The end time to slice. If none is given will default to the end of the buffer\n\t */\n\tslice(start: Seconds, end: Seconds = this.duration): ToneAudioBuffer {\n\t\tassert(this.loaded, \"Buffer is not loaded\");\n\t\tconst startSamples = Math.floor(start * this.sampleRate);\n\t\tconst endSamples = Math.floor(end * this.sampleRate);\n\t\tassert(startSamples < endSamples, \"The start time must be less than the end time\");\n\t\tconst length = endSamples - startSamples;\n\t\tconst retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate);\n\t\tfor (let channel = 0; channel < this.numberOfChannels; channel++) {\n\t\t\tretBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel);\n\t\t}\n\t\treturn new ToneAudioBuffer(retBuffer);\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tprivate _reverse(): this {\n\t\tif (this.loaded) {\n\t\t\tfor (let i = 0; i < this.numberOfChannels; i++) {\n\t\t\t\tthis.getChannelData(i).reverse();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * If the buffer is loaded or not\n\t */\n\tget loaded(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * The duration of the buffer in seconds.\n\t */\n\tget duration(): Seconds {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.duration;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The length of the buffer in samples\n\t */\n\tget length(): Samples {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.length;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The number of discrete audio channels. Returns 0 if no buffer is loaded.\n\t */\n\tget numberOfChannels(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.numberOfChannels;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tget reverse(): boolean {\n\t\treturn this._reversed;\n\t}\n\tset reverse(rev: boolean) {\n\t\tif (this._reversed !== rev) {\n\t\t\tthis._reversed = rev;\n\t\t\tthis._reverse();\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// STATIC METHODS\n\t//-------------------------------------\n\n\t/**\n\t * A path which is prefixed before every url.\n\t */\n\tstatic baseUrl = \"\";\n\n\t/**\n\t * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer,\n\t * pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t * @return A ToneAudioBuffer created from the array\n\t */\n\tstatic fromArray(array: Float32Array | Float32Array[]): ToneAudioBuffer {\n\t\treturn (new ToneAudioBuffer()).fromArray(array);\n\t}\n\n\t/**\n\t * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer\n\t * @param url The url to load.\n\t * @return A promise which resolves to a ToneAudioBuffer\n\t */\n\tstatic async fromUrl(url: string): Promise {\n\t\tconst buffer = new ToneAudioBuffer();\n\t\treturn await buffer.load(url);\n\t}\n\n\t/**\n\t * All of the downloads\n\t */\n\tstatic downloads: Array> = [];\n\n\t/**\n\t * Loads a url using fetch and returns the AudioBuffer.\n\t */\n\tstatic async load(url: string): Promise {\n\n\t\t// test if the url contains multiple extensions\n\t\tconst matches = url.match(/\\[([^\\]\\[]+\\|.+)\\]$/);\n\t\tif (matches) {\n\t\t\tconst extensions = matches[1].split(\"|\");\n\t\t\tlet extension = extensions[0];\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tif (ToneAudioBuffer.supportsType(ext)) {\n\t\t\t\t\textension = ext;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\turl = url.replace(matches[0], extension);\n\t\t}\n\n\t\t// make sure there is a slash between the baseUrl and the url\n\t\tconst baseUrl = ToneAudioBuffer.baseUrl === \"\" || ToneAudioBuffer.baseUrl.endsWith(\"/\") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + \"/\";\n\t\tconst response = await fetch(baseUrl + url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`could not load url: ${url}`);\n\t\t}\n\t\tconst arrayBuffer = await response.arrayBuffer();\n\n\t\tconst audioBuffer = await getContext().decodeAudioData(arrayBuffer);\n\n\t\treturn audioBuffer;\n\t}\n\n\t/**\n\t * Checks a url's extension to see if the current browser can play that file type.\n\t * @param url The url/extension to test\n\t * @return If the file extension can be played\n\t * @static\n\t * @example\n\t * Tone.ToneAudioBuffer.supportsType(\"wav\"); // returns true\n\t * Tone.ToneAudioBuffer.supportsType(\"path/to/file.wav\"); // returns true\n\t */\n\tstatic supportsType(url: string): boolean {\n\t\tconst extensions = url.split(\".\");\n\t\tconst extension = extensions[extensions.length - 1];\n\t\tconst response = document.createElement(\"audio\").canPlayType(\"audio/\" + extension);\n\t\treturn response !== \"\";\n\t}\n\n\t/**\n\t * Returns a Promise which resolves when all of the buffers have loaded\n\t */\n\tstatic async loaded(): Promise {\n\t\t// this makes sure that the function is always async\n\t\tawait Promise.resolve();\n\t\twhile (ToneAudioBuffer.downloads.length) {\n\t\t\tawait ToneAudioBuffer.downloads[0];\n\t\t}\n\t}\n}\n","import { createOfflineAudioContext } from \"../context/AudioContext\";\nimport { Context } from \"../context/Context\";\nimport { Seconds } from \"../type/Units\";\nimport { isOfflineAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\n\n/**\n * Wrapper around the OfflineAudioContext\n * @category Core\n * @example\n * // generate a single channel, 0.5 second buffer\n * const context = new Tone.OfflineContext(1, 0.5, 44100);\n * const osc = new Tone.Oscillator({ context });\n * context.render().then(buffer => {\n * \tconsole.log(buffer.numberOfChannels, buffer.duration);\n * });\n */\nexport class OfflineContext extends Context {\n\n\treadonly name: string = \"OfflineContext\";\n\n\t/**\n\t * A private reference to the duration\n\t */\n\tprivate readonly _duration: Seconds;\n\n\t/**\n\t * An artificial clock source\n\t */\n\tprivate _currentTime: Seconds = 0;\n\n\t/**\n\t * Private reference to the OfflineAudioContext.\n\t */\n\tprotected _context!: OfflineAudioContext;\n\n\treadonly isOffline: boolean = true;\n\n\t/**\n\t * @param channels The number of channels to render\n\t * @param duration The duration to render in seconds\n\t * @param sampleRate the sample rate to render at\n\t */\n\tconstructor(\n\t\tchannels: number,\n\t\tduration: Seconds, \n\t\tsampleRate: number,\n\t);\n\tconstructor(context: OfflineAudioContext);\n\tconstructor() {\n\n\t\tsuper({\n\t\t\tclockSource: \"offline\",\n\t\t\tcontext: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\targuments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]),\n\t\t\tlookAhead: 0,\n\t\t\tupdateInterval: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\t128 / arguments[0].sampleRate : 128 / arguments[2],\n\t\t});\n\n\t\tthis._duration = isOfflineAudioContext(arguments[0]) ?\n\t\t\targuments[0].length / arguments[0].sampleRate : arguments[1];\n\t}\n\n\t/**\n\t * Override the now method to point to the internal clock time\n\t */\n\tnow(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Same as this.now()\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Render just the clock portion of the audio context.\n\t */\n\tprivate async _renderClock(asynchronous: boolean): Promise {\n\t\tlet index = 0;\n\t\twhile (this._duration - this._currentTime >= 0) {\n\n\t\t\t// invoke all the callbacks on that time\n\t\t\tthis.emit(\"tick\");\n\n\t\t\t// increment the clock in block-sized chunks\n\t\t\tthis._currentTime += 128 / this.sampleRate;\n\n\t\t\t// yield once a second of audio\n\t\t\tindex++;\n\t\t\tconst yieldEvery = Math.floor(this.sampleRate / 128);\n\t\t\tif (asynchronous && index % yieldEvery === 0) {\n\t\t\t\tawait new Promise(done => setTimeout(done, 1));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Render the output of the OfflineContext\n\t * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower.\n\t */\n\tasync render(asynchronous = true): Promise {\n\t\tawait this.workletsAreReady();\n\t\tawait this._renderClock(asynchronous);\n\t\tconst buffer = await this._context.startRendering();\n\t\treturn new ToneAudioBuffer(buffer);\n\t}\n\n\t/**\n\t * Close the context\n\t */\n\tclose(): Promise {\n\t\treturn Promise.resolve();\n\t}\n}\n","import { version } from \"../version\";\nimport { AnyAudioContext, hasAudioContext, theWindow } from \"./context/AudioContext\";\nimport { Context } from \"./context/Context\";\nimport { DummyContext } from \"./context/DummyContext\";\nimport { BaseContext } from \"./context/BaseContext\";\nimport { OfflineContext } from \"./context/OfflineContext\";\nimport { isAudioContext, isOfflineAudioContext } from \"./util/AdvancedTypeCheck\";\n\n/**\n * This dummy context is used to avoid throwing immediate errors when importing in Node.js\n */\nconst dummyContext = new DummyContext();\n\n/**\n * The global audio context which is getable and assignable through\n * getContext and setContext\n */\nlet globalContext: BaseContext = dummyContext;\n\n/**\n * Returns the default system-wide [[Context]]\n * @category Core\n */\nexport function getContext(): BaseContext {\n\tif (globalContext === dummyContext && hasAudioContext) {\n\t\tsetContext(new Context());\n\t}\n\treturn globalContext;\n}\n\n/**\n * Set the default audio context\n * @category Core\n */\nexport function setContext(context: BaseContext | AnyAudioContext): void {\n\tif (isAudioContext(context)) {\n\t\tglobalContext = new Context(context);\n\t} else if (isOfflineAudioContext(context)) {\n\t\tglobalContext = new OfflineContext(context);\n\t} else {\n\t\tglobalContext = context;\n\t}\n}\n\n/**\n * Most browsers will not play _any_ audio until a user\n * clicks something (like a play button). Invoke this method\n * on a click or keypress event handler to start the audio context.\n * More about the Autoplay policy\n * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio)\n * @example\n * document.querySelector(\"button\").addEventListener(\"click\", async () => {\n * \tawait Tone.start();\n * \tconsole.log(\"context started\");\n * });\n * @category Core\n */\nexport function start(): Promise {\n\treturn globalContext.resume();\n}\n\n/**\n * Log Tone.js + version in the console.\n */\nif (theWindow && !theWindow.TONE_SILENCE_LOGGING) {\n\tlet prefix = \"v\";\n\tif (version === \"dev\") {\n\t\tprefix = \"\";\n\t}\n\tconst printString = ` * Tone.js ${prefix}${version} * `;\n\t// eslint-disable-next-line no-console\n\tconsole.log(`%c${printString}`, \"background: #000; color: #fff\");\n}\n","import { BaseContext } from \"./BaseContext\";\nimport { Seconds } from \"../type/Units\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\nexport class DummyContext extends BaseContext {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn {} as AnalyserNode;\n\t}\n\n\tcreateOscillator(): OscillatorNode {\n\t\treturn {} as OscillatorNode;\n\t}\n\n\tcreateBufferSource() {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn {} as BiquadFilterNode;\n\t}\n\n\tcreateBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer {\n\t\treturn {} as AudioBuffer;\n\t}\n\n\tcreateChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn {} as ChannelMergerNode;\n\t}\n\n\tcreateChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn {} as ChannelSplitterNode;\n\t}\n\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn {} as ConstantSourceNode;\n\t}\n\n\tcreateConvolver(): ConvolverNode {\n\t\treturn {} as ConvolverNode;\n\t}\n\n\tcreateDelay(_maxDelayTime?: number | undefined): DelayNode {\n\t\treturn {} as DelayNode;\n\t}\n\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn {} as DynamicsCompressorNode;\n\t}\n\n\tcreateGain(): GainNode {\n\t\treturn {} as GainNode;\n\t}\n\n\tcreateIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\treturn {} as IIRFilterNode;\n\t}\n\n\tcreatePanner(): PannerNode {\n\t\treturn {} as PannerNode;\n\t}\n\n\tcreatePeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn {} as PeriodicWave;\n\t}\n\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn {} as StereoPannerNode;\n\t}\n\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn {} as WaveShaperNode;\n\t}\n\n\tcreateMediaStreamSource(_stream: MediaStream): MediaStreamAudioSourceNode {\n\t\treturn {} as MediaStreamAudioSourceNode;\n\t}\n\n\tcreateMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\treturn {} as MediaElementAudioSourceNode;\n\t}\n\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\treturn {} as MediaStreamAudioDestinationNode;\n\t}\n\n\tdecodeAudioData(_audioData: ArrayBuffer): Promise {\n\t\treturn Promise.resolve({} as AudioBuffer);\n\t}\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode {\n\t\treturn {} as AudioWorkletNode;\n\t}\n\n\tget rawContext(): AnyAudioContext {\n\t\treturn {} as AnyAudioContext;\n\t}\n\n\tasync addAudioWorkletModule(_url: string, _name: string): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tlookAhead = 0;\n\n\tlatencyHint = 0;\n\n\tresume(): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tsetTimeout(_fn: (...args: any[]) => void, _timeout: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearTimeout(_id: number): this {\n\t\treturn this;\n\t}\n\n\tsetInterval(_fn: (...args: any[]) => void, _interval: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearInterval(_id: number): this {\n\t\treturn this;\n\t}\n\n\tgetConstant(_val: number): AudioBufferSourceNode {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tget currentTime(): Seconds {\n\t\treturn 0;\n\t}\n\n\tget state(): AudioContextState {\n\t\treturn {} as AudioContextState;\n\t}\n\n\tget sampleRate(): number {\n\t\treturn 0;\n\t}\n\n\tget listener(): Listener {\n\t\treturn {} as Listener;\n\t}\n\n\tget transport(): Transport {\n\t\treturn {} as Transport;\n\t}\n\n\tget draw(): Draw {\n\t\treturn {} as Draw;\n\t}\n\tset draw(_d) {}\n\n\tget destination(): Destination {\n\t\treturn {} as Destination;\n\t}\n\tset destination(_d: Destination) {}\n\n\tnow() {\n\t\treturn 0;\n\t}\n\n\timmediate() {\n\t\treturn 0;\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { Decibels, GainFactor, Hertz, Interval, MidiNote, NormalRange } from \"./Units\";\n\n/**\n * Equal power gain scale. Good for cross-fading.\n * @param percent (0-1)\n */\nexport function equalPowerScale(percent: NormalRange): number {\n\tconst piFactor = 0.5 * Math.PI;\n\treturn Math.sin(percent * piFactor);\n}\n\n/**\n * Convert decibels into gain.\n */\nexport function dbToGain(db: Decibels): GainFactor {\n\treturn Math.pow(10, db / 20);\n}\n\n/**\n * Convert gain to decibels.\n */\nexport function gainToDb(gain: GainFactor): Decibels {\n\treturn 20 * (Math.log(gain) / Math.LN10);\n}\n\n/**\n * Convert an interval (in semitones) to a frequency ratio.\n * @param interval the number of semitones above the base note\n * @example\n * Tone.intervalToFrequencyRatio(0); // 1\n * Tone.intervalToFrequencyRatio(12); // 2\n * Tone.intervalToFrequencyRatio(-12); // 0.5\n */\nexport function intervalToFrequencyRatio(interval: Interval): number {\n\treturn Math.pow(2, (interval / 12));\n}\n\n/**\n * The Global [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used\n * to generate all the other pitch values from notes. A4's values in Hertz.\n */\nlet A4: Hertz = 440;\n\nexport function getA4(): Hertz {\n\treturn A4;\n}\n\nexport function setA4(freq: Hertz): void {\n\tA4 = freq;\n}\n\n/**\n * Convert a frequency value to a MIDI note.\n * @param frequency The value to frequency value to convert.\n * @example\n * Tone.ftom(440); // returns 69\n */\nexport function ftom(frequency: Hertz): MidiNote {\n\treturn Math.round(ftomf(frequency)) as MidiNote;\n}\n\n/**\n * Convert a frequency to a floating point midi value\n */\nexport function ftomf(frequency: Hertz): number {\n\treturn 69 + 12 * Math.log2(frequency / A4);\n}\n\n/**\n * Convert a MIDI note to frequency value.\n * @param midi The midi number to convert.\n * @return The corresponding frequency value\n * @example\n * Tone.mtof(69); // 440\n */\nexport function mtof(midi: MidiNote): Hertz {\n\treturn A4 * Math.pow(2, (midi - 69) / 12);\n}\n","import { BaseContext } from \"../context/BaseContext\";\nimport { Tone } from \"../Tone\";\nimport { isDefined, isObject, isString, isUndef } from \"../util/TypeCheck\";\nimport { BPM, Hertz, MidiNote, Milliseconds, Samples, Seconds, Ticks, Time } from \"./Units\";\n\nexport type TimeValue = Time | TimeBaseClass;\n\n/**\n * The units that the TimeBase can accept. extended by other classes\n */\nexport type TimeBaseUnit = \"s\" | \"n\" | \"t\" | \"m\" | \"i\" | \"hz\" | \"tr\" | \"samples\" | \"number\";\n\nexport interface TypeFunction {\n\tregexp: RegExp;\n\tmethod: (value: string, ...args: string[]) => number;\n}\n\nexport interface TimeExpression {\n\t[key: string]: {\n\t\tregexp: RegExp;\n\t\tmethod: (value: string, ...args: string[]) => Type;\n\t};\n}\n\n/**\n * TimeBase is a flexible encoding of time which can be evaluated to and from a string.\n */\nexport abstract class TimeBaseClass extends Tone {\n\n\treadonly context: BaseContext;\n\n\t/**\n\t * The value of the units\n\t */\n\tprotected _val?: TimeValue;\n\n\t/**\n\t * The units of time\n\t */\n\tprotected _units?: Unit;\n\n\t/**\n\t * All of the conversion expressions\n\t */\n\tprotected _expressions: TimeExpression;\n\n\t/**\n\t * The default units\n\t */\n\treadonly defaultUnits: Unit = \"s\" as Unit;\n\n\t/**\n\t * @param context The context associated with the time value. Used to compute\n\t * Transport and context-relative timing.\n\t * @param value The time value as a number, string or object\n\t * @param units Unit values\n\t */\n\tconstructor(context: BaseContext, value?: TimeValue, units?: Unit) {\n\t\tsuper();\n\n\t\tthis._val = value;\n\t\tthis._units = units;\n\t\tthis.context = context;\n\t\tthis._expressions = this._getExpressions();\n\t}\n\n\t/**\n\t * All of the time encoding expressions\n\t */\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn {\n\t\t\thz: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._frequencyToUnits(parseFloat(value));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)hz$/i,\n\t\t\t},\n\t\t\ti: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._ticksToUnits(parseInt(value, 10));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)i$/i,\n\t\t\t},\n\t\t\tm: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._beatsToUnits(parseInt(value, 10) * this._getTimeSignature());\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)m$/i,\n\t\t\t},\n\t\t\tn: {\n\t\t\t\tmethod: (value, dot) => {\n\t\t\t\t\tconst numericValue = parseInt(value, 10);\n\t\t\t\t\tconst scalar = dot === \".\" ? 1.5 : 1;\n\t\t\t\t\tif (numericValue === 1) {\n\t\t\t\t\t\treturn this._beatsToUnits(this._getTimeSignature()) * scalar as Type;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this._beatsToUnits(4 / numericValue) * scalar as Type;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)n(\\.?)$/i,\n\t\t\t},\n\t\t\tnumber: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._expressions[this.defaultUnits].method.call(this, value);\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)$/,\n\t\t\t},\n\t\t\ts: {\n\t\t\t\tmethod: (value): Type => {\n\t\t\t\t\treturn this._secondsToUnits(parseFloat(value));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)s$/,\n\t\t\t},\n\t\t\tsamples: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn parseInt(value, 10) / this.context.sampleRate as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)samples$/,\n\t\t\t},\n\t\t\tt: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\tconst numericValue = parseInt(value, 10);\n\t\t\t\t\treturn this._beatsToUnits(8 / (Math.floor(numericValue) * 3));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)t$/i,\n\t\t\t},\n\t\t\ttr: {\n\t\t\t\tmethod: (m, q, s) => {\n\t\t\t\t\tlet total = 0;\n\t\t\t\t\tif (m && m !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(this._getTimeSignature() * parseFloat(m));\n\t\t\t\t\t}\n\t\t\t\t\tif (q && q !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(q));\n\t\t\t\t\t}\n\t\t\t\t\tif (s && s !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(s) / 4);\n\t\t\t\t\t}\n\t\t\t\t\treturn total as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?):(\\d+(?:\\.\\d+)?):?(\\d+(?:\\.\\d+)?)?$/,\n\t\t\t},\n\t\t};\n\t}\n\n\t//-------------------------------------\n\t// \tVALUE OF\n\t//-------------------------------------\n\n\t/**\n\t * Evaluate the time value. Returns the time in seconds.\n\t */\n\tvalueOf(): Type {\n\t\tif (this._val instanceof TimeBaseClass) {\n\t\t\tthis.fromType(this._val);\n\t\t}\n\t\tif (isUndef(this._val)) {\n\t\t\treturn this._noArg();\n\t\t} else if (isString(this._val) && isUndef(this._units)) {\n\t\t\tfor (const units in this._expressions) {\n\t\t\t\tif (this._expressions[units].regexp.test(this._val.trim())) {\n\t\t\t\t\tthis._units = units as Unit;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isObject(this._val)) {\n\t\t\tlet total = 0;\n\t\t\tfor (const typeName in this._val) {\n\t\t\t\tif (isDefined(this._val[typeName])) {\n\t\t\t\t\tconst quantity = this._val[typeName];\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconst time = (new this.constructor(this.context, typeName)).valueOf() * quantity;\n\t\t\t\t\ttotal += time;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total as Type;\n\t\t}\n\t\tif (isDefined(this._units)) {\n\t\t\tconst expr = this._expressions[this._units];\n\t\t\tconst matching = this._val.toString().trim().match(expr.regexp);\n\t\t\tif (matching) {\n\t\t\t\treturn expr.method.apply(this, matching.slice(1));\n\t\t\t} else {\n\t\t\t\treturn expr.method.call(this, this._val);\n\t\t\t}\n\t\t} else if (isString(this._val)) {\n\t\t\treturn parseFloat(this._val) as Type;\n\t\t} else {\n\t\t\treturn this._val as Type;\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Returns the value of a frequency in the current units\n\t */\n\tprotected _frequencyToUnits(freq: Hertz): Type {\n\t\treturn 1 / freq as Type;\n\t}\n\n\t/**\n\t * Return the value of the beats in the current units\n\t */\n\tprotected _beatsToUnits(beats: number): Type {\n\t\treturn (60 / this._getBpm()) * beats as Type;\n\t}\n\n\t/**\n\t * Returns the value of a second in the current units\n\t */\n\tprotected _secondsToUnits(seconds: Seconds): Type {\n\t\treturn seconds as Type;\n\t}\n\n\t/**\n\t * Returns the value of a tick in the current time units\n\t */\n\tprotected _ticksToUnits(ticks: Ticks): Type {\n\t\treturn (ticks * (this._beatsToUnits(1)) / this._getPPQ()) as Type;\n\t}\n\n\t/**\n\t * With no arguments, return 'now'\n\t */\n\tprotected _noArg(): Type {\n\t\treturn this._now();\n\t}\n\n\t//-------------------------------------\n\t// \tTEMPO CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Return the bpm\n\t */\n\tprotected _getBpm(): BPM {\n\t\treturn this.context.transport.bpm.value;\n\t}\n\n\t/**\n\t * Return the timeSignature\n\t */\n\tprotected _getTimeSignature(): number {\n\t\treturn this.context.transport.timeSignature as number;\n\t}\n\n\t/**\n\t * Return the PPQ or 192 if Transport is not available\n\t */\n\tprotected _getPPQ(): number {\n\t\treturn this.context.transport.PPQ;\n\t}\n\n\t/**\n\t * Return the current time in whichever context is relevant\n\t */\n\tprotected abstract _now(): Type;\n\n\t//-------------------------------------\n\t// \tCONVERSION INTERFACE\n\t//-------------------------------------\n\n\t/**\n\t * Coerce a time type into this units type.\n\t * @param type Any time type units\n\t */\n\tfromType(type: TimeBaseClass): this {\n\t\tthis._units = undefined;\n\t\tswitch (this.defaultUnits) {\n\t\t\tcase \"s\":\n\t\t\t\tthis._val = type.toSeconds();\n\t\t\t\tbreak;\n\t\t\tcase \"i\":\n\t\t\t\tthis._val = type.toTicks();\n\t\t\t\tbreak;\n\t\t\tcase \"hz\":\n\t\t\t\tthis._val = type.toFrequency();\n\t\t\t\tbreak;\n\t\t\tcase \"midi\":\n\t\t\t\tthis._val = type.toMidi();\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Return the value in seconds\n\t */\n\tabstract toSeconds(): Seconds;\n\n\t/**\n\t * Return the value as a Midi note\n\t */\n\tabstract toMidi(): MidiNote;\n\n\t/**\n\t * Convert the value into ticks\n\t */\n\tabstract toTicks(): Ticks;\n\n\t/**\n\t * Return the value in hertz\n\t */\n\ttoFrequency(): Hertz {\n\t\treturn 1 / this.toSeconds();\n\t}\n\n\t/**\n\t * Return the time in samples\n\t */\n\ttoSamples(): Samples {\n\t\treturn this.toSeconds() * this.context.sampleRate;\n\t}\n\n\t/**\n\t * Return the time in milliseconds.\n\t */\n\ttoMilliseconds(): Milliseconds {\n\t\treturn this.toSeconds() * 1000;\n\t}\n}\n","import { getContext } from \"../Global\";\nimport { ftom } from \"./Conversions\";\nimport { TimeBaseClass, TimeBaseUnit, TimeExpression, TimeValue } from \"./TimeBase\";\nimport { BarsBeatsSixteenths, MidiNote, Seconds, Subdivision, Ticks, Time } from \"./Units\";\n\n/**\n * TimeClass is a primitive type for encoding and decoding Time values.\n * TimeClass can be passed into the parameter of any method which takes time as an argument.\n * @param val The time value.\n * @param units The units of the value.\n * @example\n * const time = Tone.Time(\"4n\"); // a quarter note\n * @category Unit\n */\nexport class TimeClass\n\textends TimeBaseClass {\n\n\treadonly name: string = \"TimeClass\";\n\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn Object.assign(super._getExpressions(), {\n\t\t\tnow: {\n\t\t\t\tmethod: (capture: string): Type => {\n\t\t\t\t\treturn this._now() + new (this.constructor as typeof TimeClass)(this.context, capture).valueOf() as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^\\+(.+)/,\n\t\t\t},\n\t\t\tquantize: {\n\t\t\t\tmethod: (capture: string): Type => {\n\t\t\t\t\tconst quantTo = new TimeClass(this.context, capture).valueOf();\n\t\t\t\t\treturn this._secondsToUnits(this.context.transport.nextSubdivision(quantTo));\n\t\t\t\t},\n\t\t\t\tregexp: /^@(.+)/,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Quantize the time by the given subdivision. Optionally add a\n\t * percentage which will move the time value towards the ideal\n\t * quantized value by that percentage.\n\t * @param subdiv The subdivision to quantize to\n\t * @param percent Move the time value towards the quantized value by a percentage.\n\t * @example\n\t * Tone.Time(21).quantize(2); // returns 22\n\t * Tone.Time(0.6).quantize(\"4n\", 0.5); // returns 0.55\n\t */\n\tquantize(subdiv: Time, percent = 1): Type {\n\t\tconst subdivision = new (this.constructor as typeof TimeClass)(this.context, subdiv).valueOf();\n\t\tconst value = this.valueOf();\n\t\tconst multiple = Math.round(value / subdivision);\n\t\tconst ideal = multiple * subdivision;\n\t\tconst diff = ideal - value;\n\t\treturn value + diff * percent as Type;\n\t}\n\n\t//-------------------------------------\n\t// CONVERSIONS\n\t//-------------------------------------\n\t/**\n\t * Convert a Time to Notation. The notation values are will be the\n\t * closest representation between 1m to 128th note.\n\t * @return {Notation}\n\t * @example\n\t * // if the Transport is at 120bpm:\n\t * Tone.Time(2).toNotation(); // returns \"1m\"\n\t */\n\ttoNotation(): Subdivision {\n\t\tconst time = this.toSeconds();\n\t\tconst testNotations: Subdivision[] = [\"1m\"];\n\t\tfor (let power = 1; power < 9; power++) {\n\t\t\tconst subdiv = Math.pow(2, power);\n\t\t\ttestNotations.push(subdiv + \"n.\" as Subdivision);\n\t\t\ttestNotations.push(subdiv + \"n\" as Subdivision);\n\t\t\ttestNotations.push(subdiv + \"t\" as Subdivision);\n\t\t}\n\t\ttestNotations.push(\"0\");\n\t\t// find the closets notation representation\n\t\tlet closest = testNotations[0];\n\t\tlet closestSeconds = new TimeClass(this.context, testNotations[0]).toSeconds();\n\t\ttestNotations.forEach(notation => {\n\t\t\tconst notationSeconds = new TimeClass(this.context, notation).toSeconds();\n\t\t\tif (Math.abs(notationSeconds - time) < Math.abs(closestSeconds - time)) {\n\t\t\t\tclosest = notation;\n\t\t\t\tclosestSeconds = notationSeconds;\n\t\t\t}\n\t\t});\n\t\treturn closest;\n\t}\n\n\t/**\n\t * Return the time encoded as Bars:Beats:Sixteenths.\n\t */\n\ttoBarsBeatsSixteenths(): BarsBeatsSixteenths {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tlet quarters = this.valueOf() / quarterTime;\n\t\tquarters = parseFloat(quarters.toFixed(4));\n\t\tconst measures = Math.floor(quarters / this._getTimeSignature());\n\t\tlet sixteenths = (quarters % 1) * 4;\n\t\tquarters = Math.floor(quarters) % this._getTimeSignature();\n\t\tconst sixteenthString = sixteenths.toString();\n\t\tif (sixteenthString.length > 3) {\n\t\t\t// the additional parseFloat removes insignificant trailing zeroes\n\t\t\tsixteenths = parseFloat(parseFloat(sixteenthString).toFixed(3));\n\t\t}\n\t\tconst progress = [measures, quarters, sixteenths];\n\t\treturn progress.join(\":\");\n\t}\n\n\t/**\n\t * Return the time in ticks.\n\t */\n\ttoTicks(): Ticks {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tconst quarters = this.valueOf() / quarterTime;\n\t\treturn quarters * this._getPPQ();\n\t}\n\n\t/**\n\t * Return the time in seconds.\n\t */\n\ttoSeconds(): Seconds {\n\t\treturn this.valueOf();\n\t}\n\n\t/**\n\t * Return the value as a midi note.\n\t */\n\ttoMidi(): MidiNote {\n\t\treturn ftom(this.toFrequency());\n\t}\n\n\tprotected _now(): Type {\n\t\treturn this.context.now() as Type;\n\t}\n}\n\n/**\n * Create a TimeClass from a time string or number. The time is computed against the \n * global Tone.Context. To use a specific context, use [[TimeClass]]\n * @param value A value which represents time\n * @param units The value's units if they can't be inferred by the value.\n * @category Unit\n * @example\n * const time = Tone.Time(\"4n\").toSeconds();\n * console.log(time);\n * @example\n * const note = Tone.Time(1).toNotation();\n * console.log(note);\n * @example\n * const freq = Tone.Time(0.5).toFrequency();\n * console.log(freq);\n */\nexport function Time(value?: TimeValue, units?: TimeBaseUnit): TimeClass {\n\treturn new TimeClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { intervalToFrequencyRatio, mtof } from \"./Conversions\";\nimport { ftom, getA4, setA4 } from \"./Conversions\";\nimport { TimeClass } from \"./Time\";\nimport { TimeBaseUnit, TimeExpression, TimeValue } from \"./TimeBase\";\nimport { Frequency, Hertz, Interval, MidiNote, Note, Seconds, Ticks } from \"./Units\";\n\nexport type FrequencyUnit = TimeBaseUnit | \"midi\";\n\n/**\n * Frequency is a primitive type for encoding Frequency values.\n * Eventually all time values are evaluated to hertz using the `valueOf` method.\n * @example\n * Tone.Frequency(\"C3\"); // 261\n * Tone.Frequency(38, \"midi\");\n * Tone.Frequency(\"C3\").transpose(4);\n * @category Unit\n */\nexport class FrequencyClass extends TimeClass {\n\n\treadonly name: string = \"Frequency\";\n\n\treadonly defaultUnits: FrequencyUnit = \"hz\";\n\n\t/**\n\t * The [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used\n\t * to generate all the other pitch values from notes. A4's values in Hertz.\n\t */\n\tstatic get A4(): Hertz {\n\t\treturn getA4();\n\t}\n\tstatic set A4(freq: Hertz) {\n\t\tsetA4(freq);\n\t}\n\n\t//-------------------------------------\n\t// \tAUGMENT BASE EXPRESSIONS\n\t//-------------------------------------\n\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn Object.assign({}, super._getExpressions(), {\n\t\t\tmidi: {\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?midi)/,\n\t\t\t\tmethod(value): number {\n\t\t\t\t\tif (this.defaultUnits === \"midi\") {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FrequencyClass.mtof(value);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tnote: {\n\t\t\t\tregexp: /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,\n\t\t\t\tmethod(pitch, octave): number {\n\t\t\t\t\tconst index = noteToScaleIndex[pitch.toLowerCase()];\n\t\t\t\t\tconst noteNumber = index + (parseInt(octave, 10) + 1) * 12;\n\t\t\t\t\tif (this.defaultUnits === \"midi\") {\n\t\t\t\t\t\treturn noteNumber;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FrequencyClass.mtof(noteNumber);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\ttr: {\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?):(\\d+(?:\\.\\d+)?):?(\\d+(?:\\.\\d+)?)?/,\n\t\t\t\tmethod(m, q, s): number {\n\t\t\t\t\tlet total = 1;\n\t\t\t\t\tif (m && m !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(this._getTimeSignature() * parseFloat(m));\n\t\t\t\t\t}\n\t\t\t\t\tif (q && q !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(parseFloat(q));\n\t\t\t\t\t}\n\t\t\t\t\tif (s && s !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(parseFloat(s) / 4);\n\t\t\t\t\t}\n\t\t\t\t\treturn total;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t}\n\n\t//-------------------------------------\n\t// \tEXPRESSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Transposes the frequency by the given number of semitones.\n\t * @return A new transposed frequency\n\t * @example\n\t * Tone.Frequency(\"A4\").transpose(3); // \"C5\"\n\t */\n\ttranspose(interval: Interval): FrequencyClass {\n\t\treturn new FrequencyClass(this.context, this.valueOf() * intervalToFrequencyRatio(interval));\n\t}\n\n\t/**\n\t * Takes an array of semitone intervals and returns\n\t * an array of frequencies transposed by those intervals.\n\t * @return Returns an array of Frequencies\n\t * @example\n\t * Tone.Frequency(\"A4\").harmonize([0, 3, 7]); // [\"A4\", \"C5\", \"E5\"]\n\t */\n\tharmonize(intervals: Interval[]): FrequencyClass[] {\n\t\treturn intervals.map(interval => {\n\t\t\treturn this.transpose(interval);\n\t\t});\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Return the value of the frequency as a MIDI note\n\t * @example\n\t * Tone.Frequency(\"C4\").toMidi(); // 60\n\t */\n\ttoMidi(): MidiNote {\n\t\treturn ftom(this.valueOf());\n\t}\n\n\t/**\n\t * Return the value of the frequency in Scientific Pitch Notation\n\t * @example\n\t * Tone.Frequency(69, \"midi\").toNote(); // \"A4\"\n\t */\n\ttoNote(): Note {\n\t\tconst freq = this.toFrequency();\n\t\tconst log = Math.log2(freq / FrequencyClass.A4);\n\t\tlet noteNumber = Math.round(12 * log) + 57;\n\t\tconst octave = Math.floor(noteNumber / 12);\n\t\tif (octave < 0) {\n\t\t\tnoteNumber += -12 * octave;\n\t\t}\n\t\tconst noteName = scaleIndexToNote[noteNumber % 12];\n\t\treturn noteName + octave.toString() as Note;\n\t}\n\n\t/**\n\t * Return the duration of one cycle in seconds.\n\t */\n\ttoSeconds(): Seconds {\n\t\treturn 1 / super.toSeconds();\n\t}\n\n\t/**\n\t * Return the duration of one cycle in ticks\n\t */\n\ttoTicks(): Ticks {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tconst quarters = this.valueOf() / quarterTime;\n\t\treturn Math.floor(quarters * this._getPPQ());\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS HELPERS\n\t//-------------------------------------\n\n\t/**\n\t * With no arguments, return 0\n\t */\n\tprotected _noArg(): Type {\n\t\treturn 0 as Type;\n\t}\n\n\t/**\n\t * Returns the value of a frequency in the current units\n\t */\n\tprotected _frequencyToUnits(freq: Hertz): Type {\n\t\treturn freq as Type;\n\t}\n\n\t/**\n\t * Returns the value of a tick in the current time units\n\t */\n\tprotected _ticksToUnits(ticks: Ticks): Type {\n\t\treturn 1 / ((ticks * 60) / (this._getBpm() * this._getPPQ())) as Type;\n\t}\n\n\t/**\n\t * Return the value of the beats in the current units\n\t */\n\tprotected _beatsToUnits(beats: number): Type {\n\t\treturn 1 / super._beatsToUnits(beats) as Type;\n\t}\n\n\t/**\n\t * Returns the value of a second in the current units\n\t */\n\tprotected _secondsToUnits(seconds: Seconds): Type {\n\t\treturn 1 / seconds as Type;\n\t}\n\n\t/**\n\t * Convert a MIDI note to frequency value.\n\t * @param midi The midi number to convert.\n\t * @return The corresponding frequency value\n\t */\n\tstatic mtof(midi: MidiNote): Hertz {\n\t\treturn mtof(midi);\n\t}\n\n\t/**\n\t * Convert a frequency value to a MIDI note.\n\t * @param frequency The value to frequency value to convert.\n\t */\n\tstatic ftom(frequency: Hertz): MidiNote {\n\t\treturn ftom(frequency);\n\t}\n}\n\n//-------------------------------------\n// \tFREQUENCY CONVERSIONS\n//-------------------------------------\n\n/**\n * Note to scale index. \n * @hidden\n */\nconst noteToScaleIndex = {\n\tcbb: -2, cb: -1, c: 0, \"c#\": 1, cx: 2,\n\tdbb: 0, db: 1, d: 2, \"d#\": 3, dx: 4,\n\tebb: 2, eb: 3, e: 4, \"e#\": 5, ex: 6,\n\tfbb: 3, fb: 4, f: 5, \"f#\": 6, fx: 7,\n\tgbb: 5, gb: 6, g: 7, \"g#\": 8, gx: 9,\n\tabb: 7, ab: 8, a: 9, \"a#\": 10, ax: 11,\n\tbbb: 9, bb: 10, b: 11, \"b#\": 12, bx: 13,\n};\n\n/**\n * scale index to note (sharps)\n * @hidden\n */\nconst scaleIndexToNote = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\n\n/**\n * Convert a value into a FrequencyClass object.\n * @category Unit\n * @example\n * const midi = Tone.Frequency(\"C3\").toMidi();\n * console.log(midi);\n * @example\n * const hertz = Tone.Frequency(38, \"midi\").toFrequency();\n * console.log(hertz);\n */\nexport function Frequency(value?: TimeValue | Frequency, units?: FrequencyUnit): FrequencyClass {\n\treturn new FrequencyClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { Seconds, Ticks } from \"../type/Units\";\nimport { TimeClass } from \"./Time\";\nimport { TimeBaseUnit, TimeValue } from \"./TimeBase\";\n\n/**\n * TransportTime is a the time along the Transport's\n * timeline. It is similar to Tone.Time, but instead of evaluating\n * against the AudioContext's clock, it is evaluated against\n * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime).\n * @category Unit\n */\nexport class TransportTimeClass extends TimeClass {\n\n\treadonly name: string = \"TransportTime\";\n\n\t/**\n\t * Return the current time in whichever context is relevant\n\t */\n\tprotected _now(): Type {\n\t\treturn this.context.transport.seconds as Type;\n\t}\n}\n\n/**\n * TransportTime is a the time along the Transport's\n * timeline. It is similar to [[Time]], but instead of evaluating\n * against the AudioContext's clock, it is evaluated against\n * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime).\n * @category Unit\n */\nexport function TransportTime(value?: TimeValue, units?: TimeBaseUnit): TransportTimeClass {\n\treturn new TransportTimeClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { FrequencyClass } from \"../type/Frequency\";\nimport { TimeClass } from \"../type/Time\";\nimport { TransportTimeClass } from \"../type/TransportTime\";\nimport { Frequency, Hertz, Seconds, Ticks, Time } from \"../type/Units\";\nimport { getDefaultsFromInstance, optionsFromArguments } from \"../util/Defaults\";\nimport { RecursivePartial } from \"../util/Interface\";\nimport { isArray, isBoolean, isDefined, isNumber, isString, isUndef } from \"../util/TypeCheck\";\nimport { BaseContext } from \"./BaseContext\";\n\n/**\n * A unit which process audio\n */\nexport interface ToneWithContextOptions {\n\tcontext: BaseContext;\n}\n\n/**\n * The Base class for all nodes that have an AudioContext.\n */\nexport abstract class ToneWithContext extends Tone {\n\n\t/**\n\t * The context belonging to the node.\n\t */\n\treadonly context: BaseContext;\n\n\t/**\n\t * The default context to use if no AudioContext is passed in to the constructor.\n\t * Probably should not be set manually. Used internally.\n\t * @hidden\n\t */\n\treadonly defaultContext?: BaseContext;\n\n\t/**\n\t * Pass in a constructor as the first argument\n\t */\n\tconstructor(context?: BaseContext)\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(ToneWithContext.getDefaults(), arguments, [\"context\"]);\n\t\tif (this.defaultContext) {\n\t\t\tthis.context = this.defaultContext;\n\t\t} else {\n\t\t\tthis.context = options.context;\n\t\t}\n\t}\n\n\tstatic getDefaults(): ToneWithContextOptions {\n\t\treturn {\n\t\t\tcontext: getContext(),\n\t\t};\n\t}\n\n\t/**\n\t * Return the current time of the Context clock plus the lookAhead.\n\t * @example\n\t * setInterval(() => {\n\t * \tconsole.log(Tone.now());\n\t * }, 100);\n\t */\n\tnow(): Seconds {\n\t\treturn this.context.currentTime + this.context.lookAhead;\n\t}\n\n\t/**\n\t * Return the current time of the Context clock without any lookAhead.\n\t * @example\n\t * setInterval(() => {\n\t * \tconsole.log(Tone.immediate());\n\t * }, 100);\n\t */\n\timmediate(): Seconds {\n\t\treturn this.context.currentTime;\n\t}\n\n\t/**\n\t * The duration in seconds of one sample.\n\t * @example\n\t * console.log(Tone.Transport.sampleTime);\n\t */\n\tget sampleTime(): Seconds {\n\t\treturn 1 / this.context.sampleRate;\n\t}\n\n\t/**\n\t * The number of seconds of 1 processing block (128 samples)\n\t * @example\n\t * console.log(Tone.Destination.blockTime);\n\t */\n\tget blockTime(): Seconds {\n\t\treturn 128 / this.context.sampleRate;\n\t}\n\n\t/**\n\t * Convert the incoming time to seconds. \n\t * This is calculated against the current [[Tone.Transport]] bpm\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * setInterval(() => console.log(gain.toSeconds(\"4n\")), 100);\n\t * // ramp the tempo to 60 bpm over 30 seconds\n\t * Tone.getTransport().bpm.rampTo(60, 30);\n\t */\n\ttoSeconds(time?: Time): Seconds {\n\t\treturn new TimeClass(this.context, time).toSeconds();\n\t}\n\n\t/**\n\t * Convert the input to a frequency number\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * console.log(gain.toFrequency(\"4n\"));\n\t */\n\ttoFrequency(freq: Frequency): Hertz {\n\t\treturn new FrequencyClass(this.context, freq).toFrequency();\n\t}\n\n\t/**\n\t * Convert the input time into ticks\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * console.log(gain.toTicks(\"4n\"));\n\t */\n\ttoTicks(time?: Time | TimeClass): Ticks {\n\t\treturn new TransportTimeClass(this.context, time).toTicks();\n\t}\n\n\t//-------------------------------------\n\t// \tGET/SET\n\t//-------------------------------------\n\n\t/**\n\t * Get a subset of the properties which are in the partial props\n\t */\n\tprotected _getPartialProperties(props: Options): Partial {\n\t\tconst options = this.get();\n\t\t// remove attributes from the prop that are not in the partial\n\t\tObject.keys(options).forEach(name => {\n\t\t\tif (isUndef(props[name])) {\n\t\t\t\tdelete options[name];\n\t\t\t}\n\t\t});\n\t\treturn options;\n\t}\n\n\t/**\n\t * Get the object's attributes.\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * console.log(osc.get());\n\t */\n\tget(): Options {\n\t\tconst defaults = getDefaultsFromInstance(this) as Options;\n\t\tObject.keys(defaults).forEach(attribute => {\n\t\t\tif (Reflect.has(this, attribute)) {\n\t\t\t\tconst member = this[attribute];\n\t\t\t\tif (isDefined(member) && isDefined(member.value) && isDefined(member.setValueAtTime)) {\n\t\t\t\t\tdefaults[attribute] = member.value;\n\t\t\t\t} else if (member instanceof ToneWithContext) {\n\t\t\t\t\tdefaults[attribute] = member._getPartialProperties(defaults[attribute]);\n\t\t\t\t\t// otherwise make sure it's a serializable type\n\t\t\t\t} else if (isArray(member) || isNumber(member) || isString(member) || isBoolean(member)) {\n\t\t\t\t\tdefaults[attribute] = member;\n\t\t\t\t} else {\n\t\t\t\t\t// remove all undefined and unserializable attributes\n\t\t\t\t\tdelete defaults[attribute];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn defaults;\n\t}\n\n\t/**\n\t * Set multiple properties at once with an object.\n\t * @example\n\t * const filter = new Tone.Filter().toDestination();\n\t * // set values using an object\n\t * filter.set({\n\t * \tfrequency: \"C6\",\n\t * \ttype: \"highpass\"\n\t * });\n\t * const player = new Tone.Player(\"https://tonejs.github.io/audio/berklee/Analogsynth_octaves_highmid.mp3\").connect(filter);\n\t * player.autostart = true;\n\t */\n\tset(props: RecursivePartial): this {\n\t\tObject.keys(props).forEach(attribute => {\n\t\t\tif (Reflect.has(this, attribute) && isDefined(this[attribute])) {\n\t\t\t\tif (this[attribute] && isDefined(this[attribute].value) && isDefined(this[attribute].setValueAtTime)) {\n\t\t\t\t\t// small optimization\n\t\t\t\t\tif (this[attribute].value !== props[attribute]) {\n\t\t\t\t\t\tthis[attribute].value = props[attribute];\n\t\t\t\t\t}\n\t\t\t\t} else if (this[attribute] instanceof ToneWithContext) {\n\t\t\t\t\tthis[attribute].set(props[attribute]);\n\t\t\t\t} else {\n\t\t\t\t\tthis[attribute] = props[attribute];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n}\n","import { Seconds } from \"../type/Units\";\nimport { Timeline, TimelineEvent } from \"./Timeline\";\nimport { assertRange } from \"./Debug\";\n\nexport type BasicPlaybackState = \"started\" | \"stopped\";\nexport type PlaybackState = BasicPlaybackState | \"paused\";\n\nexport interface StateTimelineEvent extends TimelineEvent {\n\tstate: PlaybackState;\n}\n\n/**\n * A Timeline State. Provides the methods: `setStateAtTime(\"state\", time)` and `getValueAtTime(time)`\n * @param initial The initial state of the StateTimeline. Defaults to `undefined`\n */\nexport class StateTimeline extends Timeline {\n\n\treadonly name: string = \"StateTimeline\";\n\n\t/**\n\t * The initial state\n\t */\n\tprivate _initial: PlaybackState;\n\n\tconstructor(initial: PlaybackState = \"stopped\") {\n\t\tsuper();\n\t\tthis._initial = initial;\n\t\tthis.setStateAtTime(this._initial, 0);\n\t}\n\n\t/**\n\t * Returns the scheduled state scheduled before or at\n\t * the given time.\n\t * @param time The time to query.\n\t * @return The name of the state input in setStateAtTime.\n\t */\n\tgetValueAtTime(time: Seconds): PlaybackState {\n\t\tconst event = this.get(time);\n\t\tif (event !== null) {\n\t\t\treturn event.state;\n\t\t} else {\n\t\t\treturn this._initial;\n\t\t}\n\t}\n\n\t/**\n\t * Add a state to the timeline.\n\t * @param state The name of the state to set.\n\t * @param time The time to query.\n\t * @param options Any additional options that are needed in the timeline.\n\t */\n\tsetStateAtTime(state: PlaybackState, time: Seconds, options?: AdditionalOptions): this {\n\t\tassertRange(time, 0);\n\t\tthis.add(Object.assign({}, options, {\n\t\t\tstate,\n\t\t\ttime,\n\t\t}));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Return the event before the time with the given state\n\t * @param state The state to look for\n\t * @param time When to check before\n\t * @return The event with the given state before the time\n\t */\n\tgetLastState(state: PlaybackState, time: number): StateTimelineEvent & AdditionalOptions | undefined {\n\t\t// time = this.toSeconds(time);\n\t\tconst index = this._search(time);\n\t\tfor (let i = index; i >= 0; i--) {\n\t\t\tconst event = this._timeline[i];\n\t\t\tif (event.state === state) {\n\t\t\t\treturn event;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return the event after the time with the given state\n\t * @param state The state to look for\n\t * @param time When to check from\n\t * @return The event with the given state after the time\n\t */\n\tgetNextState(state: PlaybackState, time: number): StateTimelineEvent & AdditionalOptions | undefined {\n\t\t// time = this.toSeconds(time);\n\t\tconst index = this._search(time);\n\t\tif (index !== -1) {\n\t\t\tfor (let i = index; i < this._timeline.length; i++) {\n\t\t\t\tconst event = this._timeline[i];\n\t\t\t\tif (event.state === state) {\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { AbstractParam } from \"../context/AbstractParam\";\nimport { dbToGain, gainToDb } from \"../type/Conversions\";\nimport { Decibels, Frequency, Positive, Time, UnitMap, UnitName } from \"../type/Units\";\nimport { isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { ToneWithContext, ToneWithContextOptions } from \"./ToneWithContext\";\nimport { EQ } from \"../util/Math\";\nimport { assert, assertRange } from \"../util/Debug\";\n\nexport interface ParamOptions extends ToneWithContextOptions {\n\tunits: TypeName;\n\tvalue?: UnitMap[TypeName];\n\tparam: AudioParam | Param;\n\tconvert: boolean;\n\tminValue?: number;\n\tmaxValue?: number;\n\tswappable?: boolean;\n}\n\n/**\n * the possible automation types\n */\ntype AutomationType = \"linearRampToValueAtTime\" | \"exponentialRampToValueAtTime\" | \"setValueAtTime\" | \"setTargetAtTime\" | \"cancelScheduledValues\";\n\ninterface TargetAutomationEvent {\n\ttype: \"setTargetAtTime\";\n\ttime: number;\n\tvalue: number;\n\tconstant: number;\n}\n\ninterface NormalAutomationEvent {\n\ttype: Exclude;\n\ttime: number;\n\tvalue: number;\n}\n/**\n * The events on the automation\n */\nexport type AutomationEvent = NormalAutomationEvent | TargetAutomationEvent;\n\n/**\n * Param wraps the native Web Audio's AudioParam to provide\n * additional unit conversion functionality. It also\n * serves as a base-class for classes which have a single,\n * automatable parameter.\n * @category Core\n */\nexport class Param\n\textends ToneWithContext>\n\timplements AbstractParam {\n\n\treadonly name: string = \"Param\";\n\n\treadonly input: GainNode | AudioParam;\n\n\treadonly units: UnitName;\n\tconvert: boolean;\n\toverridden = false;\n\n\t/**\n\t * The timeline which tracks all of the automations.\n\t */\n\tprotected _events: Timeline;\n\n\t/**\n\t * The native parameter to control\n\t */\n\tprotected _param: AudioParam;\n\n\t/**\n\t * The default value before anything is assigned\n\t */\n\tprotected _initialValue: number;\n\n\t/**\n\t * The minimum output value\n\t */\n\tprivate _minOutput = 1e-7;\n\n\t/**\n\t * Private reference to the min and max values if passed into the constructor\n\t */\n\tprivate readonly _minValue?: number;\n\tprivate readonly _maxValue?: number;\n\n\t/**\n\t * If the underlying AudioParam can be swapped out\n\t * using the setParam method. \n\t */\n\tprotected readonly _swappable: boolean;\n\n\t/**\n\t * @param param The AudioParam to wrap\n\t * @param units The unit name\n\t * @param convert Whether or not to convert the value to the target units\n\t */\n\tconstructor(param: AudioParam, units?: TypeName, convert?: boolean);\n\tconstructor(options: Partial>);\n\tconstructor() {\n\t\tsuper(optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]));\n\n\t\tconst options = optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]);\n\n\t\tassert(isDefined(options.param) &&\n\t\t\t(isAudioParam(options.param) || options.param instanceof Param), \"param must be an AudioParam\");\n\n\t\twhile (!isAudioParam(options.param)) {\n\t\t\toptions.param = options.param._param;\n\t\t}\n\n\t\tthis._swappable = isDefined(options.swappable) ? options.swappable : false;\n\t\tif (this._swappable) {\n\t\t\tthis.input = this.context.createGain();\n\t\t\t// initialize\n\t\t\tthis._param = options.param;\n\t\t\tthis.input.connect(this._param);\n\t\t} else {\n\t\t\tthis._param = this.input = options.param;\n\t\t}\n\t\tthis._events = new Timeline(1000);\n\t\tthis._initialValue = this._param.defaultValue;\n\t\tthis.units = options.units;\n\t\tthis.convert = options.convert;\n\t\tthis._minValue = options.minValue;\n\t\tthis._maxValue = options.maxValue;\n\n\t\t// if the value is defined, set it immediately\n\t\tif (isDefined(options.value) && options.value !== this._toType(this._initialValue)) {\n\t\t\tthis.setValueAtTime(options.value, 0);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ParamOptions {\n\t\treturn Object.assign(ToneWithContext.getDefaults(), {\n\t\t\tconvert: true,\n\t\t\tunits: \"number\" as UnitName,\n\t\t} as ParamOptions);\n\t}\n\n\tget value(): UnitMap[TypeName] {\n\t\tconst now = this.now();\n\t\treturn this.getValueAtTime(now);\n\t}\n\tset value(value) {\n\t\tthis.cancelScheduledValues(this.now());\n\t\tthis.setValueAtTime(value, this.now());\n\t}\n\n\tget minValue(): number {\n\t\t// if it's not the default minValue, return it\n\t\tif (isDefined(this._minValue)) {\n\t\t\treturn this._minValue;\n\t\t} else if (this.units === \"time\" || this.units === \"frequency\" ||\n\t\t\tthis.units === \"normalRange\" || this.units === \"positive\" ||\n\t\t\tthis.units === \"transportTime\" || this.units === \"ticks\" ||\n\t\t\tthis.units === \"bpm\" || this.units === \"hertz\" || this.units === \"samples\") {\n\t\t\treturn 0;\n\t\t} else if (this.units === \"audioRange\") {\n\t\t\treturn -1;\n\t\t} else if (this.units === \"decibels\") {\n\t\t\treturn -Infinity;\n\t\t} else {\n\t\t\treturn this._param.minValue;\n\t\t}\n\t}\n\n\tget maxValue(): number {\n\t\tif (isDefined(this._maxValue)) {\n\t\t\treturn this._maxValue;\n\t\t} else if (this.units === \"normalRange\" ||\n\t\t\tthis.units === \"audioRange\") {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn this._param.maxValue;\n\t\t}\n\t}\n\n\t/**\n\t * Type guard based on the unit name\n\t */\n\tprivate _is(arg: any, type: UnitName): arg is T {\n\t\treturn this.units === type;\n\t}\n\n\t/**\n\t * Make sure the value is always in the defined range\n\t */\n\tprivate _assertRange(value: number): number {\n\t\tif (isDefined(this.maxValue) && isDefined(this.minValue)) {\n\t\t\tassertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue));\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Convert the given value from the type specified by Param.units\n\t * into the destination value (such as Gain or Frequency).\n\t */\n\tprotected _fromType(val: UnitMap[TypeName]): number {\n\t\tif (this.convert && !this.overridden) {\n\t\t\tif (this._is