Skip to content

Instantly share code, notes, and snippets.

@NHQ

NHQ/fft.js Secret

Last active January 11, 2016 02:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NHQ/6ad423f367fd1de9b9a2 to your computer and use it in GitHub Desktop.
Save NHQ/6ad423f367fd1de9b9a2 to your computer and use it in GitHub Desktop.
I want to be able to find arbitrary freq values.
var nda = require('ndarray')
var fft = require('ndarray-fft')
var mag = require('ndarray-complex').mag
var sr = 48000
var range = sr / 2
var ab = new Float32Array(sr)
var out = new Float32Array(sr)
for(var x = 0; x < sr; x++){
var signal = Math.sin((x / sr) * Math.PI * 2 * 441) * 4
signal += Math.sin((x / sr) * Math.PI * 2 * 33) / 4
ab[x] = signal
}
ab = nda(ab, [sr, 1])
out = nda(out, [sr, 1])
fft(1, ab, out)
mag(ab, ab, out)
var pd, pfreq
for(var i = 0; i < ab.data.length; i++){
var freq = i * sr / ab.data.length
var d = ab.data[i]
if(freq === 441) console.log(d) // getting 36000000
if(freq === 33) console.log(d) // getting 9216001024
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment