9cd8292acc
Lint & Validate / lint (push) Has been cancelled
P2-R1: ALSA + JACK2 low-latency config (scripts, quirks, tuning) P2-R2: Carla integration (build scripts, 8ch rack config, NAM LV2 support) P2-R3: Plugin manager, categories, blacklist, NAM model support P3-R1: Mixer DSP engine (channel strip, routing matrix, bus mgr, automation) P4-R1: MIDI engine (learn mode, clock sync, HID discovery, mapping store) P4-R2: Network API (OSC server, FastAPI REST, WebSocket, auth, rate limiter) P5-R1: Touchscreen UI evaluation + main entry point docs: Audio stack, Carla integration, MIDI support, UI evaluation tests: Full test suite (292 passing)
57 lines
2.3 KiB
HTML
57 lines
2.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>RPi Audio Mixer</title>
|
|
<link rel="stylesheet" href="/style.css">
|
|
</head>
|
|
<body>
|
|
<div id="app">
|
|
<header id="toolbar">
|
|
<h1>RPi Audio Mixer</h1>
|
|
<div id="connection">
|
|
<span id="conn-status" class="status disconnected">● Disconnected</span>
|
|
<input type="text" id="apikey-input" placeholder="API Key" value="mixer-local" size="14">
|
|
<button id="login-btn" onclick="login()">Login</button>
|
|
<button id="connect-btn" onclick="connectWS()" disabled>Connect</button>
|
|
</div>
|
|
</header>
|
|
|
|
<div id="transport-bar">
|
|
<button class="tbtn" id="btn-play" onclick="sendTransport('play')">▶ Play</button>
|
|
<button class="tbtn" id="btn-stop" onclick="sendTransport('stop')">■ Stop</button>
|
|
<button class="tbtn" id="btn-record" onclick="sendTransport('record')">● Rec</button>
|
|
<button class="tbtn" id="btn-loop" onclick="sendTransport('loop')">↻ Loop</button>
|
|
<span id="tempo-display">120 BPM</span>
|
|
<span id="time-display">00:00:00</span>
|
|
</div>
|
|
|
|
<div id="mixer">
|
|
<div id="channels"></div>
|
|
<div id="master-section">
|
|
<h3>Master</h3>
|
|
<div class="fader-v" id="master-fader">
|
|
<input type="range" min="-60" max="12" value="0" step="0.5" orient="vertical"
|
|
oninput="sendParam('master_volume', this.value, -1)">
|
|
<span class="fader-label">Master</span>
|
|
<span class="fader-value" id="master-vol-val">0.0 dB</span>
|
|
</div>
|
|
<div class="master-controls">
|
|
<button id="btn-mute-master" onclick="sendParam('master_mute', 1, -1)">Mute</button>
|
|
<button id="btn-dim" onclick="sendParam('master_dim', 1, -1)">Dim</button>
|
|
<button id="btn-mono" onclick="sendParam('master_mono', 1, -1)">Mono</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="log-panel">
|
|
<h3>Activity Log</h3>
|
|
<div id="log"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/app.js"></script>
|
|
</body>
|
|
</html>
|