diff options
Diffstat (limited to 'env.js')
| -rw-r--r-- | env.js | 42 |
1 files changed, 32 insertions, 10 deletions
@@ -137,10 +137,29 @@ var environment = (function(){ use_scale = $("#use_scale").get(0).checked } environment.set_intervals = function(){ - scale = $("#intervals").val().split(" ").map(parseInterval).filter(function(v){ + 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 - }).map(function(v){ - return v * root + }) + 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(){ @@ -264,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] @@ -300,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 } @@ -442,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, @@ -523,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 } |
