Mimir/docs/obs-stem-plugin.md
2026-05-27 20:55:48 +01:00

45 lines
1.4 KiB
Markdown

# OBS Stem Plugin
The production audio path is a Mimir/Fensalir-owned stem bus plus a narrow OBS
source plugin.
## Authority
- Mimir/Fensalir own timing, alignment, DSP, and stem identity.
- OBS owns broadcast mixing and scene composition.
- The plugin reads already-processed stem samples. It does not synchronize raw
sources, estimate clocks, or decide which stem is true.
## Current Contract
`MimirObsStemSharedMemoryPublisher` writes the latest validated
`MimirObsStemPublicationSnapshot` into a Windows shared-memory map named
`Local\MimirObsStemBus` by default. The native OBS plugin in
`native/obs_stem_source` exposes one audio input source. Add one source per stem
and set:
```text
Shared memory map: Local\MimirObsStemBus
Stem id: aligned_source_0
```
Use `aligned_source_0` through `aligned_source_5` for the first actuator-stage
source lanes.
## Build
The plugin requires an OBS/libobs development package that provides
`libobsConfig.cmake`.
```powershell
cmake -S .\native\obs_stem_source -B .\native\obs_stem_source\build -Dlibobs_DIR=<path-to-libobs-cmake>
cmake --build .\native\obs_stem_source\build --config Release
```
This workstation currently does not have the libobs SDK installed, so CMake
configuration stops at `find_package(libobs)`. The managed shared-memory
publisher is still verified by:
```powershell
dotnet run --no-build --project .\src\Mimir.BufferSmoke\Mimir.BufferSmoke.csproj -- --obs-stem-shared-memory-smoke
```