Update MIDI clip duration calculations using loopDuration instead of bar counts

This commit is contained in:
2026-07-14 09:39:06 +02:00
parent ec3809bd1d
commit a68a80cba1

View File

@@ -8,6 +8,7 @@ import {
} from '../../../types/types';
import { EFFECTS } from '../../constants';
import abletonTransformer, {
AblArrangementSection,
AblClip,
AblGroupLane,
AblScene,
@@ -305,13 +306,9 @@ async function buildMidiClip(
const midiClipTemplate = await loadTemplate<ALSMidiClip>('midiClip', abletonVersion);
const midiClip = structuredClone(midiClipTemplate.MidiClip);
const beats = getQuarterNotesPerBar(
koClip.timeSignature.numerator,
koClip.timeSignature.denominator,
);
const time = koClip.offset * beats;
const time = koClip.offset;
const start = time;
const end = time + koClip.sceneBars * beats;
const end = time + koClip.duration;
midiClip['@Id'] = clipIdx;
midiClip['@Time'] = time;
@@ -319,12 +316,12 @@ async function buildMidiClip(
midiClip.CurrentEnd['@Value'] = end;
midiClip.Loop.LoopOn['@Value'] = 'true';
midiClip.Loop.LoopStart['@Value'] = 0;
midiClip.Loop.LoopEnd['@Value'] = koClip.bars * beats;
midiClip.Loop.LoopEnd['@Value'] = koClip.loopDuration;
if (midiClip.Loop.OutMarker) {
midiClip.Loop.OutMarker['@Value'] = koClip.bars * beats;
midiClip.Loop.OutMarker['@Value'] = koClip.loopDuration;
}
midiClip.Loop.HiddenLoopStart['@Value'] = 0;
midiClip.Loop.HiddenLoopEnd['@Value'] = koClip.bars * beats;
midiClip.Loop.HiddenLoopEnd['@Value'] = koClip.loopDuration;
setColorValue(midiClip, color);
midiClip.Name['@Value'] = koClip.sceneName;
midiClip.TimeSignature.TimeSignatures.RemoteableTimeSignature.Numerator['@Value'] =
@@ -335,7 +332,7 @@ async function buildMidiClip(
if (clipForLauncher) {
midiClip['@Time'] = 0;
midiClip.CurrentStart['@Value'] = 0;
midiClip.CurrentEnd['@Value'] = koClip.bars * beats;
midiClip.CurrentEnd['@Value'] = koClip.loopDuration;
}
// ableton group notes