UNPKG

@ng-web-apis/audio

Version:

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

58 lines 8.14 kB
export function processAudioParam(param, value, currentTime = 0) { if (param.cancelAndHoldAtTime) { param.cancelAndHoldAtTime(currentTime); } else { param.cancelScheduledValues(currentTime); param.setValueAtTime(guard(param.value), currentTime); } if (typeof value === 'number') { param.setValueAtTime(guard(value), currentTime); return; } if (value instanceof Array) { processSchedule(param, value, currentTime); return; } if (!('mode' in value)) { param.setValueCurveAtTime(value.value, currentTime, value.duration); return; } param.setValueAtTime(guard(param.value), currentTime); processAutomation(param, value, currentTime); } function processSchedule(param, value, currentTime) { value.forEach((automation) => { if ('mode' in automation) { processAutomation(param, automation, currentTime); } else { param.setValueCurveAtTime(automation.value, currentTime, automation.duration); } currentTime += automation.duration; }); } function processAutomation(param, { value, mode = 'instant', duration }, currentTime) { switch (mode) { case 'exponential': if (value < 0 || value * param.value < 0) { param.linearRampToValueAtTime(guard(value), currentTime + duration); } else { param.exponentialRampToValueAtTime(guard(value), currentTime + duration); } param.setValueAtTime(guard(value), currentTime + duration); break; case 'instant': param.setValueAtTime(guard(value), currentTime); param.setValueAtTime(guard(value), currentTime + duration); break; case 'linear': param.linearRampToValueAtTime(guard(value), currentTime + duration); break; } } function guard(v) { return v || 0.00000001; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hdWRpby1wYXJhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYXVkaW8vc3JjL3V0aWxzL3Byb2Nlc3MtYXVkaW8tcGFyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGlCQUFpQixDQUM3QixLQUFpQixFQUNqQixLQUFzQixFQUN0QixXQUFXLEdBQUcsQ0FBQztJQUVmLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFO1FBQzNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUMxQztTQUFNO1FBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUN6RDtJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzNCLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWhELE9BQU87S0FDVjtJQUVELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUN4QixlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUzQyxPQUFPO0tBQ1Y7SUFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUU7UUFDcEIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRSxPQUFPO0tBQ1Y7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQ3BCLEtBQWlCLEVBQ2pCLEtBQW9ELEVBQ3BELFdBQW1CO0lBRW5CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUN6QixJQUFJLE1BQU0sSUFBSSxVQUFVLEVBQUU7WUFDdEIsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqRjtRQUVELFdBQVcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQ3RCLEtBQWlCLEVBQ2pCLEVBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxTQUFTLEVBQUUsUUFBUSxFQUF1QixFQUN6RCxXQUFtQjtJQUVuQixRQUFRLElBQUksRUFBRTtRQUNWLEtBQUssYUFBYTtZQUNkLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3RDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZFO2lCQUFNO2dCQUNILEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2FBQzVFO1lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQzNELE1BQU07UUFDVixLQUFLLFNBQVM7WUFDVixLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNoRCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDM0QsTUFBTTtRQUNWLEtBQUssUUFBUTtZQUNULEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLE1BQU07S0FDYjtBQUNMLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFTO0lBQ3BCLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0F1ZGlvUGFyYW1BdXRvbWF0aW9ufSBmcm9tICcuLi90eXBlcy9hdWRpby1wYXJhbS1hdXRvbWF0aW9uJztcbmltcG9ydCB0eXBlIHtBdWRpb1BhcmFtQ3VydmV9IGZyb20gJy4uL3R5cGVzL2F1ZGlvLXBhcmFtLWN1cnZlJztcbmltcG9ydCB0eXBlIHtBdWRpb1BhcmFtSW5wdXR9IGZyb20gJy4uL3R5cGVzL2F1ZGlvLXBhcmFtLWlucHV0JztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NBdWRpb1BhcmFtKFxuICAgIHBhcmFtOiBBdWRpb1BhcmFtLFxuICAgIHZhbHVlOiBBdWRpb1BhcmFtSW5wdXQsXG4gICAgY3VycmVudFRpbWUgPSAwLFxuKTogdm9pZCB7XG4gICAgaWYgKHBhcmFtLmNhbmNlbEFuZEhvbGRBdFRpbWUpIHtcbiAgICAgICAgcGFyYW0uY2FuY2VsQW5kSG9sZEF0VGltZShjdXJyZW50VGltZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW0uY2FuY2VsU2NoZWR1bGVkVmFsdWVzKGN1cnJlbnRUaW1lKTtcbiAgICAgICAgcGFyYW0uc2V0VmFsdWVBdFRpbWUoZ3VhcmQocGFyYW0udmFsdWUpLCBjdXJyZW50VGltZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcGFyYW0uc2V0VmFsdWVBdFRpbWUoZ3VhcmQodmFsdWUpLCBjdXJyZW50VGltZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHByb2Nlc3NTY2hlZHVsZShwYXJhbSwgdmFsdWUsIGN1cnJlbnRUaW1lKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEoJ21vZGUnIGluIHZhbHVlKSkge1xuICAgICAgICBwYXJhbS5zZXRWYWx1ZUN1cnZlQXRUaW1lKHZhbHVlLnZhbHVlLCBjdXJyZW50VGltZSwgdmFsdWUuZHVyYXRpb24pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXJhbS5zZXRWYWx1ZUF0VGltZShndWFyZChwYXJhbS52YWx1ZSksIGN1cnJlbnRUaW1lKTtcbiAgICBwcm9jZXNzQXV0b21hdGlvbihwYXJhbSwgdmFsdWUsIGN1cnJlbnRUaW1lKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1NjaGVkdWxlKFxuICAgIHBhcmFtOiBBdWRpb1BhcmFtLFxuICAgIHZhbHVlOiBBcnJheTxBdWRpb1BhcmFtQXV0b21hdGlvbiB8IEF1ZGlvUGFyYW1DdXJ2ZT4sXG4gICAgY3VycmVudFRpbWU6IG51bWJlcixcbik6IHZvaWQge1xuICAgIHZhbHVlLmZvckVhY2goKGF1dG9tYXRpb24pID0+IHtcbiAgICAgICAgaWYgKCdtb2RlJyBpbiBhdXRvbWF0aW9uKSB7XG4gICAgICAgICAgICBwcm9jZXNzQXV0b21hdGlvbihwYXJhbSwgYXV0b21hdGlvbiwgY3VycmVudFRpbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW0uc2V0VmFsdWVDdXJ2ZUF0VGltZShhdXRvbWF0aW9uLnZhbHVlLCBjdXJyZW50VGltZSwgYXV0b21hdGlvbi5kdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VGltZSArPSBhdXRvbWF0aW9uLmR1cmF0aW9uO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQXV0b21hdGlvbihcbiAgICBwYXJhbTogQXVkaW9QYXJhbSxcbiAgICB7dmFsdWUsIG1vZGUgPSAnaW5zdGFudCcsIGR1cmF0aW9ufTogQXVkaW9QYXJhbUF1dG9tYXRpb24sXG4gICAgY3VycmVudFRpbWU6IG51bWJlcixcbik6IHZvaWQge1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICBjYXNlICdleHBvbmVudGlhbCc6XG4gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlICogcGFyYW0udmFsdWUgPCAwKSB7XG4gICAgICAgICAgICAgICAgcGFyYW0ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoZ3VhcmQodmFsdWUpLCBjdXJyZW50VGltZSArIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW0uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZShndWFyZCh2YWx1ZSksIGN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJhbS5zZXRWYWx1ZUF0VGltZShndWFyZCh2YWx1ZSksIGN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2luc3RhbnQnOlxuICAgICAgICAgICAgcGFyYW0uc2V0VmFsdWVBdFRpbWUoZ3VhcmQodmFsdWUpLCBjdXJyZW50VGltZSk7XG4gICAgICAgICAgICBwYXJhbS5zZXRWYWx1ZUF0VGltZShndWFyZCh2YWx1ZSksIGN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICAgICAgICBwYXJhbS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShndWFyZCh2YWx1ZSksIGN1cnJlbnRUaW1lICsgZHVyYXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBndWFyZCh2OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB2IHx8IDAuMDAwMDAwMDE7XG59XG4iXX0=