Site 1.1.0: beat jump in the builder, version and changelog, key colours
- Beat jump (experimental) on the mods page, in the docs and in the builder (needs hot cue keys; dependencies are ticked and unticked as a chain). - Key notation 1.2.0: keys in their Camelot wheel colour, also in BROWSE. - Version badge at the top with a changelog; every mod's version on its card and in the builder. make_builder_data.py writes assets/versions.js from tools/changelog.json and the mods' versions and stamps the pages' CSS and script links with ?v=<site version>. - The generator keeps a changed copy of the UTILITY table as the user's own table plus our bytes (beat jump renames an item). - Upcoming: quick search, USB auto load and phase meter reverse (in testing). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e4728b16ea
commit
d2d1518fba
16 files changed
+440
-72
No files matched your search
+5
-5
@@ -14,7 +14,7 @@
|
||||
var ADDRESS_BYTES = { 0: 2, 1: 2, 2: 3, 3: 4, 5: 2, 6: 3, 7: 4, 8: 3, 9: 2 };
|
||||
var LABEL = '1.32';
|
||||
var UPSTREAM = ['extended_bpm', 'phasemeter', 'rgb_waveform'];
|
||||
var OURS = ['cuecolours', 'hotcuekeys', 'ledsaver', 'credit'];
|
||||
var OURS = ['beatjump', 'cuecolours', 'hotcuekeys', 'ledsaver', 'keynotation', 'credit'];
|
||||
|
||||
function fail(msg) { throw new Error(msg); }
|
||||
|
||||
@@ -415,13 +415,13 @@
|
||||
}
|
||||
|
||||
// ---------- the mods' bytes (builder/data.js) ----------
|
||||
function boxPixels(stock, res, bg, ink) {
|
||||
function boxPixels(stock, res, bg, ink, text) {
|
||||
var B = D.box, rec = B.resTable + res * 44, w = u16(stock, rec + 4), h = u16(stock, rec + 6);
|
||||
var off = B.resTable + u32(stock, rec + 0x20), px = new Uint16Array(w * h);
|
||||
for (var i = 0; i < w * h; i++) px[i] = u16(stock, off + i * 2);
|
||||
for (var y = 3; y < 13; y++) for (var x = 3; x < w - 3; x++) px[y * w + x] = bg;
|
||||
// as box_pixels: width = sum(space for ' ', else glyph width + gap) - gap
|
||||
var text = B.text, width = -B.gap, c;
|
||||
var width = -B.gap, c;
|
||||
for (c = 0; c < text.length; c++) width += text[c] === ' ' ? B.space : B.glyphs[text[c]][0].length + B.gap;
|
||||
var x0 = Math.floor((w - width) / 2), y0 = 4;
|
||||
for (c = 0; c < text.length; c++) {
|
||||
@@ -436,14 +436,14 @@
|
||||
}
|
||||
// One variant of data.js: the application grown to its size, then its
|
||||
// operations: our bytes, a copy from the user's own application, the HOT
|
||||
// KEYS box or arnoldasr's asset blob, both made from the user's application.
|
||||
// KEYS / LOADING boxes or arnoldasr's asset blob, both made from the user's application.
|
||||
function applyVariant(app, stock, v) {
|
||||
var out = grow(app.slice(), v.size), blob = null;
|
||||
v.ops.forEach(function (o) {
|
||||
var off = o[1] - BASE;
|
||||
if (o[0] === 'data') out.set(fromB64(D.chunks[o[2]]), off);
|
||||
else if (o[0] === 'copy') out.set(stock.subarray(o[2] - BASE, o[2] - BASE + o[3]), off);
|
||||
else if (o[0] === 'box') out.set(boxPixels(stock, o[2], o[3], o[4]), off);
|
||||
else if (o[0] === 'box') out.set(boxPixels(stock, o[2], o[3], o[4], o[5]), off);
|
||||
else if (o[0] === 'assets') { blob = blob || assets(stock).blob; out.set(blob.subarray(0, o[2]), off); }
|
||||
else fail('unknown operation ' + o[0]);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user