Skip to content

Instantly share code, notes, and snippets.

@EdSancha
Last active August 29, 2015 13:57
Show Gist options
  • Save EdSancha/9792571 to your computer and use it in GitHub Desktop.
Save EdSancha/9792571 to your computer and use it in GitHub Desktop.
Javascript adapted from http://pastebin.com/d3kiyqp6 in order to create automatic sequences in http://patatap.com it stops automatically after 16 measures
var rnd = function( to, from ) {
return Math.floor( Math.random() * (to - from + 1) + from );
};
var triggerKey = function(key) {
triggerKeyEvent(
document.getElementsByTagName('body')[0], key
);
}
var triggerRandomEvent = function() {
triggerKey (
rnd(65,90)
);
}
var triggerKeyEvent = function(el, key) {
if ( document.createEventObject ) {
var eventObj = document.createEventObject();
eventObj.keyCode = key;
el.fireEvent('onkeydown', eventObj);
}
else if ( document.createEvent ) {
var eventObj = document.createEvent('Events');
eventObj.initEvent('keydown', true, true);
eventObj.which = key;
el.dispatchEvent(eventObj);
}
}
var tkeKey = 0;
var dubstepBass = 69;
var stab = 69;
var hihat = 77;
var beat = 0;
var measure = 0;
var tkeTimer = window.setInterval( function() {
switch (beat) {
case 0:
if (measure == 0) {
triggerKey(dubstepBass);
triggerRandomEvent();
}else {
triggerKey(stab);
}
beat++;
break;
case 1:
triggerKey(hihat);
triggerRandomEvent();
beat++;
break;
case 2:
if (measure == 0) {
triggerKey(dubstepBass);
}else {
triggerKey(stab);
}
beat++;
break;
case 3:
triggerRandomEvent();
triggerKey(hihat);
beat = 0;
if (measure == 1){
triggerKey(stab);
measure = 0;
} else {
measure++;
}
break;
}
}, 800);
var tkeTimerDoubleTempo = window.setInterval( function() {
if (measure * beat % 3 == 0 ) {
triggerRandomEvent();
}
}, 600);
var tkeStop = function() {
window.clearInterval( tkeTimer );
window.clearInterval( tkeTimerDoubleTempo );
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment