UNPKG

meyda

Version:

Real-time feature extraction for the web audio api

52 lines (41 loc) 1.4 kB
export function blackman(size) { let blackmanBuffer = new Float32Array(size); let coeff1 = (2 * Math.PI) / (size - 1); let coeff2 = 2 * coeff1; //According to http://uk.mathworks.com/help/signal/ref/blackman.html //first half of the window for (let i = 0; i < size / 2; i++) { blackmanBuffer[i] = 0.42 - 0.5 * Math.cos(i * coeff1) + 0.08 * Math.cos(i * coeff2); } //second half of the window for (let i = Math.ceil(size / 2); i > 0; i--) { blackmanBuffer[size - i] = blackmanBuffer[i - 1]; } return blackmanBuffer; } export function sine(size) { let coeff = Math.PI / (size - 1); let sineBuffer = new Float32Array(size); for (let i = 0; i < size; i++) { sineBuffer[i] = Math.sin(coeff * i); } return sineBuffer; } export function hanning(size) { let hanningBuffer = new Float32Array(size); for (let i = 0; i < size; i++) { // According to the R documentation // http://ugrad.stat.ubc.ca/R/library/e1071/html/hanning.window.html hanningBuffer[i] = 0.5 - 0.5 * Math.cos((2 * Math.PI * i) / (size - 1)); } return hanningBuffer; } export function hamming(size) { let hammingBuffer = new Float32Array(size); for (let i = 0; i < size; i++) { //According to http://uk.mathworks.com/help/signal/ref/hamming.html hammingBuffer[i] = 0.54 - 0.46 * Math.cos(2 * Math.PI * (i / size - 1)); } return hammingBuffer; }