Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
audio-contour
Advanced tools
A 5 stage audio envelope generator. You can see the demo here:
var Contour = require('audio-contour')
var ac = new AudioContext()
var vca = ac.createGain()
var osc = ac.createOscillator()
osc.connect(vca)
var env = Contour(ac, { t1: 0.2, t4: 0.5 })
env.connect(vca.gain)
env.start()
env.onstart = function (when) { osc.start(when) }
env.onended = function () { osc.stop() }
env.stop(ac.currentTime + 3)
This module implements a alpha-juno style envelope generator:
If you want to learn more about envelope generators, read this
There are a lot of envelope generator implementations. Here are the standalone ones I know (there are several audio libraries that implements them):
Why choose this library over the others:
onstart
and onended
eventsWhy don't choose this library:
Via npm: npm i --save audio-contour
Create an envelope
To create an envelope use the Contour
function:
var ac = new AudioContext()
var Contour = require('audio-contour')
var env = Contour(ac)
You can pass options to that function:
var env = Contour(ac, { t1: 1 })
or change them on the object before start:
var env = Contour(ac)
env.t1 = 1
env.t4 = 0.5
Apply the envelope
To apply the envelope, you have to connect it to something. For example, you can create a vca (voltage controlled amplifier) connecting it to a gain's gain param:
var vca = ac.createGain()
env.connect(vca.gain)
Or create a vcf (voltage controlled filter) ocnnecting it to a filter frequency param:
var vcf = ac.createBiquadFilter()
env.connect(vcf.frequency)
Start and stop the envelope
You can use start
and stop
function to the envelope:
var now = ac.currentTime
env.start(now)
// suppose your audio source is an oscillator
osc.start(now)
var finish = env.stop(now + 1)
The stop
function returns the time when the release phase ended. Can be used to stop the audio sources:
osc.start(finish)
Remeber that if duration is not Infinity
, the envelope will stop automatically:
var env = Contour(ac)
env.duration = 1
env.start() // => it will automatically stop after 1 second
Events
Two events are supported: onstart
and onended
. The onstart
event handler will be trigger at same time as the start
function of the envelope, so it receives a time parameter. The onended
event handler will be called when the envelope effectively stops:
env.duration = 1
env.onstart = function (when) { osc.start(when) }
env.onended = function () { osc.stop(ac.currentTime) }
env.start() // since duration is not Infinity, both envent handlers will be called
Create a standard ADSR
When t3
is 0, the audio-contour behaves like a normal ADSR envelope.
Additionally, you can use the standard attack
, decay
, sustain
and release
parameters in the constructor to build the envelope:
var env = Contour(ac, { attack: 0.1, decay: 0.2, sustain: 0.8, release: 0.5 })
env.t1 // => 0.1 (the attack)
env.t2 // => 0.2 (the decay)
env.t3 // => 0
env.t4 // => 0.5 (the release)
To run the tests, clone this repo and: npm install && npm test
.
To run the example you need watchify installed: npm install -g watchify
. Then, move to examples
directory and type: npm install && npm start
MIT License
FAQs
A 5 stage audio envelope generator
The npm package audio-contour receives a total of 1 weekly downloads. As such, audio-contour popularity was classified as not popular.
We found that audio-contour demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.