Update Ableton exporter to use explicit automation targets

This commit is contained in:
2026-07-13 08:54:40 +02:00
parent 93afb8953c
commit ae3daa2a66

View File

@@ -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) {