genish.js
Version:
148 lines (118 loc) • 3.77 kB
JavaScript
/* global describe it */
// FIXME: extract non-arithmetic
var assert = require('assert')
var genlib = require( '../dist/index.js' )
var gen = genlib.gen
var sin = genlib.sin
var cos = genlib.cos
var tan = genlib.tan
var asin = genlib.asin
var acos = genlib.acos
var atan = genlib.atan
var mtof = genlib.mtof
var history = genlib.history
var t60 = genlib.t60
var mul = genlib.mul
describe( 'monops', ()=> {
it( 'should generate a value of 0 for sin(0)', ()=> {
let answer = 0,
graph = sin( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of 1 for sin( PI/2 )', ()=> {
let answer = 1,
graph = sin( Math.PI * .5 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of 1 for cos(0)', ()=> {
let answer = 1,
graph = cos( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of 0 for cos( PI/2 )', ()=> {
let answer = 0,
graph = cos( Math.PI * .5 ),
out = gen.createCallback( graph ),
result = out().toFixed( 6 )
assert.equal( result, answer )
})
it( 'should generate a value of 0 for tan(0)', ()=> {
let answer = 0,
graph = tan( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of 1 for tan( PI/4 )', ()=> {
let answer = 1,
graph = tan( Math.PI / 4 ),
out = gen.createCallback( graph ),
result = parseFloat( out().toFixed( 6 ) )
assert.equal( result, answer )
})
it( 'should generate a value of 0 for asin(0)', ()=> {
let answer = 0,
graph = asin( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of PI/2 for asin( 1 )', ()=> {
let answer = Math.PI * .5,
graph = asin( 1 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result.toFixed(6), answer.toFixed(6) )
})
it( 'should generate a value of PI/2 for acos(0)', ()=> {
let answer = Math.PI * .5,
graph = acos( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result.toFixed(6), answer.toFixed(6) )
})
it( 'should generate a value of 0 for acos( 1 )', ()=> {
let answer = 0,
graph = acos( 1 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result.toFixed(6), answer.toFixed(6) )
})
it( 'should generate a value of 0 for atan(0)', ()=> {
let answer = 0,
graph = atan( 0 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result, answer )
})
it( 'should generate a value of PI/4 for atan( 1 )', ()=> {
let answer = Math.PI / 4,
graph = atan( 1 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( result.toFixed(6), answer.toFixed(6) )
})
it( 'should fade 1 to .001 over 10 samples using t60(10)', ()=> {
let answer = .001,
x = history( 1 ),
graph = x.in( mul( x.out, t60(10) ) ),
out = gen.createCallback( graph, 4096 ),
result = 1
for( let i = 0 ; i < 10; i++ ) result = out()
result = parseFloat( result.toFixed( 4 ) )
assert.equal( result, answer )
})
it( 'should convert midi value 69 to 440 (hz, default tuning)', ()=> {
let answer = 440,
graph = mtof( 69 ),
out = gen.createCallback( graph ),
result = out()
assert.equal( answer, result )
})
})