Initial commit: ACE-Step UI - Open source music generation interface

This commit is contained in:
fspecii
2026-02-04 03:09:38 +02:00
commit 44f7563014
187 changed files with 99985 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
(function( w, d, PKAE ) {
'use strict';
function KeyHandler () {
var q = this;
q.keyMap = {}; // holds a map of all the active keys
q.callbacks = {}; // callbacks for when a key combintation becomes active
q.singleCallbacks = {}; // callbacks to the 'keypress' event - not required
q.addCallback = function (callback_name, callback_function, keys) {
q.callbacks[ callback_name ] = {
keys : keys,
callback : callback_function
};
};
q.addSingleCallback = function (callback_name, callback_function, key) {
q.singleCallbacks[ callback_name ] = {
key : key,
callback : callback_function
};
};
q.removeCallback = function ( callback_name ) {
q.callbacks[ callback_name ] = null;
};
d.addEventListener ('keydown', function ( e ) {
var keyCode = e.keyCode;
q.keyDown (keyCode, e);
});
q.keyDown = function (keyCode, e ) {
q.keyMap[keyCode] = 1;
for (var key in q.callbacks) {
var group = q.callbacks[key];
if (!group) continue;
var l = group.keys.length;
var all_ok = true;
while (l-- > 0) {
if (!q.keyMap[group.keys[l]])
{
all_ok = false;
break;
}
}
all_ok && group.callback && group.callback ( keyCode, q.keyMap, e );
}
};
q.keyUp = function ( keyCode ) {
q.keyMap[keyCode] = 0;
};
q.keyPress = function ( keyCode, e ) {
for (var key in q.singleCallbacks) {
var group = q.singleCallbacks[key];
if (!group) continue;
if (group.key === keyCode)
group.callback && group.callback ( e );
}
};
d.addEventListener ('keyup', function ( e ) {
var keyCode = e.keyCode;
q.keyUp (keyCode);
});
d.addEventListener ('keypress', function ( e ) {
var keyCode = e.keyCode;
q.keyPress (keyCode, e);
});
w.addEventListener ('blur', function ( e ) {
q.keyMap = {};
}, false);
d.addEventListener ('contextmenu', function( e ) {
e.preventDefault();
}, false);
};
PKAE._deps.keyhandler = KeyHandler;
})( window, document, PKAudioEditor );