# automation-events **A module which provides an implementation of an automation event list.** [![version](https://img.shields.io/npm/v/automation-events.svg?style=flat-square)](https://www.npmjs.com/package/automation-events) This module provides an implementation of an automation event list to manage the internal state of an [AudioParam](https://webaudio.github.io/web-audio-api/#AudioParam) as defined by the [Web Audio API](https://webaudio.github.io/web-audio-api). ## Usage The `automation-events` module is available on [npm](https://www.npmjs.com/package/automation-events) and can be installed as usual. ```shell npm install automation-events ``` ### AutomationEventList It exports an `AutomationEventList` class which can be imported and used like this: ```js import { AutomationEventList } from 'automation-events'; const automationEventList = new AutomationEventList(1); automationEventList.add({ startTime: 10, type: 'setValue', value: 0 }); // It will return 1 for a time >= 0 and <10. console.log(automationEventList.getValue(5)); // It will return 0 for a time >= 10. console.log(automationEventList.getValue(10)); ``` #### add(automationEvent) This function can be used to add an automation event to the list. All automation events can also be created with utility functions as described below. #### getValue(time) This function returns the value at the given time. #### flush(time) This function will remove all events from the AutomationEventList which are unnecessary to compute values at a time which is greater or equal to the given time. ### utility functions The `automation-events` package also exports utility functions to create all events that can be scheduled on an `AudioParam`. #### createCancelAndHoldAutomationEvent() ```js import { createCancelAndHoldAutomationEvent } from 'automation-events'; createCancelAndHoldAutomationEvent(10); // { cancelTime: 10, type: 'cancelAndHold' } ``` #### createCancelScheduledValuesAutomationEvent() ```js import { createCancelScheduledValuesAutomationEvent } from 'automation-events'; createCancelScheduledValuesAutomationEvent(5); // { cancelTime: 5, type: 'cancelScheduledValues' } ``` #### createExponentialRampToValueAutomationEvent() ```js import { createExponentialRampToValueAutomationEvent } from 'automation-events'; createExponentialRampToValueAutomationEvent(2, 10); // { endTime: 10, type: 'exponentialRampToValue', value: 2 } ``` #### createLinearRampToValueAutomationEvent() ```js import { createLinearRampToValueAutomationEvent } from 'automation-events'; createLinearRampToValueAutomationEvent(-1, 4); // { endTime: 4, type: 'linearRampToValue', value: -1 }; ``` #### createSetTargetAutomationEvent() ```js import { createSetTargetAutomationEvent } from 'automation-events'; createSetTargetAutomationEvent(0.5, 1, 0.1); // { startTime: 1, target: 0.5, timeConstant: 0.1, type: 'setTarget' } ``` #### createSetValueAutomationEvent() ```js import { createSetValueAutomationEvent } from 'automation-events'; createSetValueAutomationEvent(1, 8); // { startTime: 8, type: 'setValue', value: 1 } ``` #### createSetValueCurveAutomationEvent() ```js import { createSetValueCurveAutomationEvent } from 'automation-events'; const values = new Float32Array([1, 0, -1]); createSetValueCurveAutomationEvent(values, 0, 5); // { duration: 5, startTime: 0, type: 'setValueCurve', values } ```