Sound FX: Bypass und Wet an jedem Effekt-Node #354

Closed
opened 2026-10-08 07:47:02 +02:00 by meleki · 1 comment
Owner

Wunsch: Jeder Effekt-Node im Sound-FX-Graph (und damit auch im Instrument-Graph) bekommt Bypass (an/aus) und Wet (0,0 bis 1,0). Bei manchen Nodes ersetzt Wet die bisherige Zeile Mix.

Node Bypass Wet
5-Band-EQ ja ja
Bitcrusher ja Wet statt Mix
Compressor ja ja
Delay ja Wet statt Mix
Filter ja ja
Flanger ja Wet statt Mix
Gain ja ja
Limiter ja ja
Mix – –
Pan ja ja
Phaser ja Wet statt Mix
Pitch ja ja
Reverb ja Wet statt Mix
Saturation ja Wet statt Mix
Tremolo ja ja
Vibrato ja ja

Input, Output und Sound FX Parameters bekommen nichts. Abgeglichen mit SOUND_FX_NODES: Die Liste ist vollständig.

Festlegungen (mit dem User abgestimmt)

Wet blendet zwischen dem Eingang des Nodes und seinem vollen Ausgang über: (1 - wet) * Eingang + wet * Effekt.

  • Wet ist ein Zahlen-Eingang wie die anderen: man kann ihn eintippen, als Parameter nach außen geben und mit Set sound FX parameters während der Wiedergabe ändern. Im Instrument kann ihn eine Envelope bewegen, wo der Node das bei seinen anderen Zahlen auch erlaubt.
  • Standard ist 1. Wo Wet das alte Mix ersetzt, bleibt dessen Standard (Delay 0,5, Reverb 0,3, sonst 1).
  • Bei Compressor, Limiter und Vibrato ist der Effekt später dran als der Eingang. Der trockene Weg wird deshalb um diese Latenz verzögert, sonst entstehen Kammfilter.
  • Wet fest auf 0 nimmt den Node ganz heraus, Wet fest auf 1 braucht keinen trockenen Weg.

Ausnahmen:

  • Delay: Wet 0 ist nur der Eingang, 0,5 der Eingang und die Echos voll, 1 nur die Echos. Also: Eingang min(1, 2 * (1 - wet)), Echos min(1, 2 * wet).
  • Pitch: Wet blendet nicht über, sondern lerpt die Halbtöne zwischen 0 und dem eingestellten Wert (Wet 0,5 bei 12 = 6 Halbtöne). Eine Envelope bewegt hier die Halbtöne, nicht Wet.
  • Phaser und Flanger: Ihr voller Ausgang ist halb Ton und halb Effekt, denn die Kerben entstehen erst durch das Mischen. Wet 1 bleibt also wie bisher Mix 1.
  • Bitcrusher, Saturation, Reverb: Wet heißt genau das, was Mix bisher hieß.

Bestehende Projekte: Bei den sechs Nodes mit Mix bleibt der interne Schlüssel mix, nur die Beschriftung wird Wet. Werte, Parameter und Verbindungen bleiben erhalten (es gibt keine Migrationen).

  • Beim Delay ändert sich damit, wie ein gespeicherter Wert klingt. Bisher war der Eingang immer voll und die Echos bei mix. Gleich klingt es mit wet = mix / 2. Projekt cbbf160bb7e8 hat zwei Delays (Mix 1 und Mix 0,5). Ob die umgerechnet werden, entscheidet der User.

Bypass ist eine Einstellung am Node (Häkchen). Beim Kompilieren fällt der Node dann ganz weg: keine Rechenzeit, keine Latenz. Während der Wiedergabe lässt sich Bypass so nicht schalten, dafür gibt es Wet 0. Ein gebypasster Node wird im Graph abgedunkelt, und auf dem Node steht dann Bypass: on.

Gut zu wissen

  • Gain: Wet ändert dort nur die Lautstärke (Wet 0,5 bei -6 dB ergibt etwa -2,5 dB).
  • Tremolo: Wet wirkt wie eine kleinere Depth.
  • Limiter: Bei Wet unter 1 kommen die Spitzen des trockenen Wegs an der Grenze vorbei.
  • Filter, EQ, Vibrato: Gemischt mit dem trockenen Ton gibt es Phaseneffekte, beim Vibrato einen Chorus.
Wunsch: Jeder Effekt-Node im Sound-FX-Graph (und damit auch im Instrument-Graph) bekommt **Bypass** (an/aus) und **Wet** (0,0 bis 1,0). Bei manchen Nodes ersetzt Wet die bisherige Zeile *Mix*. | Node | Bypass | Wet | |---|---|---| | 5-Band-EQ | ja | ja | | Bitcrusher | ja | Wet statt Mix | | Compressor | ja | ja | | Delay | ja | Wet statt Mix | | Filter | ja | ja | | Flanger | ja | Wet statt Mix | | Gain | ja | ja | | Limiter | ja | ja | | Mix | – | – | | Pan | ja | ja | | Phaser | ja | Wet statt Mix | | Pitch | ja | ja | | Reverb | ja | Wet statt Mix | | Saturation | ja | Wet statt Mix | | Tremolo | ja | ja | | Vibrato | ja | ja | *Input*, *Output* und *Sound FX Parameters* bekommen nichts. Abgeglichen mit `SOUND_FX_NODES`: Die Liste ist vollständig. ## Festlegungen (mit dem User abgestimmt) **Wet** blendet zwischen dem Eingang des Nodes und seinem vollen Ausgang über: `(1 - wet) * Eingang + wet * Effekt`. - Wet ist ein Zahlen-Eingang wie die anderen: man kann ihn eintippen, als Parameter nach außen geben und mit *Set sound FX parameters* während der Wiedergabe ändern. Im Instrument kann ihn eine Envelope bewegen, wo der Node das bei seinen anderen Zahlen auch erlaubt. - Standard ist 1. Wo Wet das alte Mix ersetzt, bleibt dessen Standard (Delay 0,5, Reverb 0,3, sonst 1). - Bei Compressor, Limiter und Vibrato ist der Effekt später dran als der Eingang. Der trockene Weg wird deshalb um diese Latenz verzögert, sonst entstehen Kammfilter. - Wet fest auf 0 nimmt den Node ganz heraus, Wet fest auf 1 braucht keinen trockenen Weg. **Ausnahmen:** - **Delay:** Wet 0 ist nur der Eingang, 0,5 der Eingang **und** die Echos voll, 1 nur die Echos. Also: Eingang `min(1, 2 * (1 - wet))`, Echos `min(1, 2 * wet)`. - **Pitch:** Wet blendet nicht über, sondern lerpt die Halbtöne zwischen 0 und dem eingestellten Wert (Wet 0,5 bei 12 = 6 Halbtöne). Eine Envelope bewegt hier die Halbtöne, nicht Wet. - **Phaser und Flanger:** Ihr voller Ausgang ist halb Ton und halb Effekt, denn die Kerben entstehen erst durch das Mischen. Wet 1 bleibt also wie bisher Mix 1. - **Bitcrusher, Saturation, Reverb:** Wet heißt genau das, was Mix bisher hieß. **Bestehende Projekte:** Bei den sechs Nodes mit Mix bleibt der interne Schlüssel `mix`, nur die Beschriftung wird *Wet*. Werte, Parameter und Verbindungen bleiben erhalten (es gibt keine Migrationen). - Beim **Delay** ändert sich damit, wie ein gespeicherter Wert klingt. Bisher war der Eingang immer voll und die Echos bei `mix`. Gleich klingt es mit `wet = mix / 2`. Projekt `cbbf160bb7e8` hat zwei Delays (Mix 1 und Mix 0,5). Ob die umgerechnet werden, entscheidet der User. **Bypass** ist eine Einstellung am Node (Häkchen). Beim Kompilieren fällt der Node dann ganz weg: keine Rechenzeit, keine Latenz. Während der Wiedergabe lässt sich Bypass so nicht schalten, dafür gibt es Wet 0. Ein gebypasster Node wird im Graph abgedunkelt, und auf dem Node steht dann *Bypass: on*. ## Gut zu wissen - **Gain:** Wet ändert dort nur die Lautstärke (Wet 0,5 bei -6 dB ergibt etwa -2,5 dB). - **Tremolo:** Wet wirkt wie eine kleinere *Depth*. - **Limiter:** Bei Wet unter 1 kommen die Spitzen des trockenen Wegs an der Grenze vorbei. - **Filter, EQ, Vibrato:** Gemischt mit dem trockenen Ton gibt es Phaseneffekte, beim Vibrato einen Chorus.
Author
Owner

Erledigt mit 7a17030 (Wiki: 663d154).

Was gebaut ist

  • Bypass (Häkchen) und Wet (0 bis 1, Standard 1) an allen 15 Effekt-Nodes, im Sound-FX- und im Instrument-Graph. Mix, Input, Output und Sound FX Parameters haben beides nicht.
  • Bypass: Der Node fällt beim Kompilieren ganz weg, ohne Rechenzeit und ohne Latenz. Im Graph ist er abgedunkelt, auf dem Node steht Bypass: true.
  • Wet blendet zwischen Eingang und Effekt: (1 - wet) * Ton + wet * Effekt. Bei Compressor, Limiter und Vibrato wird der trockene Weg um deren Latenz verzögert. Wet fest auf 0 nimmt den Node heraus, aus einem Parameter gespeist bleibt er drin.
  • Delay als Überblendung: 0 → nur Ton, 0,5 → Ton und Echos voll, 1 → nur Echos.
  • Pitch: Wet lerpt die Halbtöne (Wet 0,5 bei 12 → 6). Ein im Instrument gebundener Wet-Parameter wirkt auch dort.
  • Die sechs Nodes mit Mix behalten intern den Schlüssel mix, nur die Beschriftung heißt Wet. Gespeicherte Werte, Parameter und Verbindungen bleiben erhalten.

Abweichungen vom Plan

  • Auf dem Node steht Bypass: true statt „Bypass: on“, wie bei allen booleschen Einstellungen (Ping-pong: true).

Funde

  • Ein vor #354 gespeicherter Delay klingt anders. Gleich klingt er bei halbem Wert, gemessen: Wet 0,25 ergibt im Ping-Pong-Check exakt die alten Werte von Mix 0,5 (Echos 0,25 / 0,125 / 0,063).
  • Die zwei Chip-Presets mit Delay (Echo Lead, Bell) sind deshalb halbiert (0,35 → 0,175, 0,25 → 0,125).
  • Projekt cbbf160bb7e8 (zwei Delays, Mix 1 und 0,5) ist nicht angefasst, das passt der User selbst an.

Gemessen (e2e 34, Chrome offline)

  • Gain 0 bei Wet 0,25: 0,375.
  • Delay, Eingang allein / mit Echo: Wet 0,25 → 0,5 / 0,75, Wet 0,75 → 0,25 / 0,75, Wet 1 → 0 / 0,5.
  • Compressor 1:1, halb gemischt bei 1083 Hz: 0,00 dB (ohne Ausgleich würde sich der Ton dort fast auslöschen).
  • Gebypasster Delay: Deckkraft 0,45, die Stimme läuft nur durch den Gain.

Tests

  • Unit: soundfx 65 (8 neu), sound-library 107 (3 neu), instrument 35 (1 neu). Angepasst: zwei Delay-Tests, der Filter-Port-Test, zwei Checks in e2e 34.
  • Gegenproben: 8, jede einzeln rot.
  • e2e 34 (melektaus-atx): ALL PASSED, 83 Checks (2 neu).
  • Gate (melektaus-atx): CHECK EXIT 0, 268 Dateien, 4154 Tests. Danach nur noch eine kleine Umstellung (abgeleitete Ports einmal statt zweimal abfragen), Typcheck, Lint und die drei Unit-Dateien wieder grün.

Nicht geprüft

  • wie es klingt
  • Wet, das eine Envelope bewegt, und Pitch-Wet im Browser (nur per Unit-Test)
  • Bypass und Wet im Instrument-Tab im Browser
  • das Abdunkeln ohne eigene Gegenprobe im e2e
Erledigt mit 7a17030 (Wiki: 663d154). ## Was gebaut ist - **Bypass** (Häkchen) und **Wet** (0 bis 1, Standard 1) an allen 15 Effekt-Nodes, im Sound-FX- und im Instrument-Graph. Mix, Input, Output und Sound FX Parameters haben beides nicht. - **Bypass**: Der Node fällt beim Kompilieren ganz weg, ohne Rechenzeit und ohne Latenz. Im Graph ist er abgedunkelt, auf dem Node steht `Bypass: true`. - **Wet** blendet zwischen Eingang und Effekt: `(1 - wet) * Ton + wet * Effekt`. Bei Compressor, Limiter und Vibrato wird der trockene Weg um deren Latenz verzögert. Wet fest auf 0 nimmt den Node heraus, aus einem Parameter gespeist bleibt er drin. - **Delay** als Überblendung: 0 → nur Ton, 0,5 → Ton und Echos voll, 1 → nur Echos. - **Pitch**: Wet lerpt die Halbtöne (Wet 0,5 bei 12 → 6). Ein im Instrument gebundener Wet-Parameter wirkt auch dort. - Die sechs Nodes mit Mix behalten intern den Schlüssel `mix`, nur die Beschriftung heißt *Wet*. Gespeicherte Werte, Parameter und Verbindungen bleiben erhalten. ## Abweichungen vom Plan - Auf dem Node steht `Bypass: true` statt „Bypass: on“, wie bei allen booleschen Einstellungen (`Ping-pong: true`). ## Funde - **Ein vor #354 gespeicherter Delay klingt anders.** Gleich klingt er bei halbem Wert, gemessen: Wet 0,25 ergibt im Ping-Pong-Check exakt die alten Werte von Mix 0,5 (Echos 0,25 / 0,125 / 0,063). - Die zwei Chip-Presets mit Delay (*Echo Lead*, *Bell*) sind deshalb halbiert (0,35 → 0,175, 0,25 → 0,125). - Projekt `cbbf160bb7e8` (zwei Delays, Mix 1 und 0,5) ist nicht angefasst, das passt der User selbst an. ## Gemessen (e2e 34, Chrome offline) - Gain 0 bei Wet 0,25: 0,375. - Delay, Eingang allein / mit Echo: Wet 0,25 → 0,5 / 0,75, Wet 0,75 → 0,25 / 0,75, Wet 1 → 0 / 0,5. - Compressor 1:1, halb gemischt bei 1083 Hz: 0,00 dB (ohne Ausgleich würde sich der Ton dort fast auslöschen). - Gebypasster Delay: Deckkraft 0,45, die Stimme läuft nur durch den Gain. ## Tests - Unit: soundfx 65 (8 neu), sound-library 107 (3 neu), instrument 35 (1 neu). Angepasst: zwei Delay-Tests, der Filter-Port-Test, zwei Checks in e2e 34. - Gegenproben: 8, jede einzeln rot. - e2e 34 (melektaus-atx): ALL PASSED, 83 Checks (2 neu). - Gate (melektaus-atx): CHECK EXIT 0, 268 Dateien, 4154 Tests. Danach nur noch eine kleine Umstellung (abgeleitete Ports einmal statt zweimal abfragen), Typcheck, Lint und die drei Unit-Dateien wieder grün. ## Nicht geprüft - wie es klingt - Wet, das eine Envelope bewegt, und Pitch-Wet im Browser (nur per Unit-Test) - Bypass und Wet im Instrument-Tab im Browser - das Abdunkeln ohne eigene Gegenprobe im e2e
admin added this to the Development project 2026-10-08 11:53:42 +02:00
admin moved this to Next in Development on 2026-10-08 11:53:50 +02:00
admin moved this to Done in Development on 2026-10-08 11:53:53 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#354