JSFiddle - React, Tailwind, and code Playground

by chrisfrisina

JavaScript

var mdc = function(o){
    if(!o.length)
        return 0;
    for(var r, a, i = o.length - 1, b = o[i]; i;)
        for(a = o[--i]; r = a % b; a = b, b = r);
    return b;
};

var diffBeats = [];
var beats = [ 0, 800, 200, 1000, 800, 700 ];
//var beats = [ 0, 800, 200, 1000, 800, 800 ];

var gcd = mdc(beats);
alert(gcd);

var i = 0;
do {
    if(i=0){
        diffBeats.push('ON');
    } else {
        if (beats[i]/gcd == 0) {
            var rests = 0;
        } else {
            var rests = (beats[i]/gcd)-1;
        }
        for (var j= 0 ; j<rests ; j++) {
            diffBeats.push('OFF');
        }
        diffBeats.push('ON');
    }
    i += 1;    
} while (i<beats.length);

alert(diffBeats);