File size: 3,510 Bytes
e3fb530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c93a753
e3fb530
 
 
 
 
 
 
c93a753
e3fb530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Theremini • Reachy Mini App</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>
    <main class="page">
        <header class="hero">
            <p class="eyebrow">Reachy Mini App</p>
            <h1>Theremini</h1>
            <p class="lede">Head roll drives pitch, head height controls the volume and the right antenna switches instruments. Exactly the same mapping as the original <code>simple_theremini.py</code>, now packaged as an app.</p>
        </header>

        <section class="card">
            <h2>Mapping</h2>
            <table class="config-table">
                <thead>
                    <tr>
                        <th>Input</th>
                        <th>Range</th>
                        <th>Output</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Head roll</td>
                        <td>-60° ⇢ +60°</td>
                        <td>MIDI notes 48 (C3) ⇢ 84 (C6)</td>
                    </tr>
                    <tr>
                        <td>Head Z</td>
                        <td>-30 mm ⇢ +5 mm</td>
                        <td>Amplitude 0 ⇢ 100 %</td>
                    </tr>
                    <tr>
                        <td>Right antenna</td>
                        <td>-π/3 ⇢ +π/3 rad</td>
                        <td>Instrument index 0 ⇢ (#active−1)</td>
                    </tr>
                </tbody>
            </table>
        </section>

        <section class="card">
            <h2>Instrument Programs</h2>
            <p class="caption">Theremini cycles through a curated subset of FluidSynth GM presets. The dashboard lets you swap presets live; these are the defaults.</p>
            <ul class="instrument-list">
                <li><span class="label">0</span>choir_aahs</li>
                <li><span class="label">1</span>orchestra_hit</li>
                <li><span class="label">2</span>taiko_drum</li>
                <li><span class="label">3</span>trumpet</li>
                <li><span class="label">4</span>french_horn</li>
                <li><span class="label">5</span>soundtrack</li>
            </ul>
        </section>

        <section class="card">
            <h2>Runtime Defaults</h2>
            <dl class="kv">
                <div>
                    <dt>Loop frequency</dt>
                    <dd>50 Hz (sleep 20 ms)</dd>
                </div>
                <div>
                    <dt>Session threads</dt>
                    <dd>SCAMP Session(max_threads=1024)</dd>
                </div>
                <div>
                    <dt>MIDI expression</dt>
                    <dd>CC 11 scaled 0 ⇢ 127</dd>
                </div>
                <div>
                    <dt>Volume clamp</dt>
                    <dd>Amplitude 0.0 ⇢ 1.0</dd>
                </div>
            </dl>
        </section>

        <section class="card future">
            <h2>Next Iterations</h2>
            <ul>
                <li>Expose the mapping ranges and instrument list as editable controls.</li>
                <li>Plot head pose, antenna and amplitude as tiny charts for quick debugging.</li>
                <li>Preview GM programs with audio snippets or links.</li>
            </ul>
        </section>
    </main>
</body>

</html>