Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split source in several files. Generate API documentation. Add eslinter. #28

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"env": {
"browser": true,
"node": true
},
"extends": "eslint:recommended",
"rules": {
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
]
}
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ examples/audio
.project
*~
.idea
node_modules/
npm-debug.log
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ VERSION ?= $(error Specify a version for your release (e.g., VERSION=0.5))
FREQUENCY ?= 440

benchmark:
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f dsp.js -f ./bench/bench.js -f ./bench/dft.js
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f dsp.js -f ./bench/bench.js -f ./bench/fft.js
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f dsp.js -f ./bench/bench.js -f ./bench/rfft.js
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f ./dist/dsp.js -f ./bench/bench.js -f ./bench/dft.js
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f ./dist/dsp.js -f ./bench/bench.js -f ./bench/fft.js
${JSSHELL} -m -j -p -e 'var FREQUENCY=${FREQUENCY};' -f ./dist/dsp.js -f ./bench/bench.js -f ./bench/rfft.js
${JSSHELL} -m -j -p -f dsp.js -f ./bench/bench.js -f ./bench/deinterleave.js

clean:
Expand Down
6 changes: 3 additions & 3 deletions bench/bench.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
function benchmark(func, loopCount) {
module.exports = function benchmark(func, loopCount) {
loopCount = loopCount || 10000;

var start = Date.now();

for (var i = 0; i < loopCount; i++) {
for (var i = 0; i < loopCount; i++) {
func();
}

var end = Date.now();
return end - start;
}
};
23 changes: 14 additions & 9 deletions bench/deinterleave.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,37 @@
/* global Float32Array */
/* eslint-disable no-console */
var benchmark = require("./bench");
var dsp = require("..");
var bufferSize = 2048;
var sampleRate = 44100;
// var sampleRate = 44100;

var buffer1 = new Float32Array(bufferSize);
var buffer2 = new Float32Array(bufferSize);
var buffer3 = new Float32Array(bufferSize);
var buffer4 = new Float32Array(bufferSize);

for (var i = 0; i < bufferSize; i++) {
var i;
for (i = 0; i < bufferSize; i++) {
buffer1[i] = (i % 2 === 0) ? -Math.random() : Math.random();
}

for (var i = 0; i < bufferSize; i++) {
for (i = 0; i < bufferSize; i++) {
buffer2[i] = (i % 2 === 0) ? -Math.random() : Math.random();
}

for (var i = 0; i < bufferSize; i++) {
for (i = 0; i < bufferSize; i++) {
buffer3[i] = (i % 2 === 0) ? -Math.random() : Math.random();
}

for (var i = 0; i < bufferSize; i++) {
for (i = 0; i < bufferSize; i++) {
buffer4[i] = (i % 2 === 0) ? -Math.random() : Math.random();
}

var channel;
var temp;

var duration = benchmark(function() {
channel = DSP.deinterleave(DSP.MIX, buffer1);
var duration = benchmark(function() {
channel = dsp.DSP.deinterleave(dsp.DSP.MIX, buffer1);

// cycle buffers
temp = buffer1;
Expand All @@ -36,5 +41,5 @@ var duration = benchmark(function() {
buffer4 = temp;
}, 100000);

print("Channel length: " + channel.length);
print("100000 iterations: " + (duration) + " ms (" + ((duration) / 100000) + "ms per iter)\n");
console.log("Channel length: " + channel.length);
console.log("100000 iterations: " + (duration) + " ms (" + ((duration) / 100000) + "ms per iter)\n");
12 changes: 8 additions & 4 deletions bench/dft.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/* global FREQUENCY */
/* eslint-disable no-console */
var benchmark = require("./bench");
var dsp = require("..");
var bufferSize = 2048;
var sampleRate = 44100;
var frequency = FREQUENCY || 440;

var dft = new DFT(bufferSize, sampleRate);
var osc = new Oscillator(DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var dft = new dsp.DFT(bufferSize, sampleRate);
var osc = new dsp.Oscillator(dsp.DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var signal = osc.generate();

var duration = benchmark(function() { dft.forward(signal); }, 20);
Expand All @@ -16,5 +20,5 @@ for (var i = 0; i < dft.spectrum.length; i++) {

var peakFreq = dft.getBandFrequency(dft.peakBand);

print("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
print("20 DFTs: " + (duration) + " ms (" + ((duration) / 20) + "ms per DFT)\n");
console.log("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
console.log("20 DFTs: " + (duration) + " ms (" + ((duration) / 20) + "ms per DFT)\n");
12 changes: 8 additions & 4 deletions bench/fft.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/* global FREQUENCY */
/* eslint-disable no-console */
var benchmark = require("./bench");
var dsp = require("..");
var bufferSize = 2048;
var sampleRate = 44100;
var frequency = FREQUENCY || 440;

var fft = new FFT(bufferSize, sampleRate);
var osc = new Oscillator(DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var fft = new dsp.FFT(bufferSize, sampleRate);
var osc = new dsp.Oscillator(dsp.DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var signal = osc.generate();

var duration = benchmark(function() { fft.forward(signal); });
Expand All @@ -16,5 +20,5 @@ for (var i = 0; i < fft.spectrum.length; i++) {

var peakFreq = fft.getBandFrequency(fft.peakBand);

print("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
print("10000 FFTs: " + (duration) + " ms (" + ((duration) / 10000) + "ms per FFT)\n");
console.log("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
console.log("10000 FFTs: " + (duration) + " ms (" + ((duration) / 10000) + "ms per FFT)\n");
6 changes: 6 additions & 0 deletions bench/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* eslint-disable */
FREQUENCY = 440;
require("./deinterleave");
require("./dft");
require("./fft");
require("./rfft");
12 changes: 8 additions & 4 deletions bench/rfft.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/* global FREQUENCY */
/* eslint-disable no-console */
var benchmark = require("./bench");
var dsp = require("..");
var bufferSize = 2048;
var sampleRate = 44100;
var frequency = FREQUENCY || 440;

var fft = new RFFT(bufferSize, sampleRate);
var osc = new Oscillator(DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var fft = new dsp.RFFT(bufferSize, sampleRate);
var osc = new dsp.Oscillator(dsp.DSP.SAW, frequency, 1.0, bufferSize, sampleRate);
var signal = osc.generate();

var duration = benchmark(function() { fft.forward(signal); });
Expand All @@ -16,5 +20,5 @@ for (var i = 0; i < fft.spectrum.length; i++) {

var peakFreq = fft.getBandFrequency(fft.peakBand);

print("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
print("10000 FFTs: " + (duration) + " ms (" + ((duration) / 10000) + "ms per FFT)\n");
console.log("Detected peak: " + peakFreq + " Hz (error " + Math.abs(peakFreq - frequency) + " Hz)");
console.log("10000 FFTs: " + (duration) + " ms (" + ((duration) / 10000) + "ms per FFT)\n");
Loading