@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
44 lines • 6.52 kB
JavaScript
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