diff --git a/.claude/MEMORY.md b/.claude/MEMORY.md index 4ff24f8..36c1eb2 100644 --- a/.claude/MEMORY.md +++ b/.claude/MEMORY.md @@ -29,7 +29,15 @@ - Settings object: `UCLASS(config=Engine, defaultconfig)` inheriting `UObject`, registered via `ISettingsModule` - Module startup: `NewObject(..., RF_Standalone)` + `AddToRoot()` - WebSocket: `FWebSocketsModule::Get().CreateWebSocket(URL, TEXT(""), Headers)` -- Audio capture: `Audio::FAudioCapture` from the `AudioCapture` module + - `WebSockets` is a **module** (Build.cs only) — NOT a plugin, don't put it in `.uplugin` +- Audio capture: `Audio::FAudioCapture::OpenAudioCaptureStream()` (UE 5.3+, replaces deprecated `OpenCaptureStream`) + - `AudioCapture` IS a plugin — declare it in `.uplugin` Plugins array + - Callback type: `FOnAudioCaptureFunction` = `TFunction` + - Cast `const void*` to `const float*` inside — device sends float32 interleaved - Procedural audio playback: `USoundWaveProcedural` + `OnSoundWaveProceduralUnderflow` delegate - Audio capture callbacks arrive on a **background thread** — always marshal to game thread with `AsyncTask(ENamedThreads::GameThread, ...)` - Resample mic audio to **16000 Hz mono** before sending to ElevenLabs +- `TArray::RemoveAt(idx, count, EAllowShrinking::No)` — bool overload deprecated in UE 5.5 + +## Plugin Status +- **PS_AI_Agent_ElevenLabs**: compiles cleanly on UE 5.5 Win64 (verified 2026-02-19)