summaryrefslogtreecommitdiff
path: root/env.js
diff options
context:
space:
mode:
Diffstat (limited to 'env.js')
-rw-r--r--env.js42
1 files changed, 32 insertions, 10 deletions
diff --git a/env.js b/env.js
index 0382770..a0dd02a 100644
--- a/env.js
+++ b/env.js
@@ -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
}