@ng-web-apis/audio
Version:
This is a library for declarative use of Web Audio API with Angular
58 lines • 8.14 kB
JavaScript
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=