From fa3ae193bbcb7663b9f910279262e2d8affd4dd7 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Jul 2026 11:29:03 +0200 Subject: [PATCH] Update Simpler track handling to use WeakMap --- src/lib/exporters/ableton/builders.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib/exporters/ableton/builders.ts b/src/lib/exporters/ableton/builders.ts index 530256a..1353580 100644 --- a/src/lib/exporters/ableton/builders.ts +++ b/src/lib/exporters/ableton/builders.ts @@ -64,6 +64,7 @@ let _localId = -1; let _localGroupId = -1; let _localTrackColor = -1; let _localGroupTrackColor = -1; +const simplerPadTracks = new WeakMap(); const MIN_CLIP_LAUNCHER_SCENES = 8; type AbletonVersion = '10' | '11'; @@ -200,11 +201,8 @@ function trackAutomationTargets( addTarget(targets, FaderParam.FX, target); } - const padTracks = koTrack.drumRack - ? koTrack.tracks.filter((track) => Boolean(track.sampleName)) - : [koTrack]; - findSimplers(midiTrack.DeviceChain.DeviceChain.Devices).forEach((simpler, index) => { - const padTrack = padTracks[index] ?? koTrack; + findSimplers(midiTrack.DeviceChain.DeviceChain.Devices).forEach((simpler) => { + const padTrack = simplerPadTracks.get(simpler) ?? koTrack; const pitchTarget = targetFor(simpler.Pitch.TransposeKey, padTrack); const staticPitchValue = padTrack.faderParams[FaderParam.PTC]; const staticPitchOffset = @@ -350,6 +348,7 @@ async function buildSimplerDevice( ) { const simplerTemplate = await loadTemplate('simpler', abletonVersion); const device = structuredClone(simplerTemplate.OriginalSimpler); + simplerPadTracks.set(device, koTrack); const padSound = getPadSoundState(koTrack); const padEnvelope = getPadEnvelopeState(padSound); const playbackState = getSimplerPlaybackState(padSound.playMode);