Rename "Stage" -> "Teacher" (studio/lesson console); free the Stage name
The full-feature desktop console (big TFT, arcade buttons, instrument pass-through) is repositioned as the "Teacher" for studio desks and lessons: - stage.html -> teacher.html, info-stage.html -> info-teacher.html (git mv) - all links/paths, the embed variant (stage -> teacher), nav, cards, embed docs, README, build.sh + deploy.sh updated; deploy cleans the stale live stage files The "Stage" name is now free for a forthcoming foot-pedal stompbox (/stage.html). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1186e61588
commit
ce6166a721
12 changed files with 56 additions and 51 deletions
10
README.md
10
README.md
|
|
@ -24,10 +24,10 @@ State (set lists, the practice log, theme and UI preferences) lives in `localSto
|
||||||
| `/editor.html` | **PE‑1 — PolyMeter Editor** (the main app) |
|
| `/editor.html` | **PE‑1 — PolyMeter Editor** (the main app) |
|
||||||
| `/concepts.html` | **PolyMeter Concepts** — the form‑factor gallery (cards → live page + info) |
|
| `/concepts.html` | **PolyMeter Concepts** — the form‑factor gallery (cards → live page + info) |
|
||||||
| `/player.html` | **PM‑1 Initial** — idealized concept device (full display + set‑list nav, theme, fullscreen "stage" view) |
|
| `/player.html` | **PM‑1 Initial** — idealized concept device (full display + set‑list nav, theme, fullscreen "stage" view) |
|
||||||
| `/stage.html` | **PM‑1 Stage** — pedalboard build (colour TFT, arcade buttons, 1/4″ instrument pass‑through with analog click injection) |
|
| `/teacher.html` | **PM‑1 Teacher** — studio / lesson console (colour TFT, arcade buttons, 1/4″ instrument pass‑through with analog click injection) |
|
||||||
| `/micro.html` | **PM‑µ Micro** — inline practice bar (instrument in / out pass‑through, clickable thumb‑roller, 14‑segment display) |
|
| `/micro.html` | **PM‑µ Micro** — inline practice bar (instrument in / out pass‑through, clickable thumb‑roller, 14‑segment display) |
|
||||||
| `/info-editor.html`, `/info-initial.html` | purpose pages (web app / concept — no BOM) |
|
| `/info-editor.html`, `/info-initial.html` | purpose pages (web app / concept — no BOM) |
|
||||||
| `/info-stage.html`, `/info-micro.html` | purpose **+ priced BOM** (buildable hardware only) |
|
| `/info-teacher.html`, `/info-micro.html` | purpose **+ priced BOM** (buildable hardware only) |
|
||||||
| `/embed.html` · `/embed.js` | embed docs and the drop‑in loader |
|
| `/embed.html` · `/embed.js` | embed docs and the drop‑in loader |
|
||||||
|
|
||||||
Each page carries the same VARASYS header (logo + tagline, nav, theme toggle). The editor
|
Each page carries the same VARASYS header (logo + tagline, nav, theme toggle). The editor
|
||||||
|
|
@ -151,14 +151,14 @@ container and the loader script — it builds an `<iframe>` to the chrome‑stri
|
||||||
<script src="https://metronome.varasys.io/embed.js"></script>
|
<script src="https://metronome.varasys.io/embed.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
- `data-varasys-metronome` — variant: `editor` · `initial` · `stage` · `micro`.
|
- `data-varasys-metronome` — variant: `editor` · `initial` · `teacher` · `micro`.
|
||||||
- `data-patch` — a [patch string](#patch-grammar) (maps to `#p=`); or `data-setlist`
|
- `data-patch` — a [patch string](#patch-grammar) (maps to `#p=`); or `data-setlist`
|
||||||
for a set‑list code (maps to `#sl=`).
|
for a set‑list code (maps to `#sl=`).
|
||||||
- `data-width` / `data-height` — optional initial size (default `100%` × `300px`;
|
- `data-width` / `data-height` — optional initial size (default `100%` × `300px`;
|
||||||
height then tracks the widget, which posts `{type:'varasys-h', h}` to the parent).
|
height then tracks the widget, which posts `{type:'varasys-h', h}` to the parent).
|
||||||
|
|
||||||
Prefer your own iframe? `…/<variant>.html?embed=1#p=<patch>` works directly. Our own
|
Prefer your own iframe? `…/<variant>.html?embed=1#p=<patch>` works directly. Our own
|
||||||
[`info-*.html`](info-stage.html) pages dogfood this exact mechanism. See `/embed.html`.
|
[`info-*.html`](info-teacher.html) pages dogfood this exact mechanism. See `/embed.html`.
|
||||||
|
|
||||||
## Keyboard shortcuts
|
## Keyboard shortcuts
|
||||||
|
|
||||||
|
|
@ -233,7 +233,7 @@ Push the tag, then deploy.
|
||||||
| `index.html` | the **landing page** (site front door) |
|
| `index.html` | the **landing page** (site front door) |
|
||||||
| `editor.html` | the **PE‑1 editor** app (source, with `@BUILD:*` markers) |
|
| `editor.html` | the **PE‑1 editor** app (source, with `@BUILD:*` markers) |
|
||||||
| `concepts.html` | the form‑factor gallery |
|
| `concepts.html` | the form‑factor gallery |
|
||||||
| `player.html` · `stage.html` · `micro.html` | the **PM‑1 Initial / Stage** and **PM‑µ Micro** device mockups |
|
| `player.html` · `teacher.html` · `micro.html` | the **PM‑1 Initial / Teacher** and **PM‑µ Micro** device mockups |
|
||||||
| `info-*.html` | per‑form‑factor info pages (purpose + priced BOM for buildable hardware) |
|
| `info-*.html` | per‑form‑factor info pages (purpose + priced BOM for buildable hardware) |
|
||||||
| `embed.html` · `embed.js` | embed docs and the drop‑in widget loader |
|
| `embed.html` · `embed.js` | embed docs and the drop‑in widget loader |
|
||||||
| `src/` | shared partials inlined into every page: `engine.js`, `setlists.js`, `base.css` |
|
| `src/` | shared partials inlined into every page: `engine.js`, `setlists.js`, `base.css` |
|
||||||
|
|
|
||||||
4
build.sh
4
build.sh
|
|
@ -31,8 +31,8 @@ def build(name):
|
||||||
out.write_text(src)
|
out.write_text(src)
|
||||||
return out.stat().st_size
|
return out.stat().st_size
|
||||||
|
|
||||||
for name in ("index.html","editor.html","player.html","stage.html","micro.html","concepts.html","embed.html",
|
for name in ("index.html","editor.html","player.html","teacher.html","micro.html","concepts.html","embed.html",
|
||||||
"info-editor.html","info-initial.html","info-stage.html","info-micro.html"):
|
"info-editor.html","info-initial.html","info-teacher.html","info-micro.html"):
|
||||||
print("built %s (%dKB)" % (name, build(name) // 1024))
|
print("built %s (%dKB)" % (name, build(name) // 1024))
|
||||||
pathlib.Path("dist/embed.js").write_text(pathlib.Path("embed.js").read_text()) # loader, served as-is
|
pathlib.Path("dist/embed.js").write_text(pathlib.Path("embed.js").read_text()) # loader, served as-is
|
||||||
print("copied embed.js")
|
print("copied embed.js")
|
||||||
|
|
|
||||||
|
|
@ -78,16 +78,16 @@
|
||||||
<span class="chip">Concept</span>
|
<span class="chip">Concept</span>
|
||||||
<h3>PM‑1 — Initial</h3>
|
<h3>PM‑1 — Initial</h3>
|
||||||
<p>The original idealized device mock — full multi‑lane display and set‑list navigation. A north‑star
|
<p>The original idealized device mock — full multi‑lane display and set‑list navigation. A north‑star
|
||||||
concept (more than a single small unit can really show); the buildable take is Stage.</p>
|
concept (more than a single small unit can really show); the buildable take is Teacher.</p>
|
||||||
<div class="links"><a href="/player.html">Open ↗</a><a href="/info-initial.html">Info ⓘ</a></div>
|
<div class="links"><a href="/player.html">Open ↗</a><a href="/info-initial.html">Info ⓘ</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<span class="chip hw">Hardware</span>
|
<span class="chip hw">Hardware</span>
|
||||||
<h3>PM‑1 — Stage</h3>
|
<h3>PM‑1 — Teacher</h3>
|
||||||
<p>Pedalboard build: 2.0″ colour TFT, arcade buttons, thumb‑roller, 1/4″ instrument pass‑through with
|
<p>Full‑feature desktop console for studio & lessons: 2.0″ colour TFT showing every lane, arcade buttons,
|
||||||
analog click injection + balanced‑TRS out, USB‑C powered. Bead‑blasted matte‑black anodised.</p>
|
thumb‑roller, 1/4″ instrument pass‑through with analog click injection + balanced‑TRS out, USB‑C powered.</p>
|
||||||
<div class="links"><a href="/stage.html">Open ↗</a><a href="/info-stage.html">Info & BOM ⓘ</a></div>
|
<div class="links"><a href="/teacher.html">Open ↗</a><a href="/info-teacher.html">Info & BOM ⓘ</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
|
||||||
|
|
@ -40,13 +40,14 @@ fi
|
||||||
|
|
||||||
# stamp the version into the built copy only (source stays clean)
|
# stamp the version into the built copy only (source stays clean)
|
||||||
echo "deployed v$BUILD -> $DEST_DIR"
|
echo "deployed v$BUILD -> $DEST_DIR"
|
||||||
for f in index.html editor.html player.html stage.html micro.html concepts.html embed.html \
|
for f in index.html editor.html player.html teacher.html micro.html concepts.html embed.html \
|
||||||
info-editor.html info-initial.html info-stage.html info-micro.html; do
|
info-editor.html info-initial.html info-teacher.html info-micro.html; do
|
||||||
sed "s|const APP_VERSION = \"[^\"]*\";|const APP_VERSION = \"$BUILD\";|" "$DIST_DIR/$f" > "$DEST_DIR/$f"
|
sed "s|const APP_VERSION = \"[^\"]*\";|const APP_VERSION = \"$BUILD\";|" "$DIST_DIR/$f" > "$DEST_DIR/$f"
|
||||||
echo " $f ($(stat -c '%s' "$DEST_DIR/$f") bytes)"
|
echo " $f ($(stat -c '%s' "$DEST_DIR/$f") bytes)"
|
||||||
done
|
done
|
||||||
cp "$DIST_DIR/embed.js" "$DEST_DIR/embed.js"; echo " embed.js ($(stat -c '%s' "$DEST_DIR/embed.js") bytes)"
|
cp "$DIST_DIR/embed.js" "$DEST_DIR/embed.js"; echo " embed.js ($(stat -c '%s' "$DEST_DIR/embed.js") bytes)"
|
||||||
rm -f "$DEST_DIR/player-asbuilt.html" # renamed to stage.html
|
rm -f "$DEST_DIR/player-asbuilt.html" # renamed to teacher.html
|
||||||
|
rm -f "$DEST_DIR/stage.html" "$DEST_DIR/info-stage.html" # "Stage" renamed to "Teacher" (new foot-pedal Stage is forthcoming)
|
||||||
|
|
||||||
# If real audio samples are added later (see the plan's GM-sample note),
|
# If real audio samples are added later (see the plan's GM-sample note),
|
||||||
# sync that directory too.
|
# sync that directory too.
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,8 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><td class="k">editor</td><td>PE‑1 PolyMeter Editor (full app)</td></tr>
|
<tr><td class="k">editor</td><td>PE‑1 PolyMeter Editor (full app)</td></tr>
|
||||||
<tr><td class="k">initial</td><td>PM‑1 Initial (idealized device)</td></tr>
|
<tr><td class="k">initial</td><td>PM‑1 Initial (idealized device)</td></tr>
|
||||||
<tr><td class="k">stage</td><td>PM‑1 Stage (pedalboard device)</td></tr>
|
<tr><td class="k">teacher</td><td>PM‑1 Teacher (studio / lesson console)</td></tr>
|
||||||
<tr><td class="k">micro</td><td>PM‑µ Micro (practice unit)</td></tr>
|
<tr><td class="k">micro</td><td>PM‑µ Micro (inline practice bar)</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
|
||||||
4
embed.js
4
embed.js
|
|
@ -5,7 +5,7 @@
|
||||||
* <script src="https://metronome.varasys.io/embed.js"></script>
|
* <script src="https://metronome.varasys.io/embed.js"></script>
|
||||||
*
|
*
|
||||||
* Attributes:
|
* Attributes:
|
||||||
* data-varasys-metronome editor | initial | stage | micro (which form factor)
|
* data-varasys-metronome editor | initial | teacher | micro (which form factor)
|
||||||
* data-patch a PolyMeter program/settings string (preloads it)
|
* data-patch a PolyMeter program/settings string (preloads it)
|
||||||
* data-setlist a base64url set-list code (alternative to data-patch)
|
* data-setlist a base64url set-list code (alternative to data-patch)
|
||||||
* data-width / data-height iframe size (default 100% × 300; height auto-grows)
|
* data-width / data-height iframe size (default 100% × 300; height auto-grows)
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* own ?embed=1 mode strips the site chrome) and auto-resizes to the widget's content.
|
* own ?embed=1 mode strips the site chrome) and auto-resizes to the widget's content.
|
||||||
*/
|
*/
|
||||||
(function () {
|
(function () {
|
||||||
var PAGES = { editor: "editor.html", initial: "player.html", stage: "stage.html", micro: "micro.html" };
|
var PAGES = { editor: "editor.html", initial: "player.html", teacher: "teacher.html", micro: "micro.html" };
|
||||||
var me = document.currentScript;
|
var me = document.currentScript;
|
||||||
var ORIGIN = me ? me.src.replace(/\/embed\.js(\?.*)?$/, "") : location.origin;
|
var ORIGIN = me ? me.src.replace(/\/embed\.js(\?.*)?$/, "") : location.origin;
|
||||||
|
|
||||||
|
|
|
||||||
10
index.html
10
index.html
|
|
@ -109,10 +109,10 @@
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<span class="chip hw">Hardware</span>
|
<span class="chip hw">Hardware</span>
|
||||||
<h3>PM‑1 — Stage</h3>
|
<h3>PM‑1 — Teacher</h3>
|
||||||
<p>Pedalboard build: 2.0″ colour TFT, arcade buttons, thumb‑roller, 1/4″ instrument pass‑through with
|
<p>Full‑feature desktop console for studio & lessons: 2.0″ colour TFT showing every lane, arcade buttons,
|
||||||
analog click injection + balanced‑TRS out. Bead‑blasted matte‑black anodised.</p>
|
thumb‑roller, 1/4″ instrument pass‑through with analog click injection + balanced‑TRS out. USB‑C powered.</p>
|
||||||
<div class="links"><a href="/stage.html">Open ↗</a><a href="/info-stage.html">Info & BOM ⓘ</a></div>
|
<div class="links"><a href="/teacher.html">Open ↗</a><a href="/info-teacher.html">Info & BOM ⓘ</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
@ -141,7 +141,7 @@
|
||||||
<p>The website is the workbench. Design your grooves in the <a href="/editor.html">PE‑1 editor</a> —
|
<p>The website is the workbench. Design your grooves in the <a href="/editor.html">PE‑1 editor</a> —
|
||||||
stack meters, set per‑step accents, build set lists — and every pattern saves to a compact
|
stack meters, set per‑step accents, build set lists — and every pattern saves to a compact
|
||||||
<b>program string</b> (a whole set list to a single code). That same string loads into whichever
|
<b>program string</b> (a whole set list to a single code). That same string loads into whichever
|
||||||
form factor fits the moment: the <a href="/stage.html">Stage</a> on a pedalboard, the
|
form factor fits the moment: the <a href="/teacher.html">Teacher</a> on a studio desk, the
|
||||||
<a href="/micro.html">Micro</a> inline at the practice desk, or an <a href="/embed.html">embedded
|
<a href="/micro.html">Micro</a> inline at the practice desk, or an <a href="/embed.html">embedded
|
||||||
widget</a> in someone else's app. One engine, one language — you author once and run it anywhere,
|
widget</a> in someone else's app. One engine, one language — you author once and run it anywhere,
|
||||||
choosing the device by the use scenario rather than re‑learning a new box each time.</p>
|
choosing the device by the use scenario rather than re‑learning a new box each time.</p>
|
||||||
|
|
|
||||||
|
|
@ -70,12 +70,12 @@
|
||||||
<li><b>Drum & click voices</b> — synth and sampled sounds, swing, accent levels.</li>
|
<li><b>Drum & click voices</b> — synth and sampled sounds, swing, accent levels.</li>
|
||||||
<li><b>Trainer & ramp</b> — bar‑count automation, tempo ramps, and a countdown.</li>
|
<li><b>Trainer & ramp</b> — bar‑count automation, tempo ramps, and a countdown.</li>
|
||||||
<li><b>Program string</b> — the live patch is shown, editable, and copy/paste‑able; set‑lists encode to a
|
<li><b>Program string</b> — the live patch is shown, editable, and copy/paste‑able; set‑lists encode to a
|
||||||
shareable code. This is the same string the <a href="/info-stage.html">Stage</a> and
|
shareable code. This is the same string the <a href="/info-teacher.html">Teacher</a> and
|
||||||
<a href="/info-micro.html">Micro</a> units load.</li>
|
<a href="/info-micro.html">Micro</a> units load.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p class="sub" style="margin-top:18px">A web app — nothing to build, nothing to buy. (Bills of materials apply
|
<p class="sub" style="margin-top:18px">A web app — nothing to build, nothing to buy. (Bills of materials apply
|
||||||
only to the buildable hardware: <a href="/info-stage.html">Stage</a> and <a href="/info-micro.html">Micro</a>.)</p>
|
only to the buildable hardware: <a href="/info-teacher.html">Teacher</a> and <a href="/info-micro.html">Micro</a>.)</p>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<div class="site-foot">VARASYS · Simplifying Complexity — <span id="appVersion">v0.0.1-dev</span></div>
|
<div class="site-foot">VARASYS · Simplifying Complexity — <span id="appVersion">v0.0.1-dev</span></div>
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
<h1>PM‑1 — Initial</h1>
|
<h1>PM‑1 — Initial</h1>
|
||||||
<div class="tags"><span class="tag concept">Concept</span><span class="tag">Idealized device</span><span class="tag">Not buildable as drawn</span></div>
|
<div class="tags"><span class="tag concept">Concept</span><span class="tag">Idealized device</span><span class="tag">Not buildable as drawn</span></div>
|
||||||
<p class="lead">The idealized PM‑1: the player as a clean, screen‑first device with no concession to
|
<p class="lead">The idealized PM‑1: the player as a clean, screen‑first device with no concession to
|
||||||
mechanical parts yet. It's the look we design <i>toward</i> — the <a href="/info-stage.html">Stage</a>
|
mechanical parts yet. It's the look we design <i>toward</i> — the <a href="/info-teacher.html">Stage</a>
|
||||||
build is what that idea becomes once it's made from real components.</p>
|
build is what that idea becomes once it's made from real components.</p>
|
||||||
|
|
||||||
<div class="embed-wrap">
|
<div class="embed-wrap">
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
|
|
||||||
<div class="note">
|
<div class="note">
|
||||||
<p>This is a concept, so there's <b>no bill of materials</b> — there's nothing to source for a render. The
|
<p>This is a concept, so there's <b>no bill of materials</b> — there's nothing to source for a render. The
|
||||||
buildable realization of this idea is the <a href="/info-stage.html">PM‑1 Stage</a>, which has a full priced
|
buildable realization of this idea is the <a href="/info-teacher.html">PM‑1 Stage</a>, which has a full priced
|
||||||
BOM. For the smallest practical unit, see <a href="/info-micro.html">PM‑µ Micro</a>.</p>
|
BOM. For the smallest practical unit, see <a href="/info-micro.html">PM‑µ Micro</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
<tr class="total"><td>Total (one‑off)</td><td class="q"></td><td class="c">≈ $35</td></tr>
|
<tr class="total"><td>Total (one‑off)</td><td class="q"></td><td class="c">≈ $35</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p class="sub" style="margin-top:12px">Like the Stage, the click is summed in the <b>analog domain</b>: a high‑impedance
|
<p class="sub" style="margin-top:12px">Like the Teacher, the click is summed in the <b>analog domain</b>: a high‑impedance
|
||||||
buffer of the 1/4″ instrument input is mixed with the DAC's click and sent to the 1/4″ output and the monitor
|
buffer of the 1/4″ instrument input is mixed with the DAC's click and sent to the 1/4″ output and the monitor
|
||||||
amp — your instrument is never re‑digitised (no added latency).</p>
|
amp — your instrument is never re‑digitised (no added latency).</p>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>PM‑1 Stage — info & BOM — VARASYS</title>
|
<title>PM‑1 Teacher — info & BOM — VARASYS</title>
|
||||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,@BUILD:favicon@">
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,@BUILD:favicon@">
|
||||||
<script>
|
<script>
|
||||||
(function(){ try{ var p = localStorage.getItem("metronome.theme");
|
(function(){ try{ var p = localStorage.getItem("metronome.theme");
|
||||||
|
|
@ -36,38 +36,39 @@
|
||||||
<img class="brand-logo brand-dark" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS — Simplifying Complexity" />
|
<img class="brand-logo brand-dark" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS — Simplifying Complexity" />
|
||||||
<img class="brand-logo brand-light" src="data:image/png;base64,@BUILD:logo-light@" alt="VARASYS — Simplifying Complexity" />
|
<img class="brand-logo brand-light" src="data:image/png;base64,@BUILD:logo-light@" alt="VARASYS — Simplifying Complexity" />
|
||||||
</a>
|
</a>
|
||||||
<span class="page-name"><b>PM‑1</b> · Stage — info</span>
|
<span class="page-name"><b>PM‑1</b> · Teacher — info</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/editor.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/stage.html">Open ↗</a>
|
<a href="/teacher.html">Open ↗</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<h1>PM‑1 — Stage</h1>
|
<h1>PM‑1 — Teacher</h1>
|
||||||
<div class="tags"><span class="tag hw">Hardware</span><span class="tag">Pedalboard</span><span class="tag">~$59 one‑off</span></div>
|
<div class="tags"><span class="tag hw">Hardware</span><span class="tag">Studio / lesson console</span><span class="tag">~$59 one‑off</span></div>
|
||||||
<p class="lead">A gig‑ready polymeter box for the pedalboard: a colour readout of every lane, fast set‑list
|
<p class="lead">The full‑feature desktop console: a colour readout of every lane, fast set‑list navigation, and
|
||||||
navigation, and your instrument running straight through with the click mixed in — so it sits in your
|
your instrument running straight through with the click mixed in — the hands‑on unit for a studio desk or a
|
||||||
signal chain and feeds the PA, all on a non‑reflective matte‑black case.</p>
|
teaching room, on a non‑reflective matte‑black case. (A hands‑free, foot‑operated <b>Stage</b> stompbox is
|
||||||
|
in the works for live use.)</p>
|
||||||
|
|
||||||
<div class="embed-wrap">
|
<div class="embed-wrap">
|
||||||
<div data-varasys-metronome="stage"
|
<div data-varasys-metronome="teacher"
|
||||||
data-patch="v1;t120;b16;kick:4=X.x.;snare:4=.X.X;hatClosed:4/4" data-height="520"></div>
|
data-patch="v1;t120;b16;kick:4=X.x.;snare:4=.X.X;hatClosed:4/4" data-height="520"></div>
|
||||||
</div>
|
</div>
|
||||||
<p class="cap">Live widget (embedded). <a href="/stage.html">Open the full Stage page ↗</a> · <a href="/embed.html">embed this</a></p>
|
<p class="cap">Live widget (embedded). <a href="/teacher.html">Open the full Teacher page ↗</a> · <a href="/embed.html">embed this</a></p>
|
||||||
|
|
||||||
<h2>Designed for</h2>
|
<h2>Designed for</h2>
|
||||||
<p>The stage and the rehearsal room. Top‑mounted 1/4″ jacks keep cabling tidy on a board; you plug your
|
<p>The studio desk and the teaching room. Top‑mounted 1/4″ jacks keep cabling tidy; you plug your
|
||||||
instrument in, the metronome click is summed into the signal in the <b>analog domain</b> (no re‑digitising,
|
instrument in, the metronome click is summed into the signal in the <b>analog domain</b> (no re‑digitising,
|
||||||
no added latency) and sent to a balanced 1/4″ TRS output for the desk, plus a small monitor speaker.
|
no added latency) and sent to a balanced 1/4″ TRS output for the desk or interface, plus a small monitor
|
||||||
Powered over USB‑C — a wall adapter, or a power bank when there's no outlet on the board. The colour TFT
|
speaker. Powered over USB‑C — a wall adapter, or a power bank. The colour TFT shows tempo, the item name,
|
||||||
shows tempo, the item name, and all lane patterns; arcade buttons + a recessed thumb‑roller survive stage abuse.</p>
|
and all lane patterns; arcade buttons + a recessed thumb‑roller make it quick to drive while you teach or track.</p>
|
||||||
|
|
||||||
<h2>Bill of materials</h2>
|
<h2>Bill of materials</h2>
|
||||||
<p class="sub">Rough parts list — a pedalboard‑friendly RP2040 build (USB‑C powered) with analog click injection.
|
<p class="sub">Rough parts list — a desk/studio RP2040 build (USB‑C powered) with analog click injection.
|
||||||
Ballpark one‑off prices (USD); cheaper at volume.</p>
|
Ballpark one‑off prices (USD); cheaper at volume.</p>
|
||||||
<table class="bom">
|
<table class="bom">
|
||||||
<thead><tr><th>Part</th><th class="q">Qty</th><th class="c">~$</th></tr></thead>
|
<thead><tr><th>Part</th><th class="q">Qty</th><th class="c">~$</th></tr></thead>
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||||||
<title>VARASYS PM‑1 — stage (pedalboard build)</title>
|
<title>VARASYS PM‑1 — Teacher (studio / lesson console)</title>
|
||||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,@BUILD:favicon@">
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,@BUILD:favicon@">
|
||||||
<script>
|
<script>
|
||||||
/* ?embed=1 → strip site chrome (base.css [data-embed]) + auto-size to the host */
|
/* ?embed=1 → strip site chrome (base.css [data-embed]) + auto-size to the host */
|
||||||
|
|
@ -14,8 +14,11 @@
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<!--
|
<!--
|
||||||
"As-built" variant of the PM-1 player: the same firmware/engine, drawn with the
|
PM-1 "Teacher" — the full-feature desktop console (formerly "Stage"): the same
|
||||||
parts you'd actually solder for an RP2040 build —
|
firmware/engine, drawn with the parts you'd actually solder for an RP2040 build.
|
||||||
|
It's the hands-on unit for a studio desk or a lesson — a big screen showing every
|
||||||
|
lane, real buttons, and an instrument pass-through. (The foot-operated live unit
|
||||||
|
is the separate /stage.html stompbox.) —
|
||||||
• a 2.0″ 320×240 colour IPS TFT (ST7789, e.g. Pimoroni Pico Display 2.0):
|
• a 2.0″ 320×240 colour IPS TFT (ST7789, e.g. Pimoroni Pico Display 2.0):
|
||||||
the upgrade from the cramped 128×64 mono OLED — full colour, smooth type,
|
the upgrade from the cramped 128×64 mono OLED — full colour, smooth type,
|
||||||
hi-DPI. It also draws all lane patterns (each lane's steps — accent /
|
hi-DPI. It also draws all lane patterns (each lane's steps — accent /
|
||||||
|
|
@ -205,12 +208,12 @@
|
||||||
<img class="brand-logo brand-dark" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS — Simplifying Complexity" />
|
<img class="brand-logo brand-dark" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS — Simplifying Complexity" />
|
||||||
<img class="brand-logo brand-light" src="data:image/png;base64,@BUILD:logo-light@" alt="VARASYS — Simplifying Complexity" />
|
<img class="brand-logo brand-light" src="data:image/png;base64,@BUILD:logo-light@" alt="VARASYS — Simplifying Complexity" />
|
||||||
</a>
|
</a>
|
||||||
<span class="page-name"><b>PM‑1</b> · Stage (pedalboard build)</span>
|
<span class="page-name"><b>PM‑1</b> · Teacher (studio / lesson console)</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/editor.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/info-stage.html">Info</a>
|
<a href="/info-teacher.html">Info</a>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
@ -240,7 +243,7 @@
|
||||||
<div class="device">
|
<div class="device">
|
||||||
|
|
||||||
<div class="brandrow">
|
<div class="brandrow">
|
||||||
<div class="silk"><img class="brand-logo" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS" /><span class="model">PM‑1 Polymeter Player</span></div>
|
<div class="silk"><img class="brand-logo" src="data:image/png;base64,@BUILD:logo-dark@" alt="VARASYS" /><span class="model">PM‑1 Teacher</span></div>
|
||||||
<div class="pwr"><span class="dot"></span>PWR</div>
|
<div class="pwr"><span class="dot"></span>PWR</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -284,7 +287,7 @@
|
||||||
<div class="status" id="status"></div>
|
<div class="status" id="status"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="speclink"><a href="/info-stage.html">Spec & full priced BOM ⓘ</a> — what the Stage is designed for, and every part to build one.</p>
|
<p class="speclink"><a href="/info-teacher.html">Spec & full priced BOM ⓘ</a> — what the Teacher is designed for, and every part to build one.</p>
|
||||||
</div><!-- /col-left -->
|
</div><!-- /col-left -->
|
||||||
</div><!-- /cols -->
|
</div><!-- /cols -->
|
||||||
|
|
||||||
Loading…
Reference in a new issue