Simonlob commited on
Commit
8ed1a69
·
1 Parent(s): a546662

mode-switch fix, remove example autoplay

Browse files
Files changed (1) hide show
  1. index.html +14 -22
index.html CHANGED
@@ -97,6 +97,7 @@
97
  }
98
  body { display: flex; flex-direction: column; min-height: 100vh; }
99
  .mono { font-family: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; }
 
100
 
101
  /* ===== Top bar ===== */
102
  .topbar {
@@ -654,14 +655,8 @@
654
  }
655
  .examples { order: 1; }
656
  .example-chip { padding: 6px 11px; font-size: 12px; }
657
- .render-btn {
658
- order: 2;
659
- width: 100%;
660
- padding: 12px 16px;
661
- font-size: 14px;
662
- justify-content: center;
663
- }
664
- .toast { order: 3; }
665
 
666
  /* Toast — slide up from bottom on mobile for visibility */
667
  .toast {
@@ -733,10 +728,14 @@
733
  <span id="tc-s">00</span><span class="sep">:</span><span id="tc-f">00</span>
734
  <span style="margin-left: 8px; font-size: 11px; color: var(--text-faint)" id="dur-text">0:00</span>
735
  </div>
736
- <div class="spacer"></div>
737
  <div class="info">
738
  <span class="k">Engine</span><span class="v">Gepard · 32 FSQ heads</span>
739
  </div>
 
 
 
 
 
740
  </div>
741
  </section>
742
 
@@ -787,10 +786,6 @@
787
 
788
  <div class="row-actions">
789
  <div class="examples" id="examples"></div>
790
- <button class="render-btn" id="render-btn" type="button">
791
- <span class="icon" id="render-icon">▶</span>
792
- <span id="render-label">Render</span>
793
- </button>
794
  </div>
795
 
796
  <div class="toast hidden" id="toast"></div>
@@ -867,7 +862,9 @@ const setMode = (m) => {
867
  mode = m;
868
  els.modePreset.classList.toggle("active", m === "preset");
869
  els.modeClone.classList.toggle("active", m !== "preset");
 
870
  els.refSection.classList.toggle("hidden", m !== "clone");
 
871
  };
872
  els.modePreset.addEventListener("click", () => setMode("preset"));
873
  els.modeClone.addEventListener("click", () => setMode("clone"));
@@ -1049,6 +1046,10 @@ const sliderValue = (key) => Number($(`sl-${key}`).value);
1049
 
1050
  // ---------- Player ----------
1051
  const loadAudio = (url, script, filename = "gepard.wav") => {
 
 
 
 
1052
  audioEl = new Audio(url);
1053
  audioEl.preload = "auto";
1054
  audioEl._downloadName = filename;
@@ -1256,15 +1257,6 @@ document.getElementById("theme-toggle").addEventListener("click", () => {
1256
  renderExamples(cfg.examples);
1257
  client = await Client.connect(window.location.origin);
1258
  highlightLoop();
1259
-
1260
- // Lazy cache: warm the first 3 examples in the background so first
1261
- // click is instant. Sequential to avoid GPU contention; failures are
1262
- // silent (next click will retry).
1263
- (async () => {
1264
- for (const ex of cfg.examples.slice(0, 3)) {
1265
- try { await synthesizeForExample(ex); } catch (e) { /* skip */ }
1266
- }
1267
- })();
1268
  })();
1269
  </script>
1270
  </body>
 
97
  }
98
  body { display: flex; flex-direction: column; min-height: 100vh; }
99
  .mono { font-family: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; }
100
+ .hidden { display: none !important; }
101
 
102
  /* ===== Top bar ===== */
103
  .topbar {
 
655
  }
656
  .examples { order: 1; }
657
  .example-chip { padding: 6px 11px; font-size: 12px; }
658
+ /* Keep Render compact; on narrow screens let the transport bar wrap. */
659
+ .transport { flex-wrap: wrap; }
 
 
 
 
 
 
660
 
661
  /* Toast — slide up from bottom on mobile for visibility */
662
  .toast {
 
728
  <span id="tc-s">00</span><span class="sep">:</span><span id="tc-f">00</span>
729
  <span style="margin-left: 8px; font-size: 11px; color: var(--text-faint)" id="dur-text">0:00</span>
730
  </div>
 
731
  <div class="info">
732
  <span class="k">Engine</span><span class="v">Gepard · 32 FSQ heads</span>
733
  </div>
734
+ <div class="spacer"></div>
735
+ <button class="render-btn" id="render-btn" type="button">
736
+ <span class="icon" id="render-icon">▶</span>
737
+ <span id="render-label">Render</span>
738
+ </button>
739
  </div>
740
  </section>
741
 
 
786
 
787
  <div class="row-actions">
788
  <div class="examples" id="examples"></div>
 
 
 
 
789
  </div>
790
 
791
  <div class="toast hidden" id="toast"></div>
 
862
  mode = m;
863
  els.modePreset.classList.toggle("active", m === "preset");
864
  els.modeClone.classList.toggle("active", m !== "preset");
865
+ // Preset → show speaker dropdown only; Clone → show reference panel only.
866
  els.refSection.classList.toggle("hidden", m !== "clone");
867
+ els.speaker.classList.toggle("hidden", m === "clone");
868
  };
869
  els.modePreset.addEventListener("click", () => setMode("preset"));
870
  els.modeClone.addEventListener("click", () => setMode("clone"));
 
1046
 
1047
  // ---------- Player ----------
1048
  const loadAudio = (url, script, filename = "gepard.wav") => {
1049
+ // Silence any previously loaded clip: reassigning `audioEl` alone does not
1050
+ // stop the old element, which is what caused overlapping playback.
1051
+ if (audioEl) { audioEl.pause(); audioEl.src = ""; }
1052
+ isPlaying = false;
1053
  audioEl = new Audio(url);
1054
  audioEl.preload = "auto";
1055
  audioEl._downloadName = filename;
 
1257
  renderExamples(cfg.examples);
1258
  client = await Client.connect(window.location.origin);
1259
  highlightLoop();
 
 
 
 
 
 
 
 
 
1260
  })();
1261
  </script>
1262
  </body>