From ae3daa2a664510d60869be8921a6d8be91c1fd30 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 13 Jul 2026 08:54:40 +0200 Subject: [PATCH] Update Ableton exporter to use explicit automation targets --- src/lib/exporters/ableton/builders.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/lib/exporters/ableton/builders.ts b/src/lib/exporters/ableton/builders.ts index 09c3c0a..4c3ba6b 100644 --- a/src/lib/exporters/ableton/builders.ts +++ b/src/lib/exporters/ableton/builders.ts @@ -15,6 +15,7 @@ import abletonTransformer, { } from '../../transformers/ableton'; import { getQuarterNotesPerBar } from '../utils'; import { + AbletonAutomationTarget, AbletonAutomationTargets, buildArrangementEnvelopes, buildClipEnvelopes, @@ -176,7 +177,7 @@ function findAutoFilters(node: any, result: any[] = []): any[] { function addTarget( targets: AbletonAutomationTargets, parameter: FaderParam, - target: { arrangement?: number; session?: number }, + target: AbletonAutomationTarget, ) { if (target.arrangement === undefined && target.session === undefined) { return; @@ -187,14 +188,14 @@ function addTarget( function trackAutomationTargets(midiTrack: any, includeArrangementMixer: boolean) { const targets: AbletonAutomationTargets = {}; const mixer = midiTrack.DeviceChain.Mixer; - addTarget(targets, FaderParam.LVL, { - arrangement: includeArrangementMixer ? Number(mixer.Volume.AutomationTarget['@Id']) : undefined, - session: Number(mixer.Volume.AutomationTarget['@Id']), - }); - addTarget(targets, FaderParam.PAN, { - arrangement: includeArrangementMixer ? Number(mixer.Pan.AutomationTarget['@Id']) : undefined, - session: Number(mixer.Pan.AutomationTarget['@Id']), - }); + const volumeTarget = targetFor(mixer.Volume); + const panTarget = targetFor(mixer.Pan); + if (!includeArrangementMixer) { + volumeTarget.arrangement = undefined; + panTarget.arrangement = undefined; + } + addTarget(targets, FaderParam.LVL, volumeTarget); + addTarget(targets, FaderParam.PAN, panTarget); const send = mixer.Sends?.TrackSendHolder?.Send; if (send) {