summaryrefslogtreecommitdiff
path: root/env.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-09-14 12:37:11 -0400
committerJules Laplace <jules@okfoc.us>2016-09-14 12:37:11 -0400
commitfa5defe301cf43409b0c86c306cddd2ef70cca64 (patch)
treed510579cc423b6189fdceaba583fde2eb424db6e /env.js
parent5dd0bbbf6630e524c14865bd92dbf5aa1734e7d3 (diff)
parent46990e203362793d71871b23e91af8a4ac6958e8 (diff)
Merge branch 'master' of ghghgh.us:harp
Diffstat (limited to 'env.js')
-rw-r--r--env.js45
1 files changed, 38 insertions, 7 deletions
diff --git a/env.js b/env.js
index f976f6b..d893933 100644
--- a/env.js
+++ b/env.js
@@ -42,6 +42,7 @@ var environment = (function(){
environment.build = function(){
environment.scale()
environment.duration()
+ environment.set_intervals()
snap = new Snap (window.innerWidth, window.innerHeight - $("#controls").height())
dot_grid = new DotGrid ()
@@ -111,6 +112,7 @@ var environment = (function(){
$("#tet").on("input", environment.scale)
$("#root").on("input", environment.scale)
$("#interval").on("input", environment.scale)
+ $("#intervals").on("input", environment.set_intervals)
$("#duration").on("input", environment.duration)
$("#use_scale").on("change", environment.use_scale)
if (is_mobile) {
@@ -134,6 +136,32 @@ var environment = (function(){
environment.use_scale = function(){
use_scale = $("#use_scale").get(0).checked
}
+ environment.set_intervals = function(){
+ root = parseFloat( $("#root").val() )
+ var intervals = $("#intervals").val().split(/\s/).map(function(v){
+ if (v.indexOf("/") !== -1) return parseInterval(v) // intervals
+ if (v.indexOf("f") !== -1) return parseFloat(v) // pure frequencies
+ return parseFloat(v)
+ }).filter(function(v){
+ return !! v
+ })
+ if (! intervals.length) return
+ var last_interval = intervals[ intervals.length-1 ]
+ if (last_interval > 20) {
+ interval = last_interval / intervals[0]
+ }
+ else {
+ interval = intervals.pop()
+ }
+ scale = intervals.map(function(v){
+ if (v < 20) {
+ return v * root
+ }
+ else {
+ return v
+ }
+ })
+ }
environment.check_drawing = function(){
drawing = ! drawing
$("#draw").html( drawing ? "drawing" : "playing" )
@@ -255,7 +283,7 @@ var environment = (function(){
var ratio, n
tet = parseFloat( $("#tet").val() )
root = parseFloat( $("#root").val() )
- interval = parseInterval( $("#interval").val() )
+ interval = intervals[ intervals.length - 1 ]
ratio = Math.pow( interval, 1/tet )
n = root
scale = [n]
@@ -291,12 +319,15 @@ var environment = (function(){
return scale_f
}
environment.quantize_index = function(index){
- return mod(index, scale.length-1)|0
+ return mod(index-1, scale.length)|0
}
environment.index_to_frequency = function(index){
- var f = scale[ mod(index, scale.length-1)|0 ]
- var pow = Math.floor(norm(index, 0, scale.length-1)) - 2
- f *= Math.pow(interval, pow)
+ var f = scale[ mod(index, scale.length)|0 ]
+// if (f < 20) {
+ var pow = Math.floor(norm(index-1, 0, scale.length)) - 2
+ f *= Math.pow(interval, pow)
+// }
+ // console.log(index, f, pow)
// console.log(index, scale.length, pow, f)
return f
}
@@ -433,7 +464,8 @@ var environment = (function(){
}
Wire.prototype.updateColor = function(should_set){
var index = this.index()
- var color = Snap.hsl(mod(index / tet * 240 + 180, 360), 100, 50)
+ // console.log(index, scale.length, index / scale.length)
+ var color = Snap.hsl(mod(index / scale.length * 240 + 180, 360), 100, 50)
if (should_set) {
this.path.attr({
stroke: color,
@@ -514,7 +546,6 @@ var environment = (function(){
if (isNaN(num)) return 2
if (isNaN(den) || den == 0) return num
if (num == den) return 2
- if (num < den) return den/num
return num / den
}