@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
49 lines • 6.78 kB
JavaScript
import { Attribute, ContentChildren, Directive, inject } from '@angular/core';
import { WebAudioChannel } from '../directives/channel';
import { AUDIO_CONTEXT } from '../tokens/audio-context';
import { asAudioNode } from '../tokens/audio-node';
import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support';
import * as i0 from "@angular/core";
class WebAudioChannelMerger extends ChannelMergerNode {
constructor(inputs) {
const context = inject(AUDIO_CONTEXT);
const modern = inject(CONSTRUCTOR_SUPPORT);
const numberOfInputs = parseInt(inputs ?? '', 10) || 6;
if (modern) {
super(context, { numberOfInputs });
}
else {
const result = context.createChannelMerger(numberOfInputs);
Object.setPrototypeOf(result, WebAudioChannelMerger.prototype);
return result;
}
}
ngOnDestroy() {
this.disconnect();
}
set channels(channels) {
channels.forEach((node, index) => {
node.connect(this, 0, index);
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioChannelMerger, deps: [{ token: 'numberOfInputs', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioChannelMerger, isStandalone: true, selector: "[waChannelMergerNode]", inputs: { channelCount: "channelCount", channelCountMode: "channelCountMode", channelInterpretation: "channelInterpretation" }, providers: [asAudioNode(WebAudioChannelMerger)], queries: [{ propertyName: "channels", predicate: WebAudioChannel }], exportAs: ["AudioNode"], usesInheritance: true, ngImport: i0 });
}
export { WebAudioChannelMerger };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioChannelMerger, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[waChannelMergerNode]',
inputs: ['channelCount', 'channelCountMode', 'channelInterpretation'],
providers: [asAudioNode(WebAudioChannelMerger)],
exportAs: 'AudioNode',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Attribute,
args: ['numberOfInputs']
}] }]; }, propDecorators: { channels: [{
type: ContentChildren,
args: [WebAudioChannel, { descendants: false }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1tZXJnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9ub2Rlcy9jaGFubmVsLW1lcmdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQUVsRSxNQU9hLHFCQUFzQixTQUFRLGlCQUFpQjtJQUN4RCxZQUF5QyxNQUFxQjtRQUMxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUzRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQStCLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDYyxRQUFRLENBQUMsUUFBOEI7UUFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTFCUSxxQkFBcUIsa0JBQ1AsZ0JBQWdCOzRGQUQ5QixxQkFBcUIsb01BSG5CLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsbURBd0I5QixlQUFlOztTQXJCdkIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBUGpDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckUsU0FBUyxFQUFFLENBQUMsV0FBVyx1QkFBdUIsQ0FBQztvQkFDL0MsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCOzswQkFFZ0IsU0FBUzsyQkFBQyxnQkFBZ0I7NENBcUJ6QixRQUFRO3NCQURyQixlQUFlO3VCQUFDLGVBQWUsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7T25EZXN0cm95LCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBdHRyaWJ1dGUsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1dlYkF1ZGlvQ2hhbm5lbH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jaGFubmVsJztcbmltcG9ydCB7QVVESU9fQ09OVEVYVH0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLWNvbnRleHQnO1xuaW1wb3J0IHthc0F1ZGlvTm9kZX0gZnJvbSAnLi4vdG9rZW5zL2F1ZGlvLW5vZGUnO1xuaW1wb3J0IHtDT05TVFJVQ1RPUl9TVVBQT1JUfSBmcm9tICcuLi90b2tlbnMvY29uc3RydWN0b3Itc3VwcG9ydCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd2FDaGFubmVsTWVyZ2VyTm9kZV0nLFxuICAgIGlucHV0czogWydjaGFubmVsQ291bnQnLCAnY2hhbm5lbENvdW50TW9kZScsICdjaGFubmVsSW50ZXJwcmV0YXRpb24nXSxcbiAgICBwcm92aWRlcnM6IFthc0F1ZGlvTm9kZShXZWJBdWRpb0NoYW5uZWxNZXJnZXIpXSxcbiAgICBleHBvcnRBczogJ0F1ZGlvTm9kZScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlciBleHRlbmRzIENoYW5uZWxNZXJnZXJOb2RlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBjb25zdHJ1Y3RvcihAQXR0cmlidXRlKCdudW1iZXJPZklucHV0cycpIGlucHV0czogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0KEFVRElPX0NPTlRFWFQpO1xuICAgICAgICBjb25zdCBtb2Rlcm4gPSBpbmplY3QoQ09OU1RSVUNUT1JfU1VQUE9SVCk7XG4gICAgICAgIGNvbnN0IG51bWJlck9mSW5wdXRzID0gcGFyc2VJbnQoaW5wdXRzID8/ICcnLCAxMCkgfHwgNjtcblxuICAgICAgICBpZiAobW9kZXJuKSB7XG4gICAgICAgICAgICBzdXBlcihjb250ZXh0LCB7bnVtYmVyT2ZJbnB1dHN9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQ2hhbm5lbE1lcmdlcihudW1iZXJPZklucHV0cyk7XG5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihyZXN1bHQsIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlci5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFdlYkF1ZGlvQ2hhbm5lbE1lcmdlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihXZWJBdWRpb0NoYW5uZWwsIHtkZXNjZW5kYW50czogZmFsc2V9KVxuICAgIHByb3RlY3RlZCBzZXQgY2hhbm5lbHMoY2hhbm5lbHM6IFF1ZXJ5TGlzdDxBdWRpb05vZGU+KSB7XG4gICAgICAgIGNoYW5uZWxzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBub2RlLmNvbm5lY3QodGhpcywgMCwgaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=