microphone-analyzer is a polymer element that enables document microphone input data analysis.
Dependencies:
- Polymer
- ddcast/microphone (fork of srubin/microphone)
Command line:
bower install ddcast/microphone-analyzer
Include in your document <head>
:
<script src="components/platform/platform.js"></script>
<script src="components/microphone/microphone.js"></script>
<link rel="import" href="components/polymer/polymer.html">
<link rel="import" href="components/microphone-analyzer/microphone-analyzer.html">
- beta-0.0.3
startStream
api method now reconnects stream at JavaScriptNode.
- beta-0.0.2
- Improved element lifecycle management.
- Included fork of srubin/microphone that patches issue around multiple AudioContext instances.
- Added api methods
killStream
andstartStream
which respectively disconnects and connects media and processing node streams.
The air
event is fired at the interaval specified by the length
option. event.detail
will contain the following properties:
data
: audio stream datarms
: current root mean squarevalue
: rms valueaudioRange
: descriptive range of current volume level (based on matched<audio-range>
)index
: index of matched<audio-range>
elementinnerHTML
: markup or textvalue
: range array
Element attributes (based on srubin/microphone):
length
: the length (in seconds) of audio to return in each callback (default: .5)overlap
: the amount of overlap in the audio data between successive callbacks (For example, overlap of .25 means the last 25% of the audio data from one callback will be the first 25% of the data in the next callback). (default: .5. Must be between 0 and 1, inclusive)channels
: 1 (mono) or 2 (stereo) (default: 1)
HTML:
<microphone-analyzer length=".5" overlap=".25" channels="1">
<audio-range start="0" end="1"><em>speak up!</em></audio-range>
<audio-range start="1.01" end="2">quiet</audio-range>
<audio-range start="2.01" end="3">normal</audio-range>
<audio-range start="3.01" end="4">loud</audio-range>
<audio-range start="4.01" end="5">very loud</audio-range>
</microphone-analyzer>
JavaScript:
var microphoneAnalyzer = document.querySelector('microphone-analyzer');
microphoneAnalyzer.valuefilter = function (rms) {
var vol = rms * 100;
return vol;
};
microphoneAnalyzer.addEventListener('air', function(e) {
console.log(e.detail.value);
});