Site 1.3.0: advanced waveforms published by us, 1.0.1
Advanced waveforms is based on arnoldasr's rgb_waveform and now updated and published by us (cards, docs, builder, credits). 1.0.1 takes rekordbox's colours also when they are a little short. The generator masks only the asset blob itself, so code of ours after it goes as data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f7dbeb6288
commit
e6351de711
9 files changed
+83
-33
No files matched your search
@@ -1,6 +1,14 @@
|
||||
{
|
||||
"_about": "The site's changelog, newest first. Versions follow Semantic Versioning (MAJOR.MINOR.PATCH), dates ISO 8601 (DIN EN 28601). make_builder_data.py adds every mod's current version from its module and writes assets/versions.js.",
|
||||
"site": [
|
||||
{
|
||||
"version": "1.3.0",
|
||||
"date": "2026-10-20",
|
||||
"changes": [
|
||||
"Advanced waveforms is now ours: based on arnoldasr's rgb_waveform, updated and published by us.",
|
||||
"Advanced waveforms 1.0.1: rekordbox's colours also on tracks whose colour data is a little shorter than the waveform (those showed the plain gradient colours)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "1.2.1",
|
||||
"date": "2026-10-20",
|
||||
@@ -97,6 +105,22 @@
|
||||
"Camelot, Open Key or classic notation, UTILITY › KEY NOTATION."
|
||||
]
|
||||
}
|
||||
],
|
||||
"advanced_waveforms": [
|
||||
{
|
||||
"version": "1.0.1",
|
||||
"date": "2026-10-20",
|
||||
"changes": [
|
||||
"rekordbox's colour detail taken also when it is up to 10 s shorter than the waveform (padded with its last colour)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"date": "2026-10-19",
|
||||
"changes": [
|
||||
"arnoldasr's rgb_waveform, renamed advanced_waveforms on 2026-10-20 and taken over by us."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ go into data.js, except what is the player's own firmware:
|
||||
box the HOT KEYS box is the QUANTIZE label's image recoloured with
|
||||
HOT KEYS written on it; the browser makes it from the user's image.
|
||||
|
||||
arnoldasr's mods (credited on the site), as patch_cdj900nxs.py splits them
|
||||
arnoldasr's mods (credited on the site; advanced_waveforms now ours, based on his), as patch_cdj900nxs.py splits them
|
||||
up, are in data.js the same way: per combination of extended_bpm, phasemeter
|
||||
and advanced_waveforms the bytes they change, except the asset blob at 0x08FC2D00,
|
||||
which starts with a copy of the firmware's resource table: the browser makes
|
||||
@@ -189,9 +189,11 @@ def main():
|
||||
for k in range(1, len(p.UPSTREAM) + 1):
|
||||
for up in itertools.combinations(p.UPSTREAM, k):
|
||||
app = p.patch(stock, list(up), public=True)
|
||||
blob_len = len(app) - (p.DATA_BASE - BASE)
|
||||
# the asset blob itself (code of ours after it, advanced_waveforms'
|
||||
# fix, goes as data)
|
||||
blob_len = min(len(ASSETS(stock)[0]), len(app) - (p.DATA_BASE - BASE))
|
||||
masked = bytearray(app)
|
||||
masked[p.DATA_BASE - BASE:] = bytes(blob_len)
|
||||
masked[p.DATA_BASE - BASE:p.DATA_BASE - BASE + blob_len] = bytes(blob_len)
|
||||
ops = ops_for(stock, bytes(masked), [])
|
||||
ops.append({'op': 'assets', 'addr': p.DATA_BASE, 'len': blob_len})
|
||||
if apply_ops(stock, stock, ops, hk, len(app)) != app:
|
||||
|
||||
Reference in new issue
Block a user