@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
95 lines • 11.2 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 WebAudioBiquadFilter extends BiquadFilterNode {
detuneParam;
frequencyParam;
gainParam;
qParam;
// eslint-disable-next-line @typescript-eslint/max-params
constructor(detuneArg, frequencyArg, gainArg, QArg) {
const context = inject(AUDIO_CONTEXT);
const modern = inject(CONSTRUCTOR_SUPPORT);
const node = inject(AUDIO_NODE, { skipSelf: true });
const detune = parse(detuneArg, 0);
const frequency = parse(frequencyArg, 350);
const gain = parse(gainArg, 0);
const Q = parse(QArg, 1);
if (modern) {
super(context, { detune, frequency, gain, Q });
connect(node, this);
}
else {
const result = context.createBiquadFilter();
Object.setPrototypeOf(result, WebAudioBiquadFilter.prototype);
result.detune.value = detune;
result.frequency.value = frequency;
result.gain.value = gain;
result.Q.value = Q;
connect(node, result);
return result;
}
}
static init(that, node) {
connect(node, that);
}
ngOnDestroy() {
this.disconnect();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioBiquadFilter, deps: [{ token: 'detune', attribute: true }, { token: 'frequency', attribute: true }, { token: 'gain', attribute: true }, { token: 'Q', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioBiquadFilter, isStandalone: true, selector: "[waBiquadFilterNode]", inputs: { type: "type", channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation", detuneParam: ["detune", "detuneParam"], frequencyParam: ["frequency", "frequencyParam"], gainParam: ["gain", "gainParam"], qParam: ["Q", "qParam"] }, providers: [asAudioNode(WebAudioBiquadFilter)], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 });
}
__decorate([
audioParam('detune')
], WebAudioBiquadFilter.prototype, "detuneParam", void 0);
__decorate([
audioParam('frequency')
], WebAudioBiquadFilter.prototype, "frequencyParam", void 0);
__decorate([
audioParam('gain')
], WebAudioBiquadFilter.prototype, "gainParam", void 0);
__decorate([
audioParam('Q')
], WebAudioBiquadFilter.prototype, "qParam", void 0);
export { WebAudioBiquadFilter };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioBiquadFilter, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[waBiquadFilterNode]',
inputs: ['type', 'channelCount', 'channelCountMode', 'channelInterpretation'],
providers: [asAudioNode(WebAudioBiquadFilter)],
exportAs: 'AudioNode',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Attribute,
args: ['detune']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['frequency']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['gain']
}] }, { type: undefined, decorators: [{
type: Attribute,
args: ['Q']
}] }]; }, propDecorators: { detuneParam: [{
type: Input,
args: ['detune']
}], frequencyParam: [{
type: Input,
args: ['frequency']
}], gainParam: [{
type: Input,
args: ['gain']
}], qParam: [{
type: Input,
args: ['Q']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlxdWFkLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL25vZGVzL2JpcXVhZC1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXJDLE1BT2Esb0JBQXFCLFNBQVEsZ0JBQWdCO0lBRy9DLFdBQVcsQ0FBbUI7SUFJOUIsY0FBYyxDQUFtQjtJQUlqQyxTQUFTLENBQW1CO0lBSTVCLE1BQU0sQ0FBbUI7SUFFaEMseURBQXlEO0lBQ3pELFlBQ3lCLFNBQXdCLEVBQ3JCLFlBQTJCLEVBQ2hDLE9BQXNCLEVBQ3pCLElBQW1CO1FBRW5DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6QixJQUFJLE1BQU0sRUFBRTtZQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBMEIsQ0FBQztZQUVwRSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU5RCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDN0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFbkIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV0QixPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFUyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQTBCLEVBQUUsSUFBc0I7UUFDcEUsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQXpEUSxvQkFBb0Isa0JBbUJkLFFBQVEsOEJBQ1IsV0FBVyw4QkFDWCxNQUFNLDhCQUNOLEdBQUc7NEZBdEJULG9CQUFvQixxV0FIbEIsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7QUFNdkM7SUFETixVQUFVLENBQUMsUUFBUSxDQUFDO3lEQUNnQjtBQUk5QjtJQUROLFVBQVUsQ0FBQyxXQUFXLENBQUM7NERBQ2dCO0FBSWpDO0lBRE4sVUFBVSxDQUFDLE1BQU0sQ0FBQzt1REFDZ0I7QUFJNUI7SUFETixVQUFVLENBQUMsR0FBRyxDQUFDO29EQUNnQjtTQWZ2QixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDN0UsU0FBUyxFQUFFLENBQUMsV0FBVyxzQkFBc0IsQ0FBQztvQkFDOUMsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOzswQkFvQlEsU0FBUzsyQkFBQyxRQUFROzswQkFDbEIsU0FBUzsyQkFBQyxXQUFXOzswQkFDckIsU0FBUzsyQkFBQyxNQUFNOzswQkFDaEIsU0FBUzsyQkFBQyxHQUFHOzRDQW5CWCxXQUFXO3NCQUZqQixLQUFLO3VCQUFDLFFBQVE7Z0JBTVIsY0FBYztzQkFGcEIsS0FBSzt1QkFBQyxXQUFXO2dCQU1YLFNBQVM7c0JBRmYsS0FBSzt1QkFBQyxNQUFNO2dCQU1OLE1BQU07c0JBRlosS0FBSzt1QkFBQyxHQUFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHthdWRpb1BhcmFtfSBmcm9tICcuLi9kZWNvcmF0b3JzL2F1ZGlvLXBhcmFtJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZSwgQVVESU9fTk9ERX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5pbXBvcnQgdHlwZSB7QXVkaW9QYXJhbUlucHV0fSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1pbnB1dCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4uL3V0aWxzL2Nvbm5lY3QnO1xuaW1wb3J0IHtwYXJzZX0gZnJvbSAnLi4vdXRpbHMvcGFyc2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dhQmlxdWFkRmlsdGVyTm9kZV0nLFxuICAgIGlucHV0czogWyd0eXBlJywgJ2NoYW5uZWxDb3VudCcsICdjaGFubmVsQ291bnRNb2RlJywgJ2NoYW5uZWxJbnRlcnByZXRhdGlvbiddLFxuICAgIHByb3ZpZGVyczogW2FzQXVkaW9Ob2RlKFdlYkF1ZGlvQmlxdWFkRmlsdGVyKV0sXG4gICAgZXhwb3J0QXM6ICdBdWRpb05vZGUnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJBdWRpb0JpcXVhZEZpbHRlciBleHRlbmRzIEJpcXVhZEZpbHRlck5vZGUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnZGV0dW5lJylcbiAgICBAYXVkaW9QYXJhbSgnZGV0dW5lJylcbiAgICBwdWJsaWMgZGV0dW5lUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ2ZyZXF1ZW5jeScpXG4gICAgQGF1ZGlvUGFyYW0oJ2ZyZXF1ZW5jeScpXG4gICAgcHVibGljIGZyZXF1ZW5jeVBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgQElucHV0KCdnYWluJylcbiAgICBAYXVkaW9QYXJhbSgnZ2FpbicpXG4gICAgcHVibGljIGdhaW5QYXJhbT86IEF1ZGlvUGFyYW1JbnB1dDtcblxuICAgIEBJbnB1dCgnUScpXG4gICAgQGF1ZGlvUGFyYW0oJ1EnKVxuICAgIHB1YmxpYyBxUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21heC1wYXJhbXNcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGV0dW5lJykgZGV0dW5lQXJnOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBAQXR0cmlidXRlKCdmcmVxdWVuY3knKSBmcmVxdWVuY3lBcmc6IHN0cmluZyB8IG51bGwsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2dhaW4nKSBnYWluQXJnOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBAQXR0cmlidXRlKCdRJykgUUFyZzogc3RyaW5nIHwgbnVsbCxcbiAgICApIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGluamVjdChBVURJT19DT05URVhUKTtcbiAgICAgICAgY29uc3QgbW9kZXJuID0gaW5qZWN0KENPTlNUUlVDVE9SX1NVUFBPUlQpO1xuICAgICAgICBjb25zdCBub2RlID0gaW5qZWN0KEFVRElPX05PREUsIHtza2lwU2VsZjogdHJ1ZX0pO1xuICAgICAgICBjb25zdCBkZXR1bmUgPSBwYXJzZShkZXR1bmVBcmcsIDApO1xuICAgICAgICBjb25zdCBmcmVxdWVuY3kgPSBwYXJzZShmcmVxdWVuY3lBcmcsIDM1MCk7XG4gICAgICAgIGNvbnN0IGdhaW4gPSBwYXJzZShnYWluQXJnLCAwKTtcbiAgICAgICAgY29uc3QgUSA9IHBhcnNlKFFBcmcsIDEpO1xuXG4gICAgICAgIGlmIChtb2Rlcm4pIHtcbiAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHtkZXR1bmUsIGZyZXF1ZW5jeSwgZ2FpbiwgUX0pO1xuICAgICAgICAgICAgY29ubmVjdChub2RlLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQmlxdWFkRmlsdGVyKCkgYXMgV2ViQXVkaW9CaXF1YWRGaWx0ZXI7XG5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihyZXN1bHQsIFdlYkF1ZGlvQmlxdWFkRmlsdGVyLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5kZXR1bmUudmFsdWUgPSBkZXR1bmU7XG4gICAgICAgICAgICByZXN1bHQuZnJlcXVlbmN5LnZhbHVlID0gZnJlcXVlbmN5O1xuICAgICAgICAgICAgcmVzdWx0LmdhaW4udmFsdWUgPSBnYWluO1xuICAgICAgICAgICAgcmVzdWx0LlEudmFsdWUgPSBRO1xuXG4gICAgICAgICAgICBjb25uZWN0KG5vZGUsIHJlc3VsdCk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIGluaXQodGhhdDogV2ViQXVkaW9CaXF1YWRGaWx0ZXIsIG5vZGU6IEF1ZGlvTm9kZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29ubmVjdChub2RlLCB0aGF0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbn1cbiJdfQ==