AquaSynth/tools/earcon-workshop/cli.mjs
Aqua 0c9708e376 Add Earcon Workshop: static earcon family generator, WAV/zip/JSON pack, node check
Six events x four Dings-derived identities, pure-JS deterministic renderer shared by
page and node, five sliders, offline export. Unheard: signal checks only.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 02:07:26 +00:00

12 lines
900 B
JavaScript

// node cli.mjs <identity> <outDir> [key=value ...] e.g. node cli.mjs warm-bell ./earcons tempo=1.2 level=0.6
// Writes the WAVs, pack.json and README.md the page's zip contains, from the same renderer.
import { mkdir, writeFile } from "node:fs/promises";
import { join } from "node:path";
import { IDENTITIES, renderFamily, packFiles } from "./web/earcon.js";
const [identity, outDir, ...kv] = process.argv.slice(2);
if (!IDENTITIES[identity] || !outDir) { console.error(`usage: node cli.mjs <${Object.keys(IDENTITIES).join("|")}> <outDir> [tempo= transpose= brightness= decay= level=]`); process.exit(2); }
const params = Object.fromEntries(kv.map((s) => s.split("=")).map(([k, v]) => [k, Number(v)]));
await mkdir(outDir, { recursive: true });
for (const f of packFiles(renderFamily(identity, undefined, params))) await writeFile(join(outDir, f.name), f.bytes);
console.log(`wrote ${outDir}`);