Pick a song's time signature in one row, and let its own patterns keep theirs #363

Closed
opened 2026-10-09 07:15:38 +02:00 by meleki · 1 comment
Owner

Zwei Punkte zum Takt eines Songs.

1. Sign statt Beats per bar + Beat

Der Song bekommt statt der zwei Zeilen eine Auswahl Sign mit:
1/2, 2/2, 3/2, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 5/8, 6/8, 7/8, 8/8, 9/8.
Standard bleibt 4/4.

2. Eingebettete Patterns folgen nicht mehr dem Takt des Songs

Heute übernimmt ein Pattern, das der Song für sich hat (#355), Tempo und Takt
des Songs bei jeder Änderung. Seine Länge rechnet in Takten, also wird es
gekürzt oder verlängert, sobald man den Takt des Songs ändert.

Ein eingebettetes Pattern soll sich verhalten wie ein Pattern des Projekts:
eigenes Tempo, eigener Takt, die Zeilen im Inspector sichtbar. Ändert man den
Takt des Songs, bleibt es, wie es ist.

Zwei Punkte zum Takt eines Songs. ## 1. *Sign* statt *Beats per bar* + *Beat* Der Song bekommt statt der zwei Zeilen eine Auswahl **Sign** mit: 1/2, 2/2, 3/2, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 5/8, 6/8, 7/8, 8/8, 9/8. Standard bleibt 4/4. ## 2. Eingebettete Patterns folgen nicht mehr dem Takt des Songs Heute übernimmt ein Pattern, das der Song für sich hat (#355), Tempo und Takt des Songs bei jeder Änderung. Seine Länge rechnet in Takten, also wird es gekürzt oder verlängert, sobald man den Takt des Songs ändert. Ein eingebettetes Pattern soll sich verhalten wie ein Pattern des Projekts: eigenes Tempo, eigener Takt, die Zeilen im Inspector sichtbar. Ändert man den Takt des Songs, bleibt es, wie es ist.
admin added this to the Development project 2026-10-09 07:33:10 +02:00
admin moved this to Next in Development on 2026-10-09 07:33:16 +02:00
admin moved this to Done in Development on 2026-10-09 07:33:32 +02:00
Author
Owner

Erledigt mit 0d57a2f „Pick a song's sign in one row, and let its patterns keep theirs (#363)“, Wiki 0b7df63.

Was sich ändert

  • Sign: Der Song hat statt Beats per bar und Beat die eine Zeile Sign mit 1/2, 2/2, 3/2, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 5/8, 6/8, 7/8, 8/8, 9/8. Standard ist 4/4, gespeichert als sign. Ein Wert außerhalb der Liste gilt als 4/4.
  • Eingebettete Patterns behalten ihren Takt: Tempo und Takt gehören dem Pattern wie bei einem Pattern des Projekts. Eine Änderung am Song kürzt oder verlängert es nicht mehr. Im Inspector stehen Tempo, Beats per bar und Beat wieder, ausgeblendet bleibt nur Bus.
  • Eine Kopie (Embed a copy, Einfügen aus einem anderen Song) behält ihren Takt. clockFollowers und das Mitziehen in AssetPropertyCommand sind weg.

Selbst entschieden

  • Ein Pattern, das im Song mit Create pattern entsteht, übernimmt beim Anlegen einmal Tempo und Takt des Songs, damit sein erster Takt zum Item passt. Danach ändert es sich nicht mehr mit dem Song.
  • Keine Lade-Migration. In cbbf160bb7e8 habe ich die zwei Songs von Hand von beats/beat auf sign umgestellt (Song 1 3/4, Song 2 4/4, Revision 18726, Sicherung in /root/config-backup-20261009/). In keinem anderen Projekt hatte ein Song einen eigenen Takt. Die drei eingebetteten Patterns dort behalten ihren Takt (einmal 3/4 bei 90 BPM, zweimal 4/4 bei 120 BPM).

Tests

Unit song/embedded/pattern → 44 grün (1 neu, 4 umgeschrieben), 2 Gegenproben je rot
e2e 65 (melektaus-atx)     → ALL PASSED – 57 Checks (1 neu)
Gate (melektaus-atx)       → CHECK EXIT 0, 272 Dateien, 4214 Tests
  • Der neue e2e-Check wählt Sign im Inspector auf 6/8 und zurück auf 4/4 und prüft, dass es keine Zeile Beats per bar mehr gibt.
  • Nach dem Gate fielen noch ein as const und ein Cast in song.ts weg. Danach liefen Typcheck, Lint und die 44 Unit-Tests, alle grün.

Offen

  • Ein Pattern hat weiter zwei Zeilen Beats per bar und Beat. Ob es auch eine Zeile Sign bekommt, ist noch nicht entschieden.

Nicht geprüft

  • Eine Gegenprobe für den e2e-Check.
  • Das umgestellte Projekt im Editor.
  • Der CI-Lauf zum Push.
Erledigt mit `0d57a2f` „Pick a song's sign in one row, and let its patterns keep theirs (#363)“, Wiki `0b7df63`. ## Was sich ändert - **Sign:** Der Song hat statt *Beats per bar* und *Beat* die eine Zeile **Sign** mit 1/2, 2/2, 3/2, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 5/8, 6/8, 7/8, 8/8, 9/8. Standard ist 4/4, gespeichert als `sign`. Ein Wert außerhalb der Liste gilt als 4/4. - **Eingebettete Patterns behalten ihren Takt:** Tempo und Takt gehören dem Pattern wie bei einem Pattern des Projekts. Eine Änderung am Song kürzt oder verlängert es nicht mehr. Im Inspector stehen *Tempo*, *Beats per bar* und *Beat* wieder, ausgeblendet bleibt nur *Bus*. - Eine Kopie (*Embed a copy*, Einfügen aus einem anderen Song) behält ihren Takt. `clockFollowers` und das Mitziehen in `AssetPropertyCommand` sind weg. ## Selbst entschieden - Ein Pattern, das im Song mit *Create pattern* entsteht, übernimmt beim Anlegen einmal Tempo und Takt des Songs, damit sein erster Takt zum Item passt. Danach ändert es sich nicht mehr mit dem Song. - Keine Lade-Migration. In `cbbf160bb7e8` habe ich die zwei Songs von Hand von `beats`/`beat` auf `sign` umgestellt (*Song 1* 3/4, *Song 2* 4/4, Revision 18726, Sicherung in `/root/config-backup-20261009/`). In keinem anderen Projekt hatte ein Song einen eigenen Takt. Die drei eingebetteten Patterns dort behalten ihren Takt (einmal 3/4 bei 90 BPM, zweimal 4/4 bei 120 BPM). ## Tests ``` Unit song/embedded/pattern → 44 grün (1 neu, 4 umgeschrieben), 2 Gegenproben je rot e2e 65 (melektaus-atx) → ALL PASSED – 57 Checks (1 neu) Gate (melektaus-atx) → CHECK EXIT 0, 272 Dateien, 4214 Tests ``` - Der neue e2e-Check wählt *Sign* im Inspector auf 6/8 und zurück auf 4/4 und prüft, dass es keine Zeile *Beats per bar* mehr gibt. - Nach dem Gate fielen noch ein `as const` und ein Cast in `song.ts` weg. Danach liefen Typcheck, Lint und die 44 Unit-Tests, alle grün. ## Offen - Ein Pattern hat weiter zwei Zeilen *Beats per bar* und *Beat*. Ob es auch eine Zeile *Sign* bekommt, ist noch nicht entschieden. ## Nicht geprüft - Eine Gegenprobe für den e2e-Check. - Das umgestellte Projekt im Editor. - Der CI-Lauf zum Push.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#363