/cycle-audio-graph

Audio graph driver for Cycle.js based on virtual-audio-graph

Primary LanguageJavaScriptMIT LicenseMIT

cycle-audio-graph

npm version Build Status

Audio graph driver for Cycle.js based on virtual-audio-graph.

Check out Awesome Cycle.js for more Cycle.js resources.

Installation

npm i -S cycle-audio-graph

Usage

makeAudioGraphDriver

The default export of cycle-audio-graph is makeAudioGraphDriver which takes an optional configuration object with two optional key-value pairs:

import makeAudioGraphDriver from 'cycle-audio-graph'

const audioContext = new AudioContext()

// if no configuration object is provided the defaults
// detailed below will be used
makeAudioGraphDriver({
  // if audioContext is not provided then cycle-audio-graph
  // will attempt to construct its own instance
  audioContext,
  // output could be any valid AudioNode destination.
  // If not provided then cycle-audio-graph will use
  // the destination of its audioContext instance
  output: audioContext.destination,
})

Very Basic Example

import {run} from '@cycle/core'
import makeAudioGraphDriver from 'cycle-audio-graph'

const audioContext = new AudioContext()

const main = responses => {
  // ... example$ could be some sort of user input
  graph$ = example$.map(_ => {
    // ...
    const {currentTime} = audioContext
    return {
      0: ['gain', 'output', {gain: 0.2}],
      1: ['oscillator', 0, {
        type: 'square',
        frequency: 440,
        startTime: currentTime + 1,
        stopTime: currentTime + 2,
      }],
    }
  })
  return {
    audioGraph: graph$,
    // ... etc.
  }
}

const drivers = {
  audioGraph: makeAudioGraphDriver({
    audioContext,
    output: audioContext.destination,
  }),
  // ... etc.
}

run(main, drivers)

virtual-audio-graph

For more info on the graph objects in the graph$ check out the documentation for virtual-audio-graph.