Aus der Einschätzung der Sound-FX-Nodes nach #317 (Gespräch 2026-10-05). Heute gibt es Input, Output, Gain, Pitch, 5-Band-EQ und Mix.
Delay und Reverb klingen weiter, wenn die Quelle schon zu Ende ist. Das kann der Player heute nicht.
Heute:
Eine Stimme gilt als beendet, sobald ihre Quellen enden (source.onended in src/viewport/SoundLibrary.ts).
Stop sound stoppt nur die Quellen (source.stop()). Ein Echo würde danach weiterklingen.
Jede Stimme geht über ihren eigenen Gain direkt an context.destination.
Vorschlag:
Der Plan einer Stimme kennt eine Nachklingzeit. Delay und Reverb melden ihre, zum Beispiel bis −60 dB aus Feedback bzw. Decay gerechnet.
Die Stimme lebt bis Quellenende + Nachklingzeit. Erst dann wird sie gezählt als beendet, abgebaut und für Set sound FX parameters unerreichbar.
Stop sound dreht zusätzlich den Ausgangs-Gain der Stimme in wenigen Millisekunden ab, damit es nicht knackt.
length an Play sound bleibt die Länge des Clips, der Nachklang kommt obendrauf.
Rückfragen:
Soll Stop sound den Nachklang mit abschneiden, oder ausklingen lassen? Beides hat seinen Platz. Mein Vorschlag: Standard abschneiden, plus ein Schalter Let ring an Stop sound.
Soll Play sound zusätzlich einen Ausgang tail (Länge inklusive Nachklang) bekommen, neben length?
Ein Loop mit Delay klingt nie aus, bis er gestoppt wird. Passt das so?
Gibt es eine Obergrenze für gleichzeitige Stimmen, die jetzt länger leben? Heute gibt es keine. Bei Dauerfeuer mit Hall könnten sich viele Stimmen stapeln.
Aus der Einschätzung der Sound-FX-Nodes nach #317 (Gespräch 2026-10-05). Heute gibt es *Input*, *Output*, *Gain*, *Pitch*, *5-Band-EQ* und *Mix*.
Delay und Reverb klingen weiter, wenn die Quelle schon zu Ende ist. Das kann der Player heute nicht.
Heute:
- Eine Stimme gilt als beendet, sobald ihre Quellen enden (`source.onended` in `src/viewport/SoundLibrary.ts`).
- *Stop sound* stoppt nur die Quellen (`source.stop()`). Ein Echo würde danach weiterklingen.
- Jede Stimme geht über ihren eigenen Gain direkt an `context.destination`.
Vorschlag:
- Der Plan einer Stimme kennt eine **Nachklingzeit**. Delay und Reverb melden ihre, zum Beispiel bis −60 dB aus Feedback bzw. Decay gerechnet.
- Die Stimme lebt bis Quellenende + Nachklingzeit. Erst dann wird sie gezählt als beendet, abgebaut und für *Set sound FX parameters* unerreichbar.
- *Stop sound* dreht zusätzlich den Ausgangs-Gain der Stimme in wenigen Millisekunden ab, damit es nicht knackt.
- `length` an *Play sound* bleibt die Länge des Clips, der Nachklang kommt obendrauf.
Rückfragen:
- **Soll *Stop sound* den Nachklang mit abschneiden, oder ausklingen lassen?** Beides hat seinen Platz. Mein Vorschlag: Standard abschneiden, plus ein Schalter *Let ring* an *Stop sound*.
- Soll *Play sound* zusätzlich einen Ausgang `tail` (Länge inklusive Nachklang) bekommen, neben `length`?
- Ein Loop mit Delay klingt nie aus, bis er gestoppt wird. Passt das so?
- Gibt es eine Obergrenze für gleichzeitige Stimmen, die jetzt länger leben? Heute gibt es keine. Bei Dauerfeuer mit Hall könnten sich viele Stimmen stapeln.
meleki
added the new label 2026-10-05 22:37:52 +02:00
Umgesetzt mit cf6799a („Let echoes ring on with a Delay node in sound FX #324 #327“), zusammen mit dem Delay-Node aus #327. Wiki: c11e310, Seite Sounds, Abschnitt Delay and the tail of a voice.
Entscheidungen (aus der Fragerunde)
Stop sound blendet eine Stimme in 10 ms aus statt hart abzuschneiden. Der neue Schalter Let ring stoppt nur den Sound, die Echos klingen aus. Ein Stop sound ohne den Schalter danach schneidet sie ab.
Behavior zerstört / Lauf beendet: schneidet weiter alles ab, Echos inklusive (wie bisher).
Stop sound hat einen Eingang voice. Angesteckt stoppt er nur diese Stimme. Kommt dort 0 an (das Play sound hat nichts gespielt), stoppt er nichts.
Play sound hat den Ausgang tail: length plus Nachklang, mit den Werten beim Start.
Loop mit Echo endet nie von selbst, erst nach einem Stopp mit Let ring klingt er aus.
Kein Limit für Stimmen, gemessen und im Wiki dokumentiert.
So funktioniert es
Eine Stimme mit Echo lebt, bis das letzte Echo 60 dB unter dem Sound liegt, gerechnet aus Time, Feedback und Mix (fxTailOf). Damping bleibt dabei außen vor, der Nachklang ist also nie zu kurz.
Solange sie nachklingt, zählt sie als spielend und ist für Set sound FX parameters erreichbar. Eine Änderung rechnet den Nachklang neu.
Das Ende wird auf der Audio-Uhr gemessen (stille ConstantSourceNode). Eine Pause hält den Nachklang an.
Ist der Kontext angehalten, schneidet ein Stopp sofort ab statt auszublenden.
Tests
Unit (sound-library, soundfx, node-catalog, sounds, keep-on-scene-load): 489 Tests grün. Neu: Ausblenden beim Stopp, Abschneiden bei angehaltenem Kontext, Klingen bis zum Ende des Nachklangs, Neurechnen nach einer Änderung, Let ring, Stopp per voice, Summen von tail.
Gegenproben: Nachklang abgeschaltet, Stopp ohne Ausblenden, angesteckter voice 0 wie „nicht angesteckt“. Jede lässt Tests fallen.
e2e 34 (melektaus-atx): ALL PASSED, 37 Checks. Ein Blip durch ein Ping-Pong-Delay (0,3 s, Feedback 0,5, Mix 0,5) lebte 2,97 s, gerechnet 2,95 s. Let ring hielt die Stimme, ein normaler Stopp danach beendete sie.
Kosten: headless Chrome auf melektaus-atx rechnet 64 Stereo-Stimmen mit Ping-Pong-Delay in etwa 0,3 s für 2 s Audio, also gut 400 Stimmen gleichzeitig.
Gehört hat niemand etwas, der Browser im Test ist stumm.
In Firefox lief nichts.
Der CI-Lauf zu cf6799a war beim Schließen noch nicht gelesen.
Umgesetzt mit `cf6799a` („Let echoes ring on with a Delay node in sound FX #324 #327“), zusammen mit dem Delay-Node aus #327. Wiki: `c11e310`, Seite *Sounds*, Abschnitt *Delay and the tail of a voice*.
## Entscheidungen (aus der Fragerunde)
1. **Stop sound** blendet eine Stimme in 10 ms aus statt hart abzuschneiden. Der neue Schalter **Let ring** stoppt nur den Sound, die Echos klingen aus. Ein *Stop sound* ohne den Schalter danach schneidet sie ab.
2. **Behavior zerstört / Lauf beendet:** schneidet weiter alles ab, Echos inklusive (wie bisher).
3. **Stop sound** hat einen Eingang `voice`. Angesteckt stoppt er nur diese Stimme. Kommt dort 0 an (das *Play sound* hat nichts gespielt), stoppt er nichts.
4. **Play sound** hat den Ausgang `tail`: `length` plus Nachklang, mit den Werten beim Start.
5. **Loop mit Echo** endet nie von selbst, erst nach einem Stopp mit *Let ring* klingt er aus.
6. **Kein Limit** für Stimmen, gemessen und im Wiki dokumentiert.
## So funktioniert es
- Eine Stimme mit Echo lebt, bis das letzte Echo 60 dB unter dem Sound liegt, gerechnet aus *Time*, *Feedback* und *Mix* (`fxTailOf`). Damping bleibt dabei außen vor, der Nachklang ist also nie zu kurz.
- Solange sie nachklingt, zählt sie als spielend und ist für *Set sound FX parameters* erreichbar. Eine Änderung rechnet den Nachklang neu.
- Das Ende wird auf der Audio-Uhr gemessen (stille `ConstantSourceNode`). Eine Pause hält den Nachklang an.
- Ist der Kontext angehalten, schneidet ein Stopp sofort ab statt auszublenden.
## Tests
- Unit (sound-library, soundfx, node-catalog, sounds, keep-on-scene-load): 489 Tests grün. Neu: Ausblenden beim Stopp, Abschneiden bei angehaltenem Kontext, Klingen bis zum Ende des Nachklangs, Neurechnen nach einer Änderung, *Let ring*, Stopp per `voice`, Summen von `tail`.
- Gegenproben: Nachklang abgeschaltet, Stopp ohne Ausblenden, angesteckter `voice` 0 wie „nicht angesteckt“. Jede lässt Tests fallen.
- e2e 34 (melektaus-atx): ALL PASSED, 37 Checks. Ein Blip durch ein Ping-Pong-Delay (0,3 s, Feedback 0,5, Mix 0,5) lebte 2,97 s, gerechnet 2,95 s. *Let ring* hielt die Stimme, ein normaler Stopp danach beendete sie.
- Kosten: headless Chrome auf melektaus-atx rechnet 64 Stereo-Stimmen mit Ping-Pong-Delay in etwa 0,3 s für 2 s Audio, also gut 400 Stimmen gleichzeitig.
- Gate (melektaus-atx): CHECK EXIT 0, 242 Testdateien, 3713 Tests.
## Nicht geprüft
- Gehört hat niemand etwas, der Browser im Test ist stumm.
- In Firefox lief nichts.
- Der CI-Lauf zu `cf6799a` war beim Schließen noch nicht gelesen.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus der Einschätzung der Sound-FX-Nodes nach #317 (Gespräch 2026-10-05). Heute gibt es Input, Output, Gain, Pitch, 5-Band-EQ und Mix.
Delay und Reverb klingen weiter, wenn die Quelle schon zu Ende ist. Das kann der Player heute nicht.
Heute:
source.onendedinsrc/viewport/SoundLibrary.ts).source.stop()). Ein Echo würde danach weiterklingen.context.destination.Vorschlag:
lengthan Play sound bleibt die Länge des Clips, der Nachklang kommt obendrauf.Rückfragen:
tail(Länge inklusive Nachklang) bekommen, nebenlength?Umgesetzt mit
cf6799a(„Let echoes ring on with a Delay node in sound FX #324 #327“), zusammen mit dem Delay-Node aus #327. Wiki:c11e310, Seite Sounds, Abschnitt Delay and the tail of a voice.Entscheidungen (aus der Fragerunde)
voice. Angesteckt stoppt er nur diese Stimme. Kommt dort 0 an (das Play sound hat nichts gespielt), stoppt er nichts.tail:lengthplus Nachklang, mit den Werten beim Start.So funktioniert es
fxTailOf). Damping bleibt dabei außen vor, der Nachklang ist also nie zu kurz.ConstantSourceNode). Eine Pause hält den Nachklang an.Tests
voice, Summen vontail.voice0 wie „nicht angesteckt“. Jede lässt Tests fallen.Nicht geprüft
cf6799awar beim Schließen noch nicht gelesen.