Skip to content

Instantly share code, notes, and snippets.

@NHQ
Created January 24, 2016 02:58
Show Gist options
  • Save NHQ/47dd12945081b78f38cf to your computer and use it in GitHub Desktop.
Save NHQ/47dd12945081b78f38cf to your computer and use it in GitHub Desktop.
requirebin sketch
edits = [function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/3) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/4) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 144 / 60
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = 1000 % 1
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t % 1
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10000 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 20 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (100 % 10) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (100 % 5) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = (t * (100 % 5)) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = (t * (100)) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (10 % 1) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (10) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (Math.floor(t * 10) % 1) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (Math.floor(t * 10 % 1)) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (10 % 1) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * (10) % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 100
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 1000
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 1000 % 100
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 100
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 100 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 10
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 1
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 100
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 11
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % 12
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( t % 12 )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( t % 12 ) % 1
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( t % 12 ) % 2
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( t % 2 )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( t % 12 )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 24 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 6 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 4 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t += t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % Math.floor( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % ( 12 % t )
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 12 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 4 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 19 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 12 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 13 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 11 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},function(){require('cheatcode')
synth.disconnect()
specialX = function(t){
t *= 72 / 60 / 2 / 2
t = t * 10 % 12 % t
return oz.sine(t, 120 + oz.triangle(t, amod(0, .1, t, 1/2) * oz.triangle(t, 2)))
+ oz.sine(t, 360 * 2 + (amod(0, .1, t, 1/3) * oz.triangle(t, 3)))
}},];document.body.addEventListener("keydown", function(){edits.shift()()})
This file has been truncated, but you can view the full file.
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],
24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){
var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){
if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);
self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");
var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],
"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",
2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale);
}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){
if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){
var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],
blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;
fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");
module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");
amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);
return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);
if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){
if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));
skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){
var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){
return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){
module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;
noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4
}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;
var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;
key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]));
},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.exports=makeStrangles;function makeStrangles(opts){if(!opts)opts={};if(typeof opts=="number"){opts={f:opts}}for(var i in defs){if(!opts[i])opts[i]=defs[i]}return new chimera(opts);function chimera(opts){for(var i in opts)this[i]=opts[i];this.ring=function(t,u,s){var x=1,y=0;u=u||0;s=s||1;while(x<=s*4.67-1){y+=oz[this.wave](t,this.f*x)*gus.general(x-1,u,s);x*=Math.pow(2,this.m)}return y}}}},{jgauss:10,oscillators:14}],10:[function(require,module,exports){var sqrtau=Math.sqrt(Math.PI*2);module.exports.standard=standard;
module.exports.general=general;function standard(x){return Math.pow(Math.E,-(1/2)*Math.pow(x,2))/sqrtau}function general(x,u,s){return 1/s*standard((x-u)/s)}},{}],11:[function(require,module,exports){module.exports=function(pts){return function(t){for(var a=pts;a.length>1;a=b){for(var i=0,b=[],j;i<a.length-1;i++){for(b[i]=[],j=1;j<a[i].length;j++){b[i][j]=a[i][j]*(1-t)+a[i+1][j]*t}}}return a[0][1]}}},{}],12:[function(require,module,exports){var amod=require("./amod.js");var tnorm=require("normalize-time");module.exports=function(pts,durs){pts=pts.map(amod);var t=0;var totalDuration=durs.reduce(function(e,i){return e+i},0);var tdNormFN=tnorm(t,totalDuration);var s=0;var end=t+totalDuration;var durFNS=durs.map(function(e,i){var x=tnorm(t+s,e);s+=e;return x});var dp=0;var durpercent=durs.map(function(e,i){var x=e/totalDuration+dp;dp+=e/totalDuration;return x});var tn,n,i,v=0,fn=0;var envelope=function(t){tn=tdNormFN(t);if(0>tn||tn>1)return 0;fn=durpercent.reduce(function(p,e,i,d){return(d[i-1]||0)<=tn&&tn<=e?i:p},0);v=pts[fn](durFNS[fn](t));return v};return envelope;function xenvelope(t,sustain){tn=tdNormFN(t);if(0>=tn||tn>=1)return 0;if(tn>durpercent[fn])fn=fn+1>pts.length-1?0:fn+1;v=pts[fn](durFNS[fn](t));return v}}},{"./amod.js":11,"normalize-time":13}],13:[function(require,module,exports){module.exports=function(start,dur,min,max){if(!min)min=0;if(!max)max=1;var end=start+dur;var d=end-start;var r=max-min;return function(time){x=min+(time-start)*r/d;if(x>1){if(time<end)x=Number("."+x.toString().split(".").join(""))}return x}}},{}],14:[function(require,module,exports){var OZ=module.exports;var tau=Math.PI*2;OZ.sine=sine;OZ.saw=saw;OZ.saw_i=saw_i;OZ.triangle=triangle;OZ.triangle_s=triangle_s;OZ.square=square;function sine(t,f){return Math.sin(t*tau*f)}function saw(t,f){var n=t%(1/f)*f%1;return-1+2*n}function saw_i(t,f){var n=t%(1/f)*f%1;return 1-2*n}function triangle(t,f){var n=t%(1/f)*f%1;return n<.5?-1+2*(2*n):1-2*(2*n)}function triangle_s(t,f){var n=t%(1/f)*f%1;var s=Math.abs(Math.sin(t));return n<s?-1+2*(2*(n/s)):1-2*(2*(n/s))}function square(t,f){return t%(1/f)*f%1>.5?1:-1}},{}],15:[function(require,module,exports){var Note=require("./lib/note");var Interval=require("./lib/interval");var Chord=require("./lib/chord");var Scale=require("./lib/scale");function intervalConstructor(from,to){if(typeof from==="string")return Interval.toCoord(from);if(typeof to==="string"&&from instanceof Note)return Interval.from(from,Interval.toCoord(to));if(to instanceof Interval&&from instanceof Note)return Interval.from(from,to);if(to instanceof Note&&from instanceof Note)return Interval.between(from,to);throw new Error("Invalid parameters")}intervalConstructor.toCoord=Interval.toCoord;intervalConstructor.from=Interval.from;intervalConstructor.between=Interval.between;intervalConstructor.invert=Interval.invert;function noteConstructor(name,duration){if(typeof name==="string")return Note.fromString(name,duration);else return new Note(name,duration)}noteConstructor.fromString=Note.fromString;noteConstructor.fromKey=Note.fromKey;noteConstructor.fromFrequency=Note.fromFrequency;noteConstructor.fromMIDI=Note.fromMIDI;function chordConstructor(name,symbol){if(typeof name==="string"){var root,octave;root=name.match(/^([a-h])(x|#|bb|b?)/i);if(root&&root[0]){octave=typeof symbol==="number"?symbol.toString(10):"4";return new Chord(Note.fromString(root[0].toLowerCase()+octave),name.substr(root[0].length))}}else if(name instanceof Note)return new Chord(name,symbol);throw new Error("Invalid Chord. Couldn't find note name")}function scaleConstructor(tonic,scale){tonic=tonic instanceof Note?tonic:teoria.note(tonic);return new Scale(tonic,scale)}var teoria={note:noteConstructor,chord:chordConstructor,interval:intervalConstructor,scale:scaleConstructor,Note:Note,Chord:Chord,Scale:Scale,Interval:Interval};require("./lib/sugar")(teoria);exports=module.exports=teoria},{"./lib/chord":16,"./lib/interval":17,"./lib/note":19,"./lib/scale":20,"./lib/sugar":21}],16:[function(require,module,exports){var daccord=require("daccord");var knowledge=require("./knowledge");var Note=require("./note");var Interval=require("./interval");function Chord(root,name){if(!(this instanceof Chord))return new Chord(root,name);name=name||"";this.name=root.name().toUpperCase()+root.accidental()+name;this.symbol=name;this.root=root;this.intervals=[];this._voicing=[];var bass=name.split("/");if(bass.length===2&&bass[1].trim()!=="9"){name=bass[0];bass=bass[1].trim()}else{bass=null}this.intervals=daccord(name).map(Interval.toCoord);this._voicing=this.intervals.slice();if(bass){var intervals=this.intervals,bassInterval,note;note=Note.fromString(bass+(root.octave()+1));bassInterval=Interval.between(root,note);bass=bassInterval.simple();bassInterval=bassInterval.invert().direction("down");this._voicing=[bassInterval];for(var i=0,length=intervals.length;i<length;i++){if(!intervals[i].simple().equal(bass))this._voicing.push(intervals[i])}}}Chord.prototype={notes:function(){var root=this.root;return this.voicing().map(function(interval){return root.interval(interval)})},simple:function(){return this.notes().map(function(n){return n.toString(true)})},bass:function(){return this.root.interval(this._voicing[0])},voicing:function(voicing){if(!voicing){return this._voicing}this._voicing=[];for(var i=0,length=voicing.length;i<length;i++){this._voicing[i]=Interval.toCoord(voicing[i])}return this},resetVoicing:function(){this._voicing=this.intervals},dominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P5"),additional)},subdominant:function(additional){additional=additional||"";return new Chord(this.root.interval("P4"),additional)},parallel:function(additional){additional=additional||"";var quality=this.quality();if(this.chordType()!=="triad"||quality==="diminished"||quality==="augmented"){throw new Error("Only major/minor triads have parallel chords")}if(quality==="major"){return new Chord(this.root.interval("m3","down"),"m")}else{return new Chord(this.root.interval("m3","up"))}},quality:function(){var third,fifth,seventh,intervals=this.intervals;for(var i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===3){third=intervals[i]}else if(intervals[i].number()===5){fifth=intervals[i]}else if(intervals[i].number()===7){seventh=intervals[i]}}if(!third){return}third=third.direction()==="down"?third.invert():third;third=third.simple().toString();if(fifth){fifth=fifth.direction==="down"?fifth.invert():fifth;fifth=fifth.simple().toString()}if(seventh){seventh=seventh.direction==="down"?seventh.invert():seventh;seventh=seventh.simple().toString()}if(third==="M3"){if(fifth==="A5"){return"augmented"}else if(fifth==="P5"){return seventh==="m7"?"dominant":"major"}return"major"}else if(third==="m3"){if(fifth==="P5"){return"minor"}else if(fifth==="d5"){return seventh==="m7"?"half-diminished":"diminished"}return"minor"}},chordType:function(){var length=this.intervals.length,interval,has,invert,i,name;if(length===2){return"dyad"}else if(length===3){has={first:false,third:false,fifth:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}name=has.first&&has.third&&has.fifth?"triad":"trichord"}else if(length===4){has={first:false,third:false,fifth:false,seventh:false};for(i=0;i<length;i++){interval=this.intervals[i];invert=interval.invert();if(interval.base()in has){has[interval.base()]=true}else if(invert.base()in has){has[invert.base()]=true}}if(has.first&&has.third&&has.fifth&&has.seventh){name="tetrad"}}return name||"unknown"},get:function(interval){if(typeof interval==="string"&&interval in knowledge.stepNumber){var intervals=this.intervals,i,length;interval=knowledge.stepNumber[interval];for(i=0,length=intervals.length;i<length;i++){if(intervals[i].number()===interval){return this.root.interval(intervals[i])}}return null}else{throw new Error("Invalid interval name")}},interval:function(interval){return new Chord(this.root.interval(interval),this.symbol)},transpose:function(interval){this.root.transpose(interval);this.name=this.root.name().toUpperCase()+this.root.accidental()+this.symbol;return this},toString:function(){return this.name}};module.exports=Chord},{"./interval":17,"./knowledge":18,"./note":19,daccord:23}],17:[function(require,module,exports){var knowledge=require("./knowledge");var vector=require("./vector");var toCoord=require("interval-coords");function Interval(coord){if(!(this instanceof Interval))return new Interval(coord);this.coord=coord}Interval.prototype={name:function(){return knowledge.intervalsIndex[this.number()-1]},semitones:function(){return vector.sum(vector.mul(this.coord,[12,7]))},number:function(){return Math.abs(this.value())},value:function(){var without=vector.sub(this.coord,vector.mul(knowledge.sharp,Math.floor((this.coord[1]-2)/7)+1)),i,val;i=knowledge.intervalFromFifth[without[1]+5];val=knowledge.stepNumber[i]+(without[0]-knowledge.intervals[i][0])*7;return val>0?val:val-2},type:function(){return knowledge.intervals[this.base()][0]<=1?"perfect":"minor"},base:function(){var fifth=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()))[1],name;fifth=this.value()>0?fifth+5:-(fifth-5)%7;fifth=fifth<0?knowledge.intervalFromFifth.length+fifth:fifth;name=knowledge.intervalFromFifth[fifth];if(name==="unison"&&this.number()>=8)name="octave";return name},direction:function(dir){if(dir){var is=this.value()>=1?"up":"down";if(is!==dir)this.coord=vector.mul(this.coord,-1);return this}else return this.value()>=1?"up":"down"},simple:function(ignore){var simple=knowledge.intervals[this.base()];simple=vector.add(simple,vector.mul(knowledge.sharp,this.qualityValue()));if(!ignore)simple=this.direction()==="down"?vector.mul(simple,-1):simple;return new Interval(simple)},isCompound:function(){return this.number()>8},octaves:function(){var without,octaves;if(this.direction()==="up"){without=vector.sub(this.coord,vector.mul(knowledge.sharp,this.qualityValue()));octaves=without[0]-knowledge.intervals[this.base()][0]}else{without=vector.sub(this.coord,vector.mul(knowledge.sharp,-this.qualityValue()));octaves=-(without[0]+knowledge.intervals[this.base()][0])}return octaves},invert:function(){var i=this.base();var qual=this.qualityValue();var acc=this.type()==="minor"?-(qual-1):-qual;var coord=knowledge.intervals[knowledge.intervalsIndex[9-knowledge.stepNumber[i]-1]];coord=vector.add(coord,vector.mul(knowledge.sharp,acc));return new Interval(coord)},quality:function(lng){var quality=knowledge.alterations[this.type()][this.qualityValue()+2];return lng?knowledge.qualityLong[quality]:quality},qualityValue:function(){if(this.direction()==="down")return Math.floor((-this.coord[1]-2)/7)+1;else return Math.floor((this.coord[1]-2)/7)+1},equal:function(interval){return this.coord[0]===interval.coord[0]&&this.coord[1]===interval.coord[1]},greater:function(interval){var semi=this.semitones();var isemi=interval.semitones();return semi===isemi?this.number()>interval.number():semi>isemi},smaller:function(interval){return!this.equal(interval)&&!this.greater(interval)},add:function(interval){return new Interval(vector.add(this.coord,interval.coord))},toString:function(ignore){var number=ignore?this.number():this.value();return this.quality()+number}};Interval.toCoord=function(simple){var coord=toCoord(simple);if(!coord)throw new Error("Invalid simple format interval");return new Interval(coord)};Interval.from=function(from,to){return from.interval(to)};Interval.between=function(from,to){return new Interval(vector.sub(to.coord,from.coord))};Interval.invert=function(sInterval){return Interval.toCoord(sInterval).invert().toString()};module.exports=Interval},{"./knowledge":18,"./vector":22,"interval-coords":27}],18:[function(require,module,exports){module.exports={notes:{c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]},intervals:{unison:[0,0],second:[3,-5],third:[2,-3],fourth:[1,-1],fifth:[0,1],sixth:[3,-4],seventh:[2,-2],octave:[1,0]},intervalFromFifth:["second","sixth","third","seventh","fourth","unison","fifth"],intervalsIndex:["unison","second","third","fourth","fifth","sixth","seventh","octave","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"],fifths:["f","c","g","d","a","e","b"],accidentals:["bb","b","","#","x"],sharp:[-4,7],A4:[3,3],durations:{.25:"longa",.5:"breve",1:"whole",2:"half",4:"quarter",8:"eighth",16:"sixteenth",32:"thirty-second",64:"sixty-fourth",128:"hundred-twenty-eighth"},qualityLong:{P:"perfect",M:"major",m:"minor",A:"augmented",AA:"doubly augmented",d:"diminished",dd:"doubly diminished"},alterations:{perfect:["dd","d","P","A","AA"],minor:["dd","d","m","M","A","AA"]},symbols:{min:["m3","P5"],m:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"]},chordShort:{major:"M",minor:"m",augmented:"aug",diminished:"dim","half-diminished":"7b5",power:"5",dominant:"7"},stepNumber:{unison:1,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,octave:8,ninth:9,eleventh:11,thirteenth:13},intervalSolfege:{dd1:"daw",d1:"de",P1:"do",A1:"di",AA1:"dai",d2:"raw",m2:"ra",M2:"re",A2:"ri",AA2:"rai",d3:"maw",m3:"me",M3:"mi",A3:"mai",dd4:"faw",d4:"fe",P4:"fa",A4:"fi",AA4:"fai",dd5:"saw",d5:"se",P5:"so",A5:"si",AA5:"sai",d6:"law",m6:"le",M6:"la",A6:"li",AA6:"lai",d7:"taw",m7:"te",M7:"ti",A7:"tai",dd8:"daw",d8:"de",P8:"do",A8:"di",AA8:"dai"}}},{}],19:[function(require,module,exports){var scientific=require("scientific-notation");var helmholtz=require("helmholtz");var knowledge=require("./knowledge");var vector=require("./vector");var Interval=require("./interval");function pad(str,ch,len){for(;len>0;len--){str+=ch}return str}function Note(coord,duration){if(!(this instanceof Note))return new Note(coord,duration);duration=duration||{};this.duration={value:duration.value||4,dots:duration.dots||0};this.coord=coord}Note.prototype={octave:function(){return this.coord[0]+knowledge.A4[0]-knowledge.notes[this.name()][0]+this.accidentalValue()*4},name:function(){return knowledge.fifths[this.coord[1]+knowledge.A4[1]-this.accidentalValue()*7+1]},accidentalValue:function(){return Math.round((this.coord[1]+knowledge.A4[1]-2)/7)},accidental:function(){return knowledge.accidentals[this.accidentalValue()+2]},key:function(white){if(white)return this.coord[0]*7+this.coord[1]*4+29;else return this.coord[0]*12+this.coord[1]*7+49},midi:function(){return this.key()+20},fq:function(concertPitch){concertPitch=concertPitch||440;return concertPitch*Math.pow(2,(this.coord[0]*12+this.coord[1]*7)/12)},chroma:function(){var value=(vector.sum(vector.mul(this.coord,[12,7]))-3)%12;return value<0?value+12:value},interval:function(interval){if(typeof interval==="string")interval=Interval.toCoord(interval);if(interval instanceof Interval)return new Note(vector.add(this.coord,interval.coord));else if(interval instanceof Note)return new Interval(vector.sub(interval.coord,this.coord))},transpose:function(interval){this.coord=vector.add(this.coord,interval.coord);return this},helmholtz:function(){var octave=this.octave();var name=this.name();name=octave<3?name.toUpperCase():name.toLowerCase();var padchar=octave<3?",":"'";var padcount=octave<2?2-octave:octave-3;return pad(name+this.accidental(),padchar,padcount)},scientific:function(){return this.name().toUpperCase()+this.accidental()+this.octave()},enharmonics:function(oneaccidental){var key=this.key(),limit=oneaccidental?2:3;return["m3","m2","m-2","m-3"].map(this.interval.bind(this)).filter(function(note){var acc=note.accidentalValue();var diff=key-(note.key()-acc);if(diff<limit&&diff>-limit){note.coord=vector.add(note.coord,vector.mul(knowledge.sharp,diff-acc));return true}})},solfege:function(scale,showOctaves){var interval=scale.tonic.interval(this),solfege,stroke,count;if(interval.direction()==="down")interval=interval.invert();if(showOctaves){count=(this.key(true)-scale.tonic.key(true))/7;count=count>=0?Math.floor(count):-Math.ceil(-count);stroke=count>=0?"'":","}solfege=knowledge.intervalSolfege[interval.simple(true).toString()];return showOctaves?pad(solfege,stroke,Math.abs(count)):solfege},scaleDegree:function(scale){var inter=scale.tonic.interval(this);if(inter.direction()==="down"||inter.coord[1]===0&&inter.coord[0]!==0){inter=inter.invert()}inter=inter.simple(true).coord;return scale.scale.reduce(function(index,current,i){var coord=Interval.toCoord(current).coord;return coord[0]===inter[0]&&coord[1]===inter[1]?i+1:index},0)},durationName:function(){return knowledge.durations[this.duration.value]},durationInSeconds:function(bpm,beatUnit){var secs=60/bpm/(this.duration.value/4)/(beatUnit/4);return secs*2-secs/Math.pow(2,this.duration.dots)},toString:function(dont){return this.name()+this.accidental()+(dont?"":this.octave())}};Note.fromString=function(name,dur){var coord=scientific(name);if(!coord)coord=helmholtz(name);return new Note(coord,dur)};Note.fromKey=function(key){var octave=Math.floor((key-4)/12);var distance=key-octave*12-4;var name=knowledge.fifths[(2*Math.round(distance/2)+1)%7];var note=vector.add(vector.sub(knowledge.notes[name],knowledge.A4),[octave+1,0]);var diff=key-49-vector.sum(vector.mul(note,[12,7]));return new Note(diff?vector.add(note,vector.mul(knowledge.sharp,diff)):note)};Note.fromFrequency=function(fq,concertPitch){var key,cents,originalFq;concertPitch=concertPitch||440;key=49+12*((Math.log(fq)-Math.log(concertPitch))/Math.log(2));key=Math.round(key);originalFq=concertPitch*Math.pow(2,(key-49)/12);cents=1200*(Math.log(fq/originalFq)/Math.log(2));return{note:Note.fromKey(key),cents:cents}};Note.fromMIDI=function(note){return Note.fromKey(note-20)};module.exports=Note},{"./interval":17,"./knowledge":18,"./vector":22,helmholtz:24,"scientific-notation":28}],20:[function(require,module,exports){var knowledge=require("./knowledge");var Interval=require("./interval");var scales={aeolian:["P1","M2","m3","P4","P5","m6","m7"],blues:["P1","m3","P4","A4","P5","m7"],chromatic:["P1","m2","M2","m3","M3","P4","A4","P5","m6","M6","m7","M7"],dorian:["P1","M2","m3","P4","P5","M6","m7"],doubleharmonic:["P1","m2","M3","P4","P5","m6","M7"],harmonicminor:["P1","M2","m3","P4","P5","m6","M7"],ionian:["P1","M2","M3","P4","P5","M6","M7"],locrian:["P1","m2","m3","P4","d5","m6","m7"],lydian:["P1","M2","M3","A4","P5","M6","M7"],majorpentatonic:["P1","M2","M3","P5","M6"],melodicminor:["P1","M2","m3","P4","P5","M6","M7"],minorpentatonic:["P1","m3","P4","P5","m7"],mixolydian:["P1","M2","M3","P4","P5","M6","m7"],phrygian:["P1","m2","m3","P4","P5","m6","m7"]};scales.harmonicchromatic=scales.chromatic;scales.minor=scales.aeolian;scales.major=scales.ionian;scales.flamenco=scales.doubleharmonic;function Scale(tonic,scale){if(!(this instanceof Scale))return new Scale(tonic,scale);var scaleName,i;if(!("coord"in tonic)){throw new Error("Invalid Tonic")}if(typeof scale==="string"){scaleName=scale;scale=scales[scale];if(!scale)throw new Error("Invalid Scale")}else{for(i in scales){if(scales.hasOwnProperty(i)){if(scales[i].toString()===scale.toString()){scaleName=i;break}}}}this.name=scaleName;this.tonic=tonic;this.scale=scale}Scale.prototype={notes:function(){var notes=[];for(var i=0,length=this.scale.length;i<length;i++){notes.push(this.tonic.interval(this.scale[i]))}return notes},simple:function(){return this.notes().map(function(n){return n.toString(true)})},type:function(){var length=this.scale.length-2;if(length<8){return["di","tri","tetra","penta","hexa","hepta","octa"][length]+"tonic"}},get:function(i){i=typeof i==="string"&&i in knowledge.stepNumber?knowledge.stepNumber[i]:i;return this.tonic.interval(this.scale[i-1])},solfege:function(index,showOctaves){if(index)return this.get(index).solfege(this,showOctaves);return this.notes().map(function(n){return n.solfege(this,showOctaves)})},interval:function(interval){interval=typeof interval==="string"?Interval.toCoord(interval):interval;return new Scale(this.tonic.interval(interval),this.scale)},transpose:function(interval){var scale=this.interval(interval);this.scale=scale.scale;this.tonic=scale.tonic;return this}};module.exports=Scale},{"./interval":17,"./knowledge":18}],21:[function(require,module,exports){var knowledge=require("./knowledge");module.exports=function(teoria){var Note=teoria.Note;var Chord=teoria.Chord;var Scale=teoria.Scale;Note.prototype.chord=function(chord){chord=chord in knowledge.chordShort?knowledge.chordShort[chord]:chord;return new Chord(this,chord)};Note.prototype.scale=function(scale){return new Scale(this,scale)}}},{"./knowledge":18}],22:[function(require,module,exports){module.exports={add:function(note,interval){return[note[0]+interval[0],note[1]+interval[1]]},sub:function(note,interval){return[note[0]-interval[0],note[1]-interval[1]]},mul:function(note,interval){if(typeof interval==="number")return[note[0]*interval,note[1]*interval];else return[note[0]*interval[0],note[1]*interval[1]]},sum:function(coord){return coord[0]+coord[1]}}},{}],23:[function(require,module,exports){var SYMBOLS={m:["m3","P5"],mi:["m3","P5"],min:["m3","P5"],"-":["m3","P5"],M:["M3","P5"],ma:["M3","P5"],"":["M3","P5"],"+":["M3","A5"],aug:["M3","A5"],dim:["m3","d5"],o:["m3","d5"],maj:["M3","P5","M7"],dom:["M3","P5","m7"],"ø":["m3","d5","m7"],5:["P5"],"6/9":["M3","P5","M6","M9"]};module.exports=function(symbol){var c,parsing="quality",additionals=[],name,chordLength=2;var notes=["P1","M3","P5","m7","M9","P11","M13"];var explicitMajor=false;function setChord(name){var intervals=SYMBOLS[name];for(var i=0,len=intervals.length;i<len;i++){notes[i+1]=intervals[i]}chordLength=intervals.length}symbol=symbol.replace(/[,\s\(\)]/g,"");for(var i=0,len=symbol.length;i<len;i++){if(!(c=symbol[i]))return;if(parsing==="quality"){var sub3=i+2<len?symbol.substr(i,3).toLowerCase():null;var sub2=i+1<len?symbol.substr(i,2).toLowerCase():null;if(sub3 in SYMBOLS)name=sub3;else if(sub2 in SYMBOLS)name=sub2;else if(c in SYMBOLS)name=c;else name="";if(name)setChord(name);if(name==="M"||name==="ma"||name==="maj")explicitMajor=true;i+=name.length-1;parsing="extension"}else if(parsing==="extension"){c=c==="1"&&symbol[i+1]?+symbol.substr(i,2):+c;if(!isNaN(c)&&c!==6){chordLength=(c-1)/2;if(chordLength!==Math.round(chordLength))return new Error("Invalid interval extension: "+c.toString(10));if(name==="o"||name==="dim")notes[3]="d7";else if(explicitMajor)notes[3]="M7";i+=c>=10?1:0}else if(c===6){notes[3]="M6";chordLength=Math.max(3,chordLength)}else i-=1;parsing="alterations"}else if(parsing==="alterations"){var alterations=symbol.substr(i).split(/(#|b|add|maj|sus|M)/i),next,flat=false,sharp=false;if(alterations.length===1)return new Error("Invalid alteration");else if(alterations[0].length!==0)return new Error("Invalid token: '"+alterations[0]+"'");var ignore=false;alterations.forEach(function(alt,i,arr){if(ignore||!alt.length)return ignore=false;var next=arr[i+1],lower=alt.toLowerCase();if(alt==="M"||lower==="maj"){if(next==="7")ignore=true;chordLength=Math.max(3,chordLength);notes[3]="M7"}else if(lower==="sus"){var type="P4";if(next==="2"||next==="4"){ignore=true;if(next==="2")type="M2"}notes[1]=type}else if(lower==="add"){if(next==="9")additionals.push("M9");else if(next==="11")additionals.push("P11");else if(next==="13")additionals.push("M13");ignore=true}else if(lower==="b"){flat=true}else if(lower==="#"){sharp=true}else{var token=+alt,quality,intPos;if(isNaN(token)||String(token).length!==alt.length)return new Error("Invalid token: '"+alt+"'");if(token===6){if(sharp)notes[3]="A6";else if(flat)notes[3]="m6";else notes[3]="M6";chordLength=Math.max(3,chordLength);return}intPos=(token-1)/2;if(chordLength<intPos)chordLength=intPos;if(token<5||token===7||intPos!==Math.round(intPos))return new Error("Invalid interval alteration: "+token);quality=notes[intPos][0];if(sharp){if(quality==="d")quality="m";else if(quality==="m")quality="M";else if(quality==="M"||quality==="P")quality="A"}else if(flat){if(quality==="A")quality="M";else if(quality==="M")quality="m";else if(quality==="m"||quality==="P")quality="d"}sharp=flat=false;notes[intPos]=quality+token}});parsing="ended"}else if(parsing==="ended"){break}}return notes.slice(0,chordLength+1).concat(additionals)}},{}],24:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function helmholtz(name){var name=name.replace(/\u2032/g,"'").replace(/\u0375/g,",");var parts=name.match(/^(,*)([a-h])(x|#|bb|b?)([,\']*)$/i);if(!parts||name!==parts[0])throw new Error("Invalid formatting");var note=parts[2];var octaveFirst=parts[1];var octaveLast=parts[4];var lower=note===note.toLowerCase();var octave;if(octaveFirst){if(lower)throw new Error("Invalid formatting - found commas before lowercase note");octave=2-octaveFirst.length}else if(octaveLast){if(octaveLast.match(/^'+$/)&&lower)octave=3+octaveLast.length;else if(octaveLast.match(/^,+$/)&&!lower)octave=2-octaveLast.length;else throw new Error("Invalid formatting - mismatch between octave "+"indicator and letter case")}else octave=lower?3:2;var accidentalValue=accval.interval(parts[3].toLowerCase());var coord=coords(note.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":25,notecoord:26}],25:[function(require,module,exports){var accidentalValues={bb:-2,b:-1,"":0,"#":1,x:2};module.exports=function accidentalNumber(acc){return accidentalValues[acc]};module.exports.interval=function accidentalInterval(acc){var val=accidentalValues[acc];return[-4*val,7*val]}},{}],26:[function(require,module,exports){var notes={c:[0,0],d:[-1,2],e:[-2,4],f:[1,-1],g:[0,1],a:[-1,3],b:[-2,5],h:[-2,5]};module.exports=function(name){return name in notes?[notes[name][0],notes[name][1]]:null};module.exports.notes=notes;module.exports.A4=[3,3];module.exports.sharp=[-4,7]},{}],27:[function(require,module,exports){var pattern=/^(AA|A|P|M|m|d|dd)(-?\d+)$/;var sharp=[-4,7];var pAlts=["dd","d","P","A","AA"];var mAlts=["dd","d","m","M","A","AA"];var baseIntervals=[[0,0],[3,-5],[2,-3],[1,-1],[0,1],[3,-4],[2,-2],[1,0]];module.exports=function(simple){var parser=simple.match(pattern);if(!parser)return null;var quality=parser[1];var number=+parser[2];var sign=number<0?-1:1;number=sign<0?-number:number;var lower=number>8?number%7||7:number;var octaves=(number-lower)/7;var base=baseIntervals[lower-1];var alts=base[0]<=1?pAlts:mAlts;var alt=alts.indexOf(quality)-2;if(alt===-3)return null;return[sign*(base[0]+octaves+sharp[0]*alt),sign*(base[1]+sharp[1]*alt)]};module.exports.coords=baseIntervals.slice(0)},{}],28:[function(require,module,exports){var coords=require("notecoord");var accval=require("accidental-value");module.exports=function scientific(name){var format=/^([a-h])(x|#|bb|b?)(-?\d*)/i;var parser=name.match(format);if(!(parser&&name===parser[0]&&parser[3].length))return;var noteName=parser[1];var octave=+parser[3];var accidental=parser[2].length?parser[2].toLowerCase():"";var accidentalValue=accval.interval(accidental);var coord=coords(noteName.toLowerCase());coord[0]+=octave;coord[0]+=accidentalValue[0]-coords.A4[0];coord[1]+=accidentalValue[1]-coords.A4[1];return coord}},{"accidental-value":29,notecoord:30}],29:[function(require,module,exports){module.exports=require(25)},{}],30:[function(require,module,exports){module.exports=require(26)},{}],31:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;
return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],cheatcode:[function(require,module,exports){window.time=0;context=AudioContext;master=new context;SAMPLERATE=samplerate=master.sampleRate;jsynth=require("jsynth");nvelope=require("nvelope");sync=require("jsynth-zerone");oz=require("oscillators");jdelay=require("jdelay");amod=require("amod");chronotrigger=require("jigger");clang=require("meffisto");beatmath=require("beatmath");teoria=require("teoria");specialX=function(t,s,i){return 0};generator=new chronotrigger;music=function(time,sample,input){window.time=time;timer.tick.call(timer,time);return generator.tick(time,sample,input)+specialX(time,sample,input)};timer=sync(60,master.sampleRate);dsp=function(t,s,i){time=t;return music(t,s,i)};synth=jsynth(master,dsp);synth.connect(master.destination)},{amod:1,beatmath:2,jdelay:3,jigger:5,jsynth:8,"jsynth-zerone":6,meffisto:9,nvelope:12,oscillators:14,teoria:15}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var oz=require("oscillators");module.exports=function(c,r,t,f){return c+r*oz.sine(t,f)}},{oscillators:14}],2:[function(require,module,exports){module.exports=function(m,btz){return function(beat){var x=beat%m;if(x==0)x=m;var i=0;var r=false;for(i;i<btz.length;i++){if(btz[i]==x){r=true;break}}return r}}},{}],3:[function(require,module,exports){var funstance=require("funstance");module.exports=function(delay,feedback,mix,bufferSize){var delay=Math.floor(delay);var feedback=feedback;var mix=mix;var bufferSize=bufferSize||delay*2;if(bufferSize<delay*2)bufferSize=delay*2;var d=new Delay(delay,feedback,mix,bufferSize);var fn=funstance(d,Sample);return fn;function Delay(delay,feedback,mix,bufferSize){this.feedback=feedback;this.mix=mix;this.delay=delay;this.buffer=new Float32Array(bufferSize);this.writeOffset=0;this.endPoint=this.delay*2;this.readOffset=this.delay+1;this.readZero=0}function Sample(sample,_delay,feedback,mix){var s=sample;if(feedback)this.feedback=feedback;if(mix)this.mix=mix;if(_delay&&_delay!==this.delay){_delay=Math.max(0,Math.floor(_delay));if(_delay*2>this.buffer.length){var nb=new Float32Array(_delay*2);nb.set(this.buffer,0);this.buffer=nb}this.delay=_delay;this.endPoint=this.delay*2}if(this.readOffset>=this.endPoint)this.readOffset=0;s=this.buffer[this.readOffset];var write=sample+s*this.feedback;this.buffer[this.writeOffset]=write;this.writeOffset++;this.readOffset++;if(this.writeOffset>=this.endPoint)this.writeOffset=0;return(sample+s)*this.mix}}},{funstance:4}],4:[function(require,module,exports){module.exports=function(obj,fn){var f=function(){if(typeof fn!=="function")return;return fn.apply(obj,arguments)};function C(){}C.prototype=Object.getPrototypeOf(obj);f.__proto__=new C;Object.getOwnPropertyNames(Function.prototype).forEach(function(key){if(f[key]===undefined){f.__proto__[key]=Function.prototype[key]}});Object.getOwnPropertyNames(obj).forEach(function(key){f[key]=obj[key]});return f}},{}],5:[function(require,module,exports){var nvelope=require("nvelope");module.exports=chrono;function chrono(_time){if(!(this instanceof chrono))return new chrono(_time);var self=this;this.ret={};this.gens=[];this.time=_time||0;this.start=_time||0;this.set=function(time,synth,mods){var x;self.gens.push(x=new generate(time,synth,mods));return x};this.tick=function(t,s,i){self.time=t;gc(t);return self.gens.reduce(function(a,e){return a+e.signal(t,s,i)},0)};function gc(t){self.gens=self.gens.filter(function(e){if(e.start+e.dur<t)return false;else return true})}}function generate(_time,synth,mod){if(!(this instanceof generate))return new generate(_time,synth,mod);var self=this;this.start=_time;this.dur=mod.durations.reduce(function(acc,e){return acc+e},0);this.synth=synth;this.env=nvelope(mod.curves,mod.durations);this.signal=function(t,s,i){return self.synth(t,s,i)*self.env(t-self.start)}}},{nvelope:12}],6:[function(require,module,exports){var sync=require("jsynth-sync");module.exports=function(bpm,sampleRate){var Timer=sync(bpm,sampleRate);Timer.beat=beat;return Timer;function beat(interval,rayray,fn){var swag=0;var swinger=function(x){swag=x};var master=undefined;return eys(interval,rayray,fn);function eys(interval,rayray,fn){var y=rayray.length;if(!master)master={rayray:rayray,beat:0};var timer=Timer.on(interval,function(time,beat,xxx,swing){if(rayray===master.rayray){master.beat=beat}else{}swing(swag);var i=rayray[(beat-1)%y];if(i){if(Array.isArray(i)){var yn=i.length;var intervaln=interval/yn;var bat=eys(intervaln,i,fn);bat._l=i.length;bat.on("beat",function(b){if(b==bat._l)bat.emit("stop")})}else{fn(time,master.beat,xxx,swinger)}}else{return}});return timer}}}},{"jsynth-sync":7}],7:[function(require,module,exports){var emitter=require("events").EventEmitter;module.exports=sync;var $=module.exports;function sync(bpm,sampleRate){if(!(this instanceof sync))return new sync(bpm,sampleRate);this.bpm=bpm;this.beatsPerSecond=bpm/60;this.sampleRate=sampleRate;this.spb=Math.round(sampleRate/this.beatsPerSecond);this.s=0;this.t=0;this.index=[];this.beatIndex=new Array}$.prototype.clearAll=function(bpm,samplerate){this.index=this.index.map(function(){return undefined})};$.prototype.tick=function(t,i){++this.s;for(var n=0;n<this.index.length;n++){if(this.index[n])this.index[n](t,i,this.s)}};$.prototype.off=function(i){this.index.splice(i,1,undefined)};$.prototype.on=function(beats,fn){var i=Math.ceil(this.spb*beats);var l=this.index.length;var self=this;var off=function(){self.off(l)};var delta=0;var skipNext=false;var skip=false;function swing(beat){delta=Math.abs(Math.floor(self.spb*beat));skipNext=beat===0?false:true}var emit=new emitter;emit.on("stop",off);this.index.push(function(b,fn,beats,off){return function(t,a,f){if(f%(i+delta)==0){if(skip){skip=false;return}if(skipNext){skipNext=false;skip=true;if(delta>=i){skip=false}}fn.apply(fn,[t,++b,off,swing]);emit.emit("beat",b)}}}(0,fn,beats,off));return emit};function amilli(t){return[Math.floor(t),t%1*1e3]}},{events:31}],8:[function(require,module,exports){module.exports=function(context,fn,bufSize){if(typeof context==="function"){fn=context;context=new webkitAudioContext}if(!bufSize)bufSize=4096;var self=context.createScriptProcessor(bufSize,1,1);self.fn=fn;var tt=0;var ii=0;const rate=context.sampleRate;self.i=self.t=0;window._SAMPLERATE=self.sampleRate=self.rate=context.sampleRate;self.duration=Infinity;self.recording=false;self.onaudioprocess=function(e){var output=e.outputBuffer.getChannelData(0),input=e.inputBuffer.getChannelData(0);self.tick(output,input)};self.tick=function(output,input){for(var i=0;i<output.length;i+=1){tt=ii/rate;ii=ii+1;output[i]=self.fn(tt,ii,input[i])}return output};self.stop=function(){self.disconnect();self.playing=false;if(self.recording){}};self.play=function(opts){if(self.playing)return;self.connect(self.context.destination);self.playing=true;return};self.record=function(){};self.reset=function(){self.i=self.t=0};self.createSample=function(duration){self.reset();var buffer=self.context.createBuffer(1,duration,self.context.sampleRate);var blob=buffer.getChannelData(0);self.tick(blob);return buffer};return self};function mergeArgs(opts,args){Object.keys(opts||{}).forEach(function(key){args[key]=opts[key]});return Object.keys(args).reduce(function(acc,key){var dash=key.length===1?"-":"--";return acc.concat(dash+key,args[key])},[])}function signed(n){if(isNaN(n))return 0;var b=Math.pow(2,15);return n>0?Math.min(b-1,Math.floor(b*n-1)):Math.max(-b,Math.ceil(b*n-1))}},{}],9:[function(require,module,exports){var gus=require("jgauss");var oz=require("oscillators");var sqrtau=Math.sqrt(Math.PI*2);var defs={};defs.m=1/12;defs.f=440;defs.wave="sine";module.ex
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment