@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
26 lines • 4.56 kB
JavaScript
import { processAudioParam } from '../utils/process-audio-param';
export function audioParam(param = '') {
const decorator = (target, propertyKey) => {
Object.defineProperty(target, propertyKey, {
configurable: true,
set(value) {
value = typeof value === 'string' ? Number.parseFloat(value) : value;
const audioParam = this instanceof AudioWorkletNode
? this.parameters.get(propertyKey)
: this[param];
if (audioParam instanceof AudioParam) {
processAudioParam(audioParam, value, this.context.currentTime);
}
else {
// Fallback for older browsers
Object.defineProperty(target, propertyKey, {
value,
configurable: true,
});
}
},
});
};
return decorator;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2F1ZGlvL3NyYy9kZWNvcmF0b3JzL2F1ZGlvLXBhcmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSS9ELE1BQU0sVUFBVSxVQUFVLENBQ3RCLEtBQUssR0FBRyxFQUFFO0lBRVYsTUFBTSxTQUFTLEdBQTJCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzlELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN2QyxZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLENBQWtELEtBQXNCO2dCQUN2RSxLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRXJFLE1BQU0sVUFBVSxHQUNaLElBQUksWUFBWSxnQkFBZ0I7b0JBQzVCLENBQUMsQ0FBRSxJQUFJLENBQUMsVUFBa0QsQ0FBQyxHQUFHLENBQ3hELFdBQVcsQ0FDZDtvQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQVUsQ0FBQyxDQUFDO2dCQUUzQixJQUFJLFVBQVUsWUFBWSxVQUFVLEVBQUU7b0JBQ2xDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDbEU7cUJBQU07b0JBQ0gsOEJBQThCO29CQUM5QixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7d0JBQ3ZDLEtBQUs7d0JBQ0wsWUFBWSxFQUFFLElBQUk7cUJBQ3JCLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0F1ZGlvTm9kZVdpdGhQYXJhbXN9IGZyb20gJy4uL3R5cGVzL2F1ZGlvLW5vZGUtd2l0aC1wYXJhbXMnO1xuaW1wb3J0IHR5cGUge1xuICAgIEF1ZGlvUGFyYW1EZWNvcmF0b3IsXG4gICAgQXVkaW9QYXJhbVdvcmtsZXREZWNvcmF0b3IsXG59IGZyb20gJy4uL3R5cGVzL2F1ZGlvLXBhcmFtLWRlY29yYXRvcic7XG5pbXBvcnQgdHlwZSB7QXVkaW9QYXJhbUlucHV0fSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1pbnB1dCc7XG5pbXBvcnQge3Byb2Nlc3NBdWRpb1BhcmFtfSBmcm9tICcuLi91dGlscy9wcm9jZXNzLWF1ZGlvLXBhcmFtJztcblxuZXhwb3J0IGZ1bmN0aW9uIGF1ZGlvUGFyYW0oKTogQXVkaW9QYXJhbVdvcmtsZXREZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gYXVkaW9QYXJhbTxLIGV4dGVuZHMgc3RyaW5nPihwYXJhbTogSyk6IEF1ZGlvUGFyYW1EZWNvcmF0b3I8Sz47XG5leHBvcnQgZnVuY3Rpb24gYXVkaW9QYXJhbTxLIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXJhbSA9ICcnLFxuKTogQXVkaW9QYXJhbURlY29yYXRvcjxLPiB8IEF1ZGlvUGFyYW1Xb3JrbGV0RGVjb3JhdG9yIHtcbiAgICBjb25zdCBkZWNvcmF0b3I6IEF1ZGlvUGFyYW1EZWNvcmF0b3I8Sz4gPSAodGFyZ2V0LCBwcm9wZXJ0eUtleSkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgc2V0KHRoaXM6IEF1ZGlvTm9kZVdpdGhQYXJhbXM8Sz4gfCBBdWRpb1dvcmtsZXROb2RlLCB2YWx1ZTogQXVkaW9QYXJhbUlucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1BhcmFtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIEF1ZGlvV29ya2xldE5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMucGFyYW1ldGVycyBhcyBNYXA8c3RyaW5nLCBBdWRpb1BhcmFtIHwgdW5kZWZpbmVkPikuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpc1twYXJhbSBhcyBLXTtcblxuICAgICAgICAgICAgICAgIGlmIChhdWRpb1BhcmFtIGluc3RhbmNlb2YgQXVkaW9QYXJhbSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQXVkaW9QYXJhbShhdWRpb1BhcmFtLCB2YWx1ZSwgdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBmb3Igb2xkZXIgYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlY29yYXRvcjtcbn1cbiJdfQ==