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'; } from '../../transformers/ableton';
import { getQuarterNotesPerBar } from '../utils'; import { getQuarterNotesPerBar } from '../utils';
import { import {
AbletonAutomationTarget,
AbletonAutomationTargets, AbletonAutomationTargets,
buildArrangementEnvelopes, buildArrangementEnvelopes,
buildClipEnvelopes, buildClipEnvelopes,
@@ -176,7 +177,7 @@ function findAutoFilters(node: any, result: any[] = []): any[] {
function addTarget( function addTarget(
targets: AbletonAutomationTargets, targets: AbletonAutomationTargets,
parameter: FaderParam, parameter: FaderParam,
target: { arrangement?: number; session?: number }, target: AbletonAutomationTarget,
) { ) {
if (target.arrangement === undefined && target.session === undefined) { if (target.arrangement === undefined && target.session === undefined) {
return; return;
@@ -187,14 +188,14 @@ function addTarget(
function trackAutomationTargets(midiTrack: any, includeArrangementMixer: boolean) { function trackAutomationTargets(midiTrack: any, includeArrangementMixer: boolean) {
const targets: AbletonAutomationTargets = {}; const targets: AbletonAutomationTargets = {};
const mixer = midiTrack.DeviceChain.Mixer; const mixer = midiTrack.DeviceChain.Mixer;
addTarget(targets, FaderParam.LVL, { const volumeTarget = targetFor(mixer.Volume);
arrangement: includeArrangementMixer ? Number(mixer.Volume.AutomationTarget['@Id']) : undefined, const panTarget = targetFor(mixer.Pan);
session: Number(mixer.Volume.AutomationTarget['@Id']), if (!includeArrangementMixer) {
}); volumeTarget.arrangement = undefined;
addTarget(targets, FaderParam.PAN, { panTarget.arrangement = undefined;
arrangement: includeArrangementMixer ? Number(mixer.Pan.AutomationTarget['@Id']) : undefined, }
session: Number(mixer.Pan.AutomationTarget['@Id']), addTarget(targets, FaderParam.LVL, volumeTarget);
}); addTarget(targets, FaderParam.PAN, panTarget);
const send = mixer.Sends?.TrackSendHolder?.Send; const send = mixer.Sends?.TrackSendHolder?.Send;
if (send) { if (send) {