Repository navigation
fix(korg): ESX→E2S Transfer-Treue — egtime + FX-/Export-Zuweisungsdateien (v3.312–v3.314) - #39
Merged
Merged
Conversation
…v3.312.0) Geraetebefund (2026-08-01, "lukn kicks"-Bank): Nach dem ESX->E2S-Transfer klang der Mix anders als auf der ESX — manche Parts zu leise. Part-Level, Pan und Samples waren korrekt (1:1 verifiziert); verloren ging die Amp-EG-Zeit (egtime): ~26 Drum-Parts mit kurzen perkussiven Huellkurven (egtime 1..80) standen auf dem E2S alle auf Decay 127, klangen dauerhaft lang und maskierten die uebrigen Parts. - esxParser: egTime dekodieren (Drum/Keyboard @+11, Stretch/Slice @+9; Layout lt. lammas/electribe drumpart.js + open-electribe-editor) - esxToE2sBank: egTime in den E2PatternInput-Part uebernehmen - e2sExport: neues PART_EGTIME_OFF 0x15 (Korg TABLE 6 "EG"), nur ueberlagert wenn der Aufrufer einen Wert liefert (Template bleibt 127) - electribePatternBuilder: E2PartInput.egTime dokumentiert - Test: Unit (Byte-Schreibpfad inkl. Clamp) + Integration gegen die reale "Korg ESX files/lukn kicks.esx" (50 Parts mit egtime<127 muessen ankommen) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob
Die ESX-1 routet Parts insert-artig durch ihre 3 Master-FX — beim Transfer auf die E2S geht das verloren und die betroffenen Parts klingen trocken/ leiser (zweite Haelfte des "manche Parts zu leise"-Befunds, 2026-08-01). - esxParser: fxflags dekodieren (bit2=Send, bits0-1=FX-Auswahl; Drum/ Keyboard @+13, Stretch/Slice @+11) + Pattern-FXParam-Block @1148 (3x fxtype/edit1/edit2, lammas fxparam.js) + FX-Chain @byte 12; ESX_FX_TYPE_NAMES (16 Typen) + esxFxTypeName() exportiert. Empirisch verifiziert an lukn kicks Pattern 1: EQ(99/67), Compressor(62/38), Short Delay(127/0). - esxToE2sBank: mapping.md bekommt "## FX-Zuweisung (am Geraet nachbauen)" — pro Pattern die 3 Prozessoren + Chain, pro geroutetem Part die Zeile "Part N (SampleNr Name) -> FXx (Typ Edit1/Edit2)". - Tests: synthetische fxflags/FXParam-Dekodierung + Real-File-Check (lukn kicks) + mapping-Sektion. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob
Analog zur ESX-Import-Anleitung (v3.313): Beim Export von .e2spat / .e2sallpat aus dem DrumMachine-Sequenzer wird automatisch eine *-zuweisung.md mitgeliefert. Sie listet pro Pattern/Part, was das E2-Format NICHT traegt und am Geraet nachgebaut werden muss: Sample-Zuordnung (Sound-Name), Level/Pan als E2-Werte (0..127) und die aktivierten Synthstudio-Channel-FX (Filter/Distortion/Compressor/Delay/ Reverb/EQ) mit E2-IFX/MFX-Vorschlag; dazu Time-Stretch/Micro-Timing. - utils/e2ExportGuide.ts: buildE2ExportGuide() (rein, testbar) + downloadGuideMarkdown() (DOM-guarded) - DrumMachine: beide Export-Buttons (Einzel-Pattern + Bank) laden die Zuweisung nach erfolgreichem Export mit herunter - Tests: FX-Zeilen, E2-Wert-Umrechnung, Synth-Label, Leer-Fall Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob
….315.0) Nutzerfrage "ist mit EQ low, mid oder high gemeint?" — die rohen Edit1/Edit2-Zahlen waren nicht selbsterklaerend. Jetzt: - EQ (2-Band, KEIN Mid): "EQ [Low +35 (Boost) / High +3 (~neutral)]" — Werte relativ zur Reglermitte 64, lt. ESX-1-Manual Edit1=Low, Edit2=High - uebrige FX mit Manual-Labels: Compressor [Sens/Attack], Delays [Time|Beat/Depth], LPF/HPF [Cutoff/Reso], Distortion [Gain/Level] usw.; Grain Shifter/Talking Mod ohne gesichertes Label bleiben Edit1/Edit2 - EQ-Lesehilfe-Absatz in der mapping.md (E2S-Pendant: IFX "2band EQ") Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob
…(v3.316.0) chunk[body+0x1D] = 0x02 war als "Fix-Byte" (Oe2sSLE _UFix) hartkodiert — tatsaechlich ist 0x1D das MSB von importNum (u16 @0x1c = sampleNumber+50). In den Referenz-Banken lagen alle importNums zufaellig in 0x200..0x2FF, daher sah das Byte konstant aus. Ab sampleNumber 718 (importNum >= 0x300) verlor jedes Sample 256 im importNum-Feld. Befund beim Bau einer 233-Slot-Bank (Slots 501..734, "hunnel sample"-Pack, 2026-08-01). Fix: Hardcode entfernt — setUint16 @0x1c schreibt das MSB bereits korrekt. Regressionstest: importNum fuer sampleNumber 500/717/718/949. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Gerätebefund (2026-08-01, „lukn kicks"-Bank): Nach dem ESX→E2S-Transfer klingt der Mix anders — manche Parts zu leise. Part-Level/Pan/Samples wurden 1:1 korrekt übertragen; verloren gingen (1) die Amp-EG-Zeit (egtime) und (2) das FX-Routing (ESX schickt Parts insert-artig durch ihre 3 Master-FX).
Drei Commits
v3.312 — egtime übernehmen: esxParser dekodiert
egTime(Drum/Keyboard@+11, Stretch/Slice@+9), Converter reicht durch, e2sExport schreibtPART_EGTIME_OFF 0x15(Korg TABLE 6 „EG"; Template 127 bleibt ohne Wert stehen).v3.313 — FX-Zuweisung im ESX-Import: esxParser dekodiert fxflags (bit2=Send, bits0-1=FX-Wahl; verifiziert gegen lammas Common.FXFlags) + Pattern-FXParam-Block @1148 (3× fxtype/edit1/edit2) + Chain @byte 12. Die Import-Anleitung (
-mapping.md) bekommt „## FX-Zuweisung (am Gerät nachbauen)" mit Prozessoren, Chain und pro geroutetem Part der Ziel-FX-Zeile. Empirisch verifiziert (lukn kicks P1: EQ 99/67 · Compressor 62/38 · Short Delay 127/0).v3.314 — Zuweisungsdatei beim Sequenzer-Export: Beide DrumMachine-Export-Buttons (.e2spat + .e2sallpat) laden automatisch eine
*-zuweisung.mdmit: Sound/Sample pro Part, Level/Pan als E2-Werte, aktivierte Channel-FX mit E2-IFX/MFX-Vorschlag, Time-Stretch/Micro-Timing.Tests
lukn kicks.esx(50 Parts mit egtime<127)script-sandbox-codegen-Hash-Test (auch auf main rot, unabhängig von diesem PR)🤖 Generated with Claude Code
https://claude.ai/code/session_0141pjnQj2b29e4t2Fw7k5ob