goertzel-filter
v2.1.2
Published
goertzel-filter implementation
Downloads
34
Maintainers
Readme
goertzel-filter
a goertzel algorithm implementation optimized for asm.js
The Goertzel algorithm is a Digital Signal Processing (DSP) technique that provides a means for efficient evaluation of individual terms of the Discrete Fourier Transform (DFT),
This package implements the goertzel algorithm in asm.js. On browsers that support asm.js this package is designed to run as fast the math as possible. So it can be called repeatedly in real-time implementations such as goertzel-node
Usage
This can run both in a browser or in nodejs.
nodejs
npm install goertzel-filter
var gf = require('goertzel-filter');
var frequencyToDetect = 440;
var sampleRate = 44100;
var chunkSize = 128;
gf.init(frequencyToDetect, sampleRate, chunkSize);
var sample = new Float32Array(chunkSize);
// fill up samples with some data here.
var result = gf.run(sample);
browser
A standalone browserified file is also available here, which creates a global named GoertzelFilter
when included in the html.
<script src="/dist/goertzel.js"></script>
<script>
var gf = GoertzelFilter;
var frequencyToDetect = 440;
var sampleRate = 44100;
var chunkSize = 128;
gf.init(frequencyToDetect, sampleRate, chunkSize);
var sample = new Float32Array(chunkSize);
// fill up samples with some data here.
var result = gf.run(sample);
</script>
API
Methods
init
: Initializes the goertzel algorithm to detect a specific frequency, given a sampling rate and chunk size.- eg :
gf.init(frequencyToDetect, sampleRate, chunkSize);
- arguments:
frequencyToDetect
: Number - The frequency (in Hz) to be detected.sampleRate
: Number - Sampling rate of the signal being analyzed.chunkSize
: Number - Length of data to be processed during each run of the algorithm.
run
: Run the goertzel algorithm on the given chunk of data to determine if it has any energy in the frequency to be detected. Returns the power of the signal in that frequency bucket. Can be called multiple times on the successive chunks of a stream of data.- eg :
gf.run(sample);
arguments:
sample
: Float32Array - An array of data to be analyzed. The size of the array has to be equal to thechunkSize
used during theinit
.
returns: Returns the power of the signal at
frequencyToDetect
. The higher the number the more (relative) power was detected at that frequency. This value is normalised tochunkSize
and should be about0.25
for a perfect match.
License
MIT
See License file