Pattern und Song: Swing #372

Open
opened 2026-10-09 14:42:27 +02:00 by meleki · 1 comment
Owner

Aus #156, Durchgang 5. Vorgemerkt in #332, danach in keinem Issue gebaut.

Herkunft

  • #332 fragte: „Swing (jede zweite Achtel oder Sechzehntel etwas später): gleich mit einplanen oder später?“ Die Antwort in der Fragerunde war „später, mit #333/#334“. Unter Grenzen steht im Abschluss: „Kein Swing … (#333/#334)“.
  • In den Fragerunden von #333 (Pattern) und #334 (Song) kommt Swing nicht mehr vor. Beide sind geschlossen.
  • Im Code gibt es ihn nicht: swing kommt in src/core/music nirgends vor. Die Treffer in src/core/soundfx/lfo.ts und phaser.ts meinen das Pendeln eines LFO.

Das ist derselbe Fall wie die Ghost-Noten, die in #333 vorgemerkt und dann in #339 nachgeholt wurden.

Vorschlag

  • Ein Feld Swing von 0 bis 100 %, Standard 0, dazu Swing grid mit 1/8 oder 1/16.
  • Nur beim Abspielen: Die Noten im Modell bleiben, wo sie sind. Verschoben wird erst beim Planen, in notesIn (src/core/music/sequence.ts:79), wo jede Note ihr at bekommt. Bei 100 % liegt die zweite Note eines Paars auf der Triole (2/3 statt 1/2 des Paars).
  • Die Piano Roll zeichnet die Noten weiter auf dem Raster. Swing hört man, man sieht ihn nicht.
  • Gilt für Pattern im Pattern-Tab, im Song und bei Play pattern / Play song im Spiel, weil alle über denselben Scheduler (#332) laufen.

Offen (mit Vorschlag)

  1. Wo sitzt das Feld? Am Pattern, am Song (für alle Spuren) oder an beiden? Vorschlag: am Pattern. Im Song gilt der Wert des Patterns, ein Song-Item kann ihn später überstimmen, falls das gebraucht wird.
  2. Welche Noten wandern? Nur Noten genau auf der zweiten Position eines Paars, oder alle dazwischen anteilig? Vorschlag: anteilig. Die Zeit innerhalb eines Paars wird gestaucht und gedehnt, so wandern frei gesetzte Noten (Alt) und Notenenden stimmig mit.
  3. Sound-Items im Song bleiben ungeswingt, sie haben keine Noten. Vorschlag: so lassen.

Fertig, wenn

  • Unit-Test: Auf 1/8 bei 120 BPM kommt die zweite Achtel eines Paars bei 100 % 1/12 s später als gerade (0,333 statt 0,25 s), bei 50 % 1/24 s später und bei 0 % genau gerade. Dazu eine Gegenprobe.
  • e2e 64: Ein Pattern mit Swing spielt seine Achteln im gemessenen Abstand lang–kurz.
Aus #156, Durchgang 5. Vorgemerkt in #332, danach in keinem Issue gebaut. ## Herkunft - #332 fragte: „Swing (jede zweite Achtel oder Sechzehntel etwas später): gleich mit einplanen oder später?“ Die Antwort in der Fragerunde war **„später, mit #333/#334“**. Unter *Grenzen* steht im Abschluss: „Kein Swing … (#333/#334)“. - In den Fragerunden von #333 (Pattern) und #334 (Song) kommt Swing nicht mehr vor. Beide sind geschlossen. - Im Code gibt es ihn nicht: `swing` kommt in `src/core/music` nirgends vor. Die Treffer in `src/core/soundfx/lfo.ts` und `phaser.ts` meinen das Pendeln eines LFO. Das ist derselbe Fall wie die Ghost-Noten, die in #333 vorgemerkt und dann in #339 nachgeholt wurden. ## Vorschlag - Ein Feld **Swing** von 0 bis 100 %, Standard 0, dazu **Swing grid** mit 1/8 oder 1/16. - **Nur beim Abspielen:** Die Noten im Modell bleiben, wo sie sind. Verschoben wird erst beim Planen, in `notesIn` (`src/core/music/sequence.ts:79`), wo jede Note ihr `at` bekommt. Bei 100 % liegt die zweite Note eines Paars auf der Triole (2/3 statt 1/2 des Paars). - Die Piano Roll zeichnet die Noten weiter auf dem Raster. Swing hört man, man sieht ihn nicht. - Gilt für Pattern im Pattern-Tab, im Song und bei *Play pattern* / *Play song* im Spiel, weil alle über denselben Scheduler (#332) laufen. ## Offen (mit Vorschlag) 1. **Wo sitzt das Feld?** Am Pattern, am Song (für alle Spuren) oder an beiden? Vorschlag: **am Pattern**. Im Song gilt der Wert des Patterns, ein Song-Item kann ihn später überstimmen, falls das gebraucht wird. 2. **Welche Noten wandern?** Nur Noten genau auf der zweiten Position eines Paars, oder alle dazwischen anteilig? Vorschlag: **anteilig**. Die Zeit innerhalb eines Paars wird gestaucht und gedehnt, so wandern frei gesetzte Noten (Alt) und Notenenden stimmig mit. 3. **Sound-Items im Song** bleiben ungeswingt, sie haben keine Noten. Vorschlag: so lassen. ## Fertig, wenn - Unit-Test: Auf 1/8 bei 120 BPM kommt die zweite Achtel eines Paars bei 100 % 1/12 s später als gerade (0,333 statt 0,25 s), bei 50 % 1/24 s später und bei 0 % genau gerade. Dazu eine Gegenprobe. - e2e 64: Ein Pattern mit Swing spielt seine Achteln im gemessenen Abstand lang–kurz.
meleki added the new label 2026-10-09 14:42:27 +02:00

vorschläge passen

vorschläge passen
admin added low-priority and removed new labels 2026-10-09 14:48:53 +02:00
admin added this to the Development project 2026-10-09 14:48:55 +02:00
admin moved this to Next in Development on 2026-10-09 14:48:57 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#372