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