@rydr/game-sdk 3.14.0 → 3.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/soundboard-editor/index.d.ts +14 -0
- package/dist/soundboard-editor/index.d.ts.map +1 -1
- package/dist/soundboard-editor/index.js +155 -6
- package/dist/soundboard-editor/index.js.map +1 -1
- package/dist/sounds/index.d.ts +2 -0
- package/dist/sounds/index.d.ts.map +1 -1
- package/dist/sounds/index.js +1 -0
- package/dist/sounds/index.js.map +1 -1
- package/dist/sounds/music-director.d.ts +53 -0
- package/dist/sounds/music-director.d.ts.map +1 -0
- package/dist/sounds/music-director.js +53 -0
- package/dist/sounds/music-director.js.map +1 -0
- package/dist/sounds/soundboard.d.ts +5 -0
- package/dist/sounds/soundboard.d.ts.map +1 -1
- package/dist/sounds/soundboard.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
export declare const RYDR_PROTOCOL_VERSION: 16;
|
|
10
10
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
11
11
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
12
|
-
export declare const RYDR_SDK_VERSION = "3.
|
|
12
|
+
export declare const RYDR_SDK_VERSION = "3.15.0";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/protocol/version.js
CHANGED
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
export const RYDR_PROTOCOL_VERSION = 16;
|
|
53
53
|
/** Semver of this SDK build. Sent in the handshake for telemetry/debugging.
|
|
54
54
|
* (Bumped to 2.0.0 by `npm version major` on release — see CHANGELOG [Unreleased].) */
|
|
55
|
-
export const RYDR_SDK_VERSION = "3.
|
|
55
|
+
export const RYDR_SDK_VERSION = "3.15.0";
|
|
56
56
|
//# sourceMappingURL=version.js.map
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import type { GameDoc } from "../protocol/gamedata.js";
|
|
19
19
|
import { type CueCatalog, type CueBindings } from "../sounds/soundboard.js";
|
|
20
|
+
import type { MusicBed } from "../sounds/music-director.js";
|
|
20
21
|
/** The session surface the editor needs — a `PlatformSession` satisfies it. */
|
|
21
22
|
export interface SoundboardEditorSession {
|
|
22
23
|
readonly identity: {
|
|
@@ -25,6 +26,15 @@ export interface SoundboardEditorSession {
|
|
|
25
26
|
getContent(collection: string, id: string): Promise<GameDoc | null>;
|
|
26
27
|
saveContent(collection: string, id: string, value: unknown): Promise<void>;
|
|
27
28
|
}
|
|
29
|
+
/** A music state exposed for bed binding — one row in the editor's Music section. `id` matches a key
|
|
30
|
+
* in the game's `MusicDirector` `beds` map. */
|
|
31
|
+
export interface MusicStateDef {
|
|
32
|
+
id: string;
|
|
33
|
+
/** Row label (defaults to `id`). */
|
|
34
|
+
label?: string;
|
|
35
|
+
/** What plays during / when this state is active. */
|
|
36
|
+
description?: string;
|
|
37
|
+
}
|
|
28
38
|
export interface SoundboardEditorOptions {
|
|
29
39
|
session: SoundboardEditorSession;
|
|
30
40
|
/** The game's own cues, merged over {@link STANDARD_CUES} (same shape as `createSoundboard`). */
|
|
@@ -32,6 +42,10 @@ export interface SoundboardEditorOptions {
|
|
|
32
42
|
/** The game's CODE default bindings, merged over {@link STANDARD_BINDINGS}; shown as each cue's
|
|
33
43
|
* fallback and used as the effective binding when a cue has no saved override. */
|
|
34
44
|
defaults?: CueBindings;
|
|
45
|
+
/** The game's music states to expose for bed binding (one row each). Omit for no Music section. */
|
|
46
|
+
musicStates?: MusicStateDef[];
|
|
47
|
+
/** The game's CODE default beds per state; shown as each state's inherited fallback. */
|
|
48
|
+
musicDefaults?: Record<string, MusicBed>;
|
|
35
49
|
/** Library manifest to browse/preview. Defaults to {@link DEFAULT_SOUND_LIBRARY_URL}. */
|
|
36
50
|
manifestUrl?: string;
|
|
37
51
|
/** Optional link to the full admin Sound Gallery (to author new sounds). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/soundboard-editor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAML,KAAK,UAAU,EACf,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/soundboard-editor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAML,KAAK,UAAU,EACf,KAAK,WAAW,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACzC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACpE,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E;AAED;gDACgD;AAChD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,uBAAuB,CAAC;IACjC,iGAAiG;IACjG,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;uFACmF;IACnF,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,mGAAmG;IACnG,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AAiDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,gBAAgB,CAwXxG"}
|
|
@@ -31,6 +31,10 @@ const CSS = `
|
|
|
31
31
|
.rydr-sbe-resolved .silent{color:#8b93a7}
|
|
32
32
|
.rydr-sbe-play{min-width:96px;display:flex;justify-content:flex-end}
|
|
33
33
|
.rydr-sbe-empty{padding:24px 4px;color:#8b93a7}
|
|
34
|
+
.rydr-sbe-tracks{display:flex;flex-direction:column;gap:6px;margin-top:2px}
|
|
35
|
+
.rydr-sbe-track{display:flex;gap:6px}
|
|
36
|
+
.rydr-sbe-track select{flex:1;background:#0d0f14;border:1px solid #2a3242;border-radius:8px;color:#e7e9ee;padding:6px 8px;font:inherit}
|
|
37
|
+
.rydr-sbe-track .rydr-sbe-btn,.rydr-sbe-tracks>.rydr-sbe-btn{padding:4px 10px;align-self:flex-start}
|
|
34
38
|
`;
|
|
35
39
|
function injectCss() {
|
|
36
40
|
const id = "rydr-sbe-css";
|
|
@@ -47,9 +51,14 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
47
51
|
const isAdmin = !!session.identity.isAdmin;
|
|
48
52
|
const catalog = { ...STANDARD_CUES, ...opts.cues };
|
|
49
53
|
const defaults = { ...STANDARD_BINDINGS, ...opts.defaults };
|
|
50
|
-
|
|
54
|
+
const musicStates = opts.musicStates ?? [];
|
|
55
|
+
const musicDefaults = { ...opts.musicDefaults };
|
|
56
|
+
// Working override sets: only entries the admin has explicitly set. Empty string = explicitly
|
|
57
|
+
// silent (cues); for music a `null` value is silent and absence = inherit the code default.
|
|
51
58
|
let working = {};
|
|
52
|
-
let
|
|
59
|
+
let workingMusic = {};
|
|
60
|
+
const snapshot = () => JSON.stringify({ b: working, m: workingMusic });
|
|
61
|
+
let saved = snapshot(); // JSON snapshot for dirty detection
|
|
53
62
|
const bank = createSoundBank({ manifestUrl: opts.manifestUrl ?? DEFAULT_SOUND_LIBRARY_URL });
|
|
54
63
|
let assets = [];
|
|
55
64
|
const known = new Set(); // published keys
|
|
@@ -58,7 +67,7 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
58
67
|
// ── Header ──────────────────────────────────────────────────────────────────
|
|
59
68
|
const head = document.createElement("div");
|
|
60
69
|
head.className = "rydr-sbe-head";
|
|
61
|
-
head.innerHTML = `<h1>Sound cues</h1><span class="sub">Bind
|
|
70
|
+
head.innerHTML = `<h1>Sound cues & music</h1><span class="sub">Bind game events and background-music beds to library sounds</span>`;
|
|
62
71
|
const actions = document.createElement("div");
|
|
63
72
|
actions.className = "rydr-sbe-actions";
|
|
64
73
|
const dirtyEl = document.createElement("span");
|
|
@@ -79,7 +88,7 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
79
88
|
const body = document.createElement("div");
|
|
80
89
|
body.className = "rydr-sbe-body";
|
|
81
90
|
root.append(head, body);
|
|
82
|
-
const isDirty = () =>
|
|
91
|
+
const isDirty = () => snapshot() !== saved;
|
|
83
92
|
function refreshDirty() {
|
|
84
93
|
const dirty = isDirty();
|
|
85
94
|
dirtyEl.textContent = dirty ? "Unsaved changes" : "";
|
|
@@ -132,8 +141,144 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
132
141
|
for (const id of ids)
|
|
133
142
|
body.appendChild(cueRow(id, cat, soundsByCat));
|
|
134
143
|
}
|
|
144
|
+
// ── Music beds: one row per game music-state (background/menu music) ──────────
|
|
145
|
+
if (musicStates.length) {
|
|
146
|
+
const h = document.createElement("div");
|
|
147
|
+
h.className = "rydr-sbe-cat";
|
|
148
|
+
h.textContent = "music beds";
|
|
149
|
+
body.appendChild(h);
|
|
150
|
+
const musicSounds = (soundsByCat.get("music") ?? []).slice().sort((a, b) => a.key.localeCompare(b.key));
|
|
151
|
+
for (const def of musicStates)
|
|
152
|
+
body.appendChild(musicRow(def, musicSounds));
|
|
153
|
+
}
|
|
135
154
|
refreshDirty();
|
|
136
155
|
}
|
|
156
|
+
/** Normalize a bed to its ordered key list ([] = silent). */
|
|
157
|
+
const bedKeys = (b) => (b == null ? [] : Array.isArray(b) ? b : [b]);
|
|
158
|
+
/** The bed a state currently resolves to: explicit override, else code default. */
|
|
159
|
+
function resolvedBed(id) {
|
|
160
|
+
const has = Object.prototype.hasOwnProperty.call(workingMusic, id);
|
|
161
|
+
return has ? (workingMusic[id] ?? null) : (musicDefaults[id] ?? null);
|
|
162
|
+
}
|
|
163
|
+
function musicRow(def, musicSounds) {
|
|
164
|
+
const id = def.id;
|
|
165
|
+
const row = document.createElement("div");
|
|
166
|
+
row.className = "rydr-sbe-row";
|
|
167
|
+
const cell = document.createElement("div");
|
|
168
|
+
cell.className = "rydr-sbe-cue";
|
|
169
|
+
cell.innerHTML = `<span class="id">${def.label ?? id}</span><small>${def.description ?? ""}</small>`;
|
|
170
|
+
const pick = document.createElement("div");
|
|
171
|
+
pick.className = "rydr-sbe-pick";
|
|
172
|
+
// Mode: inherit the code default / explicit silence / custom track(s) (2+ = rotation).
|
|
173
|
+
const hasOverride = Object.prototype.hasOwnProperty.call(workingMusic, id);
|
|
174
|
+
let mode = !hasOverride
|
|
175
|
+
? "inherit"
|
|
176
|
+
: workingMusic[id] == null
|
|
177
|
+
? "silent"
|
|
178
|
+
: "custom";
|
|
179
|
+
let custom = mode === "custom" ? bedKeys(workingMusic[id]) : [];
|
|
180
|
+
const modeSel = document.createElement("select");
|
|
181
|
+
modeSel.disabled = !isAdmin;
|
|
182
|
+
const defBed = musicDefaults[id] ?? null;
|
|
183
|
+
const defText = bedKeys(defBed).length ? bedKeys(defBed).join(" → ") : "(silent)";
|
|
184
|
+
modeSel.append(new Option(`Inherit default · ${defText}`, "inherit"), new Option("— Silent —", "silent"), new Option("Custom track(s)…", "custom"));
|
|
185
|
+
modeSel.value = mode;
|
|
186
|
+
const tracks = document.createElement("div");
|
|
187
|
+
tracks.className = "rydr-sbe-tracks";
|
|
188
|
+
const resolved = document.createElement("div");
|
|
189
|
+
resolved.className = "rydr-sbe-resolved";
|
|
190
|
+
const playCell = document.createElement("div");
|
|
191
|
+
playCell.className = "rydr-sbe-play";
|
|
192
|
+
const playBtn = document.createElement("button");
|
|
193
|
+
playBtn.className = "rydr-sbe-btn";
|
|
194
|
+
playBtn.textContent = "▶ Preview";
|
|
195
|
+
playCell.appendChild(playBtn);
|
|
196
|
+
const paint = () => {
|
|
197
|
+
const keys = bedKeys(resolvedBed(id));
|
|
198
|
+
if (!keys.length)
|
|
199
|
+
resolved.innerHTML = `<span class="silent">silent</span>`;
|
|
200
|
+
else {
|
|
201
|
+
const parts = keys.map((k) => known.has(k) ? `<span class="ok">${k}</span>` : `<span class="missing">${k} — not published</span>`);
|
|
202
|
+
resolved.innerHTML = (keys.length > 1 ? "rotates " : "plays ") + parts.join(" → ");
|
|
203
|
+
}
|
|
204
|
+
const first = keys[0];
|
|
205
|
+
playBtn.disabled = !first || !known.has(first);
|
|
206
|
+
};
|
|
207
|
+
/** Push the current mode/custom UI state into workingMusic, then repaint + refresh dirty. */
|
|
208
|
+
const commit = () => {
|
|
209
|
+
if (mode === "inherit")
|
|
210
|
+
delete workingMusic[id];
|
|
211
|
+
else if (mode === "silent")
|
|
212
|
+
workingMusic[id] = null;
|
|
213
|
+
else {
|
|
214
|
+
const keys = custom.filter(Boolean);
|
|
215
|
+
workingMusic[id] = keys.length === 0 ? null : keys.length === 1 ? keys[0] : keys;
|
|
216
|
+
}
|
|
217
|
+
paint();
|
|
218
|
+
refreshDirty();
|
|
219
|
+
};
|
|
220
|
+
const buildTracks = () => {
|
|
221
|
+
tracks.innerHTML = "";
|
|
222
|
+
tracks.style.display = mode === "custom" ? "flex" : "none";
|
|
223
|
+
if (mode !== "custom")
|
|
224
|
+
return;
|
|
225
|
+
custom.forEach((key, i) => {
|
|
226
|
+
const t = document.createElement("div");
|
|
227
|
+
t.className = "rydr-sbe-track";
|
|
228
|
+
const sel = document.createElement("select");
|
|
229
|
+
sel.disabled = !isAdmin;
|
|
230
|
+
sel.append(new Option("— pick a track —", ""));
|
|
231
|
+
for (const a of musicSounds)
|
|
232
|
+
sel.append(new Option(a.key, a.key));
|
|
233
|
+
sel.value = key;
|
|
234
|
+
sel.addEventListener("change", () => {
|
|
235
|
+
custom[i] = sel.value;
|
|
236
|
+
commit();
|
|
237
|
+
});
|
|
238
|
+
const rm = document.createElement("button");
|
|
239
|
+
rm.className = "rydr-sbe-btn ghost";
|
|
240
|
+
rm.textContent = "✕";
|
|
241
|
+
rm.disabled = !isAdmin;
|
|
242
|
+
rm.addEventListener("click", () => {
|
|
243
|
+
custom.splice(i, 1);
|
|
244
|
+
buildTracks();
|
|
245
|
+
commit();
|
|
246
|
+
});
|
|
247
|
+
t.append(sel, rm);
|
|
248
|
+
tracks.appendChild(t);
|
|
249
|
+
});
|
|
250
|
+
const add = document.createElement("button");
|
|
251
|
+
add.className = "rydr-sbe-btn ghost";
|
|
252
|
+
add.textContent = "+ add track";
|
|
253
|
+
add.disabled = !isAdmin;
|
|
254
|
+
add.addEventListener("click", () => {
|
|
255
|
+
custom.push("");
|
|
256
|
+
buildTracks();
|
|
257
|
+
commit();
|
|
258
|
+
});
|
|
259
|
+
tracks.appendChild(add);
|
|
260
|
+
};
|
|
261
|
+
modeSel.addEventListener("change", () => {
|
|
262
|
+
mode = modeSel.value;
|
|
263
|
+
// Seed custom from whatever currently resolves, so switching to Custom starts from today's bed.
|
|
264
|
+
if (mode === "custom" && !custom.length)
|
|
265
|
+
custom = bedKeys(resolvedBed(id)).slice() || [""];
|
|
266
|
+
buildTracks();
|
|
267
|
+
commit();
|
|
268
|
+
});
|
|
269
|
+
playBtn.addEventListener("click", () => {
|
|
270
|
+
const k = bedKeys(resolvedBed(id))[0];
|
|
271
|
+
if (!k)
|
|
272
|
+
return;
|
|
273
|
+
stopAll();
|
|
274
|
+
bank.play(k, { loop: false }); // one listen, not the looping bed
|
|
275
|
+
});
|
|
276
|
+
buildTracks();
|
|
277
|
+
paint();
|
|
278
|
+
pick.append(modeSel, tracks, resolved);
|
|
279
|
+
row.append(cell, pick, playCell);
|
|
280
|
+
return row;
|
|
281
|
+
}
|
|
137
282
|
function cueRow(cueId, cueCat, soundsByCat) {
|
|
138
283
|
const def = catalog[cueId];
|
|
139
284
|
const row = document.createElement("div");
|
|
@@ -207,10 +352,12 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
207
352
|
saveBtn.disabled = true;
|
|
208
353
|
saveBtn.textContent = "Saving…";
|
|
209
354
|
const doc = { bindings: { ...working } };
|
|
355
|
+
if (Object.keys(workingMusic).length)
|
|
356
|
+
doc.music = { ...workingMusic };
|
|
210
357
|
void session
|
|
211
358
|
.saveContent(SOUNDBOARD_COLLECTION, SOUNDBOARD_BINDINGS_ID, doc)
|
|
212
359
|
.then(() => {
|
|
213
|
-
saved =
|
|
360
|
+
saved = snapshot();
|
|
214
361
|
})
|
|
215
362
|
.catch(() => {
|
|
216
363
|
/* leave dirty; the shell surfaces the failure */
|
|
@@ -234,11 +381,13 @@ export function mountSoundboardEditor(root, opts) {
|
|
|
234
381
|
const doc = await session.getContent(SOUNDBOARD_COLLECTION, SOUNDBOARD_BINDINGS_ID);
|
|
235
382
|
const data = doc?.data;
|
|
236
383
|
working = { ...(data?.bindings ?? {}) };
|
|
384
|
+
workingMusic = { ...(data?.music ?? {}) };
|
|
237
385
|
}
|
|
238
386
|
catch {
|
|
239
387
|
working = {};
|
|
388
|
+
workingMusic = {};
|
|
240
389
|
}
|
|
241
|
-
saved =
|
|
390
|
+
saved = snapshot();
|
|
242
391
|
renderRows();
|
|
243
392
|
})();
|
|
244
393
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/soundboard-editor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/soundboard-editor/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sounds/index.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export { createSoundBank } from "./sound-bank.js";
|
|
|
19
19
|
export type { SoundBank, SoundBankOptions, PlayOptions, PlayHandle } from "./sound-bank.js";
|
|
20
20
|
export { createSoundboard, STANDARD_CUES, STANDARD_BINDINGS, DEFAULT_SOUND_LIBRARY_URL, SOUNDBOARD_COLLECTION, SOUNDBOARD_BINDINGS_ID, } from "./soundboard.js";
|
|
21
21
|
export type { Soundboard, SoundboardOptions, SoundboardDoc, CueDef, CueCatalog, CueBindings, } from "./soundboard.js";
|
|
22
|
+
export { createMusicDirector } from "./music-director.js";
|
|
23
|
+
export type { MusicDirector, MusicDirectorOptions, MusicBed } from "./music-director.js";
|
|
22
24
|
export { decodeAudio, computePeaks, peakDb, cropBuffer, encodeWav, encodeMp3 } from "./audio-utils.js";
|
|
23
25
|
export { SOUND_CATEGORIES } from "./types.js";
|
|
24
26
|
export type { SoundAsset, SoundClip, SoundCategory, SoundVariation, SoundLoudness, SoundLicense, SoundFolder, SoundLibraryManifest, } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sounds/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,UAAU,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sounds/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,UAAU,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
package/dist/sounds/index.js
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
export { createSoundBank } from "./sound-bank.js";
|
|
19
19
|
export { createSoundboard, STANDARD_CUES, STANDARD_BINDINGS, DEFAULT_SOUND_LIBRARY_URL, SOUNDBOARD_COLLECTION, SOUNDBOARD_BINDINGS_ID, } from "./soundboard.js";
|
|
20
|
+
export { createMusicDirector } from "./music-director.js";
|
|
20
21
|
export { decodeAudio, computePeaks, peakDb, cropBuffer, encodeWav, encodeMp3 } from "./audio-utils.js";
|
|
21
22
|
export { SOUND_CATEGORIES } from "./types.js";
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/sounds/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sounds/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sounds/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `MusicDirector` — the game-facing **background-music arrangement** layer over {@link SoundBank}.
|
|
3
|
+
*
|
|
4
|
+
* A game's screens map to a small set of coarse, game-declared **states** (`"menu"`, `"results"`,
|
|
5
|
+
* `"gameplay"`, …); this director maps each state to a **bed** — a single looping key, an ordered
|
|
6
|
+
* rotation of keys, or silence — and drives the shared bank's `music` bus. It is the music sibling of
|
|
7
|
+
* {@link createSoundboard}'s cue layer, and the same code-owns-structure / data-owns-binding split:
|
|
8
|
+
* the game declares the *states* + their code-default beds (structure), while *which track* each state
|
|
9
|
+
* plays can be overridden from a persisted doc via {@link MusicDirector.setBeds} (binding) — edited in
|
|
10
|
+
* the soundboard editor, applied at runtime with no redeploy.
|
|
11
|
+
*
|
|
12
|
+
* The director owns no `AudioContext` and creates no bank; it is handed the game's one shared bank so
|
|
13
|
+
* there is exactly one mixer/limiter/master. A charted/gameplay track that the game clocks itself
|
|
14
|
+
* should NOT route through here — map that state to `null` (silence) and let the game own its audio.
|
|
15
|
+
*
|
|
16
|
+
* Fail-silent by construction: an unpublished/absent bed key makes `bank.play()` return `null`, so the
|
|
17
|
+
* game is simply quiet until the asset is published in the shared library (no redeploy).
|
|
18
|
+
*/
|
|
19
|
+
import type { SoundBank } from "./sound-bank.js";
|
|
20
|
+
/** A music bed: one looping key, an ordered rotation of keys, or null (silence). */
|
|
21
|
+
export type MusicBed = string | string[] | null;
|
|
22
|
+
export interface MusicDirectorOptions {
|
|
23
|
+
/** The game's one shared bank (from `createSoundboard(...).bank` or `createSoundBank`). */
|
|
24
|
+
bank: SoundBank;
|
|
25
|
+
/** Code-default bed per state. Its keys define the valid states and the fallback used when a state
|
|
26
|
+
* has no saved override. Values are full library keys (namespace them in the game if needed). */
|
|
27
|
+
beds: Record<string, MusicBed>;
|
|
28
|
+
/** dB the `music` bus drops by while a foreground clip is up (see {@link MusicDirector.suppress}).
|
|
29
|
+
* Default 18. */
|
|
30
|
+
suppressDb?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface MusicDirector {
|
|
33
|
+
/** Set the active state → play the mapped bed (or none). Idempotent: re-entering a state whose bed
|
|
34
|
+
* resolves to the same track(s) is a no-op (does NOT restart the track). */
|
|
35
|
+
enter(state: string): void;
|
|
36
|
+
/** Transiently duck/quiet the current bed for a foreground clip (e.g. a song preview).
|
|
37
|
+
* Reference-counted: N suppress() calls need N release() calls before the bed returns. */
|
|
38
|
+
suppress(): void;
|
|
39
|
+
/** Undo one suppress(). */
|
|
40
|
+
release(): void;
|
|
41
|
+
/** Player setting: enable/disable the music bed. */
|
|
42
|
+
setEnabled(on: boolean): void;
|
|
43
|
+
/** Merge per-state bed overrides (e.g. an admin's saved doc) over the code defaults, then re-resolve
|
|
44
|
+
* the current state so a change to the live bed takes effect immediately. A `null` value silences
|
|
45
|
+
* that state; a state absent from `map` keeps its current bed. */
|
|
46
|
+
setBeds(overrides: Record<string, MusicBed>): void;
|
|
47
|
+
/** Re-apply the current bed after the first user gesture unlocks audio (or the manifest loads).
|
|
48
|
+
* Idempotent. */
|
|
49
|
+
unlock(): void;
|
|
50
|
+
dispose(): void;
|
|
51
|
+
}
|
|
52
|
+
export declare function createMusicDirector(opts: MusicDirectorOptions): MusicDirector;
|
|
53
|
+
//# sourceMappingURL=music-director.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"music-director.d.ts","sourceRoot":"","sources":["../../src/sounds/music-director.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,IAAI,EAAE,SAAS,CAAC;IAChB;sGACkG;IAClG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B;sBACkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B;iFAC6E;IAC7E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;+FAC2F;IAC3F,QAAQ,IAAI,IAAI,CAAC;IACjB,2BAA2B;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B;;uEAEmE;IACnE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACnD;sBACkB;IAClB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAmD7E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export function createMusicDirector(opts) {
|
|
2
|
+
const { bank } = opts;
|
|
3
|
+
const suppressDb = opts.suppressDb ?? 18;
|
|
4
|
+
let beds = { ...opts.beds };
|
|
5
|
+
// Start on the first declared state; the game's router calls enter() on first mount anyway, so this
|
|
6
|
+
// only matters for the (silent) window before that.
|
|
7
|
+
let state = Object.keys(beds)[0] ?? "";
|
|
8
|
+
let enabled = true;
|
|
9
|
+
let suppressCount = 0;
|
|
10
|
+
let gen = 0; // bumped on every bed change; a stale rotation's onEnded bails against it
|
|
11
|
+
let sig = ""; // signature of the current bed, so enter() can no-op when unchanged
|
|
12
|
+
let handle = null;
|
|
13
|
+
const bedFor = () => (enabled ? (beds[state] ?? null) : null);
|
|
14
|
+
const sigOf = (b) => (Array.isArray(b) ? b.join(",") : b ?? "");
|
|
15
|
+
function stopBed() {
|
|
16
|
+
gen++; // invalidate any pending rotation advance
|
|
17
|
+
handle?.stop();
|
|
18
|
+
handle = null;
|
|
19
|
+
}
|
|
20
|
+
function playFrom(keys, i, myGen) {
|
|
21
|
+
const rotate = keys.length > 1; // rotation plays once + advances; single track loops
|
|
22
|
+
handle = bank.play(keys[i % keys.length], {
|
|
23
|
+
loop: !rotate,
|
|
24
|
+
onEnded: rotate ? () => { if (myGen === gen)
|
|
25
|
+
playFrom(keys, i + 1, myGen); } : undefined,
|
|
26
|
+
}); // null if unpublished/blocked — fine
|
|
27
|
+
}
|
|
28
|
+
function applyBed() {
|
|
29
|
+
const bed = bedFor();
|
|
30
|
+
const next = sigOf(bed);
|
|
31
|
+
if (next === sig)
|
|
32
|
+
return; // already correct — do NOT restart
|
|
33
|
+
stopBed();
|
|
34
|
+
sig = next;
|
|
35
|
+
if (!bed)
|
|
36
|
+
return;
|
|
37
|
+
playFrom(Array.isArray(bed) ? bed : [bed], 0, gen);
|
|
38
|
+
if (suppressCount > 0)
|
|
39
|
+
bank.duck("music", suppressDb, 0); // stay quiet if a preview is up
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
enter(nextState) { state = nextState; applyBed(); },
|
|
43
|
+
suppress() { if (suppressCount++ === 0)
|
|
44
|
+
bank.duck("music", suppressDb); },
|
|
45
|
+
release() { if (suppressCount > 0 && --suppressCount === 0)
|
|
46
|
+
bank.unduck("music"); },
|
|
47
|
+
setEnabled(on) { enabled = on; applyBed(); },
|
|
48
|
+
setBeds(overrides) { beds = { ...beds, ...overrides }; sig = ""; applyBed(); },
|
|
49
|
+
unlock() { sig = ""; applyBed(); }, // force a replay: a pre-gesture / pre-load play() was silent
|
|
50
|
+
dispose() { stopBed(); },
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=music-director.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"music-director.js","sourceRoot":"","sources":["../../src/sounds/music-director.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
*/
|
|
31
31
|
import { type SoundBank, type PlayHandle, type PlayOptions } from "./sound-bank.js";
|
|
32
32
|
import type { SoundCategory, SoundLibraryManifest } from "./types.js";
|
|
33
|
+
import type { MusicBed } from "./music-director.js";
|
|
33
34
|
/** The published, platform-wide sound library (R2 `sounds/library.json`). Same host as the TTS cache.
|
|
34
35
|
* A game may pass its own `manifestUrl`, but every game shares this one library by default. */
|
|
35
36
|
export declare const DEFAULT_SOUND_LIBRARY_URL = "https://pub-3e9a1541a2e9454596e0f4148c48adef.r2.dev/sounds/library.json";
|
|
@@ -75,6 +76,10 @@ export declare const SOUNDBOARD_BINDINGS_ID = "bindings";
|
|
|
75
76
|
/** Shape of the persisted bindings doc's `data`. */
|
|
76
77
|
export interface SoundboardDoc {
|
|
77
78
|
bindings: CueBindings;
|
|
79
|
+
/** Per-state music-bed overrides, layered over the game's code-default beds (see
|
|
80
|
+
* {@link MusicDirector.setBeds}). Keys are the game's own music-state ids; values are library
|
|
81
|
+
* keys / rotations / null (silent). Absent = every state stays on its code default. */
|
|
82
|
+
music?: Record<string, MusicBed>;
|
|
78
83
|
}
|
|
79
84
|
export interface SoundboardOptions {
|
|
80
85
|
/** Published library URL. Defaults to {@link DEFAULT_SOUND_LIBRARY_URL}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soundboard.d.ts","sourceRoot":"","sources":["../../src/sounds/soundboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"soundboard.d.ts","sourceRoot":"","sources":["../../src/sounds/soundboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soundboard.js","sourceRoot":"","sources":["../../src/sounds/soundboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,eAAe,EAAqD,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"soundboard.js","sourceRoot":"","sources":["../../src/sounds/soundboard.ts"],"names":[],"mappings":"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"}
|