Skip to content

feat(korg): Feinschliff — Massenaktion, Export-Fortschritt, RMS, Klangprofil (v3.305.0) - #35

Merged
GeorgDub merged 1 commit into
mainfrom
feat/korg-polish
Jul 30, 2026
Merged

GeorgDub merged 1 commit into
mainfrom
feat/korg-polish

Conversation

@GeorgDub

Copy link
Copy Markdown
Owner

Die vier Kleinkram-Punkte aus dem ModernKorgManager-Vergleich (Punkt ⑦). Damit ist die Liste vollständig abgearbeitet (v3.301–v3.305).

1. „Alle hinzufügen" im Sample-Picker

Bewusst nicht als Schleife über die Einzelaktion gebaut. addSampleAsSlot liest newSlots.length für den Slot-Index und Date.now() für die Zeilen-ID — in einer Schleife sieht jeder Durchlauf denselben gebündelten React-State und dieselbe Millisekunde. Alle Zeilen bekämen Index 0 und dieselbe ID; bei zwei Samples fällt das nicht auf, bei zwanzig zerlegt es die Liste.

Stattdessen bulkSlotAdd.ts (rein): plant den kompletten Anhang, der Aufrufer setzt den State genau einmal. Trennt außerdem „schon in der Liste" von „kein Platz mehr" — eine gemeinsame Zahl wäre eine irreführende Ursache und ließe den Nutzer Samples löschen, die längst drin sind.

2. Fortschritt beim .all-Export

decodeAllPendingNew meldete nichts; bei 100 Samples sah das aus wie ein Hänger. Wiederverwendet die bestehende BulkProgressBar statt einer zweiten Eigenbau-Anzeige — deren data-testid ist jetzt überschreibbar, Default unverändert, bestehende Tests greifen weiter. Gezählt werden nur die noch offenen Slots; bereits dekodierte mitzuzählen ließe den Balken bei einer Teil-Aktualisierung scheinbar in der Mitte starten.

3. RMS neben Peak

getRms war importiert und die Überschrift versprach „Peak/RMS Info" — angezeigt wurde nur Peak. Beim Nachrüsten fiel auf, dass getPeak an zwei Stellen direkt im Render über sämtliche Samples läuft; RMS ungemessen dazuzunehmen hätte das verdoppelt. Beide laufen jetzt einmal je Buffer über useMemo, das Ergebnis ist also nebenbei schneller als vorher.

Neu toDbfs() in audioEdit.ts: log10(0) wäre als -Infinity in der Oberfläche gelandet, jetzt -∞. Übersteuerung wird bewusst als positiver Wert gezeigt statt abgeschnitten — dass ein Sample über 0 dBFS liegt, ist genau die Information, die man sehen will.

4. Klangprofil pro Slot

sampleSpectrumPeak.ts (Goertzel über sieben Bänder) lag mit Tests, aber ohne UI-Consumer da. Neu korgSlotSpectrum.ts (rein) plus Balkenanzeige im Slot-Detail — bewusst über den EQ-Knöpfen platziert: wer sieht, wo die Energie sitzt, weiß welcher Knopf passt, statt zu raten.

Dazu ein zurückhaltender EQ-Vorschlag mit Begründung und Ein-Klick-Anwendung. Die Schwellen sind absichtlich großzügig: ein Hinweis, der bei jedem zweiten Sample erscheint, wird ignoriert und ist damit wertlos — dafür gibt es einen eigenen Test („hält sich bei ausgewogenem Material zurück"). Bei Stille kein Schwerpunkt und kein Hinweis; eine Empfehlung auf Grundlage von Rauschen wäre schlimmer als keine.

Tests

34 neue Tests (13 Massenaktion, 8 dBFS, 13 Klangprofil), tsc clean, volle Suite 11424 grün.

Einer der Tests war zuerst selbst falsch: /\S{10,}/ verlangt zehn Zeichen ohne Leerzeichen, die Begründung ist aber ein Satz. Die Assertion wurde auf die gemeinte Aussage umgestellt, statt den Code daran anzupassen.

Der eine lokale Failer (electribe-import.test.ts Pan-Histogramm über die lokale e2s-2016.e2sallpat) ist vorbestehend und skippt auf CI.

🤖 Generated with Claude Code

…gprofil (v3.305.0)

Die vier Kleinkram-Punkte aus dem ModernKorgManager-Vergleich (Punkt 7).
Damit ist die Liste vollstaendig abgearbeitet.

- "Alle hinzufuegen" NICHT als Schleife ueber die Einzelaktion: die liest
  newSlots.length und Date.now(), saehe in jedem Durchlauf denselben
  gebuendelten React-State und dieselbe Millisekunde — alle Zeilen bekaemen
  Index 0 und dieselbe ID. Stattdessen bulkSlotAdd.ts (rein), das den
  kompletten Anhang plant; ein einziges setState. Trennt "schon in der Liste"
  von "kein Platz mehr".
- Export-Fortschritt ueber die BESTEHENDE BulkProgressBar (deren testid ist
  jetzt ueberschreibbar, Default unveraendert). Gezaehlt werden nur die noch
  offenen Slots.
- RMS neben Peak: war importiert und in der Ueberschrift versprochen, aber nie
  angezeigt. Dabei fiel auf, dass getPeak zweimal direkt im Render ueber alle
  Samples laeuft — beide jetzt via useMemo einmal je Buffer, also nebenbei
  schneller als vorher. Neu toDbfs() (log10(0) waere -Infinity geworden).
- Klangprofil pro Slot aus dem ungenutzten sampleSpectrumPeak.ts, bewusst
  UEBER den EQ-Knoepfen: wer sieht wo die Energie sitzt, weiss welcher Knopf
  passt. EQ-Vorschlag mit Begruendung, Schwellen absichtlich grosszuegig —
  ein Hinweis bei jedem Sample waere wertlos.

34 neue Tests, tsc clean, 11424 gruen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@GeorgDub
GeorgDub merged commit e7a7f6d into main Jul 30, 2026
2 of 3 checks passed
@GeorgDub
GeorgDub deleted the feat/korg-polish branch July 30, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant