Random Walk with Larger Steps

by Eve Weinberg

HTML

<script src="https://tonejs.github.io/CDN/r6/Tone.min.js"></script>

JavaScript

var kickUrl = "https://tonejs.github.io/Tone.js/examples/audio/505/kick.mp3";
var snareUrl = "https://tonejs.github.io/Tone.js/examples/audio/505/snare.mp3";
var hhUrl = "https://tonejs.github.io/Tone.js/examples/audio/505/hh.mp3";

var kick = new Tone.Player(kickUrl).toMaster();
kick.retrigger = true;
var snare = new Tone.Player(snareUrl).toMaster();
snare.retrigger = true;
var hh = new Tone.Player(hhUrl).toMaster();
hh.retrigger = true;


var kickProb =  [1, 0, 0, 0.2, 0.7, 0, 0, 0, 0.5, 0, 0, 0, 0.9, 0, 0, 0.2];
var snareProb = [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0];
var hhProb =    [0, 1, 0.1, 1, 0, 0.3, 0.5, 1, 0.5, 1, 0, 1, 0.1, 1, 0.5, 1];

var beatTime = 0.25;
var beats = 8 * 16;

Tone.Buffer.on("load", function(){
	var now = kick.now();
  
  for (var i = 0; i < beats; i++){
  	var measureBeat = i % kickProb.length;
    var measureTime = i * beatTime + now;
 		if (Math.random() < kickProb[measureBeat]){
    	kick.start(measureTime);
    }
    if (Math.random() < snareProb[measureBeat]){
    	snare.start(measureTime);
    }
    if (Math.random() < hhProb[measureBeat]){
    	hh.start(measureTime);
    }
  }
});