From 91ee4f2034ecd8056aa4f244cac618cdfedfdd65 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Jul 2026 09:44:39 +0200 Subject: [PATCH] Update scene bar calculation to include pattern events --- src/lib/transformers/dawProject.ts | 8 ++++++-- src/lib/transformers/midi.ts | 6 +++++- src/lib/transformers/reaper.ts | 6 +++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/lib/transformers/dawProject.ts b/src/lib/transformers/dawProject.ts index 86d9102..2cf897d 100644 --- a/src/lib/transformers/dawProject.ts +++ b/src/lib/transformers/dawProject.ts @@ -61,7 +61,11 @@ function dawProjectTransformer(data: ProjectRawData, exporterParams: ExporterPar let offset = 0; scenes.forEach((scene, sceneIndex) => { - const sceneBars = Math.max(...scene.patterns.map((p) => p.bars)); + const sceneBars = Math.max( + 1, + ...scene.patterns.map((pattern) => pattern.bars), + ...Object.values(scene.patternEvents).map((pattern) => pattern?.bars || 0), + ); const dawScene: DawScene = { name: customSceneNames[scene.name] || scene.name, clipSlot: [], @@ -113,7 +117,7 @@ function dawProjectTransformer(data: ProjectRawData, exporterParams: ExporterPar sceneBars, sceneIndex, sceneName: customSceneNames[scene.name] || scene.name, - sceneTimeSignature: data.scenesSettings.timeSignature, + sceneTimeSignature: scene.timeSignature, }); dawScene.clipSlot.push({ diff --git a/src/lib/transformers/midi.ts b/src/lib/transformers/midi.ts index 11336eb..97cc06f 100644 --- a/src/lib/transformers/midi.ts +++ b/src/lib/transformers/midi.ts @@ -26,7 +26,11 @@ function midiTransformer(data: ProjectRawData, exporterParams: ExporterParams) { ) * TICKS_PER_BEAT; scenes.forEach((scene) => { - const sceneMaxBars = Math.max(...scene.patterns.map((p) => p.bars)); + const sceneMaxBars = Math.max( + 1, + ...scene.patterns.map((pattern) => pattern.bars), + ...Object.values(scene.patternEvents).map((pattern) => pattern?.bars || 0), + ); scene.patterns.forEach((pattern) => { let track = midiTracks.find((t) => t.padCode === pattern.pad); if (!track) { diff --git a/src/lib/transformers/reaper.ts b/src/lib/transformers/reaper.ts index d672882..3e489d8 100644 --- a/src/lib/transformers/reaper.ts +++ b/src/lib/transformers/reaper.ts @@ -42,7 +42,11 @@ export function reaperTransform(data: ProjectRawData, exporterParams: ExporterPa let offset = 0; scenes.forEach((scene, sceneIndex) => { - const sceneBars = Math.max(...scene.patterns.map((p) => p.bars)); + const sceneBars = Math.max( + 1, + ...scene.patterns.map((pattern) => pattern.bars), + ...Object.values(scene.patternEvents).map((pattern) => pattern?.bars || 0), + ); scene.patterns.forEach((pattern) => { let track = tracks.find((c) => c.padCode === pattern.pad);