Initial commit: ACE-Step UI - Open source music generation interface
This commit is contained in:
Executable
+107
@@ -0,0 +1,107 @@
|
||||
(function (w, d) {
|
||||
'use strict';
|
||||
|
||||
var _v = '0.9',
|
||||
_id = -1;
|
||||
|
||||
function PKAE() {
|
||||
var q = this; // keeping track of current context
|
||||
|
||||
q.el = null; // reference of main html element
|
||||
q.id = ++_id; // auto incremental id
|
||||
q._deps = {}; // dependencies
|
||||
|
||||
w.PKAudioList[q.id] = q;
|
||||
|
||||
var events = {};
|
||||
|
||||
q.fireEvent = function (eventName, value, value2) {
|
||||
var group = events[eventName];
|
||||
if (!group) return (false);
|
||||
|
||||
var l = group.length;
|
||||
while (l-- > 0) {
|
||||
group[l] && group[l](value, value2);
|
||||
}
|
||||
};
|
||||
|
||||
q.listenFor = function (eventName, callback) {
|
||||
if (!events[eventName])
|
||||
events[eventName] = [callback];
|
||||
else
|
||||
events[eventName].unshift(callback);
|
||||
};
|
||||
|
||||
q.stopListeningFor = function (eventName, callback) {
|
||||
var group = events[eventName];
|
||||
if (!group) return (false);
|
||||
|
||||
var l = group.length;
|
||||
while (l-- > 0) {
|
||||
if (group[l] && group[l] === callback) {
|
||||
group[l] = null; break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
q.stopListeningForName = function (eventName) {
|
||||
var group = events[eventName];
|
||||
if (!group) return (false);
|
||||
events[eventName] = null;
|
||||
};
|
||||
|
||||
q.init = function (el_id) {
|
||||
var el = d.getElementById(el_id);
|
||||
if (!el) {
|
||||
console.log('invalid element');
|
||||
return;
|
||||
}
|
||||
q.el = el;
|
||||
|
||||
// init libraries
|
||||
q.ui = new q._deps.ui(q); q._deps.uifx(q);
|
||||
q.engine = new q._deps.engine(q);
|
||||
q.state = new q._deps.state(4, q);
|
||||
q.rec = new q._deps.rec(q);
|
||||
q.fls = new q._deps.fls(q);
|
||||
|
||||
if (w.location.href.split('local=')[1]) {
|
||||
var sess = w.location.href.split('local=')[1];
|
||||
|
||||
q.fls.Init(function () {
|
||||
q.fls.GetSession(sess, function (e) {
|
||||
if (e && e.id === sess) {
|
||||
q.engine.LoadDB(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Check for audioUrl parameter to load audio from URL
|
||||
if (w.location.href.split('audioUrl=')[1]) {
|
||||
var audioUrl = decodeURIComponent(w.location.href.split('audioUrl=')[1].split('&')[0]);
|
||||
|
||||
setTimeout(function () {
|
||||
if (audioUrl) {
|
||||
q.engine.LoadURL(audioUrl);
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
return (q);
|
||||
};
|
||||
|
||||
// check if we are mobile and hide tooltips on hover
|
||||
q.isMobile = (/iphone|ipod|ipad|android/).test
|
||||
(navigator.userAgent.toLowerCase());
|
||||
};
|
||||
|
||||
!w.PKAudioList && (w.PKAudioList = []);
|
||||
|
||||
// ideally we do not want a global singleto refferencing our audio tool
|
||||
// but since this is a limited demo we can safely do it.
|
||||
w.PKAudioEditor = new PKAE();
|
||||
|
||||
PKAudioList.push(w.PKAudioEditor); // keeping track in the audiolist array of our instance
|
||||
|
||||
})(window, document);
|
||||
Reference in New Issue
Block a user