Improve fader value conversion and support target max value in Ableton exports
This commit is contained in:
@@ -104,7 +104,7 @@ function setLive10SampleReference(fileRef: any, sampleName: string) {
|
||||
fileRef.LivePackId = { '@Value': '' };
|
||||
}
|
||||
|
||||
function targetFor(parameter: any): { arrangement?: number; session?: number } {
|
||||
function targetFor(parameter: any, maxValue?: number) {
|
||||
const automationTarget =
|
||||
parameter?.AutomationTarget?.['@Id'] === undefined
|
||||
? undefined
|
||||
@@ -112,6 +112,7 @@ function targetFor(parameter: any): { arrangement?: number; session?: number } {
|
||||
return {
|
||||
arrangement: automationTarget,
|
||||
session: automationTarget,
|
||||
maxValue,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -186,10 +187,29 @@ function trackAutomationTargets(midiTrack: any, includeArrangementMixer: boolean
|
||||
}
|
||||
|
||||
findSimplers(midiTrack.DeviceChain.DeviceChain.Devices).forEach((simpler) => {
|
||||
const oneshot = Number(simpler.Globals.PlaybackMode['@Value']) === 1;
|
||||
addTarget(targets, FaderParam.PTC, targetFor(simpler.Pitch.TransposeKey));
|
||||
addTarget(targets, FaderParam.TUNE, targetFor(simpler.Pitch.TransposeFine));
|
||||
addTarget(targets, FaderParam.ATK, targetFor(simpler.VolumeAndPan.Envelope.AttackTime));
|
||||
addTarget(targets, FaderParam.REL, targetFor(simpler.VolumeAndPan.Envelope.ReleaseTime));
|
||||
addTarget(
|
||||
targets,
|
||||
FaderParam.ATK,
|
||||
targetFor(
|
||||
oneshot
|
||||
? simpler.VolumeAndPan.OneShotEnvelope.FadeInTime
|
||||
: simpler.VolumeAndPan.Envelope.AttackTime,
|
||||
oneshot ? 2000 : undefined,
|
||||
),
|
||||
);
|
||||
addTarget(
|
||||
targets,
|
||||
FaderParam.REL,
|
||||
targetFor(
|
||||
oneshot
|
||||
? simpler.VolumeAndPan.OneShotEnvelope.FadeOutTime
|
||||
: simpler.VolumeAndPan.Envelope.ReleaseTime,
|
||||
oneshot ? 2000 : undefined,
|
||||
),
|
||||
);
|
||||
addTarget(targets, FaderParam.MOD, targetFor(simpler.Pitch.PitchLfoAmount));
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user