2.2 KiB
2.2 KiB
name, description
| name | description |
|---|---|
| sp-audio-ir-loader | Pipeline package for the audio-ir family — composes IrRegistry, StorageUriResolver, AudioDecoder, and manifest validation into a single createIrLoader(). Universal. |
sp-audio-ir-loader
| Symbol | Kind | Responsibility |
|---|---|---|
createIrLoader |
Function | Composes registry, URI resolver, decoder, and manifest validation into a unified loader |
IrLoader |
Interface | Load surface: load(family, id), preload(options), cacheStats() |
ImpulseResponseCache |
Class | In-memory LRU cache for decoded impulse responses |
impulseResponseBytes |
Function | Loads raw IR bytes from a resolved URI |
validateAndFinalize |
Function | Validates decoded audio against manifest expectations |
runPreload |
Function | Preloads a set of IRs into the cache |
AUDIO_IR_LOADER_CODES |
Constant | Error-code registry via @suaveplan/error defineCodes |
File Structure: packages/media/audio-ir/audio-ir-loader/src/{loader,cache,otel,error-codes}/
Sibling packages:
@suaveplan/audio-ir-core— IR schemas and registry@suaveplan/audio-ir-room-plugin-club— content package (club IRs)@suaveplan/audio-ir-room-plugin-pool— content package (pool IRs)@suaveplan/storage-uri— URI resolution@suaveplan/audio-decode-wav— WAV decoder
Patterns:
Quick Start:
import { createIrLoader } from "@suaveplan/audio-ir-loader";
const loader = createIrLoader({ registry, resolver, decoder });
const ir = await loader.load("room", "club1"); // decoded audio buffer
Preload:
await loader.preload({ families: ["room"], ids: ["club1", "club2"] });
Constraints:
- Universal — zero platform-only APIs
- Subpath exports:
/error-codes - Caches decoded audio buffers to avoid repeated decode
- OTel instruments for cache hits, misses, load success, and errors
- Manifest validation ensures decoded audio matches expected format
Checklist:
createIrLoader()returns a loader that resolves URIs to decoded audiopreload()warms the cache for specified IRsImpulseResponseCacheevicts least-recently-used entries- Manifest validation rejects mismatched sample rates or channel counts