Decibel meter for detecting noise levels from microphone via Web Audio API
npm install decibel-meterDecibelMeter allows you to monitor the noise level using your device's microphone(s) from within a web page or node-webkit application.
``javascript`
// connect to first audio input device found
new DecibelMeter.listenTo(0, (dB, percent, value) => console.log(dB))
I have tested this in Chrome and Firefox for Windows and Android.
iOS support is not available yet.
You can try the DecibelMeter now: DecibelMeter example
npm install --save decibel-meter
Import DecibelMeter as ES6 module
`javascript`
import DecibelMeter from 'decibel-meter'
Or, using a script tag
`html`
Create a decibel meter
`javascript`
const meter = new DecibelMeter('unique-id');
Get a list of audio sources on the device
`javascript`
// resolves with array of MediaDeviceInfo objects, filtered by type: audioinput
meter.sources.then(sources => console.log(sources))
Connect to an audio source
`javascript
// first method
meter.sources.then(sources => {
meter.connect(sources[0])
})
// second method
meter.connectTo('default') // find audioinput by deviceId, and connect if possible
meter.connectTo(0) // find the first audioinput, and connect if possible
// handling errors
meter.connectTo('not-real').catch(err => alert('Connection Error'))
`
Do something with the decibel data
`javascript
const level = document.getElementById('db-level')
meter.on('sample', (dB, percent, value) => level.textContent = ${dB} dB) // display current dB level`
Start listening to audio source
`javascript`
meter.listen() // "sample" callback set above will now receive data
Stop listening to audio source
`javascript`
meter.stopListening()
Disconnect from the audio source entirely
`javascript`
meter.disconnect() // returns Promise
Connect to a source, add a 'sample' event listener, and start listening to the connected source, in one terse command
`javascript${dB} dB
meter.listenTo(0, (dB, percent, value) => level.textContent = )`
Multiple meters on one page
`javascript
var meter1 = new DecibelMeter('meter-1')
var meter2 = new DecibelMeter('meter-2')
DecimelMeter.meters // all meters created on this page
meter1 === DecimelMeter.getMeterById('meter-1'); // true
`
DecibelMeter has its own events dispatcher, and supports the following Events
- changeconnect
- disconnect
- sample
-
change - the meter's listening state has changed
`javascript`
meter.on('change', listening => {
if (listening)
level.classList.add('active')
else
level.classList.remove('active')
})
connect - the meter successfully connected to an audioinput
`javascript
meter.on('connect', (source, previous) => {
console.log(
Connected to ${source.label}
Disconnected from ${previous.label}`
)
})
disconnect - the meter was disconnected from a source
sample` - the meter received decibel data from the source