Piano im Instrument: Fährt man schnell über das Piano, sodass viele Samples gleichzeitig oder kurz hintereinander spielen, wird alles still. Erst nach ein bis zwei Sekunden kommt der Ton wieder.
Song stockt nach längerer Zeit: Ist ein Song lange offen und man drückt auf Play, hängt das Audio in fast regelmäßigen Abständen. Nach F5 läuft es wieder flüssig (bisher nur beim Song beobachtet).
Spielstart:Play (Spiel starten) soll alle Vorhör-Töne stoppen.
Tab schließen: Wird ein Tab (Sound, Instrument, Pattern, Song) geschlossen, während er etwas vorhört, soll das gestoppt werden.
Preset im Instrument: Die Auswahl eines Presets soll kein Vorhören abspielen.
Ursachen (gemessen)
Zu 1: Eine Sample-Note neben dem Root läuft über den Phase-Vocoder, eine Instanz pro Note. In Chrome auf melektaus-atx: 12 Stimmen = 50 % Last des Audio-Threads, 16 = 71 %, 24 = 99 %. 30 Noten im Abstand von 40 ms halten ihn ab der ersten Sekunde auf 99 %.
Zu 2: Ein Leck. Chrome räumt einen Worklet-Node nie weg, solange auf seinem Port ein Listener hängt. Darüber blieb jede Stimme samt Nodes am Bus und wurde in jedem Block mitgerechnet. Song 2 einer Projektkopie sechsmal je 12 s gespielt: vorher 746 → 4469 Nodes, Grundlast 0,01 → 0,06; nachher immer 7 Nodes.
Vom User gemeldete Audio-Bugs und Kleinigkeiten:
1. **Piano im Instrument:** Fährt man schnell über das Piano, sodass viele Samples gleichzeitig oder kurz hintereinander spielen, wird alles still. Erst nach ein bis zwei Sekunden kommt der Ton wieder.
2. **Song stockt nach längerer Zeit:** Ist ein Song lange offen und man drückt auf *Play*, hängt das Audio in fast regelmäßigen Abständen. Nach F5 läuft es wieder flüssig (bisher nur beim Song beobachtet).
3. **Spielstart:** *Play* (Spiel starten) soll alle Vorhör-Töne stoppen.
4. **Tab schließen:** Wird ein Tab (Sound, Instrument, Pattern, Song) geschlossen, während er etwas vorhört, soll das gestoppt werden.
5. **Preset im Instrument:** Die Auswahl eines Presets soll kein Vorhören abspielen.
## Ursachen (gemessen)
- **Zu 1:** Eine Sample-Note neben dem Root läuft über den Phase-Vocoder, eine Instanz pro Note. In Chrome auf `melektaus-atx`: 12 Stimmen = 50 % Last des Audio-Threads, 16 = 71 %, 24 = 99 %. 30 Noten im Abstand von 40 ms halten ihn ab der ersten Sekunde auf 99 %.
- **Zu 2:** Ein Leck. Chrome räumt einen Worklet-Node nie weg, solange auf seinem Port ein Listener hängt. Darüber blieb jede Stimme samt Nodes am Bus und wurde in jedem Block mitgerechnet. Song 2 einer Projektkopie sechsmal je 12 s gespielt: vorher 746 → 4469 Nodes, Grundlast 0,01 → 0,06; nachher immer 7 Nodes.
Erledigt mit 25c1d02 „Keep the audio thread free of ended voices and too many vocoders (#356)“, Wiki 10e056d.
Was sich ändert
#
Punkt
Lösung
1
Piano wird still
Höchstens 12 Wege über die Tonhöhen-Verschiebung gleichzeitig. Eine weitere Stimme blendet die älteste in 10 ms aus, eine schon losgelassene vor einer noch gehaltenen.
2
Song stockt nach langer Zeit
Ports werden geschlossen, wenn eine Quelle endet oder gestoppt wird, und jede fertige Stimme wird vom Bus getrennt (bisher nur die mit Echo).
3
Spielstart
Play stoppt alles, was die Tabs spielen: Song, Pattern, Sound und alle Tasten- und FX-Vorhörtöne.
4
Tab schließen
Stoppt, was dieser Tab spielt: Sound, Sound FX, Instrument, Pattern und Song.
5
Preset
Spielt nichts mehr. Randomize und Mutate spielen weiter. Ist Audition an, hört man das Preset wie jede andere Änderung.
Gut zu wissen: Die Grenze von 12 gilt überall, auch im Song und im Spiel. In dichten Patterns können ausklingende Samples (z. B. Drums, bis zu 3 Wege pro Schlag) früher abgeschnitten werden.
Gemessen
Leck: Song 2 einer Projektkopie sechsmal je 12 s gespielt und gestoppt (Chrome auf stein2). Vorher 746 Nodes nach Runde 1 und 4469 nach Runde 6, Grundlast im Leerlauf 0,01 → 0,06. Nachher 7 Nodes jedes Mal, Grundlast 0,01 bis 0,02.
Vocoder (Chrome auf melektaus-atx): 12 Stimmen 50 % Last, 16 → 71 %, 24 → 99 %.
das Tab-Schließen bei Sound, Sound FX, Pattern und Song im Browser (nur beim Instrument)
das schnelle Wischen mit echter Maus (der Check spielt 22 gehaltene Noten per Hook, davon bleiben die 12 neuesten)
auf melektaus-atx, ob Song 2 beim Abspielen kurz auf 100 % Last kommt. Auf stein2 passiert das auch frisch (langsame CPU, Pitch-FX auf den Spuren).
Erledigt mit `25c1d02` „Keep the audio thread free of ended voices and too many vocoders (#356)“, Wiki `10e056d`.
## Was sich ändert
| # | Punkt | Lösung |
|---|---|---|
| 1 | Piano wird still | Höchstens **12 Wege über die Tonhöhen-Verschiebung gleichzeitig**. Eine weitere Stimme blendet die älteste in 10 ms aus, eine schon losgelassene vor einer noch gehaltenen. |
| 2 | Song stockt nach langer Zeit | Ports werden geschlossen, wenn eine Quelle endet oder gestoppt wird, und jede fertige Stimme wird vom Bus getrennt (bisher nur die mit Echo). |
| 3 | Spielstart | *Play* stoppt alles, was die Tabs spielen: Song, Pattern, Sound und alle Tasten- und FX-Vorhörtöne. |
| 4 | Tab schließen | Stoppt, was dieser Tab spielt: Sound, Sound FX, Instrument, Pattern und Song. |
| 5 | Preset | Spielt nichts mehr. *Randomize* und *Mutate* spielen weiter. Ist *Audition* an, hört man das Preset wie jede andere Änderung. |
**Gut zu wissen:** Die Grenze von 12 gilt überall, auch im Song und im Spiel. In dichten Patterns können ausklingende Samples (z. B. *Drums*, bis zu 3 Wege pro Schlag) früher abgeschnitten werden.
## Gemessen
- **Leck:** Song 2 einer Projektkopie sechsmal je 12 s gespielt und gestoppt (Chrome auf stein2). Vorher 746 Nodes nach Runde 1 und 4469 nach Runde 6, Grundlast im Leerlauf 0,01 → 0,06. Nachher 7 Nodes jedes Mal, Grundlast 0,01 bis 0,02.
- **Vocoder** (Chrome auf `melektaus-atx`): 12 Stimmen 50 % Last, 16 → 71 %, 24 → 99 %.
## Tests
```
Unit sound-library → 110 grün (3 neu), 4 Gegenproben je rot
e2e 34 (melektaus-atx) → ALL PASSED – 86 Checks (3 neu, 2 angepasst)
Gate (melektaus-atx) → CHECK EXIT 0, 270 Dateien, 4181 Tests
```
## Nicht geprüft
- wie es klingt
- das Tab-Schließen bei Sound, Sound FX, Pattern und Song im Browser (nur beim Instrument)
- das schnelle Wischen mit echter Maus (der Check spielt 22 gehaltene Noten per Hook, davon bleiben die 12 neuesten)
- auf `melektaus-atx`, ob Song 2 beim Abspielen kurz auf 100 % Last kommt. Auf stein2 passiert das auch frisch (langsame CPU, Pitch-FX auf den Spuren).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Vom User gemeldete Audio-Bugs und Kleinigkeiten:
Ursachen (gemessen)
melektaus-atx: 12 Stimmen = 50 % Last des Audio-Threads, 16 = 71 %, 24 = 99 %. 30 Noten im Abstand von 40 ms halten ihn ab der ersten Sekunde auf 99 %.Erledigt mit
25c1d02„Keep the audio thread free of ended voices and too many vocoders (#356)“, Wiki10e056d.Was sich ändert
Gut zu wissen: Die Grenze von 12 gilt überall, auch im Song und im Spiel. In dichten Patterns können ausklingende Samples (z. B. Drums, bis zu 3 Wege pro Schlag) früher abgeschnitten werden.
Gemessen
melektaus-atx): 12 Stimmen 50 % Last, 16 → 71 %, 24 → 99 %.Tests
Nicht geprüft
melektaus-atx, ob Song 2 beim Abspielen kurz auf 100 % Last kommt. Auf stein2 passiert das auch frisch (langsame CPU, Pitch-FX auf den Spuren).