Commit
·
cb92fd2
1
Parent(s):
4843704
sliders update for html
Browse files- magentaRT_rt_tester.html +121 -21
magentaRT_rt_tester.html
CHANGED
|
@@ -31,6 +31,15 @@
|
|
| 31 |
.err { color: #ff8080; }
|
| 32 |
.badge { padding: 2px 6px; border-radius: 999px; background: #2a2a3a; font-size: 12px; }
|
| 33 |
.sep { height: 1px; background: #212133; margin: 12px 0; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
</style>
|
| 35 |
</head>
|
| 36 |
<body>
|
|
@@ -110,11 +119,16 @@
|
|
| 110 |
<button id="btnUpdate" class="btn">Send Update Now</button>
|
| 111 |
</div>
|
| 112 |
<div class="col-6">
|
| 113 |
-
<label>Styles
|
| 114 |
-
<
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
</div>
|
| 119 |
</div>
|
| 120 |
</div>
|
|
@@ -202,8 +216,8 @@
|
|
| 202 |
const rngGuid = $("rngGuid"), numGuid = $("numGuid");
|
| 203 |
const rngTopk = $("rngTopk"), numTopk = $("numTopk");
|
| 204 |
const rngVol = $("rngVol"), numVol = $("numVol");
|
| 205 |
-
const txtStyles = $("txtStyles");
|
| 206 |
-
const txtStyleWeights = $("txtStyleWeights");
|
| 207 |
const chkUseMixStyle = $("chkUseMixStyle");
|
| 208 |
const statusEl = $("status");
|
| 209 |
const queueEl = $("queue");
|
|
@@ -331,20 +345,20 @@ async function scheduleWavBytes(arrayBuffer) {
|
|
| 331 |
}
|
| 332 |
}
|
| 333 |
|
| 334 |
-
function currentParams() {
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
-
|
| 344 |
-
|
| 345 |
-
|
| 346 |
-
|
| 347 |
-
}
|
| 348 |
|
| 349 |
function sendUpdate() {
|
| 350 |
if (!ws || ws.readyState !== 1) return;
|
|
@@ -394,6 +408,92 @@ async function scheduleWavBytes(arrayBuffer) {
|
|
| 394 |
linkRangeNumber(rngC4, numC4);
|
| 395 |
linkRangeNumber(rngC5, numC5);
|
| 396 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 397 |
async function start() {
|
| 398 |
if (connected) return;
|
| 399 |
if (!AudioCtx) { alert("Web Audio API not supported"); return; }
|
|
|
|
| 31 |
.err { color: #ff8080; }
|
| 32 |
.badge { padding: 2px 6px; border-radius: 999px; background: #2a2a3a; font-size: 12px; }
|
| 33 |
.sep { height: 1px; background: #212133; margin: 12px 0; }
|
| 34 |
+
|
| 35 |
+
.style-list { display: flex; flex-direction: column; gap: 8px; }
|
| 36 |
+
.style-row {
|
| 37 |
+
display: grid;
|
| 38 |
+
grid-template-columns: 1fr 140px 70px 32px; /* name | slider | number | X */
|
| 39 |
+
gap: 10px;
|
| 40 |
+
align-items: center;
|
| 41 |
+
}
|
| 42 |
+
.style-row .remove { padding: 6px 8px; line-height: 1; }
|
| 43 |
</style>
|
| 44 |
</head>
|
| 45 |
<body>
|
|
|
|
| 119 |
<button id="btnUpdate" class="btn">Send Update Now</button>
|
| 120 |
</div>
|
| 121 |
<div class="col-6">
|
| 122 |
+
<label>Styles</label>
|
| 123 |
+
<div id="stylesUI">
|
| 124 |
+
<div id="styleRows" class="style-list"></div>
|
| 125 |
+
<div class="controls">
|
| 126 |
+
<button id="btnAddStyle" class="btn" type="button">+ Add style</button>
|
| 127 |
+
<label class="small" style="margin-left:8px;">
|
| 128 |
+
<input id="chkUseMixStyle" type="checkbox" /> Use current mix as style
|
| 129 |
+
</label>
|
| 130 |
+
</div>
|
| 131 |
+
</div>
|
| 132 |
</div>
|
| 133 |
</div>
|
| 134 |
</div>
|
|
|
|
| 216 |
const rngGuid = $("rngGuid"), numGuid = $("numGuid");
|
| 217 |
const rngTopk = $("rngTopk"), numTopk = $("numTopk");
|
| 218 |
const rngVol = $("rngVol"), numVol = $("numVol");
|
| 219 |
+
// const txtStyles = $("txtStyles");
|
| 220 |
+
// const txtStyleWeights = $("txtStyleWeights");
|
| 221 |
const chkUseMixStyle = $("chkUseMixStyle");
|
| 222 |
const statusEl = $("status");
|
| 223 |
const queueEl = $("queue");
|
|
|
|
| 345 |
}
|
| 346 |
}
|
| 347 |
|
| 348 |
+
// function currentParams() {
|
| 349 |
+
// return {
|
| 350 |
+
// temperature: parseFloat(numTemp.value),
|
| 351 |
+
// topk: parseInt(numTopk.value, 10),
|
| 352 |
+
// guidance_weight: parseFloat(numGuid.value),
|
| 353 |
+
// styles: txtStyles.value,
|
| 354 |
+
// style_weights: txtStyleWeights.value,
|
| 355 |
+
// use_current_mix_as_style: !!chkUseMixStyle.checked,
|
| 356 |
+
|
| 357 |
+
// // NEW:
|
| 358 |
+
// mean: parseFloat(numMean.value),
|
| 359 |
+
// centroid_weights: centroidWeightsCSV(),
|
| 360 |
+
// };
|
| 361 |
+
// }
|
| 362 |
|
| 363 |
function sendUpdate() {
|
| 364 |
if (!ws || ws.readyState !== 1) return;
|
|
|
|
| 408 |
linkRangeNumber(rngC4, numC4);
|
| 409 |
linkRangeNumber(rngC5, numC5);
|
| 410 |
|
| 411 |
+
|
| 412 |
+
// --- Dynamic Styles UI ---
|
| 413 |
+
const styleRows = document.getElementById("styleRows");
|
| 414 |
+
const btnAddStyle = document.getElementById("btnAddStyle");
|
| 415 |
+
|
| 416 |
+
function addStyleRow(name = "", weight = 1.0) {
|
| 417 |
+
const row = document.createElement("div");
|
| 418 |
+
row.className = "style-row";
|
| 419 |
+
row.innerHTML = `
|
| 420 |
+
<input class="style-name" type="text" placeholder="e.g. acid house" value="${name}">
|
| 421 |
+
<input class="style-range" type="range" min="0.0" max="2.0" step="0.01" value="${weight}">
|
| 422 |
+
<input class="style-number" type="number" min="0.0" max="2.0" step="0.01" value="${weight}">
|
| 423 |
+
<button class="btn remove" type="button" title="Remove">×</button>
|
| 424 |
+
`;
|
| 425 |
+
|
| 426 |
+
const nameEl = row.querySelector(".style-name");
|
| 427 |
+
const rangeEl = row.querySelector(".style-range");
|
| 428 |
+
const numEl = row.querySelector(".style-number");
|
| 429 |
+
const remove = row.querySelector(".remove");
|
| 430 |
+
|
| 431 |
+
// keep slider/number in sync + auto-update
|
| 432 |
+
const sync = (fromRange) => {
|
| 433 |
+
if (fromRange) numEl.value = rangeEl.value;
|
| 434 |
+
else rangeEl.value = numEl.value;
|
| 435 |
+
};
|
| 436 |
+
rangeEl.addEventListener("input", () => { sync(true); debouncedUpdate(); });
|
| 437 |
+
numEl.addEventListener("input", () => { sync(false); debouncedUpdate(); });
|
| 438 |
+
nameEl.addEventListener("input", () => { debouncedUpdate(); });
|
| 439 |
+
|
| 440 |
+
remove.addEventListener("click", () => { row.remove(); debouncedUpdate(); });
|
| 441 |
+
|
| 442 |
+
styleRows.appendChild(row);
|
| 443 |
+
// initial sync
|
| 444 |
+
sync(true);
|
| 445 |
+
}
|
| 446 |
+
|
| 447 |
+
function stylesCSV() {
|
| 448 |
+
// only include rows with non-empty names
|
| 449 |
+
return [...styleRows.querySelectorAll(".style-row")]
|
| 450 |
+
.map(r => r.querySelector(".style-name").value.trim())
|
| 451 |
+
.filter(s => s.length > 0)
|
| 452 |
+
.join(", ");
|
| 453 |
+
}
|
| 454 |
+
|
| 455 |
+
function styleWeightsCSV() {
|
| 456 |
+
// weights aligned with non-empty names (server defaults to 1.0 if missing)
|
| 457 |
+
const out = [];
|
| 458 |
+
for (const r of styleRows.querySelectorAll(".style-row")) {
|
| 459 |
+
const name = r.querySelector(".style-name").value.trim();
|
| 460 |
+
if (!name) continue;
|
| 461 |
+
const val = parseFloat(r.querySelector(".style-number").value);
|
| 462 |
+
out.push(Number.isFinite(val) ? val : 1.0);
|
| 463 |
+
}
|
| 464 |
+
return out.join(",");
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
// Default row to match your previous "warmup" default
|
| 468 |
+
addStyleRow("warmup", 1.0);
|
| 469 |
+
|
| 470 |
+
// add style on click
|
| 471 |
+
btnAddStyle.addEventListener("click", () => addStyleRow("", 1.0));
|
| 472 |
+
|
| 473 |
+
// --- Wire into your existing param-building ---
|
| 474 |
+
// Replace txtStyles/txtStyleWeights usage inside currentParams()
|
| 475 |
+
const ORIGINAL_currentParams = currentParams; // keep a copy if needed
|
| 476 |
+
currentParams = function () {
|
| 477 |
+
return {
|
| 478 |
+
temperature: parseFloat(numTemp.value),
|
| 479 |
+
topk: parseInt(numTopk.value, 10),
|
| 480 |
+
guidance_weight: parsefloatSafe(numGuid.value, 1.1),
|
| 481 |
+
|
| 482 |
+
// from the dynamic rows:
|
| 483 |
+
styles: stylesCSV(),
|
| 484 |
+
style_weights: styleWeightsCSV(),
|
| 485 |
+
use_current_mix_as_style: !!chkUseMixStyle.checked,
|
| 486 |
+
|
| 487 |
+
mean: parsefloatSafe(numMean?.value, 1.0),
|
| 488 |
+
centroid_weights: centroidWeightsCSV(),
|
| 489 |
+
};
|
| 490 |
+
};
|
| 491 |
+
|
| 492 |
+
function parsefloatSafe(v, dflt) {
|
| 493 |
+
const x = parseFloat(v);
|
| 494 |
+
return Number.isFinite(x) ? x : dflt;
|
| 495 |
+
}
|
| 496 |
+
|
| 497 |
async function start() {
|
| 498 |
if (connected) return;
|
| 499 |
if (!AudioCtx) { alert("Web Audio API not supported"); return; }
|