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:
Thiemo TizianiandClaude Opus 5.5 committed 2026-10-20 10:07:56 +02:00
1 parent f7dbeb6288
commit e6351de711
9 files changed
+83 -33

No files matched your search

+26 -2
View File
@@ -1,8 +1,16 @@
// Generated by tools/make_builder_data.py from tools/changelog.json and the mods' versions.
window.CDJ_VERSIONS = {
"site": "1.2.1",
"site": "1.3.0",
"date": "2026-10-20",
"log": [
{
"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",
@@ -47,7 +55,7 @@ window.CDJ_VERSIONS = {
"mods": {
"extended_bpm": "1.0.0",
"phasemeter": "1.0.0",
"advanced_waveforms": "1.0.0",
"advanced_waveforms": "1.0.1",
"beatjump": "1.0.0",
"cuecolours": "1.0.0",
"hotcuekeys": "1.2.0",
@@ -113,6 +121,22 @@ window.CDJ_VERSIONS = {
"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."
]
}
]
}
};
+7 -7
View File
@@ -8,12 +8,12 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css?v=1.2.1">
<script src="assets/versions.js?v=1.2.1"></script>
<script src="script.js?v=1.2.1"></script>
<script src="builder/data.js?v=1.2.1"></script>
<script src="builder/builder.js?v=1.2.1"></script>
<script src="builder/ui.js?v=1.2.1"></script>
<link rel="stylesheet" href="style.css?v=1.3.0">
<script src="assets/versions.js?v=1.3.0"></script>
<script src="script.js?v=1.3.0"></script>
<script src="builder/data.js?v=1.3.0"></script>
<script src="builder/builder.js?v=1.3.0"></script>
<script src="builder/ui.js?v=1.3.0"></script>
</head>
<body>
@@ -98,7 +98,7 @@
<div class="wrap cols">
<div>
<div class="ai"><span class="dot"></span>Made with Claude Code · Claude Opus 5.5</div>
<p>This website, the builder, our mods and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code>, <code>phasemeter</code> and <code>advanced_waveforms</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>.</p>
<p>This website, the builder, our mods and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>; <code>advanced_waveforms</code> is based on his <code>rgb_waveform</code> and is now updated and published by us.</p>
</div>
<div>
<h4>Disclaimer</h4>
+1 -1
View File
@@ -1,2 +1,2 @@
// Generated by tools/make_builder_data.py -- do not edit.
window.BUILDER_DATA = {"stockUpdSha256":"e96bca7d1ac983985992a8e5fa7813e1ebf04bef514e0c6cfd0a8375f667f7f9","stockAppSha256":"1ac3e30cde292865413950fe159663b3958e85939ed0a5d0122f796809a5f8ef","appSize":16519056,"dataBase":150744320,"upstream":{"extended_bpm":{"size":16576352,"ops":[["data",145914824,"45b88bcd5afea839"],["data",146586208,"c465a030b70c781e"],["data",146586876,"c465a030b70c781e"],["data",146618952,"c3967666e153796f"],["data",146619984,"7f0079b1f754ae7e"],["data",146620120,"a91a9b3491491b64"],["data",146829820,"f9e6d34295c320f0"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150739456,"786195378d06baff"],["data",150739521,"503c09b6b0baefb3"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"7010683be462baa0"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"172e933902cb3738"],["data",150742016,"2853d86b697a9dfa"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["assets",150744320,49760]]},"phasemeter":{"size":16576352,"ops":[["data",135069542,"845677fae2e67916"],["data",145914824,"45b88bcd5afea839"],["data",145941230,"6922e93e3827642c"],["data",145986008,"84014a74358fe2ac"],["data",145987228,"84014a74358fe2ac"],["data",145988312,"84014a74358fe2ac"],["data",146168552,"84014a74358fe2ac"],["data",146172320,"84014a74358fe2ac"],["data",146173504,"84014a74358fe2ac"],["data",146829820,"f9e6d34295c320f0"],["data",147236557,"371b074706e32cac"],["data",147246288,"060f2c4b6cd4c5e4"],["data",150411792,"845677fae2e67916"],["data",150427952,"845677fae2e67916"],["data",150446592,"845677fae2e67916"],["data",150464904,"845677fae2e67916"],["data",150483144,"845677fae2e67916"],["data",150501528,"845677fae2e67916"],["data",150519852,"845677fae2e67916"],["data",150538228,"845677fae2e67916"],["data",150556534,"845677fae2e67916"],["data",150572646,"845677fae2e67916"],["data",150587026,"845677fae2e67916"],["data",150601380,"845677fae2e67916"],["data",150619274,"845677fae2e67916"],["data",150637628,"845677fae2e67916"],["data",150655862,"845677fae2e67916"],["data",150673666,"845677fae2e67916"],["data",150692276,"845677fae2e67916"],["data",150709976,"845677fae2e67916"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150739456,"786195378d06baff"],["data",150739521,"503c09b6b0baefb3"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"7010683be462baa0"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"172e933902cb3738"],["data",150742016,"acf759afff056d54"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["assets",150744320,49760]]},"advanced_waveforms":{"size":16577120,"ops":[["data",144311836,"ca71ec9290d6ed48"],["data",146565168,"52b8fe18a1fed3bf"],["data",146565756,"a2721044eff0d2f6"],["data",146603378,"620bfdaa346b088f"],["data",146603856,"582d807f9ed58432"],["data",147243844,"d77596e8499df246"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150738944,"91aaac306bd43135"],["data",150739456,"786195378d06baff"],["data",150739521,"d5326732238d3e24"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"f9699e90e078917d"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"bb010f4579136412"],["data",150742016,"9bed08a38f1020b6"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["assets",150744320,50528]]},"extended_bpm,phasemeter":{"size":16576352,"ops":[["data",135069542,"845677fae2e67916"],["data",145914824,"45b88bcd5afea839"],["data",145941230,"6922e93e3827642c"],["data",145986008,"84014a74358fe2ac"],["data",145987228,"84014a74358fe2ac"],["data",145988312,"84014a74358fe2ac"],["data",146168552,"84014a74358fe2ac"],["data",146172320,"84014a74358fe2ac"],["data",146173504,"84014a74358fe2ac"],["data",146586208,"c465a030b70c781e"],["data",146586876,"c465a030b70c781e"],["data",146618952,"c3967666e153796f"],["data",146619984,"7f0079b1f754ae7e"],["data",146620120,"a91a9b3491491b64"],["data",146829820,"f9e6d34295c320f0"],["data",147236557,"371b074706e32cac"],["data",147246288,"060f2c4b6cd4c5e4"],["data",150411792,"845677fae2e67916"],["data",150427952,"845677fae2e67916"],["data",150446592,"845677fae2e67916"],["data",150464904,"845677fae2e67916"],["data",150483144,"845677fae2e67916"],["data",150501528,"845677fae2e67916"],["data",150519Line truncated
window.BUILDER_DATA = {"stockUpdSha256":"e96bca7d1ac983985992a8e5fa7813e1ebf04bef514e0c6cfd0a8375f667f7f9","stockAppSha256":"1ac3e30cde292865413950fe159663b3958e85939ed0a5d0122f796809a5f8ef","appSize":16519056,"dataBase":150744320,"upstream":{"extended_bpm":{"size":16576352,"ops":[["data",145914824,"45b88bcd5afea839"],["data",146586208,"c465a030b70c781e"],["data",146586876,"c465a030b70c781e"],["data",146618952,"c3967666e153796f"],["data",146619984,"7f0079b1f754ae7e"],["data",146620120,"a91a9b3491491b64"],["data",146829820,"f9e6d34295c320f0"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150739456,"786195378d06baff"],["data",150739521,"503c09b6b0baefb3"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"7010683be462baa0"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"172e933902cb3738"],["data",150742016,"2853d86b697a9dfa"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["assets",150744320,49760]]},"phasemeter":{"size":16576352,"ops":[["data",135069542,"845677fae2e67916"],["data",145914824,"45b88bcd5afea839"],["data",145941230,"6922e93e3827642c"],["data",145986008,"84014a74358fe2ac"],["data",145987228,"84014a74358fe2ac"],["data",145988312,"84014a74358fe2ac"],["data",146168552,"84014a74358fe2ac"],["data",146172320,"84014a74358fe2ac"],["data",146173504,"84014a74358fe2ac"],["data",146829820,"f9e6d34295c320f0"],["data",147236557,"371b074706e32cac"],["data",147246288,"060f2c4b6cd4c5e4"],["data",150411792,"845677fae2e67916"],["data",150427952,"845677fae2e67916"],["data",150446592,"845677fae2e67916"],["data",150464904,"845677fae2e67916"],["data",150483144,"845677fae2e67916"],["data",150501528,"845677fae2e67916"],["data",150519852,"845677fae2e67916"],["data",150538228,"845677fae2e67916"],["data",150556534,"845677fae2e67916"],["data",150572646,"845677fae2e67916"],["data",150587026,"845677fae2e67916"],["data",150601380,"845677fae2e67916"],["data",150619274,"845677fae2e67916"],["data",150637628,"845677fae2e67916"],["data",150655862,"845677fae2e67916"],["data",150673666,"845677fae2e67916"],["data",150692276,"845677fae2e67916"],["data",150709976,"845677fae2e67916"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150739456,"786195378d06baff"],["data",150739521,"503c09b6b0baefb3"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"7010683be462baa0"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"172e933902cb3738"],["data",150742016,"acf759afff056d54"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["assets",150744320,49760]]},"advanced_waveforms":{"size":16636928,"ops":[["data",144311836,"ca71ec9290d6ed48"],["data",146565168,"52b8fe18a1fed3bf"],["data",146565756,"a2721044eff0d2f6"],["data",146603378,"620bfdaa346b088f"],["data",146603856,"582d807f9ed58432"],["data",147243844,"d77596e8499df246"],["data",150736896,"6d11cfe939a0630a"],["data",150737408,"a4d77ab57ab896dd"],["data",150737920,"906ea135b6ba2cef"],["data",150738432,"d6db78bde1edbcae"],["data",150738944,"91aaac306bd43135"],["data",150739456,"786195378d06baff"],["data",150739521,"d5326732238d3e24"],["data",150739968,"160adecaa849e284"],["data",150740480,"d82da843aae59533"],["data",150740992,"eede35a6260db6bf"],["data",150741248,"ebd1070ec574dec1"],["data",150741504,"bb010f4579136412"],["data",150742016,"9bed08a38f1020b6"],["data",150742272,"7c188559c27b7ceb"],["data",150742528,"e3f375bd0e18a505"],["data",150742784,"4617c585a7472b06"],["data",150743424,"163da0f1e1acc40a"],["data",150744064,"5e4e42864642a517"],["data",150853648,"87741faeb81ce6a9"],["assets",150744320,50528]]},"extended_bpm,phasemeter":{"size":16576352,"ops":[["data",135069542,"845677fae2e67916"],["data",145914824,"45b88bcd5afea839"],["data",145941230,"6922e93e3827642c"],["data",145986008,"84014a74358fe2ac"],["data",145987228,"84014a74358fe2ac"],["data",145988312,"84014a74358fe2ac"],["data",146168552,"84014a74358fe2ac"],["data",146172320,"84014a74358fe2ac"],["data",146173504,"84014a74358fe2ac"],["data",146586208,"c465a030b70c781e"],["data",146586876,"c465a030b70c781e"],["data",146618952,"c3967666e153796f"],["data",146619984,"7f0079b1f754ae7e"],["data",146620120,"a91a9b3491491b64"],["data",146829820,"f9e6d34295c320f0"],["data",147236557,"371b074706e32cac"],["data",147246288,"060f2c4b6cd4c5e4"],["data",150411792,"845677fae2e67916"],["data",150427952,"845677fae2e67916"],["data",150446592,"845677fae2e67916"],["data",150464904,"845677fae2e67916"],["data",150483144,"845677fae2e67916"],["data",150501Line truncated
+2 -2
View File
@@ -7,7 +7,7 @@
what: 'BPM with two decimals: the tenths as a small digit above, the hundredths below.' },
{ id: 'phasemeter', name: 'Phase meter', by: 'arnoldasr', state: 'stable',
what: 'Two-line phase meter instead of the four boxes; UTILITY › PHASE METER (was SLIP FLASHING) switches it.' },
{ id: 'advanced_waveforms', name: 'Advanced waveforms', by: 'arnoldasr', state: 'stable',
{ id: 'advanced_waveforms', name: 'Advanced waveforms', by: 'based', state: 'stable',
what: 'The big waveform in RGB colours, the overview as a red-to-white gradient.' },
{ id: 'beatjump', name: 'Beat jump', by: 'ours', state: 'experimental', needs: 'hotcuekeys',
what: 'TRACK SEARCH ◀◀ ▶▶ jumps 1/2/4/8 beats along the beat grid, at once and in phase. UTILITY › BEAT JUMP (was SCREEN SAVER).' },
@@ -62,7 +62,7 @@
'<span class="pick-main"><span class="pick-name">' + m.name + ' <code>' + m.id + '</code>' +
(window.CDJ_VERSIONS && window.CDJ_VERSIONS.mods[m.id] ? ' <span class="ver">v' + window.CDJ_VERSIONS.mods[m.id] + '</span>' : '') + '</span>' +
'<span class="pick-what">' + m.what + '</span>' +
'<span class="pick-by">' + (m.by === 'ours' ? 'ours · made with Claude Code' : 'by arnoldasr') +
'<span class="pick-by">' + (m.by === 'ours' ? 'ours · made with Claude Code' : m.by === 'based' ? 'ours · based on arnoldasr, updated and published by us' : 'by arnoldasr') +
(m.needs ? ' · needs <code>' + m.needs + '</code>' : '') + '</span></span>' +
'<span class="state ' + m.state + '">' + m.state + '</span>';
row.querySelector('input').addEventListener('change', function (e) { toggle(m.id, e.target.checked); });
+7 -7
View File
@@ -8,9 +8,9 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css?v=1.2.1">
<script src="assets/versions.js?v=1.2.1"></script>
<script src="script.js?v=1.2.1"></script>
<link rel="stylesheet" href="style.css?v=1.3.0">
<script src="assets/versions.js?v=1.3.0"></script>
<script src="script.js?v=1.3.0"></script>
</head>
<body>
@@ -83,8 +83,8 @@
<p>Build with no mod ticked in the builder (or <code>--stock</code> with the patcher): the original application, relabelled so the player accepts it. Update as above. Keep this file on a stick before you try any mod.</p>
<!-- ===================== mods ===================== -->
<h2 id="advanced_waveforms">advanced_waveforms <span class="badge author">arnoldasr</span></h2>
<p>The big waveform in RGB colours from the track's colour waveform data, and the overview's colour table as a red-to-white gradient. (Named <code>rgb_waveform</code> before site 1.2.0; the patcher still takes the old name.) A WAVEFORM item in UTILITY with BLUE / RGB / 3BAND is in testing, see <a href="upcoming.html">Upcoming</a>.</p>
<h2 id="advanced_waveforms">advanced_waveforms <span class="badge author">ours · based on arnoldasr</span></h2>
<p>The big waveform in RGB colours from the track's colour waveform data, and the overview's colour table as a red-to-white gradient. It is based on arnoldasr's <code>rgb_waveform</code> (the name before site 1.2.0, which the patcher still takes); we took it over and publish its updates. 1.0.1: rekordbox's colour data is used also when it is a few columns shorter than the waveform, which is common; such tracks showed the plain gradient colours before. A WAVEFORM item in UTILITY with BLUE / RGB / 3BAND is in testing, see <a href="upcoming.html">Upcoming</a>.</p>
<figure class="shot"><img src="assets/detail-mods.png" alt="RGB detail waveform"><figcaption>RGB detail waveform.</figcaption></figure>
<h2 id="extended_bpm">extended_bpm <span class="badge author">arnoldasr</span></h2>
@@ -223,7 +223,7 @@
<table>
<thead><tr><th>Mod</th><th>By</th><th>Status</th><th>Player</th></tr></thead>
<tbody>
<tr><td><code>advanced_waveforms</code></td><td>arnoldasr</td><td><span class="state stable">stable</span></td><td><span class="player">ran on a player</span></td></tr>
<tr><td><code>advanced_waveforms</code></td><td>ours (based on arnoldasr)</td><td><span class="state stable">stable</span></td><td><span class="player">ran on a player</span></td></tr>
<tr><td><code>extended_bpm</code></td><td>arnoldasr</td><td><span class="state stable">stable</span></td><td><span class="player">ran on a player</span></td></tr>
<tr><td><code>phasemeter</code></td><td>arnoldasr</td><td><span class="state stable">stable</span></td><td><span class="player">ran on a player</span></td></tr>
<tr><td><code>cuecolours</code></td><td>ours</td><td><span class="state stable">stable</span></td><td><span class="player">ran on a player</span></td></tr>
@@ -254,7 +254,7 @@
<div class="wrap cols">
<div>
<div class="ai"><span class="dot"></span>Made with Claude Code · Claude Opus 5.5</div>
<p>This website, the builder, the mods <code>cuecolours</code>, <code>hotcuekeys</code>, <code>ledsaver</code>, <code>keynotation</code> and <code>credit</code>, and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>advanced_waveforms</code>, <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>.</p>
<p>This website, the builder, the mods <code>cuecolours</code>, <code>hotcuekeys</code>, <code>ledsaver</code>, <code>keynotation</code> and <code>credit</code>, and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>; <code>advanced_waveforms</code> is based on his <code>rgb_waveform</code> and is now updated and published by us.</p>
</div>
<div>
<h4>Disclaimer</h4>
+7 -7
View File
@@ -8,9 +8,9 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css?v=1.2.1">
<script src="assets/versions.js?v=1.2.1"></script>
<script src="script.js?v=1.2.1"></script>
<link rel="stylesheet" href="style.css?v=1.3.0">
<script src="assets/versions.js?v=1.3.0"></script>
<script src="script.js?v=1.3.0"></script>
</head>
<body>
@@ -70,7 +70,7 @@
<section id="mods">
<div class="wrap">
<h2 class="section-title">The mods</h2>
<p class="section-sub">Each one compared with stock. Three are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>, four are ours. Choose any combination in the <a href="builder.html">builder</a>.</p>
<p class="section-sub">Each one compared with stock. Two are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>, one is based on his work and now ours, the rest are ours. Choose any combination in the <a href="builder.html">builder</a>.</p>
<div class="legend">
<span class="state stable">stable</span>
<span class="state experimental">experimental</span>
@@ -85,11 +85,11 @@
<div class="icon" aria-hidden="true">🌈</div>
<div>
<h3>Advanced waveforms <code>advanced_waveforms</code></h3>
<div class="by">by arnoldasr</div>
<div class="by">ours · based on arnoldasr's rgb_waveform, updated and published by us</div>
</div>
<div class="meta"><span class="player">ran on a player</span><span class="state stable">stable</span></div>
</div>
<p>The big waveform in RGB colours, as on newer Pioneer players, instead of plain blue — and the whole-track overview at the bottom as a warm red-to-white gradient, so drops and breaks stand out.</p>
<p>The big waveform in RGB colours, as on newer Pioneer players, instead of plain blue — and the whole-track overview at the bottom as a warm red-to-white gradient, so drops and breaks stand out. It started as arnoldasr's <code>rgb_waveform</code>; we took it over and keep it up to date (1.0.1: rekordbox's colours now also on tracks whose colour data is a little shorter than the waveform — before, those fell back to plain gradient colours).</p>
<div class="vs">
<figure><img src="assets/detail-stock.png" alt="Stock blue detail waveform"><figcaption>Stock</figcaption></figure>
<figure class="mod"><img src="assets/detail-mods.png" alt="RGB detail waveform"><figcaption>RGB</figcaption></figure>
@@ -301,7 +301,7 @@
<div class="wrap cols">
<div>
<div class="ai"><span class="dot"></span>Made with Claude Code · Claude Opus 5.5</div>
<p>This website, the builder, the mods <code>cuecolours</code>, <code>hotcuekeys</code>, <code>ledsaver</code>, <code>keynotation</code> and <code>credit</code>, and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>advanced_waveforms</code>, <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>.</p>
<p>This website, the builder, the mods <code>cuecolours</code>, <code>hotcuekeys</code>, <code>ledsaver</code>, <code>keynotation</code> and <code>credit</code>, and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>; <code>advanced_waveforms</code> is based on his <code>rgb_waveform</code> and is now updated and published by us.</p>
</div>
<div>
<h4>Disclaimer</h4>
+24
View File
@@ -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."
]
}
]
}
}
+5 -3
View File
@@ -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:
+4 -4
View File
@@ -8,9 +8,9 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css?v=1.2.1">
<script src="assets/versions.js?v=1.2.1"></script>
<script src="script.js?v=1.2.1"></script>
<link rel="stylesheet" href="style.css?v=1.3.0">
<script src="assets/versions.js?v=1.3.0"></script>
<script src="script.js?v=1.3.0"></script>
</head>
<body>
@@ -128,7 +128,7 @@
<div class="wrap cols">
<div>
<div class="ai"><span class="dot"></span>Made with Claude Code · Claude Opus 5.5</div>
<p>This website, the builder, our mods and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>advanced_waveforms</code>, <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>.</p>
<p>This website, the builder, our mods and the patcher were developed with Claude Code (Anthropic's AI coding assistant, model Claude Opus 5.5), by reverse engineering the firmware in an emulator. The mods <code>extended_bpm</code> and <code>phasemeter</code> are by <a href="https://github.com/arnoldasr/cdj900nxs">arnoldasr</a>; <code>advanced_waveforms</code> is based on his <code>rgb_waveform</code> and is now updated and published by us.</p>
</div>
<div>
<h4>Disclaimer</h4>