https://github.com/benji6/cycle-audio-graph
Audio graph driver for Cycle.js based on virtual-audio-graph
https://github.com/benji6/cycle-audio-graph
cyclejs web-audio web-audio-api
Last synced: 8 months ago
JSON representation
Audio graph driver for Cycle.js based on virtual-audio-graph
- Host: GitHub
- URL: https://github.com/benji6/cycle-audio-graph
- Owner: benji6
- License: mit
- Created: 2015-10-27T12:07:27.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-04-10T22:47:43.000Z (over 3 years ago)
- Last Synced: 2025-03-29T10:04:03.927Z (8 months ago)
- Topics: cyclejs, web-audio, web-audio-api
- Language: JavaScript
- Homepage:
- Size: 46.9 KB
- Stars: 19
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cyclejs - benji6/cycle-audio-graph ★12 - A Cycle.js Driver for manipulating the Web Audio API using [virtual-audio-graph](https://github.com/benji6/virtual-audio-graph) (Libraries / Drivers)
README
# cycle-audio-graph
[](https://badge.fury.io/js/cycle-audio-graph)
[](https://travis-ci.org/benji6/cycle-audio-graph)
Audio graph driver for [Cycle.js](https://github.com/cyclejs) based on [virtual-audio-graph](https://github.com/benji6/virtual-audio-graph).
Check out [Awesome Cycle.js](https://github.com/vic/awesome-cyclejs) for more Cycle.js resources.
## Installation
```bash
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:
```javascript
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
```javascript
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](https://github.com/benji6/virtual-audio-graph).