Update scene bar calculation to include pattern events

This commit is contained in:
2026-07-14 09:44:39 +02:00
parent cd1d0bb562
commit 91ee4f2034
3 changed files with 16 additions and 4 deletions

View File

@@ -61,7 +61,11 @@ function dawProjectTransformer(data: ProjectRawData, exporterParams: ExporterPar
let offset = 0; let offset = 0;
scenes.forEach((scene, sceneIndex) => { 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 = { const dawScene: DawScene = {
name: customSceneNames[scene.name] || scene.name, name: customSceneNames[scene.name] || scene.name,
clipSlot: [], clipSlot: [],
@@ -113,7 +117,7 @@ function dawProjectTransformer(data: ProjectRawData, exporterParams: ExporterPar
sceneBars, sceneBars,
sceneIndex, sceneIndex,
sceneName: customSceneNames[scene.name] || scene.name, sceneName: customSceneNames[scene.name] || scene.name,
sceneTimeSignature: data.scenesSettings.timeSignature, sceneTimeSignature: scene.timeSignature,
}); });
dawScene.clipSlot.push({ dawScene.clipSlot.push({

View File

@@ -26,7 +26,11 @@ function midiTransformer(data: ProjectRawData, exporterParams: ExporterParams) {
) * TICKS_PER_BEAT; ) * TICKS_PER_BEAT;
scenes.forEach((scene) => { 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) => { scene.patterns.forEach((pattern) => {
let track = midiTracks.find((t) => t.padCode === pattern.pad); let track = midiTracks.find((t) => t.padCode === pattern.pad);
if (!track) { if (!track) {

View File

@@ -42,7 +42,11 @@ export function reaperTransform(data: ProjectRawData, exporterParams: ExporterPa
let offset = 0; let offset = 0;
scenes.forEach((scene, sceneIndex) => { 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) => { scene.patterns.forEach((pattern) => {
let track = tracks.find((c) => c.padCode === pattern.pad); let track = tracks.find((c) => c.padCode === pattern.pad);