4 Commits
Author SHA1 Message Date
Hails 378ce835bf Dev test mod: a different sound per autotest step, a compact top-left HUD
The audible autotest used one beep for eight steps, so steps couldn't be told apart.
Each step now has its own self-made sound (synthesize.py): bell (map Baby_Cry_1), chime
(F6 post, Buoy_Bell patch 88), wood block (F8), triangle (F10), low horn (F11 landing),
click (pop rule), whistle (Digit5), shaker (Digit6), boing (honk rule). HUD: one compact
box top-left, every line fits one row, live countdown; camera return after step 3.
2026-10-04 17:47:01 -06:00
Hails 39debf506d Audio modding 2: hot swap, hot reload, MixMap inputs, own instances, Csis projects, seed
Completes the "Later" list (doc 16 section M):
- Hot swap: an audio mod turning on / off is swapped into the running audio in place.
  Banks keep their runtime id and constructor order, held posts are re-bound with their
  payload; Splice trees, wheel streams, projects, tuning and speech swap too. Only a
  MixMap or grain-bed change (or a swap error) still restarts the sound.
  sdk.audio.info().swaps / last_change.
- Hot reload: editing audio.json or the files it names swaps the overlay while the
  script keeps running.
- MixMap inputs: sdk.audio.set_mixmap_input / mixmap_inputs drive retail's own
  controllers (validated, owned, 16 per mod / 64 total, released values restored).
- Own instances: world_audio spawn {slots='own'} plays mod cars / peds on a private
  MixMap (16 + 16), retail pools untouched.
- Csis projects: audio.json add.projects ships a mod's own classes, functions and
  globals; name clashes are refused; installed / removed without a restart.
- Seed: sdk.audio.seed / SKATE_AUDIO_SEED seeds all audio generators.
- Rules: play.frame = 'owner' puts offsets in the owner's axes; rule sounds follow
  moving published emitters.
- Capabilities: audio 4, audio_content 3, audio_events 3, world_audio 3.
- Dev test mod: Digit1-6, a second HUD line, its own self-made dev.csi.
- No mod active: e2e bench byte-identical 84 / 84 after every step.
2026-10-04 14:38:56 -06:00
Hails 8403400fe3 Audio modding: review gaps closed, empty Lua tables read as lists
- Mod crossfade banks play: crossfade layouts come from the bank's program or from
  `add.crossfade_layouts` (crossfade.rs, crossfade_layouts.rs); dev test mod fade sample.
- Speech clips and takes are checked at merge time and by check_mod.
- Empty Lua tables (`{}`) were parsed as maps and rejected by list fields; one helper
  (lua_list.rs) now reads them as empty lists in every list field of every mod command.
- Traffic lights answered in the world-audio spec (Skate 3 has none).
- Doc 16 and PULL-REQUESTS.md updated.
2026-10-04 10:03:45 -06:00
Hails f7de66731e Audio modding R6: modding guide, sdk example and dev test mod 2026-10-03 20:13:05 -06:00