Awesome
<img src="https://andromeda.netlify.com/assets/logo.svg" />Andromeda is a pluggable digital audio workstation built on open web technologies
Plugin API
NB this API should be considered pre-alpha
Effect plugin API
EffectPlugin
should be a constructor or factory function which is newed up with an object with the following props:
audioContext
-instanceof AudioContext
reference to the audioContext instance used by Andromedabpm
-Number
- current bpm
new EffectPlugin({ audioContext, bpm });
effectPlugin
instances should then expose the following API:
connnect
-Function
- required method - to be implemented in the same manner asAudioNode.connect
destination
-AudioNode | AudioParam
- required property - an unchanging reference to an object which is a valid argument forAudioNode.connect
disconnect
-Function
- required method - to be implemented in the same manner asAudioNode.disconnect
render
-Function
- required method - called with a DOM element when the user wishes to view and possibly edit parameters in thepluginsetBpm
-Function | undefined
- optional method - called with a number representing the global bpm whenever it changes.
Instrument plugin API
InstrumentPlugin
should be a constructor or factory function which is newed up with an object with the following props:
audioContext
-instanceof AudioContext
reference to the audioContext instance used by Andromedabpm
-Number
- current bpm
new InstrumentPlugin({ audioContext, bpm });
instrumentPlugin
instances should then expose the following API:
connnect
-Function
- required method - to be implemented in the same manner asAudioNode.connect
disconnect
-Function
- required method - to be implemented in the same manner asAudioNode.disconnect
noteStart
-Function | undefined
- optional method - called with a note object (see specification below). If available then controllers will be able to control this pluginnotesStart
-Function | undefined
- optional method - called with an array of note objects (see specification below). If unavailable controllers will attempt to callnoteStart
for each noteObj. Some plugin implementations may have performance benefits to batching the starting of notes.noteStop
-Function | undefined
- optional method - called with the id of the note to stop. If available then controllers will be able to stop notes which are currently playingnoteModify
-Function | undefined
- optional method - called with a note object (see specification below). If available then controllers will be able to modify notes which are currently playingrender
-Function
- required method - called with a DOM element when user wishes to view and possibly modify parameters within the pluginsetBpm
-Function | undefined
- optional method - called with a number representing the global bpm whenever it changes.
Note object specification
Instrument plugins receive note objects which have the following properties:
frequency
-Number
- frequency in Hz of the notegain
-Number
- gain of the note using the same basis asGainNode
id
-String
- unique id for this note which is essential for keeping track of which notes are playing and which are to be stoppedstartTime
-Number | undefined
- optional property, if specified it is the time at which the note is to be started measured on the same basis asaudioContext.currentTime
, if not specified the note is expected to start immediatelystopTime
-Number | undefined
- optional property, if specified it is the time at which the note is to be stopped measured on the same basis asaudioContext.currentTime
, if not specified the note is expected to stop immediately
More info
Built using virtual-audio-graph