UNPKG

@ng-web-apis/audio

Version:

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

104 lines 12.4 kB
import { __decorate } from "tslib"; import { Attribute, Directive, inject, Input } from '@angular/core'; import { audioParam } from '../decorators/audio-param'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { asAudioNode, AUDIO_NODE } from '../tokens/audio-node'; import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support'; import { connect } from '../utils/connect'; import { parse } from '../utils/parse'; import * as i0 from "@angular/core"; class WebAudioDynamicsCompressor extends DynamicsCompressorNode { attackParam; kneeParam; ratioParam; releaseParam; thresholdParam; // eslint-disable-next-line @typescript-eslint/max-params constructor(attackArg, kneeArg, ratioArg, releaseArg, thresholdArg) { const context = inject(AUDIO_CONTEXT); const node = inject(AUDIO_NODE, { skipSelf: true }); const modern = inject(CONSTRUCTOR_SUPPORT); const attack = parse(attackArg, 0.003); const knee = parse(kneeArg, 30); const ratio = parse(ratioArg, 12); const release = parse(releaseArg, 0.25); const threshold = parse(thresholdArg, -24); if (modern) { super(context, { attack, knee, ratio, release, threshold }); connect(node, this); } else { const result = context.createDynamicsCompressor(); Object.setPrototypeOf(result, WebAudioDynamicsCompressor.prototype); connect(node, result); result.attack.value = attack; result.knee.value = knee; result.ratio.value = ratio; result.release.value = release; result.threshold.value = threshold; return result; } } ngOnDestroy() { this.disconnect(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioDynamicsCompressor, deps: [{ token: 'attack', attribute: true }, { token: 'knee', attribute: true }, { token: 'ratio', attribute: true }, { token: 'release', attribute: true }, { token: 'threshold', attribute: true }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioDynamicsCompressor, isStandalone: true, selector: "[waDynamicsCompressorNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation", attackParam: ["attack", "attackParam"], kneeParam: ["knee", "kneeParam"], ratioParam: ["ratio", "ratioParam"], releaseParam: ["release", "releaseParam"], thresholdParam: ["threshold", "thresholdParam"] }, providers: [asAudioNode(WebAudioDynamicsCompressor)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 }); } __decorate([ audioParam('attack') ], WebAudioDynamicsCompressor.prototype, "attackParam", void 0); __decorate([ audioParam('knee') ], WebAudioDynamicsCompressor.prototype, "kneeParam", void 0); __decorate([ audioParam('ratio') ], WebAudioDynamicsCompressor.prototype, "ratioParam", void 0); __decorate([ audioParam('release') ], WebAudioDynamicsCompressor.prototype, "releaseParam", void 0); __decorate([ audioParam('threshold') ], WebAudioDynamicsCompressor.prototype, "thresholdParam", void 0); export { WebAudioDynamicsCompressor }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioDynamicsCompressor, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waDynamicsCompressorNode]', inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'], providers: [asAudioNode(WebAudioDynamicsCompressor)], exportAs: 'AudioNode', }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Attribute, args: ['attack'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['knee'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['ratio'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['release'] }] }, { type: undefined, decorators: [{ type: Attribute, args: ['threshold'] }] }]; }, propDecorators: { attackParam: [{ type: Input, args: ['attack'] }], kneeParam: [{ type: Input, args: ['knee'] }], ratioParam: [{ type: Input, args: ['ratio'] }], releaseParam: [{ type: Input, args: ['release'] }], thresholdParam: [{ type: Input, args: ['threshold'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY3MtY29tcHJlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL25vZGVzL2R5bmFtaWNzLWNvbXByZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXJDLE1BT2EsMEJBQ1QsU0FBUSxzQkFBc0I7SUFLdkIsV0FBVyxDQUFtQjtJQUk5QixTQUFTLENBQW1CO0lBSTVCLFVBQVUsQ0FBbUI7SUFJN0IsWUFBWSxDQUFtQjtJQUkvQixjQUFjLENBQW1CO0lBRXhDLHlEQUF5RDtJQUN6RCxZQUN5QixTQUF3QixFQUMxQixPQUFzQixFQUNyQixRQUF1QixFQUNyQixVQUF5QixFQUN2QixZQUEyQjtRQUVuRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUNSLE9BQU8sQ0FBQyx3QkFBd0IsRUFBZ0MsQ0FBQztZQUVyRSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFFbkMsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQTlEUSwwQkFBMEIsa0JBMEJwQixRQUFRLDhCQUNSLE1BQU0sOEJBQ04sT0FBTyw4QkFDUCxTQUFTLDhCQUNULFdBQVc7NEZBOUJqQiwwQkFBMEIsb1pBSHhCLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7O0FBUzdDO0lBRE4sVUFBVSxDQUFDLFFBQVEsQ0FBQzsrREFDZ0I7QUFJOUI7SUFETixVQUFVLENBQUMsTUFBTSxDQUFDOzZEQUNnQjtBQUk1QjtJQUROLFVBQVUsQ0FBQyxPQUFPLENBQUM7OERBQ2dCO0FBSTdCO0lBRE4sVUFBVSxDQUFDLFNBQVMsQ0FBQztnRUFDZ0I7QUFJL0I7SUFETixVQUFVLENBQUMsV0FBVyxDQUFDO2tFQUNnQjtTQXRCL0IsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBUHRDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckUsU0FBUyxFQUFFLENBQUMsV0FBVyw0QkFBNEIsQ0FBQztvQkFDcEQsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOzswQkEyQlEsU0FBUzsyQkFBQyxRQUFROzswQkFDbEIsU0FBUzsyQkFBQyxNQUFNOzswQkFDaEIsU0FBUzsyQkFBQyxPQUFPOzswQkFDakIsU0FBUzsyQkFBQyxTQUFTOzswQkFDbkIsU0FBUzsyQkFBQyxXQUFXOzRDQXhCbkIsV0FBVztzQkFGakIsS0FBSzt1QkFBQyxRQUFRO2dCQU1SLFNBQVM7c0JBRmYsS0FBSzt1QkFBQyxNQUFNO2dCQU1OLFVBQVU7c0JBRmhCLEtBQUs7dUJBQUMsT0FBTztnQkFNUCxZQUFZO3NCQUZsQixLQUFLO3VCQUFDLFNBQVM7Z0JBTVQsY0FBYztzQkFGcEIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHthdWRpb1BhcmFtfSBmcm9tICcuLi9kZWNvcmF0b3JzL2F1ZGlvLXBhcmFtJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZSwgQVVESU9fTk9ERX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5pbXBvcnQgdHlwZSB7QXVkaW9QYXJhbUlucHV0fSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1pbnB1dCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4uL3V0aWxzL2Nvbm5lY3QnO1xuaW1wb3J0IHtwYXJzZX0gZnJvbSAnLi4vdXRpbHMvcGFyc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhRHluYW1pY3NDb21wcmVzc29yTm9kZV0nLFxuICAgIGlucHV0czogWydjaGFubmVsQ291bnQnLCAnY2hhbm5lbENvdW50TW9kZScsICdjaGFubmVsSW50ZXJwcmV0YXRpb24nXSxcbiAgICBwcm92aWRlcnM6IFthc0F1ZGlvTm9kZShXZWJBdWRpb0R5bmFtaWNzQ29tcHJlc3NvcildLFxuICAgIGV4cG9ydEFzOiAnQXVkaW9Ob2RlJyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViQXVkaW9EeW5hbWljc0NvbXByZXNzb3JcbiAgICBleHRlbmRzIER5bmFtaWNzQ29tcHJlc3Nvck5vZGVcbiAgICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAgIEBJbnB1dCgnYXR0YWNrJylcbiAgICBAYXVkaW9QYXJhbSgnYXR0YWNrJylcbiAgICBwdWJsaWMgYXR0YWNrUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ2tuZWUnKVxuICAgIEBhdWRpb1BhcmFtKCdrbmVlJylcbiAgICBwdWJsaWMga25lZVBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgQElucHV0KCdyYXRpbycpXG4gICAgQGF1ZGlvUGFyYW0oJ3JhdGlvJylcbiAgICBwdWJsaWMgcmF0aW9QYXJhbT86IEF1ZGlvUGFyYW1JbnB1dDtcblxuICAgIEBJbnB1dCgncmVsZWFzZScpXG4gICAgQGF1ZGlvUGFyYW0oJ3JlbGVhc2UnKVxuICAgIHB1YmxpYyByZWxlYXNlUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ3RocmVzaG9sZCcpXG4gICAgQGF1ZGlvUGFyYW0oJ3RocmVzaG9sZCcpXG4gICAgcHVibGljIHRocmVzaG9sZFBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tYXgtcGFyYW1zXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2F0dGFjaycpIGF0dGFja0FyZzogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgQEF0dHJpYnV0ZSgna25lZScpIGtuZWVBcmc6IHN0cmluZyB8IG51bGwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3JhdGlvJykgcmF0aW9Bcmc6IHN0cmluZyB8IG51bGwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3JlbGVhc2UnKSByZWxlYXNlQXJnOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBAQXR0cmlidXRlKCd0aHJlc2hvbGQnKSB0aHJlc2hvbGRBcmc6IHN0cmluZyB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbmplY3QoQVVESU9fQ09OVEVYVCk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBpbmplY3QoQVVESU9fTk9ERSwge3NraXBTZWxmOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IG1vZGVybiA9IGluamVjdChDT05TVFJVQ1RPUl9TVVBQT1JUKTtcbiAgICAgICAgY29uc3QgYXR0YWNrID0gcGFyc2UoYXR0YWNrQXJnLCAwLjAwMyk7XG4gICAgICAgIGNvbnN0IGtuZWUgPSBwYXJzZShrbmVlQXJnLCAzMCk7XG4gICAgICAgIGNvbnN0IHJhdGlvID0gcGFyc2UocmF0aW9BcmcsIDEyKTtcbiAgICAgICAgY29uc3QgcmVsZWFzZSA9IHBhcnNlKHJlbGVhc2VBcmcsIDAuMjUpO1xuICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSBwYXJzZSh0aHJlc2hvbGRBcmcsIC0yNCk7XG5cbiAgICAgICAgaWYgKG1vZGVybikge1xuICAgICAgICAgICAgc3VwZXIoY29udGV4dCwge2F0dGFjaywga25lZSwgcmF0aW8sIHJlbGVhc2UsIHRocmVzaG9sZH0pO1xuICAgICAgICAgICAgY29ubmVjdChub2RlLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgY29udGV4dC5jcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKSBhcyBXZWJBdWRpb0R5bmFtaWNzQ29tcHJlc3NvcjtcblxuICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHJlc3VsdCwgV2ViQXVkaW9EeW5hbWljc0NvbXByZXNzb3IucHJvdG90eXBlKTtcbiAgICAgICAgICAgIGNvbm5lY3Qobm9kZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJlc3VsdC5hdHRhY2sudmFsdWUgPSBhdHRhY2s7XG4gICAgICAgICAgICByZXN1bHQua25lZS52YWx1ZSA9IGtuZWU7XG4gICAgICAgICAgICByZXN1bHQucmF0aW8udmFsdWUgPSByYXRpbztcbiAgICAgICAgICAgIHJlc3VsdC5yZWxlYXNlLnZhbHVlID0gcmVsZWFzZTtcbiAgICAgICAgICAgIHJlc3VsdC50aHJlc2hvbGQudmFsdWUgPSB0aHJlc2hvbGQ7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdfQ==