glossolalia / static /index.html
akshan-main's picture
mirror static/index.html
0494e3e verified
Raw
History Blame Contribute Delete
3.37 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title>Glossolalia Dial</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap" />
<link rel="stylesheet" href="/static/style.css" />
</head>
<body>
<main class="container">
<header class="hero">
<h1>GLOSSOLALIA</h1>
<p class="tagline">
Type a sentence. Pick a voice. Turn the dial.<br />
Hear it dissolve from speech to wordless tongues — in the same voice.
</p>
<span class="accent-line"></span>
</header>
<section class="panel">
<label class="field">
<span>Sentence</span>
<textarea id="sentence" rows="2" placeholder="type anything">I had a dream last night about the ocean.</textarea>
</label>
<div class="row">
<div class="field voices">
<span>Voice</span>
<div class="voice-pills" id="voicePills">
<button class="pill active" data-voice="v1">v1 · warm alto</button>
<button class="pill" data-voice="v2">v2 · bright tenor</button>
<button class="pill" data-voice="v3">v3 · soft mezzo</button>
</div>
</div>
<div class="field fx">
<span>Post-FX</span>
<select id="postfx">
<option value="dry">dry</option>
<option value="subtle" selected>subtle</option>
<option value="lush">lush</option>
<option value="cathedral">cathedral</option>
</select>
</div>
</div>
<div class="knob-block">
<div class="dial-frame">
<div class="knob" id="knob" role="slider"
aria-valuemin="0" aria-valuemax="4" aria-valuenow="0"
tabindex="0">
<div class="knob-track"></div>
<div class="knob-needle"></div>
<div class="knob-value" id="knobValue">0</div>
<div class="knob-label">Plain ↔ Tongues</div>
</div>
<div class="tick-row">
<span>Plain</span><span>1</span><span>2</span><span>3</span><span>Tongues</span>
</div>
</div>
<div class="controls">
<button class="primary" id="speakBtn">Speak</button>
<button class="primary ghost" id="morphBtn">Morph 0 → 4</button>
<label class="seed">
<span>Seed</span>
<input id="seed" type="number" value="42" min="0" />
</label>
</div>
</div>
<div class="output">
<audio id="audio" controls></audio>
<div id="status" class="status">ready</div>
</div>
</section>
<footer class="foot">
Open weights · runs locally · the dial is a fine-tuned control token, not a DSP effect.
In the lineage of Sigur Rós' Hopelandic, Lisa Gerrard, and the long tradition of wordless
vocal music.<br />
BUILD-SMALL-HACKATHON · THOUSAND TOKEN WOOD
</footer>
</main>
<script type="module" src="/static/knob.js"></script>
</body>
</html>