Bitcrusher-Node als Gerät mit fester Größe #399

Closed
opened 2026-10-10 21:44:17 +02:00 by meleki · 2 comments
Owner

Wunsch des Users (2026-10-10): nächster Audio-Node nach #398 ist der Bitcrusher, wie die anderen als eigenes Gerät mit fester Größe im Graphen.

Geplant:

  • Platte 680 × 280 in eigenem Stil, Bits und Rate als große Knöpfe, Wet als kleiner.
  • Schirm: ein Sinus läuft durch den echten Crusher des Kerns. Was herauskommt, wird als Pixelblöcke gezeichnet, eine Zelle so hoch wie eine Stufe (Bits) und so breit wie ein Hold (Rate).
  • 16 LEDs zeigen, wie viele Bits übrig bleiben. Unter dem Schirm stehen der Rauschabstand und ab wo gespiegelt wird.
  • Jede Änderung ist ein Undo-Schritt, verkabelte Werte sind gesperrt, bei Wet 0 ist der Rest blass.
Wunsch des Users (2026-10-10): nächster Audio-Node nach #398 ist der **Bitcrusher**, wie die anderen als eigenes Gerät mit fester Größe im Graphen. Geplant: - Platte 680 × 280 in eigenem Stil, Bits und Rate als große Knöpfe, Wet als kleiner. - Schirm: ein Sinus läuft durch den echten `Crusher` des Kerns. Was herauskommt, wird als Pixelblöcke gezeichnet, eine Zelle so hoch wie eine Stufe (Bits) und so breit wie ein Hold (Rate). - 16 LEDs zeigen, wie viele Bits übrig bleiben. Unter dem Schirm stehen der Rauschabstand und ab wo gespiegelt wird. - Jede Änderung ist ein Undo-Schritt, verkabelte Werte sind gesperrt, bei Wet 0 ist der Rest blass.
Author
Owner

Erledigt mit a6c00f7, Wiki 0ea28c5.

Das Gerät

  • Platte: 680 × 280 in Bonbon-Pink, im Arcade-Stil, die Eingänge links, out rechts. Bits und Rate als große Knöpfe, Wet als kleiner. Jede Änderung ist ein Undo-Schritt, verkabelte Werte sperren ihren Knopf, bei Wet 0 steht unten „DRY“.
  • Schirm „A 440 Hz sine at 0 dBFS“: Der Sinus läuft durch denselben Crusher, den auch der Worklet nimmt, samt Wet. Ein Hold wird als Zelle gezeichnet, so hoch wie eine Stufe der Bits und so breit wie ein Hold der Rate. Ab 5 px bekommen Stufen und Holds ein Raster und Lücken, feine Stufen werden zu dünnen Balken, bei 1 Bit liegen Balken auf -1, 0 und 1. Der Eingang liegt als grauer Geist dahinter, bei Wet unter 1 die gehörte Linie darüber.
  • Spanne: 2 Perioden (4,5 ms), bei sehr tiefer Rate 6 Holds (z. B. 20 ms bei 300 Hz). Die Spanne steht in der Ecke.
  • Texte: oben rechts CLEAN, GRITTY, CRUNCHY, CRUSHED oder BROKEN, unten z. B. „NOISE -50 dB“ und „FOLDS AT 4 kHz“.
  • 16 Lampen „BITS KEPT“, das höchste Bit links. Die Lampe CRUSH neben dem Namen glüht stärker, je mehr er zerkleinert.

Selbst entschieden

  • Der Schirm steht still, es gibt keine Animation. Den Bitcrusher bewegt nichts von selbst.
  • Der Grad zählt, was mehr wegnimmt: Bits oder Rate (die Rate in Oktaven), mal Wet.
  • In den Presets bekommt der Bitcrusher 4 Spalten. Jedes sfxr-Effekt-Preset endet mit einem Bitcrusher und wird dadurch 3 Spalten breiter. Das Laser-Preset passt mit Fit weiterhin ganz ins Bild, nichts überlappt.

Fund, kein Fehler

Bei 8 kHz ist der erste Hold 7 Samples lang, die übrigen 6. Sechs Sechstel ergeben im Crusher 0,9999999999999999. Der Worklet macht es genauso, das Bild zeigt also, was man hört.

Tests

Unit crusher-view (stein2) → 13 Tests grün (neu), chip-presets grün
e2e 34 (atx)               → ALL PASSED, 143 Checks (1 neu)
Gate (atx)                 → CHECK EXIT 0, 292 Dateien, 4484 Tests
  • Schirm gegen Worklet: Bei drei Einstellungen stimmt der Schirm mit dem Crusher samt Wet überein.
  • Gegenprobe: Ohne den Wet beim Mischen wird genau dieser Test rot.
  • e2e: Größe und Ports, 4 Lampen bei 4 Bit, 37 Zellen mit Lücke und die Texte. Bits hoch ergibt mehr Lampen und feinere Stufen, Rate runter weniger Holds, zwei Undos stellen alles wieder her.
  • Bilder angesehen: Standard, 16 Bit/48 kHz, 3 Bit/4 kHz, 1 Bit, 300 Hz, Wet 50 %, Wet 0, das ganze Gerät und das Laser-Preset. Behoben dabei: Bei 1 Bit waren die Zellen 64 px hoch und ragten aus dem Schirm.

Nicht geprüft:

  • ein verkabelter Bitcrusher-Wert im Browser
  • der Bitcrusher im Instrument-Graphen per Maus
  • der CI-Lauf zu a6c00f7 (nicht abgewartet)
Erledigt mit a6c00f7, Wiki 0ea28c5. ## Das Gerät - **Platte:** 680 × 280 in Bonbon-Pink, im Arcade-Stil, die Eingänge links, `out` rechts. Bits und Rate als große Knöpfe, Wet als kleiner. Jede Änderung ist ein Undo-Schritt, verkabelte Werte sperren ihren Knopf, bei Wet 0 steht unten „DRY“. - **Schirm „A 440 Hz sine at 0 dBFS“:** Der Sinus läuft durch denselben `Crusher`, den auch der Worklet nimmt, samt Wet. Ein Hold wird als Zelle gezeichnet, so hoch wie eine Stufe der Bits und so breit wie ein Hold der Rate. Ab 5 px bekommen Stufen und Holds ein Raster und Lücken, feine Stufen werden zu dünnen Balken, bei 1 Bit liegen Balken auf -1, 0 und 1. Der Eingang liegt als grauer Geist dahinter, bei Wet unter 1 die gehörte Linie darüber. - **Spanne:** 2 Perioden (4,5 ms), bei sehr tiefer Rate 6 Holds (z. B. 20 ms bei 300 Hz). Die Spanne steht in der Ecke. - **Texte:** oben rechts CLEAN, GRITTY, CRUNCHY, CRUSHED oder BROKEN, unten z. B. „NOISE -50 dB“ und „FOLDS AT 4 kHz“. - **16 Lampen „BITS KEPT“**, das höchste Bit links. Die Lampe *CRUSH* neben dem Namen glüht stärker, je mehr er zerkleinert. ## Selbst entschieden - Der Schirm steht still, es gibt keine Animation. Den Bitcrusher bewegt nichts von selbst. - Der Grad zählt, was mehr wegnimmt: Bits oder Rate (die Rate in Oktaven), mal Wet. - In den Presets bekommt der Bitcrusher 4 Spalten. Jedes sfxr-Effekt-Preset endet mit einem Bitcrusher und wird dadurch 3 Spalten breiter. Das Laser-Preset passt mit *Fit* weiterhin ganz ins Bild, nichts überlappt. ## Fund, kein Fehler Bei 8 kHz ist der erste Hold 7 Samples lang, die übrigen 6. Sechs Sechstel ergeben im `Crusher` 0,9999999999999999. Der Worklet macht es genauso, das Bild zeigt also, was man hört. ## Tests ``` Unit crusher-view (stein2) → 13 Tests grün (neu), chip-presets grün e2e 34 (atx) → ALL PASSED, 143 Checks (1 neu) Gate (atx) → CHECK EXIT 0, 292 Dateien, 4484 Tests ``` - Schirm gegen Worklet: Bei drei Einstellungen stimmt der Schirm mit dem `Crusher` samt Wet überein. - Gegenprobe: Ohne den Wet beim Mischen wird genau dieser Test rot. - e2e: Größe und Ports, 4 Lampen bei 4 Bit, 37 Zellen mit Lücke und die Texte. Bits hoch ergibt mehr Lampen und feinere Stufen, Rate runter weniger Holds, zwei Undos stellen alles wieder her. - Bilder angesehen: Standard, 16 Bit/48 kHz, 3 Bit/4 kHz, 1 Bit, 300 Hz, Wet 50 %, Wet 0, das ganze Gerät und das Laser-Preset. Behoben dabei: Bei 1 Bit waren die Zellen 64 px hoch und ragten aus dem Schirm. **Nicht geprüft:** - ein verkabelter Bitcrusher-Wert im Browser - der Bitcrusher im Instrument-Graphen per Maus - der CI-Lauf zu a6c00f7 (nicht abgewartet)
Author
Owner

Nachtrag: Bitcrusher und Delay sind niedriger, mit 742f240, Wiki c506b7d.

Gerät vorher jetzt Was sich geändert hat
Bitcrusher 680 × 280 680 × 220 Die Knöpfe sitzen 14 höher, die Lücke zur Lampenreihe ist etwa halb so groß. Der Schirm ist 116 statt 176 hoch.
Delay 680 × 280 680 × 224 Die Knopfgruppen beginnen 16 höher, näher an den beiden Hebeln. Der Schirm ist 120 statt 176 hoch.
  • Unten: Die Blende um den Schirm wird jetzt vom unteren Rand aus gerechnet. Sie hat unten denselben Abstand (24) wie seitlich, ihre Unterkante liegt auf einer Höhe mit den Werten unter den Knöpfen.
  • Delay 4 höher als der Bitcrusher: Die Hebel ragen mit ihrer Kugel weiter herunter als die Lampenreihe. Für dieselbe Lücke von 14 braucht der Delay 4 Einheiten mehr.

Tests

Unit crusher-view, delay-view (stein2) → 30 Tests grün
e2e 34 (atx)                           → ALL PASSED, 144 Checks
Gate (atx)                             → CHECK EXIT 0, 293 Dateien, 4495 Tests
  • Bilder angesehen: Bitcrusher in der Standardeinstellung, Delay in der Standardeinstellung und mit Ping-pong. Nichts überlappt.

Nicht geprüft:

  • Bitcrusher bei 1 Bit im niedrigeren Schirm. Die Höhengrenze der Zellen geht mit dem Schirm mit, angesehen habe ich es nicht.
  • der CI-Lauf zu 742f240 (nicht abgewartet)
Nachtrag: Bitcrusher und Delay sind niedriger, mit 742f240, Wiki c506b7d. | Gerät | vorher | jetzt | Was sich geändert hat | |---|---|---|---| | **Bitcrusher** | 680 × 280 | **680 × 220** | Die Knöpfe sitzen 14 höher, die Lücke zur Lampenreihe ist etwa halb so groß. Der Schirm ist 116 statt 176 hoch. | | **Delay** | 680 × 280 | **680 × 224** | Die Knopfgruppen beginnen 16 höher, näher an den beiden Hebeln. Der Schirm ist 120 statt 176 hoch. | - **Unten:** Die Blende um den Schirm wird jetzt vom unteren Rand aus gerechnet. Sie hat unten denselben Abstand (24) wie seitlich, ihre Unterkante liegt auf einer Höhe mit den Werten unter den Knöpfen. - **Delay 4 höher als der Bitcrusher:** Die Hebel ragen mit ihrer Kugel weiter herunter als die Lampenreihe. Für dieselbe Lücke von 14 braucht der Delay 4 Einheiten mehr. ## Tests ``` Unit crusher-view, delay-view (stein2) → 30 Tests grün e2e 34 (atx) → ALL PASSED, 144 Checks Gate (atx) → CHECK EXIT 0, 293 Dateien, 4495 Tests ``` - Bilder angesehen: Bitcrusher in der Standardeinstellung, Delay in der Standardeinstellung und mit Ping-pong. Nichts überlappt. **Nicht geprüft:** - Bitcrusher bei 1 Bit im niedrigeren Schirm. Die Höhengrenze der Zellen geht mit dem Schirm mit, angesehen habe ich es nicht. - der CI-Lauf zu 742f240 (nicht abgewartet)
admin added this to the Development project 2026-10-11 13:04:55 +02:00
admin moved this to Next in Development on 2026-10-11 13:05:04 +02:00
admin moved this to Done in Development on 2026-10-11 13:05:26 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#399