Generate periodic oscillation data.
const oscillate = require('audio-oscillator/sine')
const output = require('web-audio-write')()
// render sine sound stream
let buf = new AudioBuffer({ channels: 2, sampleRate: 44100, length: 1024 })
;(async function frame() {
  await output(oscillate(buf, { frequency: 440 })))
  frame()
})()Generate periodic-function waveform samples into a dst float array / array of arrays / AudioBuffer. If length is provided, a new mono array is created. The phase of consequently generated chunks is aligned, if the same array is passed multiple times.
let oscillate = require('audio-oscillator')
let samples = new Float64Array(1024)
oscillate.sine(samples, 440)
// output array has additional properties of the data
// samples.phase, samples.frequency, samples.detune, samples.sampleRate
// next data phase is aligned with the previous data
oscillate.sine(samples)| Property | Default | Meaning | 
|---|---|---|
| frequency,f | 440 | Frequency of oscillations, in Hz. | 
| detune | 0 | Detune of oscillations -100...+100, in cents. | 
| phase,t | 0 | Normalized initial phase of waveform, 0..1. | 
| sampleRate,rate | 44100 | Sample rate of output data. | 
Available waveforms with their additional options:
| Type | Waveshape | Parameters | 
|---|---|---|
| 'sin' |  | |
| 'cos' |  | |
| 'saw' |  | inverse=false | 
| 'tri' |  | ratio=0.5 | 
| 'rect' |  | ratio=0.5 | 
| 'series' |  | real=[0, 1],imag=[0, 0],normalize=true | 
| 'clausen' |  | limit=10 | 
| 'step' |  | samples=10 | 
- periodic-function − a collection of periodic functions.
© 2017 Dmitry Yv. MIT License
