UNPKG

@ng-web-apis/audio

Version:

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

130 lines 13.8 kB
import { __decorate } from "tslib"; import { Directive, inject, Input } from '@angular/core'; import { audioParam } from '../decorators/audio-param'; import { AUDIO_CONTEXT } from '../tokens/audio-context'; import { CONSTRUCTOR_SUPPORT } from '../tokens/constructor-support'; import { fallbackAudioParam } from '../utils/fallback-audio-param'; import * as i0 from "@angular/core"; class WebAudioListener extends GainNode { forwardXParam; forwardYParam; forwardZParam; positionXParam; positionYParam; positionZParam; upXParam; upYParam; upZParam; constructor() { const context = inject(AUDIO_CONTEXT, { self: true }); const modern = inject(CONSTRUCTOR_SUPPORT); if (modern) { super(context); } else { const result = context.createGain(); Object.setPrototypeOf(result, WebAudioListener.prototype); return result; } } get forwardX() { return this.context.listener.forwardX; } get forwardY() { return this.context.listener.forwardY; } get forwardZ() { return this.context.listener.forwardZ; } get positionX() { return this.context.listener.positionX; } get positionY() { return this.context.listener.positionY; } get positionZ() { return this.context.listener.positionZ; } get upX() { return this.context.listener.upX; } get upY() { return this.context.listener.upY; } get upZ() { return this.context.listener.upZ; } ngOnChanges() { if (this.context.listener.positionX instanceof AudioParam) { return; } // Fallback for older browsers this.context.listener.setOrientation(fallbackAudioParam(this.forwardXParam), fallbackAudioParam(this.forwardYParam), fallbackAudioParam(this.forwardZParam), fallbackAudioParam(this.upXParam), fallbackAudioParam(this.upYParam), fallbackAudioParam(this.upZParam)); this.context.listener.setPosition(fallbackAudioParam(this.positionXParam), fallbackAudioParam(this.positionYParam), fallbackAudioParam(this.positionZParam)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioListener, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WebAudioListener, isStandalone: true, selector: "[waAudioContext],[waOfflineAudioContext][length][sampleRate]", inputs: { forwardXParam: ["forwardX", "forwardXParam"], forwardYParam: ["forwardY", "forwardYParam"], forwardZParam: ["forwardZ", "forwardZParam"], positionXParam: ["positionX", "positionXParam"], positionYParam: ["positionY", "positionYParam"], positionZParam: ["positionZ", "positionZParam"], upXParam: ["upX", "upXParam"], upYParam: ["upY", "upYParam"], upZParam: ["upZ", "upZParam"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); } __decorate([ audioParam('forwardX') ], WebAudioListener.prototype, "forwardXParam", void 0); __decorate([ audioParam('forwardY') ], WebAudioListener.prototype, "forwardYParam", void 0); __decorate([ audioParam('forwardZ') ], WebAudioListener.prototype, "forwardZParam", void 0); __decorate([ audioParam('positionX') ], WebAudioListener.prototype, "positionXParam", void 0); __decorate([ audioParam('positionY') ], WebAudioListener.prototype, "positionYParam", void 0); __decorate([ audioParam('positionZ') ], WebAudioListener.prototype, "positionZParam", void 0); __decorate([ audioParam('upX') ], WebAudioListener.prototype, "upXParam", void 0); __decorate([ audioParam('upY') ], WebAudioListener.prototype, "upYParam", void 0); __decorate([ audioParam('upZ') ], WebAudioListener.prototype, "upZParam", void 0); export { WebAudioListener }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebAudioListener, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waAudioContext],[waOfflineAudioContext][length][sampleRate]', }] }], ctorParameters: function () { return []; }, propDecorators: { forwardXParam: [{ type: Input, args: ['forwardX'] }], forwardYParam: [{ type: Input, args: ['forwardY'] }], forwardZParam: [{ type: Input, args: ['forwardZ'] }], positionXParam: [{ type: Input, args: ['positionX'] }], positionYParam: [{ type: Input, args: ['positionY'] }], positionZParam: [{ type: Input, args: ['positionZ'] }], upXParam: [{ type: Input, args: ['upX'] }], upYParam: [{ type: Input, args: ['upY'] }], upZParam: [{ type: Input, args: ['upZ'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9kaXJlY3RpdmVzL2xpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakUsTUFJYSxnQkFBaUIsU0FBUSxRQUFRO0lBR25DLGFBQWEsQ0FBbUI7SUFJaEMsYUFBYSxDQUFtQjtJQUloQyxhQUFhLENBQW1CO0lBSWhDLGNBQWMsQ0FBbUI7SUFJakMsY0FBYyxDQUFtQjtJQUlqQyxjQUFjLENBQW1CO0lBSWpDLFFBQVEsQ0FBbUI7SUFJM0IsUUFBUSxDQUFtQjtJQUkzQixRQUFRLENBQW1CO0lBRWxDO1FBQ0ksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNDLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xCO2FBQU07WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFcEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFMUQsT0FBTyxNQUEwQixDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELElB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QUFVO2dCQU1WLGNBQWM7c0JBRnBCLEtBQUs7dUJBQUMsV0FBVztnQkFNWCxjQUFjO3NCQUZwQixLQUFLO3VCQUFDLFdBQVc7Z0JBTVgsY0FBYztzQkFGcEIsS0FBSzt1QkFBQyxXQUFXO2dCQU1YLFFBQVE7c0JBRmQsS0FBSzt1QkFBQyxLQUFLO2dCQU1MLFFBQVE7c0JBRmQsS0FBSzt1QkFBQyxLQUFLO2dCQU1MLFFBQVE7c0JBRmQsS0FBSzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7YXVkaW9QYXJhbX0gZnJvbSAnLi4vZGVjb3JhdG9ycy9hdWRpby1wYXJhbSc7XG5pbXBvcnQge0FVRElPX0NPTlRFWFR9IGZyb20gJy4uL3Rva2Vucy9hdWRpby1jb250ZXh0JztcbmltcG9ydCB7Q09OU1RSVUNUT1JfU1VQUE9SVH0gZnJvbSAnLi4vdG9rZW5zL2NvbnN0cnVjdG9yLXN1cHBvcnQnO1xuaW1wb3J0IHR5cGUge0F1ZGlvUGFyYW1JbnB1dH0gZnJvbSAnLi4vdHlwZXMvYXVkaW8tcGFyYW0taW5wdXQnO1xuaW1wb3J0IHtmYWxsYmFja0F1ZGlvUGFyYW19IGZyb20gJy4uL3V0aWxzL2ZhbGxiYWNrLWF1ZGlvLXBhcmFtJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3YUF1ZGlvQ29udGV4dF0sW3dhT2ZmbGluZUF1ZGlvQ29udGV4dF1bbGVuZ3RoXVtzYW1wbGVSYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkF1ZGlvTGlzdGVuZXIgZXh0ZW5kcyBHYWluTm9kZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCdmb3J3YXJkWCcpXG4gICAgQGF1ZGlvUGFyYW0oJ2ZvcndhcmRYJylcbiAgICBwdWJsaWMgZm9yd2FyZFhQYXJhbT86IEF1ZGlvUGFyYW1JbnB1dDtcblxuICAgIEBJbnB1dCgnZm9yd2FyZFknKVxuICAgIEBhdWRpb1BhcmFtKCdmb3J3YXJkWScpXG4gICAgcHVibGljIGZvcndhcmRZUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ2ZvcndhcmRaJylcbiAgICBAYXVkaW9QYXJhbSgnZm9yd2FyZFonKVxuICAgIHB1YmxpYyBmb3J3YXJkWlBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgQElucHV0KCdwb3NpdGlvblgnKVxuICAgIEBhdWRpb1BhcmFtKCdwb3NpdGlvblgnKVxuICAgIHB1YmxpYyBwb3NpdGlvblhQYXJhbT86IEF1ZGlvUGFyYW1JbnB1dDtcblxuICAgIEBJbnB1dCgncG9zaXRpb25ZJylcbiAgICBAYXVkaW9QYXJhbSgncG9zaXRpb25ZJylcbiAgICBwdWJsaWMgcG9zaXRpb25ZUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ3Bvc2l0aW9uWicpXG4gICAgQGF1ZGlvUGFyYW0oJ3Bvc2l0aW9uWicpXG4gICAgcHVibGljIHBvc2l0aW9uWlBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgQElucHV0KCd1cFgnKVxuICAgIEBhdWRpb1BhcmFtKCd1cFgnKVxuICAgIHB1YmxpYyB1cFhQYXJhbT86IEF1ZGlvUGFyYW1JbnB1dDtcblxuICAgIEBJbnB1dCgndXBZJylcbiAgICBAYXVkaW9QYXJhbSgndXBZJylcbiAgICBwdWJsaWMgdXBZUGFyYW0/OiBBdWRpb1BhcmFtSW5wdXQ7XG5cbiAgICBASW5wdXQoJ3VwWicpXG4gICAgQGF1ZGlvUGFyYW0oJ3VwWicpXG4gICAgcHVibGljIHVwWlBhcmFtPzogQXVkaW9QYXJhbUlucHV0O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBpbmplY3QoQVVESU9fQ09OVEVYVCwge3NlbGY6IHRydWV9KTtcbiAgICAgICAgY29uc3QgbW9kZXJuID0gaW5qZWN0KENPTlNUUlVDVE9SX1NVUFBPUlQpO1xuXG4gICAgICAgIGlmIChtb2Rlcm4pIHtcbiAgICAgICAgICAgIHN1cGVyKGNvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVHYWluKCk7XG5cbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihyZXN1bHQsIFdlYkF1ZGlvTGlzdGVuZXIucHJvdG90eXBlKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBXZWJBdWRpb0xpc3RlbmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb3J3YXJkWCgpOiBBdWRpb1BhcmFtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5saXN0ZW5lci5mb3J3YXJkWDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZvcndhcmRZKCk6IEF1ZGlvUGFyYW0ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lmxpc3RlbmVyLmZvcndhcmRZO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9yd2FyZFooKTogQXVkaW9QYXJhbSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQubGlzdGVuZXIuZm9yd2FyZFo7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblgoKTogQXVkaW9QYXJhbSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQubGlzdGVuZXIucG9zaXRpb25YO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb25ZKCk6IEF1ZGlvUGFyYW0ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lmxpc3RlbmVyLnBvc2l0aW9uWTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uWigpOiBBdWRpb1BhcmFtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5saXN0ZW5lci5wb3NpdGlvblo7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cFgoKTogQXVkaW9QYXJhbSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQubGlzdGVuZXIudXBYO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXBZKCk6IEF1ZGlvUGFyYW0ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0Lmxpc3RlbmVyLnVwWTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVwWigpOiBBdWRpb1BhcmFtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5saXN0ZW5lci51cFo7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0Lmxpc3RlbmVyLnBvc2l0aW9uWCBpbnN0YW5jZW9mIEF1ZGlvUGFyYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGxiYWNrIGZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICB0aGlzLmNvbnRleHQubGlzdGVuZXIuc2V0T3JpZW50YXRpb24oXG4gICAgICAgICAgICBmYWxsYmFja0F1ZGlvUGFyYW0odGhpcy5mb3J3YXJkWFBhcmFtKSxcbiAgICAgICAgICAgIGZhbGxiYWNrQXVkaW9QYXJhbSh0aGlzLmZvcndhcmRZUGFyYW0pLFxuICAgICAgICAgICAgZmFsbGJhY2tBdWRpb1BhcmFtKHRoaXMuZm9yd2FyZFpQYXJhbSksXG4gICAgICAgICAgICBmYWxsYmFja0F1ZGlvUGFyYW0odGhpcy51cFhQYXJhbSksXG4gICAgICAgICAgICBmYWxsYmFja0F1ZGlvUGFyYW0odGhpcy51cFlQYXJhbSksXG4gICAgICAgICAgICBmYWxsYmFja0F1ZGlvUGFyYW0odGhpcy51cFpQYXJhbSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGV4dC5saXN0ZW5lci5zZXRQb3NpdGlvbihcbiAgICAgICAgICAgIGZhbGxiYWNrQXVkaW9QYXJhbSh0aGlzLnBvc2l0aW9uWFBhcmFtKSxcbiAgICAgICAgICAgIGZhbGxiYWNrQXVkaW9QYXJhbSh0aGlzLnBvc2l0aW9uWVBhcmFtKSxcbiAgICAgICAgICAgIGZhbGxiYWNrQXVkaW9QYXJhbSh0aGlzLnBvc2l0aW9uWlBhcmFtKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=