MCP: hören ohne Ohren, Stimmen und Pegel im laufenden Spiel #436

Closed
opened 2026-10-18 19:38:38 +02:00 by meleki · 1 comment
Owner

Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 6 von 6, das größte Stück.

Anlass

Der Agent hört nicht. In 5d ist ihm deshalb zweimal entgangen, dass Musik stumm blieb: zuerst ganz ohne Instrument, dann beim Bass, dessen Noten nach dem Transponieren unter dem Bereich des Notes-Nodes lagen. Beides meldet get_asset inzwischen unter silent (19902a9). Das ist aber eine Vorhersage aus den Daten. Sie deckt keine stumme Send-Kette, keinen Bus auf 0, keinen Effekt, der alles wegfiltert, und keinen Sound, der nicht geladen ist.

Stand heute (im Code nachgesehen)

  • get_runtime liest Objekte, Variablen, Kamera, Tasten und Konsole, aber nichts vom Ton.
  • Im Audio-Weg (src/runtime/systems/Audio.ts und Umgebung) gibt es keine Messstelle: keinen AnalyserNode, keinen Pegel je Bus.

Vorschlag

  • get_runtime bekommt einen Abschnitt audio: welche Stimmen gerade klingen (Quelle: Sound, Pattern oder Song, Instrument, Note, Bus) und der Pegel je Bus und am Master (Spitze und RMS in dB über die letzten Frames).
  • Dafür braucht es zuerst eine Messstelle je Bus in der Audio-Kette. Sie misst nur, solange der Agent eingeschaltet ist, damit der Editor sonst nichts dafür bezahlt.
  • Damit merkt der Agent selbst, wenn etwas nicht klingt, auch dort, wo silent nichts sieht.
  • Beim Plan zu klären: Messung im Worklet oder per AnalyserNode, wie viele Frames ein Wert umfasst, und wie sich das mit dem Streaming-Player (#349) und Bakes (#340) verträgt.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 6 von 6, das größte Stück. ## Anlass Der Agent hört nicht. In 5d ist ihm deshalb zweimal entgangen, dass Musik stumm blieb: zuerst ganz ohne Instrument, dann beim Bass, dessen Noten nach dem Transponieren unter dem Bereich des *Notes*-Nodes lagen. Beides meldet `get_asset` inzwischen unter `silent` (`19902a9`). Das ist aber eine Vorhersage aus den Daten. Sie deckt keine stumme Send-Kette, keinen Bus auf 0, keinen Effekt, der alles wegfiltert, und keinen Sound, der nicht geladen ist. ## Stand heute (im Code nachgesehen) - `get_runtime` liest Objekte, Variablen, Kamera, Tasten und Konsole, aber nichts vom Ton. - Im Audio-Weg (`src/runtime/systems/Audio.ts` und Umgebung) gibt es keine Messstelle: keinen `AnalyserNode`, keinen Pegel je Bus. ## Vorschlag - **`get_runtime` bekommt einen Abschnitt `audio`**: welche Stimmen gerade klingen (Quelle: Sound, Pattern oder Song, Instrument, Note, Bus) und der Pegel je Bus und am Master (Spitze und RMS in dB über die letzten Frames). - Dafür braucht es zuerst eine Messstelle je Bus in der Audio-Kette. Sie misst nur, solange der Agent eingeschaltet ist, damit der Editor sonst nichts dafür bezahlt. - Damit merkt der Agent selbst, wenn etwas nicht klingt, auch dort, wo `silent` nichts sieht. - Beim Plan zu klären: Messung im Worklet oder per `AnalyserNode`, wie viele Frames ein Wert umfasst, und wie sich das mit dem Streaming-Player (#349) und Bakes (#340) verträgt.
admin added this to the Development project 2026-10-18 19:38:51 +02:00
admin moved this to Next in Development on 2026-10-18 19:39:04 +02:00
Author
Owner

Umgesetzt in b5e071c, dazu der Fix dd2096e (ohne eigenes Issue).

get_runtime → audio

  • levels: Spitze und RMS in dB von Master, Mix-Bussen, jeder laufenden Wiedergabe und den Spuren eines Songs, nach Lautstärke und Pan des Busses, über ca. 0,7 s. Unter −90 dB steht silent. In der Pause bleiben die Werte stehen.
  • voices: was gerade klingt, ein Sound mit Namen oder ein Instrument mit Note (E4), mit Bus und Objekt. Dazu planned, playing, waiting und failed.
  • clock: Zustand der Audio-Uhr, mit Hinweis, wenn der Browser sie während des Spiels anhält. Gemeldet wird der Zustand vor einer Pause.
  • Abgegriffen wird nur, solange der Agent eingeschaltet ist.

Die offenen Fragen

  • AnalyserNode statt Worklet: dieselbe Technik wie die Pegel im Song-Tab, mit eigenem Abgriff.
  • Fenster ca. 0,7 s, damit die Lücke zwischen zwei Noten nicht als Stille gilt.
  • Streaming und Bakes laufen über dieselben Busse und sind damit dabei.

Funde

  • dd2096e: Ein neuer Bus des Mix wurde mit Pegel 1 angelegt und glitt dann auf seinen Wert. Ein Ton auf einem Bus mit Lautstärke 0 war zu Beginn eines Laufs kurz zu hören (−7,8 dB im ersten e2e-Lauf). Jetzt bekommt ein neuer Bus seinen Pegel sofort.
  • Beim Live-Test lief die Audio-Uhr nicht, weil das Spiel nach F5 vor dem ersten Klick in die Seite gestartet wurde. Deshalb gibt es clock.

Tests

  • Unit sound-library und agent-play, 9 Gegenproben, 8 rot (grün blieb nur das Lösen des Abgriffs eines Busses, der ohnehin weg ist).
  • e2e 71 auf melektaus-atx: 28/28, neu 71h4 (Ton auf Master und auf stummem Bus).
  • Gate: CHECK EXIT 0, 327 Dateien, 5037 Tests.
  • Live am MCP Test Project: Master −19,1 dB, Lead E4.

Wiki: Seite MCP (29891b3).

Umgesetzt in b5e071c, dazu der Fix dd2096e (ohne eigenes Issue). **`get_runtime` → `audio`** - `levels`: Spitze und RMS in dB von Master, Mix-Bussen, jeder laufenden Wiedergabe und den Spuren eines Songs, nach Lautstärke und Pan des Busses, über ca. 0,7 s. Unter −90 dB steht `silent`. In der Pause bleiben die Werte stehen. - `voices`: was gerade klingt, ein Sound mit Namen oder ein Instrument mit Note (`E4`), mit Bus und Objekt. Dazu `planned`, `playing`, `waiting` und `failed`. - `clock`: Zustand der Audio-Uhr, mit Hinweis, wenn der Browser sie während des Spiels anhält. Gemeldet wird der Zustand vor einer Pause. - Abgegriffen wird nur, solange der Agent eingeschaltet ist. **Die offenen Fragen** - AnalyserNode statt Worklet: dieselbe Technik wie die Pegel im Song-Tab, mit eigenem Abgriff. - Fenster ca. 0,7 s, damit die Lücke zwischen zwei Noten nicht als Stille gilt. - Streaming und Bakes laufen über dieselben Busse und sind damit dabei. **Funde** - dd2096e: Ein neuer Bus des Mix wurde mit Pegel 1 angelegt und glitt dann auf seinen Wert. Ein Ton auf einem Bus mit Lautstärke 0 war zu Beginn eines Laufs kurz zu hören (−7,8 dB im ersten e2e-Lauf). Jetzt bekommt ein neuer Bus seinen Pegel sofort. - Beim Live-Test lief die Audio-Uhr nicht, weil das Spiel nach F5 vor dem ersten Klick in die Seite gestartet wurde. Deshalb gibt es `clock`. **Tests** - Unit `sound-library` und `agent-play`, 9 Gegenproben, 8 rot (grün blieb nur das Lösen des Abgriffs eines Busses, der ohnehin weg ist). - e2e 71 auf melektaus-atx: 28/28, neu 71h4 (Ton auf Master und auf stummem Bus). - Gate: CHECK EXIT 0, 327 Dateien, 5037 Tests. - Live am MCP Test Project: Master −19,1 dB, *Lead* E4. Wiki: Seite *MCP* (29891b3).
admin moved this to Done in Development on 2026-10-19 05:57:11 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#436