Parametric EQ: Spektrum des gerade gespielten Klangs im EQ-Tab #374

Closed
opened 2026-10-09 14:42:27 +02:00 by meleki · 2 comments
Owner

Aus #156, Durchgang 5. Dein Wunsch aus #367 „für die Zukunft nach dieser Umsetzung“.

Herkunft

  • #367: „spectrum die gerade abgespielt werden (samples die gerade durchlaufen)“
  • Abschluss 3870: „Später, wie im Issue vorgesehen: Spektrum und Mini-Kurve im Node.“ Die Mini-Kurve ist #375.

Stand

  • Der EQ hat seit #370 einen eigenen Tab (src/editor/soundfx/EqEditor.ts). Die Kurve rechnet src/editor/soundfx/eqView.ts, auf einer logarithmischen Achse von 20 Hz bis 20 kHz.
  • Ein AnalyserNode wird heute nur für die Pegelanzeigen benutzt (tapMeter, src/viewport/SoundLibrary.ts:556, #359). Diese Abgriffe werden beim Tabwechsel wieder abgebaut.
  • Jede Stimme baut ihre Kette beim Start selbst. Ein EQ-Node ist darin eine Reihe von Biquads, ein Bus hat seine eigene Kette.

Vorschlag

  • Solange der EQ-Tab sichtbar ist, legt die SoundLibrary einen Summenpunkt für diesen EQ-Node an. Jede Stimme und jeder Bus, die den Node gerade spielen, gehen dort zusätzlich hinein, und dahinter hängt ein Analyser.
  • Gezeichnet wird das Spektrum hinter der Kurve, halbtransparent, auf derselben Frequenzachse. Für die Höhe gibt es eine eigene Skala in dBFS, einmal pro Frame aufgefrischt, mit weichem Abfall.
  • Ist der Tab weg oder spielt nichts, wird der Abgriff abgebaut, wie bei den Pegelanzeigen.

Offen (mit Vorschlag)

  1. Vor oder nach dem EQ messen? Vorschlag: beides, vorher blass und nachher kräftig. So sieht man, was der EQ wegnimmt.
  2. Was zählt als „gerade abgespielt“? Nur die Vorschau im Sound-FX- bzw. Instrument-Tab, oder alles, was durch diesen Node läuft (Song-Tab, Run in editor)? Vorschlag: alles, solange der EQ-Tab sichtbar ist. Seit #371 kann er als Fenster neben dem Song-Tab stehen.
  3. Auflösung: Vorschlag: FFT mit 8192 Punkten. Bei 48 kHz sind das knapp 6 Hz je Stufe, unten sauber genug für Bass.

Fertig, wenn

  • e2e 34: Ein Sinus mit 1 kHz durch einen EQ zeigt die Spitze des Spektrums bei 1 kHz (± eine Stufe). Dazu eine Gegenprobe (Abgriff nicht verbunden → flach).
  • Nach dem Schließen des Tabs hängt kein Analyser mehr an der Kette (gezählt wie metered()).
Aus #156, Durchgang 5. Dein Wunsch aus #367 „für die Zukunft nach dieser Umsetzung“. ## Herkunft - #367: „spectrum die gerade abgespielt werden (samples die gerade durchlaufen)“ - Abschluss 3870: „Später, wie im Issue vorgesehen: Spektrum und Mini-Kurve im Node.“ Die Mini-Kurve ist #375. ## Stand - Der EQ hat seit #370 einen eigenen Tab (`src/editor/soundfx/EqEditor.ts`). Die Kurve rechnet `src/editor/soundfx/eqView.ts`, auf einer logarithmischen Achse von 20 Hz bis 20 kHz. - Ein `AnalyserNode` wird heute nur für die Pegelanzeigen benutzt (`tapMeter`, `src/viewport/SoundLibrary.ts:556`, #359). Diese Abgriffe werden beim Tabwechsel wieder abgebaut. - Jede Stimme baut ihre Kette beim Start selbst. Ein EQ-Node ist darin eine Reihe von Biquads, ein Bus hat seine eigene Kette. ## Vorschlag - Solange der EQ-Tab sichtbar ist, legt die `SoundLibrary` einen Summenpunkt für **diesen** EQ-Node an. Jede Stimme und jeder Bus, die den Node gerade spielen, gehen dort zusätzlich hinein, und dahinter hängt ein Analyser. - Gezeichnet wird das Spektrum **hinter** der Kurve, halbtransparent, auf derselben Frequenzachse. Für die Höhe gibt es eine eigene Skala in dBFS, einmal pro Frame aufgefrischt, mit weichem Abfall. - Ist der Tab weg oder spielt nichts, wird der Abgriff abgebaut, wie bei den Pegelanzeigen. ## Offen (mit Vorschlag) 1. **Vor oder nach dem EQ messen?** Vorschlag: **beides**, vorher blass und nachher kräftig. So sieht man, was der EQ wegnimmt. 2. **Was zählt als „gerade abgespielt“?** Nur die Vorschau im Sound-FX- bzw. Instrument-Tab, oder alles, was durch diesen Node läuft (Song-Tab, Run in editor)? Vorschlag: **alles**, solange der EQ-Tab sichtbar ist. Seit #371 kann er als Fenster neben dem Song-Tab stehen. 3. **Auflösung:** Vorschlag: FFT mit 8192 Punkten. Bei 48 kHz sind das knapp 6 Hz je Stufe, unten sauber genug für Bass. ## Fertig, wenn - e2e 34: Ein Sinus mit 1 kHz durch einen EQ zeigt die Spitze des Spektrums bei 1 kHz (± eine Stufe). Dazu eine Gegenprobe (Abgriff nicht verbunden → flach). - Nach dem Schließen des Tabs hängt kein Analyser mehr an der Kette (gezählt wie `metered()`).
meleki added the new label 2026-10-09 14:42:27 +02:00

vorschläge passen

vorschläge passen
admin removed the new label 2026-10-09 14:46:01 +02:00
admin added this to the Development project 2026-10-09 14:46:02 +02:00
admin moved this to Next in Development on 2026-10-09 14:46:04 +02:00
Author
Owner

Umgesetzt in 6873776

Der EQ-Tab zeigt hinter der Kurve das Spektrum dessen, was gerade durch den Node läuft.

  • Abgriffe: Ein Node mit tapped bekommt beim Kompilieren eine tap-Stufe vor seinen eigenen Stufen und eine dahinter, im Sound FX wie im Instrument. Benannt ist der Abgriff nach Asset und Node, weil ein kopiertes Asset die Node-IDs behält.
  • Eine tap-Stufe ist ein Gain von 1 und tut dem Klang nichts. SpectrumTaps (neu, viewport/spectrum.ts) hält die Abgriffe aller Stimmen und Busse, solange sie spielen.
  • Solange der EQ-Tab sichtbar ist, in der Leiste oder als Fenster, speisen die Abgriffe dieses Nodes je Seite einen Analyser mit 8192 Punkten (Vorschlag 3). Angelegt wird erst etwas, wenn ein Abgriff des Nodes spielt. Ein AudioContext entsteht dadurch also nicht früher.
  • Gezeichnet wird hinter der Kurve auf einer eigenen Skala von 0 bis -96 dBFS (Vorschlag 1):
    • vor dem EQ blass und grau
    • nach dem EQ in der Farbe der Audio-Ports
  • Weicher Abfall: Der Analyser glättet. Ist der Klang vorbei, bekommt er weiter Stille, und das Bild fällt ab, statt stehen zu bleiben.
  • Was zählt: alles, was durch den Node läuft (Vorschlag 2), also Play im Sound-FX-Tab, die Tasten eines Instruments, ein Song, Run und Spiel.
  • Ist der Tab nicht sichtbar, baut Editor.tick die Analyser ab, wie die Pegelanzeigen im Song-Tab.

Selbst entschieden

  • Die dBFS-Skala hat keine Beschriftung. Sie steht im Wiki (Sounds → Parametric EQ).
  • Ein umgangener EQ behält seine Abgriffe. Das Spektrum zeigt dann, was unverändert durchgeht.
  • stats().last.stages zählt die Abgriffe nicht mit, sie tun dem Klang nichts.
  • Abweichung vom Issue: Geprüft habe ich mit 880 Hz statt 1 kHz. Der Seed hat nur den Blip (880 Hz) und die Drone (220 Hz), und ein neuer Seed-Ton hätte die Zählungen anderer Module berührt.

Tests

  • e2e 34, 2 neu, ALL PASSED mit 98 Checks (zweimal gelaufen):
    • Der EQ als Fenster neben dem Sound-FX-Tab: Der Blip ergibt auf beiden Seiten die Spitze bei 877,5 Hz. Eine Stufe ist 5,38 Hz breit (Kontext mit 44,1 kHz), der Pegel liegt bei -31 dBFS.
    • Nach dem Wegschalten speist kein Abgriff mehr einen Analyser (0 von 2), obwohl die Stimme noch spielt.
  • Gegenprobe e2e: Abgriffe, die den Analyser nie speisen → genau der Spektrum-Check rot (frames: 0).
  • Unit:
    • das Spektrum auf der Frequenzachse
    • die Abgriffe im Plan, für Sound FX und Instrument
    • SpectrumTaps mit Attrappen
    • Gegenproben je an Spektrum und SpectrumTaps, beide greifen
  • Screenshot angesehen (34-eq-spectrum): Der Blip steht als eine Spitze hinter der Kurve.
  • Gate auf melektaus-atx: 275 Dateien, 4247 Tests.

Nicht geprüft

  • wie es aussieht, während eine Stimme lange spielt (der Blip dauert 0,25 s)
  • Instrument- und Song-Tab im Browser
  • Abgriffe eines Busses im Browser (nur im Plan)
  • die Last bei vielen Stimmen
## Umgesetzt in `6873776` Der EQ-Tab zeigt hinter der Kurve das Spektrum dessen, was gerade durch den Node läuft. - **Abgriffe:** Ein Node mit `tapped` bekommt beim Kompilieren eine `tap`-Stufe vor seinen eigenen Stufen und eine dahinter, im Sound FX wie im Instrument. Benannt ist der Abgriff nach Asset und Node, weil ein kopiertes Asset die Node-IDs behält. - **Eine `tap`-Stufe ist ein Gain von 1** und tut dem Klang nichts. `SpectrumTaps` (neu, `viewport/spectrum.ts`) hält die Abgriffe aller Stimmen und Busse, solange sie spielen. - **Solange der EQ-Tab sichtbar ist,** in der Leiste oder als Fenster, speisen die Abgriffe dieses Nodes je Seite einen Analyser mit 8192 Punkten (Vorschlag 3). Angelegt wird erst etwas, wenn ein Abgriff des Nodes spielt. Ein `AudioContext` entsteht dadurch also nicht früher. - **Gezeichnet** wird hinter der Kurve auf einer eigenen Skala von 0 bis -96 dBFS (Vorschlag 1): - vor dem EQ blass und grau - nach dem EQ in der Farbe der Audio-Ports - **Weicher Abfall:** Der Analyser glättet. Ist der Klang vorbei, bekommt er weiter Stille, und das Bild fällt ab, statt stehen zu bleiben. - **Was zählt:** alles, was durch den Node läuft (Vorschlag 2), also *Play* im Sound-FX-Tab, die Tasten eines Instruments, ein Song, Run und Spiel. - **Ist der Tab nicht sichtbar,** baut `Editor.tick` die Analyser ab, wie die Pegelanzeigen im Song-Tab. ### Selbst entschieden - Die dBFS-Skala hat keine Beschriftung. Sie steht im Wiki (*Sounds → Parametric EQ*). - Ein umgangener EQ behält seine Abgriffe. Das Spektrum zeigt dann, was unverändert durchgeht. - `stats().last.stages` zählt die Abgriffe nicht mit, sie tun dem Klang nichts. - **Abweichung vom Issue:** Geprüft habe ich mit 880 Hz statt 1 kHz. Der Seed hat nur den Blip (880 Hz) und die Drone (220 Hz), und ein neuer Seed-Ton hätte die Zählungen anderer Module berührt. ### Tests - **e2e 34, 2 neu, ALL PASSED mit 98 Checks** (zweimal gelaufen): - Der EQ als Fenster neben dem Sound-FX-Tab: Der Blip ergibt auf beiden Seiten die Spitze bei 877,5 Hz. Eine Stufe ist 5,38 Hz breit (Kontext mit 44,1 kHz), der Pegel liegt bei -31 dBFS. - Nach dem Wegschalten speist kein Abgriff mehr einen Analyser (0 von 2), obwohl die Stimme noch spielt. - **Gegenprobe e2e:** Abgriffe, die den Analyser nie speisen → genau der Spektrum-Check rot (`frames: 0`). - **Unit:** - das Spektrum auf der Frequenzachse - die Abgriffe im Plan, für Sound FX und Instrument - `SpectrumTaps` mit Attrappen - Gegenproben je an Spektrum und `SpectrumTaps`, beide greifen - **Screenshot angesehen** (`34-eq-spectrum`): Der Blip steht als eine Spitze hinter der Kurve. - Gate auf `melektaus-atx`: 275 Dateien, 4247 Tests. ### Nicht geprüft - wie es aussieht, während eine Stimme lange spielt (der Blip dauert 0,25 s) - Instrument- und Song-Tab im Browser - Abgriffe eines Busses im Browser (nur im Plan) - die Last bei vielen Stimmen
admin moved this to Done in Development on 2026-10-09 16:14:41 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#374