TASK 4 audio fixes round 2: dB-scaled meters, game bar moved into the preview, Notepad About button replaced by the logo → in-app About — AudioLevelMeter.ToDisplay maps -60..0 dBFS onto 0..1 (real speech/game RMS ~0.01..0.1 linear left the flat scale dead; both meters now scale through it before volume); the game audio bar moved OUT of the footer (back to two rows) and is now a bottom-center dark chip overlaid on the preview window — monitoring UI only, never on the live output; the top-bar About button (opened THIRD-PARTY-NOTICES.txt in the OS viewer) removed, the ytLlive wordmark now opens the in-app About overlay, and task 21 queued (real logo + creator-hub About with premium/coffee/socials links + in-app scrolling licensing panel) — 169 tests passing, 0 warnings
This commit is contained in:
+24
-22
@@ -7,28 +7,30 @@
|
||||
|
||||
## Session state (last updated: 2026-08-13)
|
||||
|
||||
- **Branch:** `main`. The **game audio bar + mic status dot + always-on capture**
|
||||
work is **uncommitted** (see list below). The last committed+pushed baseline is
|
||||
`ea250c0` (social bar click-toggle).
|
||||
- **This session (audio UX follow-up):** per the creator's requests —
|
||||
1. The MIC label is now a **button with a status dot** (`Models/MicStatus`:
|
||||
green = capturing, yellow = requested mic problem, red = no device).
|
||||
2. **Mic capture runs for the app's lifetime** (started at startup via
|
||||
`StartMicCaptureAsync`, disposed in `Shutdown`; `BeginGoLive`/`StopStream`
|
||||
no longer start/stop the mixer) so both meters preview live.
|
||||
3. A **game audio bar** (desktop/game — meter + mute + volume, mirror of the
|
||||
mic bar) sits centered beneath the preview and appears only while a
|
||||
**full-screen game is producing sound** (decision: fullscreen + loopback
|
||||
sound; **silence never hides an active bar** — the creator's final rule).
|
||||
Show after ~500ms of fullscreen+sound, hide ~1s after leaving fullscreen.
|
||||
- **Uncommitted files:** `MainWindow.xaml`/`.cs`, `ViewModels/MainViewModel.cs`,
|
||||
`Services/Audio/{IAudioSource,WasapiMicAudioSource,WasapiLoopbackAudioSource,AudioMixer}.cs`,
|
||||
new `Models/MicStatus.cs`, new `Services/{IGameAudioDetector,GameAudioHysteresis,GameAudioDetector}.cs`,
|
||||
`ytLive.Tests/AudioMixerTests.cs`, new `GameAudioHysteresisTests.cs` +
|
||||
`GameAudioDetectorTests.cs`, memory docs (TASKS.md, ai.md, Services/index.md,
|
||||
ViewModels/index.md, Models/index.md, HANDOFF).
|
||||
- **Verified:** build 0 warnings, 0 errors; **167 tests passing** (full suite,
|
||||
after the final rebuild).
|
||||
- **Branch:** `main`. The **audio UX follow-up** (`9f9ed34`) is **committed and pushed**.
|
||||
- **This session (round 2 — the game audio bar + meter fixes):**
|
||||
1. **Meter scaling:** the bars looked dead on a flat scale — real speech/game RMS is
|
||||
~0.01..0.1 linear, so the fill barely moved even at full volume. Added
|
||||
`AudioLevelMeter.ToDisplay(float)`: maps −60..0 dBFS linearly onto 0..1. Both meters
|
||||
(mic `MeterLevel`, game `GameMeterLevel`) now scale the raw level through it before
|
||||
multiplying by volume. +2 unit tests.
|
||||
2. **Game bar placement correction (user: it belongs in the preview, not the footer):**
|
||||
moved the game audio bar OUT of the footer (footer back to two rows) and into the
|
||||
**preview window** as a bottom-center dark chip overlaid on the live display
|
||||
(`MainWindow.xaml`, in the `PreviewGrid` next to the OpacityChip). Monitoring UI
|
||||
only — never rendered into the live output (the `SceneCompositor` is unaware of it).
|
||||
3. **About button (user: stop jacking Notepad; standalone app):** the top-bar About
|
||||
button that opened `THIRD-PARTY-NOTICES.txt` in the OS viewer is GONE (button +
|
||||
`AboutButton_Click` removed). The **ytLlive wordmark (top-left) is now clickable**
|
||||
and opens the existing in-app About overlay (`OpenAboutCommand`). Queued as task 21:
|
||||
make a real logo + expand the About overlay into the creator's hub (premium / coffee
|
||||
/ socials links + a scrolling licensing/legal panel, all in-app).
|
||||
- **Uncommitted:** this round-2 work — `Services/Audio/AudioLevelMeter.cs`,
|
||||
`ViewModels/MainViewModel.cs`, `MainWindow.xaml` (scaling + game bar + logo/About),
|
||||
`MainWindow.xaml.cs` (AboutButton_Click + unused usings removed), `ytLive.Tests/AudioMixerTests.cs`
|
||||
(2 new `ToDisplay` tests), memory docs (TASKS.md — incl. new task 21, ai.md,
|
||||
Services/index.md, ViewModels/index.md, HANDOFF, THIRD-PARTY-NOTICES.txt).
|
||||
- **Verified:** build 0 warnings, 0 errors; **169 tests passing** (full suite).
|
||||
- **Landmines:**
|
||||
- Never set a local `Canvas.SetTop` on the social bar — a local value permanently
|
||||
overrides `{Binding SocialBarTop}` (the `ClearValue` lesson from 5.5).
|
||||
|
||||
Reference in New Issue
Block a user