timed-audio-buffer-source-node-audio-worklet 2.1.30 → 2.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es2019/module.d.ts +1 -1
- package/build/es2019/module.d.ts.map +1 -1
- package/build/es2019/module.js +7 -4
- package/build/es2019/module.js.map +1 -1
- package/build/es2019/types/any-audio-worklet-node-options.d.ts +3 -0
- package/build/es2019/types/any-audio-worklet-node-options.d.ts.map +1 -0
- package/build/es2019/types/any-audio-worklet-node-options.js +2 -0
- package/build/es2019/types/any-audio-worklet-node-options.js.map +1 -0
- package/build/es2019/types/fixed-options.d.ts +1 -1
- package/build/es2019/types/fixed-options.d.ts.map +1 -1
- package/build/es2019/types/index.d.ts +2 -0
- package/build/es2019/types/index.d.ts.map +1 -1
- package/build/es2019/types/index.js +2 -0
- package/build/es2019/types/index.js.map +1 -1
- package/build/es2019/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts +3 -3
- package/build/es2019/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map +1 -1
- package/build/es2019/types/timed-audio-buffer-source-node-audio-worklet-node-options.d.ts +3 -3
- package/build/es2019/types/timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map +1 -1
- package/build/es5/bundle.js +23 -19
- package/package.json +20 -27
- package/src/module.ts +24 -17
- package/src/types/any-audio-worklet-node-options.ts +5 -0
- package/src/types/fixed-options.ts +1 -1
- package/src/types/index.ts +2 -0
- package/src/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.ts +3 -3
- package/src/types/timed-audio-buffer-source-node-audio-worklet-node-options.ts +3 -3
package/build/es2019/module.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ import { TAnyTimedAudioBufferSourceNodeAudioWorkletNodeOptions, TNativeTimedAudi
|
|
|
4
4
|
export * from './interfaces/index';
|
|
5
5
|
export * from './types/index';
|
|
6
6
|
export declare const addTimedAudioBufferSourceNodeAudioWorkletModule: (addAudioWorkletModule: (url: string) => Promise<void>) => Promise<void>;
|
|
7
|
-
export declare function createTimedAudioBufferSourceNodeAudioWorkletNode<T extends TContext | TNativeContext>(audioWorkletNodeConstructor: T extends TContext ? TAudioWorkletNodeConstructor : TNativeAudioWorkletNodeConstructor, context: T, createAudioBufferSourceNode: T extends TContext ? (context: TContext) => IAudioBufferSourceNode<TContext> : (context: TNativeContext) => TNativeAudioBufferSourceNode, options?:
|
|
7
|
+
export declare function createTimedAudioBufferSourceNodeAudioWorkletNode<T extends TContext | TNativeContext>(audioWorkletNodeConstructor: T extends TContext ? TAudioWorkletNodeConstructor : TNativeAudioWorkletNodeConstructor, context: T, createAudioBufferSourceNode: T extends TContext ? (context: TContext) => IAudioBufferSourceNode<TContext> : (context: TNativeContext) => TNativeAudioBufferSourceNode, { buffer, timingObject: initialTimingObject, ...options }?: TAnyTimedAudioBufferSourceNodeAudioWorkletNodeOptions<T>): T extends TContext ? ITimedAudioBufferSourceNodeAudioWorkletNode<T> : TNativeTimedAudioBufferSourceNodeAudioWorkletNode;
|
|
8
8
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EAEtB,4BAA4B,EAC5B,QAAQ,EACR,4BAA4B,EAE5B,kCAAkC,EAClC,cAAc,EACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,2CAA2C,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EAEtB,4BAA4B,EAC5B,QAAQ,EACR,4BAA4B,EAE5B,kCAAkC,EAClC,cAAc,EACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,2CAA2C,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAEH,qDAAqD,EAErD,iDAAiD,EACpD,MAAM,SAAS,CAAC;AAOjB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAI9B,eAAO,MAAM,+CAA+C,GAAU,uBAAuB,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,kBAQ1H,CAAC;AAKF,wBAAgB,gDAAgD,CAAC,CAAC,SAAS,QAAQ,GAAG,cAAc,EAChG,2BAA2B,EAAE,CAAC,SAAS,QAAQ,GAAG,4BAA4B,GAAG,kCAAkC,EACnH,OAAO,EAAE,CAAC,EACV,2BAA2B,EAAE,CAAC,SAAS,QAAQ,GACzC,CAAC,OAAO,EAAE,QAAQ,KAAK,sBAAsB,CAAC,QAAQ,CAAC,GACvD,CAAC,OAAO,EAAE,cAAc,KAAK,4BAA4B,EAC/D,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,EAAE,GAAE,qDAAqD,CAAC,CAAC,CAAM,GACzH,CAAC,SAAS,QAAQ,GAAG,2CAA2C,CAAC,CAAC,CAAC,GAAG,iDAAiD,CAiEzH"}
|
package/build/es2019/module.js
CHANGED
|
@@ -21,15 +21,14 @@ export const addTimedAudioBufferSourceNodeAudioWorkletModule = async (addAudioWo
|
|
|
21
21
|
};
|
|
22
22
|
const convertToContextFrame = createConvertToContextFrame(createPerformance());
|
|
23
23
|
const subscribeToTimingObject = createSubscribeToTimingObject(createScheduleAudioBufferSourceNode(convertToContextFrame));
|
|
24
|
-
export function createTimedAudioBufferSourceNodeAudioWorkletNode(audioWorkletNodeConstructor, context, createAudioBufferSourceNode, options = {}) {
|
|
24
|
+
export function createTimedAudioBufferSourceNodeAudioWorkletNode(audioWorkletNodeConstructor, context, createAudioBufferSourceNode, { buffer, timingObject: initialTimingObject, ...options } = {}) {
|
|
25
25
|
var _a, _b;
|
|
26
|
-
const { buffer = null } = options;
|
|
27
26
|
if (buffer instanceof AudioBuffer && buffer.sampleRate !== context.sampleRate) {
|
|
28
27
|
throw new TypeError('The AudioBuffer must have the same sampleRate as the AudioContext.');
|
|
29
28
|
}
|
|
30
|
-
let
|
|
29
|
+
let timingObject = initialTimingObject !== null && initialTimingObject !== void 0 ? initialTimingObject : null;
|
|
31
30
|
const { position = 0, timestamp = 0, velocity = 0 } = (_a = timingObject === null || timingObject === void 0 ? void 0 : timingObject.query()) !== null && _a !== void 0 ? _a : {};
|
|
32
|
-
const
|
|
31
|
+
const fixedOptions = {
|
|
33
32
|
numberOfInputs: 1,
|
|
34
33
|
numberOfOutputs: 1,
|
|
35
34
|
outputChannelCount: [(_b = buffer === null || buffer === void 0 ? void 0 : buffer.numberOfChannels) !== null && _b !== void 0 ? _b : 1],
|
|
@@ -41,6 +40,10 @@ export function createTimedAudioBufferSourceNodeAudioWorkletNode(audioWorkletNod
|
|
|
41
40
|
timestamp: convertToContextFrame(context, timestamp),
|
|
42
41
|
velocity
|
|
43
42
|
}
|
|
43
|
+
};
|
|
44
|
+
const audioWorkletNode = new audioWorkletNodeConstructor(context, 'timed-audio-buffer-source-node-audio-worklet-processor', {
|
|
45
|
+
...options,
|
|
46
|
+
...fixedOptions
|
|
44
47
|
});
|
|
45
48
|
let removeListener = null;
|
|
46
49
|
Object.defineProperties(audioWorkletNode, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,+CAA+C,CAAC;AACpG,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { IAudioWorkletNodeOptions, TAnyContext, TContext, TNativeAudioWorkletNodeOptions } from 'standardized-audio-context';
|
|
2
|
+
export type TAnyAudioWorkletNodeOptions<T extends TAnyContext> = T extends TContext ? IAudioWorkletNodeOptions : TNativeAudioWorkletNodeOptions;
|
|
3
|
+
//# sourceMappingURL=any-audio-worklet-node-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any-audio-worklet-node-options.d.ts","sourceRoot":"","sources":["../../../src/types/any-audio-worklet-node-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE7H,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,QAAQ,GAC7E,wBAAwB,GACxB,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any-audio-worklet-node-options.js","sourceRoot":"","sources":["../../../src/types/any-audio-worklet-node-options.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type TFixedOptions = '
|
|
1
|
+
export type TFixedOptions = 'numberOfInputs' | 'numberOfOutputs' | 'outputChannelCount' | 'processorOptions';
|
|
2
2
|
//# sourceMappingURL=fixed-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-options.d.ts","sourceRoot":"","sources":["../../../src/types/fixed-options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"fixed-options.d.ts","sourceRoot":"","sources":["../../../src/types/fixed-options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export * from './any-audio-worklet-node-options';
|
|
1
2
|
export * from './any-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
3
|
+
export * from './fixed-options';
|
|
2
4
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node';
|
|
3
5
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
4
6
|
export * from './timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,6DAA6D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,iEAAiE,CAAC;AAChF,cAAc,iBAAiB,CAAC;AAChC,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,6DAA6D,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export * from './any-audio-worklet-node-options';
|
|
1
2
|
export * from './any-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
3
|
+
export * from './fixed-options';
|
|
2
4
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node';
|
|
3
5
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
4
6
|
export * from './timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,6DAA6D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,iEAAiE,CAAC;AAChF,cAAc,iBAAiB,CAAC;AAChC,cAAc,4DAA4D,CAAC;AAC3E,cAAc,oEAAoE,CAAC;AACnF,cAAc,6DAA6D,CAAC"}
|
package/build/es2019/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TNativeAudioBuffer, TNativeAudioWorkletNodeOptions } from 'standardized-audio-context';
|
|
2
2
|
import { ITimingObject } from 'timing-object';
|
|
3
3
|
import { TFixedOptions } from './fixed-options';
|
|
4
|
-
export type TNativeTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Omit<TNativeAudioWorkletNodeOptions, TFixedOptions
|
|
5
|
-
buffer
|
|
6
|
-
timingObject
|
|
4
|
+
export type TNativeTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Partial<Omit<TNativeAudioWorkletNodeOptions, TFixedOptions>> & {
|
|
5
|
+
buffer?: TNativeAudioBuffer;
|
|
6
|
+
timingObject?: ITimingObject;
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map
|
package/build/es2019/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts","sourceRoot":"","sources":["../../../src/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,wDAAwD,GAAG,IAAI,CAAC,8BAA8B,EAAE,aAAa,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"native-timed-audio-buffer-source-node-audio-worklet-node-options.d.ts","sourceRoot":"","sources":["../../../src/types/native-timed-audio-buffer-source-node-audio-worklet-node-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,wDAAwD,GAAG,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,aAAa,CAAC,CAAC,GAAG;IAClI,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IAudioBuffer, IAudioWorkletNodeOptions } from 'standardized-audio-context';
|
|
2
2
|
import { ITimingObject } from 'timing-object';
|
|
3
3
|
import { TFixedOptions } from './fixed-options';
|
|
4
|
-
export type TTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Omit<IAudioWorkletNodeOptions, TFixedOptions
|
|
5
|
-
buffer
|
|
6
|
-
timingObject
|
|
4
|
+
export type TTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Partial<Omit<IAudioWorkletNodeOptions, TFixedOptions>> & {
|
|
5
|
+
buffer?: IAudioBuffer;
|
|
6
|
+
timingObject?: ITimingObject;
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map
|
package/build/es2019/types/timed-audio-buffer-source-node-audio-worklet-node-options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timed-audio-buffer-source-node-audio-worklet-node-options.d.ts","sourceRoot":"","sources":["../../../src/types/timed-audio-buffer-source-node-audio-worklet-node-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,kDAAkD,GAAG,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"timed-audio-buffer-source-node-audio-worklet-node-options.d.ts","sourceRoot":"","sources":["../../../src/types/timed-audio-buffer-source-node-audio-worklet-node-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,kDAAkD,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,GAAG;IACtH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC"}
|
package/build/es5/bundle.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/regenerator')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/regenerator'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.timedAudioBufferSourceNodeAudioWorklet = {}, global._asyncToGenerator, global._regeneratorRuntime));
|
|
5
|
-
})(this, (function (exports, _asyncToGenerator, _regeneratorRuntime) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/defineProperty'), require('@babel/runtime/helpers/objectWithoutProperties'), require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/regenerator')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/defineProperty', '@babel/runtime/helpers/objectWithoutProperties', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/regenerator'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.timedAudioBufferSourceNodeAudioWorklet = {}, global._defineProperty, global._objectWithoutProperties, global._asyncToGenerator, global._regeneratorRuntime));
|
|
5
|
+
})(this, (function (exports, _defineProperty, _objectWithoutProperties, _asyncToGenerator, _regeneratorRuntime) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var createConvertToContextFrame = function createConvertToContextFrame(performance) {
|
|
8
8
|
return function (context, timestamp) {
|
|
@@ -73,8 +73,11 @@
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
// This is the minified and stringified code of the timed-audio-buffer-source-node-audio-worklet-processor package.
|
|
76
|
-
var worklet = "(()=>{var e={45
|
|
76
|
+
var worklet = "(()=>{var e={45(e,t,r){var o=r(738).default;e.exports=function(e,t){if(\"object\"!=o(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!=o(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},72(e){function t(r){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},79(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o},e.exports.__esModule=!0,e.exports.default=e.exports},122(e,t,r){var o=r(79);e.exports=function(e,t){if(e){if(\"string\"==typeof e)return o(e,t);var r={}.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},156(e){e.exports=function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var o,n,u,s,p=[],i=!0,l=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(o=u.call(r)).done)&&(p.push(o.value),p.length!==t);i=!0);}catch(e){l=!0,n=e}finally{try{if(!i&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(l)throw n}}return p}},e.exports.__esModule=!0,e.exports.default=e.exports},383(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},e.exports.__esModule=!0,e.exports.default=e.exports},452(e,t,r){var o=r(738).default,n=r(475);e.exports=function(e,t){if(t&&(\"object\"==o(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},475(e){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e},e.exports.__esModule=!0,e.exports.default=e.exports},511(e,t,r){var o=r(636);e.exports=function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&o(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},550(e){function t(){try{var r=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(r){}return(e.exports=t=function(){return!!r},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},579(e,t,r){var o=r(736);function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}e.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},636(e){function t(r,o){return e.exports=t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},646(e,t,r){var o=r(550),n=r(636);e.exports=function(e,t,r){if(o())return Reflect.construct.apply(null,arguments);var u=[null];u.push.apply(u,t);var s=new(e.bind.apply(e,u));return r&&n(s,r.prototype),s},e.exports.__esModule=!0,e.exports.default=e.exports},691(e){e.exports=function(e){try{return-1!==Function.toString.call(e).indexOf(\"[native code]\")}catch(t){return\"function\"==typeof e}},e.exports.__esModule=!0,e.exports.default=e.exports},715(e,t,r){var o=r(987),n=r(156),u=r(122),s=r(752);e.exports=function(e,t){return o(e)||n(e,t)||u(e,t)||s()},e.exports.__esModule=!0,e.exports.default=e.exports},736(e,t,r){var o=r(738).default,n=r(45);e.exports=function(e){var t=n(e,\"string\");return\"symbol\"==o(t)?t:t+\"\"},e.exports.__esModule=!0,e.exports.default=e.exports},738(e){function t(r){return e.exports=t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},752(e){e.exports=function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")},e.exports.__esModule=!0,e.exports.default=e.exports},783(e,t,r){!function(e,t,r,o,n,u,s,p){\"use strict\";function i(e,t,r){return t=u(t),n(e,l()?Reflect.construct(t,[],u(e).constructor):t.apply(e,r))}function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(l=function(){return!!e})()}var a=function(n){function u(e){var o,n,s=e.numberOfInputs,p=e.numberOfOutputs,l=e.outputChannelCount,a=e.processorOptions;r(this,u);var f=\"object\"===t(a)&&null!==a&&\"buffer\"in a?a.buffer:null;if(!(null===f||Array.isArray(f)&&f.every(function(e){return e instanceof Float32Array})))throw new Error(\"The buffer needs to be either null or an array with where each element is a Float32Array.\");if(1!==s)throw new Error(\"The numberOfInputs must be 1.\");if(1!==p)throw new Error(\"The numberOfOutputs must be 1.\");var c=null!==(n=null==f?void 0:f.length)&&void 0!==n?n:1;if(void 0===l||1!==l.length||c!==l[0])throw new Error(\"The outputChannelCount must match the number of channels of the buffer.\");var x=\"object\"===t(a)&&null!==a&&\"position\"in a?a.position:0;if(\"number\"!=typeof x)throw new Error('The position needs to be of type \"number\".');var d=\"object\"===t(a)&&null!==a&&\"timestamp\"in a?a.timestamp:0;if(\"number\"!=typeof d)throw new Error('The timestamp needs to be of type \"number\".');var y=\"object\"===t(a)&&null!==a&&\"velocity\"in a?a.velocity:0;if(\"number\"!=typeof y||![0,1].includes(y))throw new Error(\"The velocity needs to be either 0 or 1.\");return(o=i(this,u))._buffer=f,o._position=x,o._timestamp=d,o._velocity=y,o}return s(u,n),o(u,[{key:\"process\",value:function(t,r){var o=e(t,1)[0],n=e(r,1)[0];if((null==o?void 0:o.length)>0){var u=e(o,1)[0];u.length>1&&(this._position=Math.round(u[0]),this._timestamp=Math.round(u[1]),this._velocity=Math.round(u[2]))}if(null!==this._buffer)for(var s=this._buffer.length,p=0;p<s;p+=1)for(var i=this._buffer[p],l=n[p],a=0;a<128;a+=1){var f=this._position+(currentFrame-this._timestamp+a)*this._velocity;f>=0&&f<i.length&&(l[a]=i[f])}return!0}}])}(p(AudioWorkletProcessor));a.parameterDescriptors=[],registerProcessor(\"timed-audio-buffer-source-node-audio-worklet-processor\",a)}(r(715),r(738),r(383),r(579),r(452),r(72),r(511),r(837))},837(e,t,r){var o=r(72),n=r(636),u=r(691),s=r(646);function p(t){var r=\"function\"==typeof Map?new Map:void 0;return e.exports=p=function(e){if(null===e||!u(e))return e;if(\"function\"!=typeof e)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return s(e,arguments,o(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),n(t,e)},e.exports.__esModule=!0,e.exports.default=e.exports,p(t)}e.exports=p,e.exports.__esModule=!0,e.exports.default=e.exports},987(e){e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var u=t[o]={exports:{}};return e[o].call(u.exports,u,u.exports,r),u.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{\"use strict\";r(783)})()})();"; // tslint:disable-line:max-line-length
|
|
77
77
|
|
|
78
|
+
var _excluded = ["buffer", "timingObject"];
|
|
79
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
80
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
78
81
|
var blob = new Blob([worklet], {
|
|
79
82
|
type: 'application/javascript; charset=utf-8'
|
|
80
83
|
});
|
|
@@ -105,23 +108,23 @@
|
|
|
105
108
|
var convertToContextFrame = createConvertToContextFrame(createPerformance());
|
|
106
109
|
var subscribeToTimingObject = createSubscribeToTimingObject(createScheduleAudioBufferSourceNode(convertToContextFrame));
|
|
107
110
|
function createTimedAudioBufferSourceNodeAudioWorkletNode(audioWorkletNodeConstructor, context, createAudioBufferSourceNode) {
|
|
108
|
-
var
|
|
111
|
+
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
112
|
+
buffer = _ref2.buffer,
|
|
113
|
+
initialTimingObject = _ref2.timingObject,
|
|
114
|
+
options = _objectWithoutProperties(_ref2, _excluded);
|
|
109
115
|
var _a, _b;
|
|
110
|
-
var _options$buffer = options.buffer,
|
|
111
|
-
buffer = _options$buffer === void 0 ? null : _options$buffer;
|
|
112
116
|
if (buffer instanceof AudioBuffer && buffer.sampleRate !== context.sampleRate) {
|
|
113
117
|
throw new TypeError('The AudioBuffer must have the same sampleRate as the AudioContext.');
|
|
114
118
|
}
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var audioWorkletNode = new audioWorkletNodeConstructor(context, 'timed-audio-buffer-source-node-audio-worklet-processor', {
|
|
119
|
+
var timingObject = initialTimingObject !== null && initialTimingObject !== void 0 ? initialTimingObject : null;
|
|
120
|
+
var _ref3 = (_a = timingObject === null || timingObject === void 0 ? void 0 : timingObject.query()) !== null && _a !== void 0 ? _a : {},
|
|
121
|
+
_ref3$position = _ref3.position,
|
|
122
|
+
position = _ref3$position === void 0 ? 0 : _ref3$position,
|
|
123
|
+
_ref3$timestamp = _ref3.timestamp,
|
|
124
|
+
timestamp = _ref3$timestamp === void 0 ? 0 : _ref3$timestamp,
|
|
125
|
+
_ref3$velocity = _ref3.velocity,
|
|
126
|
+
velocity = _ref3$velocity === void 0 ? 0 : _ref3$velocity;
|
|
127
|
+
var fixedOptions = {
|
|
125
128
|
numberOfInputs: 1,
|
|
126
129
|
numberOfOutputs: 1,
|
|
127
130
|
outputChannelCount: [(_b = buffer === null || buffer === void 0 ? void 0 : buffer.numberOfChannels) !== null && _b !== void 0 ? _b : 1],
|
|
@@ -135,7 +138,8 @@
|
|
|
135
138
|
timestamp: convertToContextFrame(context, timestamp),
|
|
136
139
|
velocity: velocity
|
|
137
140
|
}
|
|
138
|
-
}
|
|
141
|
+
};
|
|
142
|
+
var audioWorkletNode = new audioWorkletNodeConstructor(context, 'timed-audio-buffer-source-node-audio-worklet-processor', _objectSpread(_objectSpread({}, options), fixedOptions));
|
|
139
143
|
var removeListener = null;
|
|
140
144
|
Object.defineProperties(audioWorkletNode, {
|
|
141
145
|
port: {
|
package/package.json
CHANGED
|
@@ -17,44 +17,37 @@
|
|
|
17
17
|
},
|
|
18
18
|
"description": "This module provides a loader for the TimedAudioBufferSourceNodeAudioWorkletProcessor and the corresponding TimedAudioBufferSourceNodeAudioWorkletNode.",
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@babel/core": "^7.28.
|
|
20
|
+
"@babel/core": "^7.28.5",
|
|
21
21
|
"@babel/plugin-external-helpers": "^7.27.1",
|
|
22
|
-
"@babel/plugin-transform-runtime": "^7.28.
|
|
23
|
-
"@babel/preset-env": "^7.28.
|
|
22
|
+
"@babel/plugin-transform-runtime": "^7.28.5",
|
|
23
|
+
"@babel/preset-env": "^7.28.5",
|
|
24
24
|
"@commitlint/cli": "^19.8.1",
|
|
25
25
|
"@commitlint/config-angular": "^19.8.1",
|
|
26
|
-
"@rollup/plugin-babel": "^6.0
|
|
27
|
-
"@rollup/plugin-replace": "^6.0.
|
|
26
|
+
"@rollup/plugin-babel": "^6.1.0",
|
|
27
|
+
"@rollup/plugin-replace": "^6.0.3",
|
|
28
|
+
"@vitest/browser-webdriverio": "^4.0.16",
|
|
28
29
|
"babel-loader": "^10.0.0",
|
|
29
|
-
"chai": "^
|
|
30
|
+
"chai": "^6.2.1",
|
|
30
31
|
"commitizen": "^4.3.1",
|
|
31
32
|
"cz-conventional-changelog": "^3.3.0",
|
|
32
33
|
"eslint": "^8.57.0",
|
|
33
|
-
"eslint-config-holy-grail": "^61.0.
|
|
34
|
+
"eslint-config-holy-grail": "^61.0.3",
|
|
34
35
|
"husky": "^9.1.7",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"lint-staged": "^16.2.3",
|
|
44
|
-
"memfs": "^4.49.0",
|
|
45
|
-
"mocha": "^11.7.4",
|
|
46
|
-
"prettier": "^3.6.2",
|
|
47
|
-
"rimraf": "^6.0.1",
|
|
48
|
-
"rollup": "^4.52.4",
|
|
49
|
-
"sinon": "^17.0.1",
|
|
50
|
-
"sinon-chai": "^3.7.0",
|
|
51
|
-
"terser-webpack-plugin": "^5.3.14",
|
|
36
|
+
"lint-staged": "^16.2.7",
|
|
37
|
+
"memfs": "^4.51.1",
|
|
38
|
+
"prettier": "^3.7.4",
|
|
39
|
+
"rimraf": "^6.1.2",
|
|
40
|
+
"rollup": "^4.53.5",
|
|
41
|
+
"sinon": "^21.0.0",
|
|
42
|
+
"sinon-chai": "^4.0.1",
|
|
43
|
+
"terser-webpack-plugin": "^5.3.16",
|
|
52
44
|
"ts-loader": "^9.5.4",
|
|
53
45
|
"tsconfig-holy-grail": "^15.0.2",
|
|
54
46
|
"tslint": "^6.1.3",
|
|
55
47
|
"tslint-config-holy-grail": "^56.0.6",
|
|
56
48
|
"typescript": "^5.9.3",
|
|
57
|
-
"
|
|
49
|
+
"vitest": "^4.0.16",
|
|
50
|
+
"webpack": "^5.104.1",
|
|
58
51
|
"webpack-cli": "^6.0.1"
|
|
59
52
|
},
|
|
60
53
|
"files": [
|
|
@@ -80,8 +73,8 @@
|
|
|
80
73
|
"prepare": "husky",
|
|
81
74
|
"prepublishOnly": "npm run build",
|
|
82
75
|
"test": "npm run lint && npm run build && npm run test:unit",
|
|
83
|
-
"test:unit": "if [ \"$TYPE\" = \"\" -o \"$TYPE\" = \"unit\" ]; then
|
|
76
|
+
"test:unit": "if [ \"$TYPE\" = \"\" -o \"$TYPE\" = \"unit\" ]; then npx vitest --config config/vitest/unit.ts; fi"
|
|
84
77
|
},
|
|
85
78
|
"types": "build/es2019/module.d.ts",
|
|
86
|
-
"version": "2.1.
|
|
79
|
+
"version": "2.1.32"
|
|
87
80
|
}
|
package/src/module.ts
CHANGED
|
@@ -13,7 +13,12 @@ import { createPerformance } from './factories/performance';
|
|
|
13
13
|
import { createScheduleAudioBufferSourceNode } from './factories/schedule-audio-buffer-source-node';
|
|
14
14
|
import { createSubscribeToTimingObject } from './factories/subscribe-to-timing-object';
|
|
15
15
|
import { ITimedAudioBufferSourceNodeAudioWorkletNode } from './interfaces';
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
TAnyAudioWorkletNodeOptions,
|
|
18
|
+
TAnyTimedAudioBufferSourceNodeAudioWorkletNodeOptions,
|
|
19
|
+
TFixedOptions,
|
|
20
|
+
TNativeTimedAudioBufferSourceNodeAudioWorkletNode
|
|
21
|
+
} from './types';
|
|
17
22
|
import { worklet } from './worklet/worklet';
|
|
18
23
|
|
|
19
24
|
/*
|
|
@@ -44,38 +49,40 @@ export function createTimedAudioBufferSourceNodeAudioWorkletNode<T extends TCont
|
|
|
44
49
|
createAudioBufferSourceNode: T extends TContext
|
|
45
50
|
? (context: TContext) => IAudioBufferSourceNode<TContext>
|
|
46
51
|
: (context: TNativeContext) => TNativeAudioBufferSourceNode,
|
|
47
|
-
options:
|
|
52
|
+
{ buffer, timingObject: initialTimingObject, ...options }: TAnyTimedAudioBufferSourceNodeAudioWorkletNodeOptions<T> = {}
|
|
48
53
|
): T extends TContext ? ITimedAudioBufferSourceNodeAudioWorkletNode<T> : TNativeTimedAudioBufferSourceNodeAudioWorkletNode {
|
|
49
54
|
type TAnyAudioWorkletNode = T extends TContext ? IAudioWorkletNode<T> : TNativeAudioWorkletNode;
|
|
50
55
|
type TAnyTimedAudioBufferSourceNodeAudioWorkletNode = T extends TContext
|
|
51
56
|
? ITimedAudioBufferSourceNodeAudioWorkletNode<T>
|
|
52
57
|
: TNativeTimedAudioBufferSourceNodeAudioWorkletNode;
|
|
53
58
|
|
|
54
|
-
const { buffer = null } = options;
|
|
55
|
-
|
|
56
59
|
if (buffer instanceof AudioBuffer && buffer.sampleRate !== context.sampleRate) {
|
|
57
60
|
throw new TypeError('The AudioBuffer must have the same sampleRate as the AudioContext.');
|
|
58
61
|
}
|
|
59
62
|
|
|
60
|
-
let
|
|
63
|
+
let timingObject = initialTimingObject ?? null;
|
|
61
64
|
|
|
62
65
|
const { position = 0, timestamp = 0, velocity = 0 } = timingObject?.query() ?? {};
|
|
66
|
+
const fixedOptions: Required<Pick<TAnyAudioWorkletNodeOptions<T>, TFixedOptions>> = {
|
|
67
|
+
numberOfInputs: 1,
|
|
68
|
+
numberOfOutputs: 1,
|
|
69
|
+
outputChannelCount: [buffer?.numberOfChannels ?? 1],
|
|
70
|
+
processorOptions: {
|
|
71
|
+
buffer:
|
|
72
|
+
buffer instanceof AudioBuffer
|
|
73
|
+
? Array.from({ length: buffer.numberOfChannels }, (_, channel) => buffer.getChannelData(channel))
|
|
74
|
+
: null,
|
|
75
|
+
position,
|
|
76
|
+
timestamp: convertToContextFrame(context, timestamp),
|
|
77
|
+
velocity
|
|
78
|
+
}
|
|
79
|
+
};
|
|
63
80
|
const audioWorkletNode: TAnyAudioWorkletNode = new (<any>audioWorkletNodeConstructor)(
|
|
64
81
|
context,
|
|
65
82
|
'timed-audio-buffer-source-node-audio-worklet-processor',
|
|
66
83
|
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
outputChannelCount: [buffer?.numberOfChannels ?? 1],
|
|
70
|
-
processorOptions: {
|
|
71
|
-
buffer:
|
|
72
|
-
buffer instanceof AudioBuffer
|
|
73
|
-
? Array.from({ length: buffer.numberOfChannels }, (_, channel) => buffer.getChannelData(channel))
|
|
74
|
-
: null,
|
|
75
|
-
position,
|
|
76
|
-
timestamp: convertToContextFrame(context, timestamp),
|
|
77
|
-
velocity
|
|
78
|
-
}
|
|
84
|
+
...options,
|
|
85
|
+
...fixedOptions
|
|
79
86
|
}
|
|
80
87
|
);
|
|
81
88
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IAudioWorkletNodeOptions, TAnyContext, TContext, TNativeAudioWorkletNodeOptions } from 'standardized-audio-context';
|
|
2
|
+
|
|
3
|
+
export type TAnyAudioWorkletNodeOptions<T extends TAnyContext> = T extends TContext
|
|
4
|
+
? IAudioWorkletNodeOptions
|
|
5
|
+
: TNativeAudioWorkletNodeOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type TFixedOptions = '
|
|
1
|
+
export type TFixedOptions = 'numberOfInputs' | 'numberOfOutputs' | 'outputChannelCount' | 'processorOptions';
|
package/src/types/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export * from './any-audio-worklet-node-options';
|
|
1
2
|
export * from './any-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
3
|
+
export * from './fixed-options';
|
|
2
4
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node';
|
|
3
5
|
export * from './native-timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
4
6
|
export * from './timed-audio-buffer-source-node-audio-worklet-node-options';
|
|
@@ -2,8 +2,8 @@ import { TNativeAudioBuffer, TNativeAudioWorkletNodeOptions } from 'standardized
|
|
|
2
2
|
import { ITimingObject } from 'timing-object';
|
|
3
3
|
import { TFixedOptions } from './fixed-options';
|
|
4
4
|
|
|
5
|
-
export type TNativeTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Omit<TNativeAudioWorkletNodeOptions, TFixedOptions
|
|
6
|
-
buffer
|
|
5
|
+
export type TNativeTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Partial<Omit<TNativeAudioWorkletNodeOptions, TFixedOptions>> & {
|
|
6
|
+
buffer?: TNativeAudioBuffer;
|
|
7
7
|
|
|
8
|
-
timingObject
|
|
8
|
+
timingObject?: ITimingObject;
|
|
9
9
|
};
|
|
@@ -2,8 +2,8 @@ import { IAudioBuffer, IAudioWorkletNodeOptions } from 'standardized-audio-conte
|
|
|
2
2
|
import { ITimingObject } from 'timing-object';
|
|
3
3
|
import { TFixedOptions } from './fixed-options';
|
|
4
4
|
|
|
5
|
-
export type TTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Omit<IAudioWorkletNodeOptions, TFixedOptions
|
|
6
|
-
buffer
|
|
5
|
+
export type TTimedAudioBufferSourceNodeAudioWorkletNodeOptions = Partial<Omit<IAudioWorkletNodeOptions, TFixedOptions>> & {
|
|
6
|
+
buffer?: IAudioBuffer;
|
|
7
7
|
|
|
8
|
-
timingObject
|
|
8
|
+
timingObject?: ITimingObject;
|
|
9
9
|
};
|