UNPKG

@ng-web-apis/audio

Version:

This is a library for declarative use of Web Audio API with Angular

44 lines 6.52 kB
import { Directive, inject } from '@angular/core'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { asAudioNode, AUDIO_NODE } from '../tokens/audio-node'; import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support'; import { FEEDBACK_COEFFICIENTS } from '../tokens/feedback-coefficients'; import { FEEDFORWARD_COEFFICIENTS } from '../tokens/feedforward-coefficients'; import { connect } from '../utils/connect'; import * as i0 from "@angular/core"; class WebAudioIIRFilter extends IIRFilterNode { constructor() { const feedback = inject(FEEDBACK_COEFFICIENTS); const feedforward = inject(FEEDFORWARD_COEFFICIENTS); const context = inject(AUDIO_CONTEXT); const modern = inject(CONSTRUCTOR_SUPPORT); const node = inject(AUDIO_NODE, { skipSelf: true }); if (modern) { super(context, { feedback, feedforward }); connect(node, this); } else { const result = context.createIIRFilter(feedforward, feedback); Object.setPrototypeOf(result, WebAudioIIRFilter.prototype); connect(node, result); return result; } } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioIIRFilter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioIIRFilter, isStandalone: true, selector: "[waIIRFilterNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation" }, providers: [asAudioNode(WebAudioIIRFilter)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } export { WebAudioIIRFilter }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioIIRFilter, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waIIRFilterNode]', inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'], providers: [asAudioNode(WebAudioIIRFilter)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWlyLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL25vZGVzL2lpci1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUV6QyxNQU9hLGlCQUFrQixTQUFRLGFBQWE7SUFDaEQ7UUFDSSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQ2xDLFdBQVcsRUFDWCxRQUFRLENBQ1UsQ0FBQztZQUV2QixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzRCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXRCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt3R0ExQlEsaUJBQWlCOzRGQUFqQixpQkFBaUIsZ01BSGYsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7U0FHbEMsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBUDdCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckUsU0FBUyxFQUFFLENBQUMsV0FBVyxtQkFBbUIsQ0FBQztvQkFDM0MsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBVURJT19DT05URVhUfSBmcm9tICcuLi90b2tlbnMvYXVkaW8tY29udGV4dCc7XG5pbXBvcnQge2FzQXVkaW9Ob2RlLCBBVURJT19OT0RFfSBmcm9tICcuLi90b2tlbnMvYXVkaW8tbm9kZSc7XG5pbXBvcnQge0NPTlNUUlVDVE9SX1NVUFBPUlR9IGZyb20gJy4uL3Rva2Vucy9jb25zdHJ1Y3Rvci1zdXBwb3J0JztcbmltcG9ydCB7RkVFREJBQ0tfQ09FRkZJQ0lFTlRTfSBmcm9tICcuLi90b2tlbnMvZmVlZGJhY2stY29lZmZpY2llbnRzJztcbmltcG9ydCB7RkVFREZPUldBUkRfQ09FRkZJQ0lFTlRTfSBmcm9tICcuLi90b2tlbnMvZmVlZGZvcndhcmQtY29lZmZpY2llbnRzJztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAnLi4vdXRpbHMvY29ubmVjdCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd2FJSVJGaWx0ZXJOb2RlXScsXG4gICAgaW5wdXRzOiBbJ2NoYW5uZWxDb3VudCcsICdjaGFubmVsQ291bnRNb2RlJywgJ2NoYW5uZWxJbnRlcnByZXRhdGlvbiddLFxuICAgIHByb3ZpZGVyczogW2FzQXVkaW9Ob2RlKFdlYkF1ZGlvSUlSRmlsdGVyKV0sXG4gICAgZXhwb3J0QXM6ICdBdWRpb05vZGUnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJBdWRpb0lJUkZpbHRlciBleHRlbmRzIElJUkZpbHRlck5vZGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBmZWVkYmFjayA9IGluamVjdChGRUVEQkFDS19DT0VGRklDSUVOVFMpO1xuICAgICAgICBjb25zdCBmZWVkZm9yd2FyZCA9IGluamVjdChGRUVERk9SV0FSRF9DT0VGRklDSUVOVFMpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0KEFVRElPX0NPTlRFWFQpO1xuICAgICAgICBjb25zdCBtb2Rlcm4gPSBpbmplY3QoQ09OU1RSVUNUT1JfU1VQUE9SVCk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBpbmplY3QoQVVESU9fTk9ERSwge3NraXBTZWxmOiB0cnVlfSk7XG5cbiAgICAgICAgaWYgKG1vZGVybikge1xuICAgICAgICAgICAgc3VwZXIoY29udGV4dCwge2ZlZWRiYWNrLCBmZWVkZm9yd2FyZH0pO1xuICAgICAgICAgICAgY29ubmVjdChub2RlLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlSUlSRmlsdGVyKFxuICAgICAgICAgICAgICAgIGZlZWRmb3J3YXJkLFxuICAgICAgICAgICAgICAgIGZlZWRiYWNrLFxuICAgICAgICAgICAgKSBhcyBXZWJBdWRpb0lJUkZpbHRlcjtcblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlc3VsdCwgV2ViQXVkaW9JSVJGaWx0ZXIucHJvdG90eXBlKTtcbiAgICAgICAgICAgIGNvbm5lY3Qobm9kZSwgcmVzdWx0KTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxufVxuIl19