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);
}
}
});