Skip to content

Instantly share code, notes, and snippets.

@woodworker
Created August 31, 2014 13:59
Show Gist options
  • Save woodworker/4c51c1463b47300ac069 to your computer and use it in GitHub Desktop.
Save woodworker/4c51c1463b47300ac069 to your computer and use it in GitHub Desktop.
Simple Bitwig Helper for endless controllers
/**
* @var int max
* @var callback nextCallback
* @var callback prevCallback
*/
function EndlessScroller(max, nextCallback, prevCallback) {
var lastValue = null;
var maxValue = max;
return function(value) {
if(lastValue==maxValue && value == 0) {
lastValue = value;
nextCallback();
return;
}
if(lastValue == 0 && value == maxValue) {
lastValue = value;
prevCallback();
return;
}
if(value > lastValue) {
lastValue = value;
nextCallback();
return;
}
if(value < lastValue) {
lastValue = value;
prevCallback();
}
}
}
// short usage
// full example at https://github.com/woodworker/bitwig-controller/blob/master/CME/CME-UF5.control.js
var PROGRAMM_CHANGER = 192;
// create the endless scroller with 127 as max value
var trackSelector = EndlessScroller(127, function(){
cursorTrack.selectNext();
}, function() {
cursorTrack.selectPrevious();
});
function onMidi(status, data1, data2) {
if(status == PROGRAMM_CHANGER) {
trackSelector(data1);
return;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment