JSFiddle - React, Tailwind, and code Playground

JavaScript

var allinstruments = drumpatterns.basic.instruments;

var song = [figure,len,bpm,expfactor];
for(var i in allinstruments) {
  for(var n=0; n<len; n++) {
    if(typeof(chances[i]) == 'undefined' || typeof(chances[i][(n % figure) + 1]) == 'undefined' ) {
      var bet = false;
    } else {
      var chanceidx = (n % (Object.keys(chances[i]).length));
      var depth = chanceidx / (Object.keys(chances[i]).length);
      var perc = Math.min(Object.keys(chances[i]).length, Math.max(1, (Object.keys(chances[i]).length * (1 - 2 * Math.abs(depth - 0.5)))));
      
      if(displace[i]) {
        perc = (perc + 1) % (Object.keys(chances[i]).length) + 1;
      }

      var bet = ((Math.random() * 100).toFixed()*1) < chances[i][perc];
    }

    song.push(bet ? 1 : 0);
  }
}