From c85d628bec7ed54dc16dd3f2578be22c21b240c8 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Jul 2026 07:56:38 +0200 Subject: [PATCH] Adjust drum rack building logic and add comment about pad layout difference --- src/lib/exporters/ableton/builders.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/exporters/ableton/builders.ts b/src/lib/exporters/ableton/builders.ts index 5ab1a52..fb69c62 100644 --- a/src/lib/exporters/ableton/builders.ts +++ b/src/lib/exporters/ableton/builders.ts @@ -625,6 +625,8 @@ async function buildDrumRackDevice(koTrack: AblTrack, abletonVersion: AbletonVer continue; } + // EP133 is 3x4 (top→bottom), Ableton Drum Rack is 4x4 (bottom→top) + // flip vertically: row 3 → row 0, row 0 → row 3 const drumPad = getDrumRackMidiNote(subtrack.padCode) - 36; const drumBranch = structuredClone(drumBranchTemplate.DrumBranch); @@ -635,7 +637,7 @@ async function buildDrumRackDevice(koTrack: AblTrack, abletonVersion: AbletonVer drumBranch.Name.UserName['@Value'] = subtrack.name; drumBranch.BranchInfo.ReceivingNote['@Value'] = note; drumBranch.BranchInfo.SendingNote['@Value'] = - subtrack.drumRackSendingNote ?? subtrack.rootNote; + subtrack.drumRackSendingNote ?? subtrack.rootNote; // not sure if this matters drumBranch.BranchInfo.ChokeGroup['@Value'] = subtrack.inChokeGroup ? 1 : 0; drumBranch.MixerDevice.Volume.Manual['@Value'] = subtrack.volume; drumBranch.DeviceChain.MidiToAudioDeviceChain.Devices = await buildSimplerDevice(