{"version":3,"file":"ng-web-apis-audio.mjs","sources":["../../../libs/audio/src/tokens/audio-context.ts","../../../libs/audio/src/tokens/constructor-support.ts","../../../libs/audio/src/constants/fallback.ts","../../../libs/audio/src/constants/polling-time.ts","../../../libs/audio/src/utils/process-audio-param.ts","../../../libs/audio/src/decorators/audio-param.ts","../../../libs/audio/src/utils/latency-hint-factory.ts","../../../libs/audio/src/directives/audio-context.ts","../../../libs/audio/src/directives/channel.ts","../../../libs/audio/src/tokens/audio-node.ts","../../../libs/audio/src/utils/connect.ts","../../../libs/audio/src/directives/destination.ts","../../../libs/audio/src/utils/fallback-audio-param.ts","../../../libs/audio/src/directives/listener.ts","../../../libs/audio/src/directives/offline-audio-context.ts","../../../libs/audio/src/directives/output.ts","../../../libs/audio/src/directives/stream-destination.ts","../../../libs/audio/src/utils/parse.ts","../../../libs/audio/src/nodes/analyser.ts","../../../libs/audio/src/nodes/biquad-filter.ts","../../../libs/audio/src/nodes/channel-merger.ts","../../../libs/audio/src/nodes/channel-splitter.ts","../../../libs/audio/src/services/audio-buffer.service.ts","../../../libs/audio/src/nodes/convolver.ts","../../../libs/audio/src/nodes/delay.ts","../../../libs/audio/src/nodes/dynamics-compressor.ts","../../../libs/audio/src/nodes/gain.ts","../../../libs/audio/src/tokens/feedback-coefficients.ts","../../../libs/audio/src/tokens/feedforward-coefficients.ts","../../../libs/audio/src/nodes/iir-filter.ts","../../../libs/audio/src/nodes/panner.ts","../../../libs/audio/src/nodes/script-processor.ts","../../../libs/audio/src/nodes/stereo-panner.ts","../../../libs/audio/src/nodes/wave-shaper.ts","../../../libs/audio/src/nodes/worklet.ts","../../../libs/audio/src/pipes/audio-param.pipe.ts","../../../libs/audio/src/pipes/periodic-wave.pipe.ts","../../../libs/audio/src/sources/buffer-source.ts","../../../libs/audio/src/sources/constant-source.ts","../../../libs/audio/src/sources/media-source.ts","../../../libs/audio/src/tokens/media-stream.ts","../../../libs/audio/src/sources/media-stream-source.ts","../../../libs/audio/src/sources/oscillator.ts","../../../libs/audio/src/module.ts","../../../libs/audio/src/tokens/audio-worklet-processors.ts","../../../libs/audio/src/tokens/audio-worklet-support.ts","../../../libs/audio/src/tokens/audio-worklet-processors-ready.ts","../../../libs/audio/src/tokens/support.ts","../../../libs/audio/src/ng-web-apis-audio.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const WA_AUDIO_CONTEXT = new InjectionToken<BaseAudioContext>(\n    '[WA_AUDIO_CONTEXT]',\n    {\n        providedIn: 'root',\n        factory: () => new AudioContext(),\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_AUDIO_CONTEXT}\n */\nexport const AUDIO_CONTEXT = WA_AUDIO_CONTEXT;\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {WA_AUDIO_CONTEXT} from './audio-context';\n\n/**\n * This is mostly for internal use only\n */\nexport const WA_CONSTRUCTOR_SUPPORT = new InjectionToken<boolean>(\n    '[WA_CONSTRUCTOR_SUPPORT]',\n    {\n        providedIn: 'root',\n        factory: () => {\n            try {\n                return !!new GainNode(inject(WA_AUDIO_CONTEXT));\n            } catch {\n                return false;\n            }\n        },\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_CONSTRUCTOR_SUPPORT}\n */\nexport const CONSTRUCTOR_SUPPORT = WA_CONSTRUCTOR_SUPPORT;\n","import type {Provider} from '@angular/core';\n\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\n\n/**\n * Just for unit tests\n */\nexport const providers: Provider[] = [\n    {\n        provide: CONSTRUCTOR_SUPPORT,\n        useValue: false,\n    },\n];\n","export const POLLING_TIME = 100;\n","import type {AudioParamAutomation} from '../types/audio-param-automation';\nimport type {AudioParamCurve} from '../types/audio-param-curve';\nimport type {AudioParamInput} from '../types/audio-param-input';\n\nexport function processAudioParam(\n    param: AudioParam,\n    value: AudioParamInput,\n    currentTime = 0,\n): void {\n    if (param.cancelAndHoldAtTime) {\n        param.cancelAndHoldAtTime(currentTime);\n    } else {\n        param.cancelScheduledValues(currentTime);\n        param.setValueAtTime(guard(param.value), currentTime);\n    }\n\n    if (typeof value === 'number') {\n        param.setValueAtTime(guard(value), currentTime);\n\n        return;\n    }\n\n    if (value instanceof Array) {\n        processSchedule(param, value, currentTime);\n\n        return;\n    }\n\n    if (!('mode' in value)) {\n        param.setValueCurveAtTime(value.value, currentTime, value.duration);\n\n        return;\n    }\n\n    param.setValueAtTime(guard(param.value), currentTime);\n    processAutomation(param, value, currentTime);\n}\n\nfunction processSchedule(\n    param: AudioParam,\n    value: Array<AudioParamAutomation | AudioParamCurve>,\n    currentTime: number,\n): void {\n    value.forEach((automation) => {\n        if ('mode' in automation) {\n            processAutomation(param, automation, currentTime);\n        } else {\n            param.setValueCurveAtTime(automation.value, currentTime, automation.duration);\n        }\n\n        currentTime += automation.duration;\n    });\n}\n\nfunction processAutomation(\n    param: AudioParam,\n    {value, mode = 'instant', duration}: AudioParamAutomation,\n    currentTime: number,\n): void {\n    switch (mode) {\n        case 'exponential':\n            if (value < 0 || value * param.value < 0) {\n                param.linearRampToValueAtTime(guard(value), currentTime + duration);\n            } else {\n                param.exponentialRampToValueAtTime(guard(value), currentTime + duration);\n            }\n\n            param.setValueAtTime(guard(value), currentTime + duration);\n            break;\n        case 'instant':\n            param.setValueAtTime(guard(value), currentTime);\n            param.setValueAtTime(guard(value), currentTime + duration);\n            break;\n        case 'linear':\n            param.linearRampToValueAtTime(guard(value), currentTime + duration);\n            break;\n    }\n}\n\nfunction guard(v: number): number {\n    return v || 0.00000001;\n}\n","import type {AudioNodeWithParams} from '../types/audio-node-with-params';\nimport type {\n    AudioParamDecorator,\n    AudioParamWorkletDecorator,\n} from '../types/audio-param-decorator';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {processAudioParam} from '../utils/process-audio-param';\n\nexport function audioParam(): AudioParamWorkletDecorator;\nexport function audioParam<K extends string>(param: K): AudioParamDecorator<K>;\nexport function audioParam<K extends string>(\n    param = '',\n): AudioParamDecorator<K> | AudioParamWorkletDecorator {\n    const decorator: AudioParamDecorator<K> = (target, propertyKey) => {\n        Object.defineProperty(target, propertyKey, {\n            configurable: true,\n            set(this: AudioNodeWithParams<K> | AudioWorkletNode, value: AudioParamInput) {\n                value = typeof value === 'string' ? Number.parseFloat(value) : value;\n\n                const audioParam =\n                    this instanceof AudioWorkletNode\n                        ? (this.parameters as Map<string, AudioParam | undefined>).get(\n                              propertyKey,\n                          )\n                        : this[param as K];\n\n                if (audioParam instanceof AudioParam) {\n                    processAudioParam(audioParam, value, this.context.currentTime);\n                } else {\n                    // Fallback for older browsers\n                    Object.defineProperty(target, propertyKey, {\n                        value,\n                        configurable: true,\n                    });\n                }\n            },\n        });\n    };\n\n    return decorator;\n}\n","export function latencyHintFactory(\n    latencyHint: AudioContextLatencyCategory | null,\n): AudioContextLatencyCategory | number | undefined {\n    return latencyHint === null\n        ? undefined\n        : Number.parseFloat(latencyHint) || latencyHint;\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, forwardRef} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {latencyHintFactory} from '../utils/latency-hint-factory';\n\n@Directive({\n    standalone: true,\n    selector: '[waAudioContext]',\n    providers: [\n        {\n            provide: AUDIO_CONTEXT,\n            useExisting: forwardRef(() => WebAudioContext),\n        },\n    ],\n})\nexport class WebAudioContext extends AudioContext implements OnDestroy {\n    constructor(\n        @Attribute('latencyHint') latencyHint: AudioContextLatencyCategory | null,\n        @Attribute('sampleRate') sampleRate: string | null,\n    ) {\n        super({\n            latencyHint: latencyHintFactory(latencyHint),\n            sampleRate: parseInt(sampleRate ?? '', 10) || undefined,\n        });\n    }\n\n    public ngOnDestroy(): void {\n        void this.close();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\n\n@Directive({\n    standalone: true,\n    selector: '[waChannel]',\n    exportAs: 'AudioNode',\n})\nexport class WebAudioChannel extends GainNode implements OnDestroy {\n    constructor() {\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n        } else {\n            const result = context.createGain();\n\n            Object.setPrototypeOf(result, WebAudioChannel.prototype);\n\n            return result as WebAudioChannel;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {ExistingProvider, Type} from '@angular/core';\nimport {InjectionToken} from '@angular/core';\n\nexport const WA_AUDIO_NODE = new InjectionToken<AudioNode | null>('[WA_AUDIO_NODE]', {\n    factory: () => null,\n});\n\nexport function asAudioNode(useExisting: Type<AudioNode>): ExistingProvider {\n    return {\n        provide: WA_AUDIO_NODE,\n        useExisting,\n    };\n}\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_AUDIO_NODE}\n */\nexport const AUDIO_NODE = WA_AUDIO_NODE;\n","export function connect(\n    source?: AudioNode | null,\n    destination?: AudioNode | AudioParam | null,\n): void {\n    if (source && destination) {\n        // @ts-ignore TS does not have a union override for connect method\n        source.connect(destination);\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Output} from '@angular/core';\nimport type {Observable} from 'rxjs';\nimport {\n    debounceTime,\n    distinctUntilChanged,\n    filter,\n    interval,\n    map,\n    skipWhile,\n    tap,\n} from 'rxjs';\n\nimport {POLLING_TIME} from '../constants/polling-time';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waAudioDestinationNode]',\n    exportAs: 'AudioNode',\n})\nexport class WebAudioDestination extends AnalyserNode implements OnDestroy {\n    @Output()\n    public quiet!: Observable<unknown>;\n\n    constructor() {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            WebAudioDestination.init(this, node);\n        } else {\n            const result = context.createAnalyser() as WebAudioDestination;\n\n            Object.setPrototypeOf(result, WebAudioDestination.prototype);\n            WebAudioDestination.init(result, node);\n\n            return result;\n        }\n    }\n\n    protected static init(that: WebAudioDestination, node: AudioNode | null): void {\n        connect(node, that);\n        that.fftSize = 256;\n        that.connect(that.context.destination);\n        that.quiet = interval(POLLING_TIME).pipe(\n            map(() => new Float32Array(that.fftSize)),\n            tap((array) => that.getFloatTimeDomainData(array)),\n            map((array) => that.isSilent(array)),\n            distinctUntilChanged(),\n            skipWhile((isSilent) => isSilent),\n            debounceTime(5000),\n            filter((isSilent) => isSilent),\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n\n    private isSilent(array: Float32Array): boolean {\n        return Math.abs(array.reduce((acc, cur) => acc + cur, 0)) < 0.001;\n    }\n}\n","import type {AudioParamInput} from '../types/audio-param-input';\n\nexport function fallbackAudioParam(value?: AudioParamInput): number {\n    if (!value) {\n        return 0;\n    }\n\n    if (typeof value === 'number') {\n        return value;\n    }\n\n    if (value instanceof Array) {\n        const last = value[value.length - 1]?.value;\n\n        return typeof last === 'number' ? last : (last?.[last.length - 1] ?? 0);\n    }\n\n    if (value.value instanceof Array) {\n        return value.value?.[value.value.length - 1] ?? 0;\n    }\n\n    return value.value;\n}\n","import type {OnChanges} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {fallbackAudioParam} from '../utils/fallback-audio-param';\n\n@Directive({\n    standalone: true,\n    selector: '[waAudioContext],[waOfflineAudioContext][length][sampleRate]',\n})\nexport class WebAudioListener extends GainNode implements OnChanges {\n    @Input('forwardX')\n    @audioParam('forwardX')\n    public forwardXParam?: AudioParamInput;\n\n    @Input('forwardY')\n    @audioParam('forwardY')\n    public forwardYParam?: AudioParamInput;\n\n    @Input('forwardZ')\n    @audioParam('forwardZ')\n    public forwardZParam?: AudioParamInput;\n\n    @Input('positionX')\n    @audioParam('positionX')\n    public positionXParam?: AudioParamInput;\n\n    @Input('positionY')\n    @audioParam('positionY')\n    public positionYParam?: AudioParamInput;\n\n    @Input('positionZ')\n    @audioParam('positionZ')\n    public positionZParam?: AudioParamInput;\n\n    @Input('upX')\n    @audioParam('upX')\n    public upXParam?: AudioParamInput;\n\n    @Input('upY')\n    @audioParam('upY')\n    public upYParam?: AudioParamInput;\n\n    @Input('upZ')\n    @audioParam('upZ')\n    public upZParam?: AudioParamInput;\n\n    constructor() {\n        const context = inject(AUDIO_CONTEXT, {self: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n        } else {\n            const result = context.createGain();\n\n            Object.setPrototypeOf(result, WebAudioListener.prototype);\n\n            return result as WebAudioListener;\n        }\n    }\n\n    public get forwardX(): AudioParam {\n        return this.context.listener.forwardX;\n    }\n\n    public get forwardY(): AudioParam {\n        return this.context.listener.forwardY;\n    }\n\n    public get forwardZ(): AudioParam {\n        return this.context.listener.forwardZ;\n    }\n\n    public get positionX(): AudioParam {\n        return this.context.listener.positionX;\n    }\n\n    public get positionY(): AudioParam {\n        return this.context.listener.positionY;\n    }\n\n    public get positionZ(): AudioParam {\n        return this.context.listener.positionZ;\n    }\n\n    public get upX(): AudioParam {\n        return this.context.listener.upX;\n    }\n\n    public get upY(): AudioParam {\n        return this.context.listener.upY;\n    }\n\n    public get upZ(): AudioParam {\n        return this.context.listener.upZ;\n    }\n\n    public ngOnChanges(): void {\n        if (this.context.listener.positionX instanceof AudioParam) {\n            return;\n        }\n\n        // Fallback for older browsers\n        this.context.listener.setOrientation(\n            fallbackAudioParam(this.forwardXParam),\n            fallbackAudioParam(this.forwardYParam),\n            fallbackAudioParam(this.forwardZParam),\n            fallbackAudioParam(this.upXParam),\n            fallbackAudioParam(this.upYParam),\n            fallbackAudioParam(this.upZParam),\n        );\n        this.context.listener.setPosition(\n            fallbackAudioParam(this.positionXParam),\n            fallbackAudioParam(this.positionYParam),\n            fallbackAudioParam(this.positionZParam),\n        );\n    }\n}\n","import {Attribute, Directive, EventEmitter, forwardRef, Output} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\n\n@Directive({\n    standalone: true,\n    selector: '[waOfflineAudioContext][length][sampleRate]',\n    providers: [\n        {\n            provide: AUDIO_CONTEXT,\n            useExisting: forwardRef(() => WebAudioOfflineContext),\n        },\n    ],\n})\nexport class WebAudioOfflineContext extends OfflineAudioContext {\n    @Output()\n    public readonly complete = new EventEmitter<AudioBuffer>();\n\n    // eslint-disable-next-line @typescript-eslint/max-params\n    constructor(\n        @Attribute('length') length: string,\n        @Attribute('sampleRate') sampleRate: string,\n        @Attribute('numberOfChannels') numberOfChannels: string | null,\n        @Attribute('autoplay') autoplay: string | null,\n    ) {\n        super(\n            parseInt(numberOfChannels ?? '', 10) || 1,\n            parseInt(length, 10),\n            parseInt(sampleRate, 10),\n        );\n\n        if (autoplay !== null) {\n            void this.startRendering();\n        }\n    }\n\n    public override readonly oncomplete = ({\n        renderedBuffer,\n    }: OfflineAudioCompletionEvent): void => this.complete.emit(renderedBuffer);\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waOutput]',\n})\nexport class WebAudioOutput extends GainNode implements OnDestroy {\n    constructor() {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            connect(node, this);\n        } else {\n            const result = context.createGain();\n\n            Object.setPrototypeOf(result, WebAudioOutput.prototype);\n            connect(node, result);\n\n            return result as WebAudioOutput;\n        }\n    }\n\n    protected static init(that: WebAudioOutput, node: AudioNode | null): void {\n        connect(node, that);\n    }\n\n    @Input()\n    public set waOutput(destination: AudioNode | AudioParam | undefined) {\n        this.disconnect();\n        connect(this, destination);\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waMediaStreamAudioDestinationNode]',\n    exportAs: 'AudioNode',\n})\nexport class WebAudioMediaStreamDestination extends MediaStreamAudioDestinationNode {\n    constructor() {\n        const context = inject<AudioContext>(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            connect(node, this);\n        } else {\n            const result = context.createMediaStreamDestination();\n\n            Object.setPrototypeOf(result, WebAudioMediaStreamDestination.prototype);\n            connect(node, result);\n\n            return result as WebAudioMediaStreamDestination;\n        }\n    }\n}\n","import type {AudioParamInput} from '../types/audio-param-input';\n\nexport function parse(value: AudioParamInput | string | null, fallback: number): number {\n    const parsed = parseFloat((value as string) || '');\n\n    return Number.isNaN(parsed) ? fallback : parsed;\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Output} from '@angular/core';\nimport type {Observable} from 'rxjs';\nimport {animationFrameScheduler, interval, map, share} from 'rxjs';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waAnalyserNode]',\n    inputs: [\n        'fftSize',\n        'minDecibels',\n        'maxDecibels',\n        'smoothingTimeConstant',\n        'channelCount',\n        'channelCountMode',\n        'channelInterpretation',\n    ],\n    providers: [asAudioNode(WebAudioAnalyser)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioAnalyser extends AnalyserNode implements OnDestroy {\n    // '!' because it is actually set in constructor\n    @Output()\n    public frequencyByte$!: Observable<Uint8Array>;\n\n    @Output()\n    public frequencyFloat$!: Observable<Float32Array>;\n\n    @Output()\n    public timeByte$!: Observable<Uint8Array>;\n\n    @Output()\n    public timeFloat$!: Observable<Float32Array>;\n\n    // eslint-disable-next-line @typescript-eslint/max-params\n    constructor(\n        @Attribute('fftSize') fftSizeArg: string | null,\n        @Attribute('maxDecibels') maxDecibelsArg: string | null,\n        @Attribute('minDecibels') minDecibelsArg: string | null,\n        @Attribute('smoothingTimeConstant') smoothingTimeConstantArg: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const fftSize = parse(fftSizeArg, 2048);\n        const maxDecibels = parse(maxDecibelsArg, -30);\n        const minDecibels = parse(minDecibelsArg, -100);\n        const smoothingTimeConstant = parse(smoothingTimeConstantArg, 0.8);\n\n        if (modern) {\n            super(context, {fftSize, maxDecibels, minDecibels, smoothingTimeConstant});\n            WebAudioAnalyser.init(this, node);\n        } else {\n            const result = context.createAnalyser() as WebAudioAnalyser;\n\n            Object.setPrototypeOf(result, WebAudioAnalyser.prototype);\n            WebAudioAnalyser.init(result, node);\n\n            result.fftSize = fftSize;\n            result.maxDecibels = maxDecibels;\n            result.minDecibels = minDecibels;\n            result.smoothingTimeConstant = smoothingTimeConstant;\n\n            return result;\n        }\n    }\n\n    protected static init(that: WebAudioAnalyser, node: AudioNode | null): void {\n        connect(node, that);\n\n        let freqByte = new Uint8Array(that.frequencyBinCount);\n        let freqFloat = new Float32Array(that.frequencyBinCount);\n        let timeByte = new Uint8Array(that.fftSize);\n        let timeFloat = new Float32Array(that.fftSize);\n\n        that.frequencyByte$ = interval(0, animationFrameScheduler).pipe(\n            map(() => {\n                if (freqByte.length !== that.frequencyBinCount) {\n                    freqByte = new Uint8Array(that.frequencyBinCount);\n                }\n\n                that.getByteFrequencyData(freqByte);\n\n                return freqByte;\n            }),\n            share(),\n        );\n\n        that.frequencyFloat$ = interval(0, animationFrameScheduler).pipe(\n            map(() => {\n                if (freqFloat.length !== that.frequencyBinCount) {\n                    freqFloat = new Float32Array(that.frequencyBinCount);\n                }\n\n                that.getFloatFrequencyData(freqFloat);\n\n                return freqFloat;\n            }),\n            share(),\n        );\n\n        that.timeByte$ = interval(0, animationFrameScheduler).pipe(\n            map(() => {\n                if (timeByte.length !== that.fftSize) {\n                    timeByte = new Uint8Array(that.frequencyBinCount);\n                }\n\n                that.getByteTimeDomainData(timeByte);\n\n                return timeByte;\n            }),\n            share(),\n        );\n\n        that.timeFloat$ = interval(0, animationFrameScheduler).pipe(\n            map(() => {\n                if (timeFloat.length !== that.fftSize) {\n                    timeFloat = new Float32Array(that.frequencyBinCount);\n                }\n\n                that.getFloatTimeDomainData(timeFloat);\n\n                return timeFloat;\n            }),\n            share(),\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waBiquadFilterNode]',\n    inputs: ['type', 'channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioBiquadFilter)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioBiquadFilter extends BiquadFilterNode implements OnDestroy {\n    @Input('detune')\n    @audioParam('detune')\n    public detuneParam?: AudioParamInput;\n\n    @Input('frequency')\n    @audioParam('frequency')\n    public frequencyParam?: AudioParamInput;\n\n    @Input('gain')\n    @audioParam('gain')\n    public gainParam?: AudioParamInput;\n\n    @Input('Q')\n    @audioParam('Q')\n    public qParam?: AudioParamInput;\n\n    // eslint-disable-next-line @typescript-eslint/max-params\n    constructor(\n        @Attribute('detune') detuneArg: string | null,\n        @Attribute('frequency') frequencyArg: string | null,\n        @Attribute('gain') gainArg: string | null,\n        @Attribute('Q') QArg: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const detune = parse(detuneArg, 0);\n        const frequency = parse(frequencyArg, 350);\n        const gain = parse(gainArg, 0);\n        const Q = parse(QArg, 1);\n\n        if (modern) {\n            super(context, {detune, frequency, gain, Q});\n            connect(node, this);\n        } else {\n            const result = context.createBiquadFilter() as WebAudioBiquadFilter;\n\n            Object.setPrototypeOf(result, WebAudioBiquadFilter.prototype);\n\n            result.detune.value = detune;\n            result.frequency.value = frequency;\n            result.gain.value = gain;\n            result.Q.value = Q;\n\n            connect(node, result);\n\n            return result;\n        }\n    }\n\n    protected static init(that: WebAudioBiquadFilter, node: AudioNode | null): void {\n        connect(node, that);\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy, QueryList} from '@angular/core';\nimport {Attribute, ContentChildren, Directive, inject} from '@angular/core';\n\nimport {WebAudioChannel} from '../directives/channel';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\n\n@Directive({\n    standalone: true,\n    selector: '[waChannelMergerNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioChannelMerger)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioChannelMerger extends ChannelMergerNode implements OnDestroy {\n    constructor(@Attribute('numberOfInputs') inputs: string | null) {\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const numberOfInputs = parseInt(inputs ?? '', 10) || 6;\n\n        if (modern) {\n            super(context, {numberOfInputs});\n        } else {\n            const result = context.createChannelMerger(numberOfInputs);\n\n            Object.setPrototypeOf(result, WebAudioChannelMerger.prototype);\n\n            return result as WebAudioChannelMerger;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n\n    @ContentChildren(WebAudioChannel, {descendants: false})\n    protected set channels(channels: QueryList<AudioNode>) {\n        channels.forEach((node, index) => {\n            node.connect(this, 0, index);\n        });\n    }\n}\n","import type {OnDestroy, QueryList} from '@angular/core';\nimport {Attribute, ContentChildren, Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waChannelSplitterNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [\n        {\n            provide: AUDIO_NODE,\n            useValue: null,\n        },\n    ],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioChannelSplitter extends ChannelSplitterNode implements OnDestroy {\n    constructor(@Attribute('numberOfOutputs') outputs: string | null) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const numberOfOutputs = parseInt(outputs ?? '', 10) || 6;\n\n        if (modern) {\n            super(context, {numberOfOutputs});\n            connect(node, this);\n        } else {\n            const result = context.createChannelSplitter(numberOfOutputs);\n\n            Object.setPrototypeOf(result, WebAudioChannelSplitter.prototype);\n            connect(node, result);\n\n            return result as WebAudioChannelSplitter;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n\n    @ContentChildren(AUDIO_NODE, {descendants: false})\n    protected set channels(channels: QueryList<AudioNode | null>) {\n        this.disconnect();\n        channels\n            .filter((node) => !!node)\n            .forEach((node, index) => {\n                this.connect(node!, index);\n            });\n    }\n}\n","import {inject, Injectable} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class AudioBufferService {\n    private readonly context = inject(AUDIO_CONTEXT);\n    private readonly cache = new Map<string, AudioBuffer>();\n\n    public async fetch(url: string): Promise<AudioBuffer> {\n        return new Promise<AudioBuffer>((resolve, reject) => {\n            if (this.cache.has(url)) {\n                resolve(this.cache.get(url) as AudioBuffer);\n\n                return;\n            }\n\n            const request = new XMLHttpRequest();\n\n            request.open('GET', url, true);\n            request.responseType = 'arraybuffer';\n            request.onerror = reject;\n            request.onabort = reject;\n\n            request.onload = () => {\n                void this.context.decodeAudioData(\n                    request.response,\n                    (buffer) => {\n                        this.cache.set(url, buffer);\n                        resolve(buffer);\n                    },\n                    reject,\n                );\n            };\n\n            request.send();\n        });\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\nimport {of, Subject, switchMap} from 'rxjs';\n\nimport {AudioBufferService} from '../services/audio-buffer.service';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waConvolverNode]',\n    inputs: ['normalize', 'channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioConvolver)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioConvolver extends ConvolverNode implements OnDestroy {\n    protected buffer$!: Subject<AudioBuffer | string | null>;\n\n    constructor() {\n        const audioBufferService = inject(AudioBufferService);\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            WebAudioConvolver.init(this, node, audioBufferService);\n        } else {\n            const result = context.createConvolver() as WebAudioConvolver;\n\n            Object.setPrototypeOf(result, WebAudioConvolver.prototype);\n            WebAudioConvolver.init(result, node, audioBufferService);\n\n            return result;\n        }\n    }\n\n    protected static init(\n        that: WebAudioConvolver,\n        node: AudioNode | null,\n        audioBufferService: AudioBufferService,\n    ): void {\n        connect(node, that);\n        that.buffer$ = new Subject<AudioBuffer | string | null>();\n        that.buffer$\n            .pipe(\n                // eslint-disable-next-line @typescript-eslint/promise-function-async\n                switchMap((source) =>\n                    typeof source === 'string'\n                        ? audioBufferService.fetch(source)\n                        : of(source),\n                ),\n            )\n            .subscribe((buffer) => {\n                that.buffer = buffer;\n            });\n    }\n\n    @Input('buffer')\n    public set bufferSetter(source: AudioBuffer | string | null) {\n        this.buffer$.next(source);\n    }\n\n    public ngOnDestroy(): void {\n        this.buffer$.complete();\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waDelayNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioDelay)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioDelay extends DelayNode implements OnDestroy {\n    @Input('delayTime')\n    @audioParam('delayTime')\n    public delayTimeParam?: AudioParamInput;\n\n    constructor(\n        @Attribute('delayTime') delayTimeArg: string | null,\n        @Attribute('maxDelayTime') maxDelayTimeArg: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const delayTime = parse(delayTimeArg, 0);\n        const maxDelayTime = parse(maxDelayTimeArg, 1);\n\n        if (modern) {\n            super(context, {delayTime, maxDelayTime});\n            connect(node, this);\n        } else {\n            const result = context.createDelay(maxDelayTime) as WebAudioDelay;\n\n            Object.setPrototypeOf(result, WebAudioDelay.prototype);\n            connect(node, result);\n            result.delayTime.value = delayTime;\n\n            return result;\n        }\n    }\n\n    protected static init(that: WebAudioDelay, node: AudioNode | null): void {\n        connect(node, that);\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waDynamicsCompressorNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioDynamicsCompressor)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioDynamicsCompressor\n    extends DynamicsCompressorNode\n    implements OnDestroy\n{\n    @Input('attack')\n    @audioParam('attack')\n    public attackParam?: AudioParamInput;\n\n    @Input('knee')\n    @audioParam('knee')\n    public kneeParam?: AudioParamInput;\n\n    @Input('ratio')\n    @audioParam('ratio')\n    public ratioParam?: AudioParamInput;\n\n    @Input('release')\n    @audioParam('release')\n    public releaseParam?: AudioParamInput;\n\n    @Input('threshold')\n    @audioParam('threshold')\n    public thresholdParam?: AudioParamInput;\n\n    // eslint-disable-next-line @typescript-eslint/max-params\n    constructor(\n        @Attribute('attack') attackArg: string | null,\n        @Attribute('knee') kneeArg: string | null,\n        @Attribute('ratio') ratioArg: string | null,\n        @Attribute('release') releaseArg: string | null,\n        @Attribute('threshold') thresholdArg: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const attack = parse(attackArg, 0.003);\n        const knee = parse(kneeArg, 30);\n        const ratio = parse(ratioArg, 12);\n        const release = parse(releaseArg, 0.25);\n        const threshold = parse(thresholdArg, -24);\n\n        if (modern) {\n            super(context, {attack, knee, ratio, release, threshold});\n            connect(node, this);\n        } else {\n            const result =\n                context.createDynamicsCompressor() as WebAudioDynamicsCompressor;\n\n            Object.setPrototypeOf(result, WebAudioDynamicsCompressor.prototype);\n            connect(node, result);\n            result.attack.value = attack;\n            result.knee.value = knee;\n            result.ratio.value = ratio;\n            result.release.value = release;\n            result.threshold.value = threshold;\n\n            return result;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waGainNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioGain)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioGain extends GainNode implements OnDestroy {\n    @Input('gain')\n    @audioParam('gain')\n    public gainParam?: AudioParamInput | string;\n\n    constructor(@Attribute('gain') gainArg: AudioParamInput | string | null) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const gain = parse(gainArg, 1);\n\n        if (modern) {\n            super(context, {gain});\n            connect(node, this);\n        } else {\n            const result = context.createGain() as WebAudioGain;\n\n            Object.setPrototypeOf(result, WebAudioGain.prototype);\n            connect(node, result);\n            result.gain.value = gain;\n\n            return result;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_FEEDBACK_COEFFICIENTS = new InjectionToken<number[]>(\n    '[WA_FEEDBACK_COEFFICIENTS]',\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_FEEDBACK_COEFFICIENTS}\n */\nexport const FEEDBACK_COEFFICIENTS = WA_FEEDBACK_COEFFICIENTS;\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_FEEDFORWARD_COEFFICIENTS = new InjectionToken<number[]>(\n    '[WA_FEEDFORWARD_COEFFICIENTS]',\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_FEEDFORWARD_COEFFICIENTS}\n */\nexport const FEEDFORWARD_COEFFICIENTS = WA_FEEDFORWARD_COEFFICIENTS;\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {FEEDBACK_COEFFICIENTS} from '../tokens/feedback-coefficients';\nimport {FEEDFORWARD_COEFFICIENTS} from '../tokens/feedforward-coefficients';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waIIRFilterNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioIIRFilter)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioIIRFilter extends IIRFilterNode implements OnDestroy {\n    constructor() {\n        const feedback = inject(FEEDBACK_COEFFICIENTS);\n        const feedforward = inject(FEEDFORWARD_COEFFICIENTS);\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n\n        if (modern) {\n            super(context, {feedback, feedforward});\n            connect(node, this);\n        } else {\n            const result = context.createIIRFilter(\n                feedforward,\n                feedback,\n            ) as WebAudioIIRFilter;\n\n            Object.setPrototypeOf(result, WebAudioIIRFilter.prototype);\n            connect(node, result);\n\n            return result;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnChanges, OnDestroy} from '@angular/core';\nimport {Directive, inject, Input} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {fallbackAudioParam} from '../utils/fallback-audio-param';\n\n@Directive({\n    standalone: true,\n    selector: '[waPannerNode]',\n    inputs: [\n        'coneInnerAngle',\n        'coneOuterAngle',\n        'coneOuterGain',\n        'distanceModel',\n        'maxDistance',\n        'panningModel',\n        'refDistance',\n        'rolloffFactor',\n        'channelCount',\n        'channelCountMode',\n        'channelInterpretation',\n    ],\n    providers: [asAudioNode(WebAudioPanner)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioPanner extends PannerNode implements OnDestroy, OnChanges {\n    @Input()\n    @audioParam('orientationX')\n    public orientationXParam?: AudioParamInput;\n\n    @Input()\n    @audioParam('orientationY')\n    public orientationYParam?: AudioParamInput;\n\n    @Input()\n    @audioParam('orientationZ')\n    public orientationZParam?: AudioParamInput;\n\n    @Input()\n    @audioParam('positionX')\n    public positionXParam?: AudioParamInput;\n\n    @Input()\n    @audioParam('positionY')\n    public positionYParam?: AudioParamInput;\n\n    @Input()\n    @audioParam('positionZ')\n    public positionZParam?: AudioParamInput;\n\n    constructor() {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            connect(node, this);\n        } else {\n            const result = context.createPanner() as WebAudioPanner;\n\n            Object.setPrototypeOf(result, WebAudioPanner.prototype);\n            connect(node, result);\n\n            return result;\n        }\n    }\n\n    public ngOnChanges(): void {\n        if (this.positionX instanceof AudioParam) {\n            return;\n        }\n\n        // Fallback for older browsers\n        this.setOrientation(\n            fallbackAudioParam(this.orientationXParam),\n            fallbackAudioParam(this.orientationYParam),\n            fallbackAudioParam(this.orientationZParam),\n        );\n        this.setPosition(\n            fallbackAudioParam(this.positionXParam),\n            fallbackAudioParam(this.positionYParam),\n            fallbackAudioParam(this.positionZParam),\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, EventEmitter, inject, Output} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waScriptProcessorNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioScriptProcessor)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioScriptProcessor extends ScriptProcessorNode implements OnDestroy {\n    @Output()\n    public audioprocess?: EventEmitter<AudioProcessingEvent>;\n\n    constructor(\n        @Attribute('bufferSize') bufferSize: string | null,\n        @Attribute('numberOfInputChannels') numberOfInputChannels: string | null,\n        @Attribute('numberOfOutputChannels') numberOfOutputChannels: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n\n        try {\n            const result = context.createScriptProcessor(\n                parseInt(bufferSize ?? '', 10) || 0,\n                parseInt(numberOfInputChannels ?? '', 10) || 2,\n                parseInt(numberOfOutputChannels ?? '', 10) || 2,\n            ) as WebAudioScriptProcessor;\n\n            Object.setPrototypeOf(result, WebAudioScriptProcessor.prototype);\n            connect(node, result);\n\n            const audioprocess = new EventEmitter<AudioProcessingEvent>();\n\n            result.audioprocess = audioprocess;\n            result.onaudioprocess = (e) => audioprocess.emit(e);\n\n            return result;\n        } catch {}\n\n        super();\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, inject, Input} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {fallbackAudioParam} from '../utils/fallback-audio-param';\nimport {parse} from '../utils/parse';\nimport {processAudioParam} from '../utils/process-audio-param';\n\n@Directive({\n    standalone: true,\n    selector: '[waStereoPannerNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioStereoPanner)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioStereoPanner extends StereoPannerNode implements OnDestroy {\n    constructor(@Attribute('pan') panArg: string | null) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const pan = parse(panArg, 0);\n\n        try {\n            // eslint-disable-next-line\n            new StereoPannerNode(context);\n        } catch {\n            const result = context.createPanner() as unknown as WebAudioStereoPanner;\n\n            Object.setPrototypeOf(result, WebAudioStereoPanner.prototype);\n            result.fallbackToPannerNode(fallbackAudioParam(pan));\n            connect(node, result);\n\n            return result;\n        }\n\n        super(context, {pan});\n        connect(node, this);\n    }\n\n    @Input('pan')\n    public set panParam(pan: AudioParamInput) {\n        if ('setPosition' in this) {\n            /** fallback for browsers not supporting {@link StereoPannerNode} */\n            // @ts-ignore\n            this.fallbackToPannerNode(fallbackAudioParam(pan));\n        } else {\n            processAudioParam(this.pan, pan, this.context.currentTime);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n\n    private fallbackToPannerNode(pan: number): void {\n        const xDeg = pan * 100;\n        const zDeg = xDeg > 0 ? 270 - xDeg : xDeg + 90;\n        const x = Math.sin(xDeg * (Math.PI / 180));\n        const z = Math.sin(zDeg * (Math.PI / 180));\n\n        // @ts-ignore\n        this.setPosition(x, 0, z);\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waWaveShaperNode]',\n    inputs: [\n        'oversample',\n        'curve',\n        'channelCount',\n        'channelCountMode',\n        'channelInterpretation',\n    ],\n    providers: [asAudioNode(WebAudioWaveShaper)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioWaveShaper extends WaveShaperNode implements OnDestroy {\n    constructor() {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context);\n            connect(node, this);\n        } else {\n            const result = context.createWaveShaper() as WebAudioWaveShaper;\n\n            Object.setPrototypeOf(result, WebAudioWaveShaper.prototype);\n            connect(node, result);\n\n            return result;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, EventEmitter, inject, Output} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode, AUDIO_NODE} from '../tokens/audio-node';\nimport {connect} from '../utils/connect';\n\n@Directive({\n    standalone: true,\n    selector: '[waAudioWorkletNode][name]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioWorklet)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioWorklet extends AudioWorkletNode implements OnDestroy {\n    @Output()\n    public processorerror = new EventEmitter<void>();\n\n    constructor(@Attribute('name') name: string) {\n        const context = inject(AUDIO_CONTEXT);\n        const node = inject(AUDIO_NODE, {skipSelf: true});\n\n        super(context, name);\n\n        connect(node, this);\n    }\n\n    public override readonly onprocessorerror = (): void => this.processorerror.emit();\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {PipeTransform} from '@angular/core';\nimport {Pipe} from '@angular/core';\n\nimport type {AudioParamAutomation} from '../types/audio-param-automation';\nimport type {AudioParamAutomationMode} from '../types/audio-param-automation-mode';\nimport type {AudioParamCurve} from '../types/audio-param-curve';\n\n@Pipe({\n    standalone: true,\n    name: 'waAudioParam',\n})\nexport class WebAudioParamPipe implements PipeTransform {\n    /**\n     * Creates {@link AudioParamAutomation} to use with {@link AudioParam} inputs\n     *\n     * @param value target value\n     * @param duration duration of the automation\n     * @param mode either instant for given duration or linear/exponential ramp\n     */\n    public transform(\n        value: number[] | number,\n        duration: number,\n        mode: AudioParamAutomationMode = 'exponential',\n    ): AudioParamAutomation | AudioParamCurve {\n        return value instanceof Array\n            ? {\n                  value,\n                  duration,\n              }\n            : {\n                  value,\n                  duration,\n                  mode,\n              };\n    }\n}\n","import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\n\n@Pipe({\n    standalone: true,\n    name: 'waPeriodicWave',\n})\nexport class WebAudioPeriodicWavePipe implements PipeTransform {\n    private readonly context = inject(AUDIO_CONTEXT);\n\n    /**\n     * Creates {@link PeriodicWave} to use with {@link OscillatorNode}\n     *\n     * @param real cosine terms (traditionally the A terms)\n     * @param imag sine terms (traditionally the B terms)\n     * @param disableNormalization see {@lin PeriodicWaveConstraints}\n     */\n    public transform(\n        real: number[],\n        imag?: number[],\n        disableNormalization?: boolean,\n    ): PeriodicWave {\n        return this.context.createPeriodicWave(\n            new Float32Array(real),\n            imag ? new Float32Array(imag) : new Float32Array(real.length),\n            {\n                disableNormalization: !!disableNormalization,\n            },\n        );\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, EventEmitter, inject, Input, Output} from '@angular/core';\nimport {of, Subject, switchMap} from 'rxjs';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AudioBufferService} from '../services/audio-buffer.service';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waAudioBufferSourceNode]',\n    inputs: [\n        'loop',\n        'loopStart',\n        'loopEnd',\n        'channelCount',\n        'channelCountMode',\n        'channelInterpretation',\n    ],\n    providers: [asAudioNode(WebAudioBufferSource)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioBufferSource extends AudioBufferSourceNode implements OnDestroy {\n    protected buffer$!: Subject<AudioBuffer | string | null>;\n\n    @Input('detune')\n    @audioParam('detune')\n    public detuneParam?: AudioParamInput;\n\n    @Input('playbackRate')\n    @audioParam('playbackRate')\n    public playbackRateParam?: AudioParamInput;\n\n    @Output()\n    public ended?: EventEmitter<void>;\n\n    constructor(\n        @Attribute('autoplay') autoplay: string | null,\n        @Attribute('detune') detuneArg: string | null,\n        @Attribute('playbackRate') playbackRateArg: string | null,\n    ) {\n        const audioBufferService = inject(AudioBufferService);\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const detune = parse(detuneArg, 0);\n        const playbackRate = parse(playbackRateArg, 1);\n\n        if (modern) {\n            super(context, {detune, playbackRate});\n            WebAudioBufferSource.init(this, null, autoplay, audioBufferService);\n        } else {\n            const result = context.createBufferSource() as WebAudioBufferSource;\n\n            Object.setPrototypeOf(\n                WebAudioBufferSource.prototype,\n                Object.getPrototypeOf(result),\n            );\n            Object.setPrototypeOf(result, WebAudioBufferSource.prototype);\n\n            result.playbackRate.value = playbackRate;\n            WebAudioBufferSource.init(result, null, autoplay, audioBufferService);\n\n            return result;\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/max-params\n    protected static init(\n        that: WebAudioBufferSource,\n        _node: AudioNode | null,\n        autoplay: string | null,\n        audioBufferService: AudioBufferService,\n    ): void {\n        if (autoplay !== null) {\n            that.start();\n        }\n\n        const ended = new EventEmitter<void>();\n\n        that.ended = ended;\n        that.onended = () => ended.emit();\n        that.buffer$ = new Subject<AudioBuffer | string | null>();\n        that.buffer$\n            .pipe(\n                // eslint-disable-next-line @typescript-eslint/promise-function-async\n                switchMap((source) =>\n                    typeof source === 'string'\n                        ? audioBufferService.fetch(source)\n                        : of(source),\n                ),\n            )\n            .subscribe((buffer) => {\n                that.buffer = buffer;\n            });\n    }\n\n    @Input('buffer')\n    public set bufferSetter(source: AudioBuffer | string | null) {\n        this.buffer$.next(source);\n    }\n\n    public ngOnDestroy(): void {\n        this.buffer$.complete();\n\n        try {\n            this.stop();\n        } catch {\n            // noop\n        }\n\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, EventEmitter, inject, Input, Output} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waConstantSourceNode]',\n    inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioConstantSource)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioConstantSource extends ConstantSourceNode implements OnDestroy {\n    @Input('offset')\n    @audioParam('offset')\n    public offsetParam?: AudioParamInput;\n\n    @Output()\n    public ended = new EventEmitter<void>();\n\n    constructor(\n        @Attribute('autoplay') autoplay: string | null,\n        @Attribute('offset') offset: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n\n        super(context, {\n            offset: parse(offset, 0),\n        });\n\n        if (autoplay !== null) {\n            this.start();\n        }\n    }\n\n    public override readonly onended = (): void => this.ended.emit();\n\n    public ngOnDestroy(): void {\n        try {\n            this.stop();\n        } catch {\n            // noop\n        }\n\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, ElementRef, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\n\n@Directive({\n    standalone: true,\n    selector:\n        'audio[waMediaElementAudioSourceNode], video[waMediaElementAudioSourceNode]',\n    providers: [asAudioNode(WebAudioMediaSource)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioMediaSource\n    extends MediaElementAudioSourceNode\n    implements OnDestroy\n{\n    constructor() {\n        const context = inject<AudioContext>(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const nativeElement: HTMLMediaElement = inject(ElementRef).nativeElement;\n\n        if (modern) {\n            super(context, {mediaElement: nativeElement});\n        } else {\n            const result = context.createMediaElementSource(nativeElement);\n\n            Object.setPrototypeOf(result, WebAudioMediaSource.prototype);\n\n            return result as WebAudioMediaSource;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_MEDIA_STREAM = new InjectionToken<MediaStream>('[WA_MEDIA_STREAM]');\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_MEDIA_STREAM}\n */\nexport const MEDIA_STREAM = WA_MEDIA_STREAM;\n","import type {OnDestroy} from '@angular/core';\nimport {Directive, inject} from '@angular/core';\n\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport {MEDIA_STREAM} from '../tokens/media-stream';\n\n@Directive({\n    standalone: true,\n    selector: '[waMediaStreamAudioSourceNode]',\n    providers: [asAudioNode(WebAudioMediaStreamSource)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioMediaStreamSource\n    extends MediaStreamAudioSourceNode\n    implements OnDestroy\n{\n    constructor() {\n        const mediaStream = inject(MEDIA_STREAM);\n        const context = inject<AudioContext>(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n\n        if (modern) {\n            super(context, {mediaStream});\n        } else {\n            const result = context.createMediaStreamSource(mediaStream);\n\n            Object.setPrototypeOf(result, WebAudioMediaStreamSource.prototype);\n\n            return result as WebAudioMediaStreamSource;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.disconnect();\n    }\n}\n","import type {OnDestroy} from '@angular/core';\nimport {Attribute, Directive, EventEmitter, inject, Input, Output} from '@angular/core';\n\nimport {audioParam} from '../decorators/audio-param';\nimport {AUDIO_CONTEXT} from '../tokens/audio-context';\nimport {asAudioNode} from '../tokens/audio-node';\nimport {CONSTRUCTOR_SUPPORT} from '../tokens/constructor-support';\nimport type {AudioParamInput} from '../types/audio-param-input';\nimport {connect} from '../utils/connect';\nimport {parse} from '../utils/parse';\n\n@Directive({\n    standalone: true,\n    selector: '[waOscillatorNode]',\n    inputs: ['type', 'channelCount', 'channelCountMode', 'channelInterpretation'],\n    providers: [asAudioNode(WebAudioOscillator)],\n    exportAs: 'AudioNode',\n})\nexport class WebAudioOscillator extends OscillatorNode implements OnDestroy {\n    @Input('detune')\n    @audioParam('detune')\n    public detuneParam?: AudioParamInput | string;\n\n    @Input('frequency')\n    @audioParam('frequency')\n    public frequencyParam?: AudioParamInput | string;\n\n    @Output()\n    public ended?: EventEmitter<void>;\n\n    constructor(\n        @Attribute('autoplay') autoplay: string | null,\n        @Attribute('detune') detuneArg: string | null,\n        @Attribute('frequency') frequencyArg: string | null,\n    ) {\n        const context = inject(AUDIO_CONTEXT);\n        const modern = inject(CONSTRUCTOR_SUPPORT);\n        const detune = parse(detuneArg, 0);\n        const frequency = parse(frequencyArg, 440);\n\n        if (modern) {\n            super(context, {detune, frequency});\n            WebAudioOscillator.init(this, null, autoplay);\n        } else {\n            const result = context.createOscillator() as WebAudioOscillator;\n\n            Object.setPrototypeOf(\n                WebAudioOscillator.prototype,\n                Object.getPrototypeOf(result),\n            );\n            Object.setPrototypeOf(result, WebAudioOscillator.prototype);\n\n            result.detune.value = detune;\n            result.frequency.value = frequency;\n            WebAudioOscillator.init(result, null, autoplay);\n\n            return result;\n        }\n    }\n\n    protected static init(\n        that: WebAudioOscillator,\n        node: AudioNode | null,\n        autoplay: string | null,\n    ): void {\n        connect(node, that);\n\n        if (autoplay !== null) {\n            that.start();\n        }\n\n        const ended = new EventEmitter<void>();\n\n        that.ended = ended;\n        that.onended = () => ended.emit();\n    }\n\n    @Input()\n    public set periodicWave(periodicWave: PeriodicWave) {\n        this.setPeriodicWave(periodicWave);\n    }\n\n    public ngOnDestroy(): void {\n        try {\n            this.stop();\n        } catch {\n            // noop\n        }\n\n        this.disconnect();\n    }\n}\n","import {WebAudioContext} from './directives/audio-context';\nimport {WebAudioChannel} from './directives/channel';\nimport {WebAudioDestination} from './directives/destination';\nimport {WebAudioListener} from './directives/listener';\nimport {WebAudioOfflineContext} from './directives/offline-audio-context';\nimport {WebAudioOutput} from './directives/output';\nimport {WebAudioMediaStreamDestination} from './directives/stream-destination';\nimport {WebAudioAnalyser} from './nodes/analyser';\nimport {WebAudioBiquadFilter} from './nodes/biquad-filter';\nimport {WebAudioChannelMerger} from './nodes/channel-merger';\nimport {WebAudioChannelSplitter} from './nodes/channel-splitter';\nimport {WebAudioConvolver} from './nodes/convolver';\nimport {WebAudioDelay} from './nodes/delay';\nimport {WebAudioDynamicsCompressor} from './nodes/dynamics-compressor';\nimport {WebAudioGain} from './nodes/gain';\nimport {WebAudioIIRFilter} from './nodes/iir-filter';\nimport {WebAudioPanner} from './nodes/panner';\nimport {WebAudioScriptProcessor} from './nodes/script-processor';\nimport {WebAudioStereoPanner} from './nodes/stereo-panner';\nimport {WebAudioWaveShaper} from './nodes/wave-shaper';\nimport {WebAudioWorklet} from './nodes/worklet';\nimport {WebAudioParamPipe} from './pipes/audio-param.pipe';\nimport {WebAudioPeriodicWavePipe} from './pipes/periodic-wave.pipe';\nimport {WebAudioBufferSource} from './sources/buffer-source';\nimport {WebAudioConstantSource} from './sources/constant-source';\nimport {WebAudioMediaSource} from './sources/media-source';\nimport {WebAudioMediaStreamSource} from './sources/media-stream-source';\nimport {WebAudioOscillator} from './sources/oscillator';\n\nexport const WaWebAudio = [\n    WebAudioContext,\n    WebAudioChannel,\n    WebAudioDestination,\n    WebAudioListener,\n    WebAudioOfflineContext,\n    WebAudioOutput,\n    WebAudioMediaStreamDestination,\n    WebAudioBufferSource,\n    WebAudioConstantSource,\n    WebAudioMediaSource,\n    WebAudioMediaStreamSource,\n    WebAudioOscillator,\n    WebAudioAnalyser,\n    WebAudioBiquadFilter,\n    WebAudioChannelSplitter,\n    WebAudioChannelMerger,\n    WebAudioConvolver,\n    WebAudioDelay,\n    WebAudioDynamicsCompressor,\n    WebAudioGain,\n    WebAudioIIRFilter,\n    WebAudioPanner,\n    WebAudioScriptProcessor,\n    WebAudioStereoPanner,\n    WebAudioWaveShaper,\n    WebAudioWorklet,\n    WebAudioParamPipe,\n    WebAudioPeriodicWavePipe,\n];\n\n/**\n * @deprecated: use {@link WaWebAudio}\n */\nexport const WebAudioModule = WaWebAudio;\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_AUDIO_WORKLET_PROCESSORS = new InjectionToken<readonly string[]>(\n    '[WA_AUDIO_WORKLET_PROCESSORS]',\n    {\n        providedIn: 'root',\n        factory: () => [],\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_PROCESSORS}\n */\nexport const AUDIO_WORKLET_PROCESSORS = WA_AUDIO_WORKLET_PROCESSORS;\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {WA_AUDIO_CONTEXT} from './audio-context';\n\nexport const WA_AUDIO_WORKLET_SUPPORT = new InjectionToken<boolean>(\n    '[WA_AUDIO_WORKLET_SUPPORT]',\n    {\n        factory: () => !!inject(WA_AUDIO_CONTEXT).audioWorklet,\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_SUPPORT}\n */\nexport const AUDIO_WORKLET_SUPPORT = WA_AUDIO_WORKLET_SUPPORT;\n","import {inject, InjectionToken} from '@angular/core';\n\nimport {WA_AUDIO_CONTEXT} from './audio-context';\nimport {WA_AUDIO_WORKLET_PROCESSORS} from './audio-worklet-processors';\nimport {WA_AUDIO_WORKLET_SUPPORT} from './audio-worklet-support';\n\nexport const WA_AUDIO_WORKLET_PROCESSORS_READY = new InjectionToken<Promise<boolean>>(\n    '[WA_AUDIO_WORKLET_PROCESSORS_READY]',\n    {\n        providedIn: 'root',\n        factory: async () => {\n            const context = inject(WA_AUDIO_CONTEXT);\n            const processors = inject(WA_AUDIO_WORKLET_PROCESSORS);\n\n            if (!inject(WA_AUDIO_WORKLET_SUPPORT)) {\n                // eslint-disable-next-line no-restricted-syntax,prefer-promise-reject-errors\n                return Promise.reject('AudioWorklet is not supported').catch(() => false);\n            }\n\n            return Promise.all(\n                processors.map(async (processor) =>\n                    context.audioWorklet.addModule(processor),\n                ),\n                // eslint-disable-next-line no-restricted-syntax\n            ).then(() => true);\n        },\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_AUDIO_WORKLET_PROCESSORS_READY}\n */\nexport const AUDIO_WORKLET_PROCESSORS_READY = WA_AUDIO_WORKLET_PROCESSORS_READY;\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_WEB_AUDIO_SUPPORT = new InjectionToken<boolean>(\n    '[WA_WEB_AUDIO_SUPPORT]',\n    {\n        providedIn: 'root',\n        factory: () => !!AudioContext,\n    },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_WEB_AUDIO_SUPPORT}\n */\nexport const WEB_AUDIO_SUPPORT = WA_WEB_AUDIO_SUPPORT;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}