HTML · 3857 bytes Raw Blame History
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Gesture DSP - Web Audio Port</title>
7 <link rel="stylesheet" href="css/main.css">
8 </head>
9 <body>
10 <div class="container">
11 <header>
12 <h1>🎵 Gesture DSP - Web Audio Port</h1>
13 </header>
14
15 <section class="controls">
16 <div class="control-group">
17 <button id="startCamera" class="btn btn-primary">Start Camera</button>
18 <select id="audioSelect" class="select">
19 <option value="">Select Audio File...</option>
20 <option value="__demo__">Generated Demo</option>
21 <option disabled>──────────</option>
22 </select>
23 <button id="loadFile" class="btn">Upload WAV</button>
24 <input type="file" id="fileInput" accept="audio/wav" hidden>
25 <button id="playPause" class="btn btn-success" disabled>Play</button>
26 </div>
27
28 <div class="ir-controls">
29 <label for="irSelect">Impulse Response:</label>
30 <select id="irSelect" class="select">
31 <option value="none">None</option>
32 <option value="hall">Hall</option>
33 <option value="room">Room</option>
34 <option value="plate">Plate</option>
35 </select>
36 <button id="loadIR" class="btn btn-small">Load Custom IR</button>
37 <input type="file" id="irInput" accept="audio/wav" hidden>
38 </div>
39
40 <div class="status" id="status">Ready to start...</div>
41 </section>
42
43 <main class="main-area">
44 <section class="video-section">
45 <div class="video-container">
46 <canvas id="videoCanvas" width="640" height="480"></canvas>
47 <div class="effect-zones" id="effectZones"></div>
48 <div class="cue-indicator" id="cueIndicator">CUE TRIGGERED</div>
49 </div>
50 </section>
51
52 <aside class="params-section">
53 <h3>Current Effect: <span id="currentEffect">None</span></h3>
54
55 <div class="param-visualizer">
56 <div class="param-bar">
57 <div class="param-fill" id="paramFill"></div>
58 </div>
59 <div class="param-labels">
60 <span>0%</span>
61 <span>50%</span>
62 <span>100%</span>
63 </div>
64 </div>
65
66 <div class="info-box">
67 <dl class="info-list">
68 <dt>Parameter:</dt>
69 <dd id="paramValue">0.50</dd>
70 <dt>Raw Param:</dt>
71 <dd id="rawParamValue">0.50</dd>
72 <dt>Hand Detected:</dt>
73 <dd id="handStatus">No</dd>
74 </dl>
75 </div>
76
77 <div class="info-box instructions">
78 <h4>Instructions:</h4>
79 <ol>
80 <li>Hold a neon pink/orange post-it</li>
81 <li>Move horizontally to select effect</li>
82 <li>Hold a teal post-it with other hand</li>
83 <li>Move teal post-it vertically for parameter</li>
84 <li>Keep post-it in same zone for cue trigger</li>
85 </ol>
86 </div>
87 </aside>
88 </main>
89 </div>
90
91 <script type="module" src="js/app.js"></script>
92 </body>
93 </html>