From bdeb078716b38851e62549d15cd77531a59a9c12 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 13 Jul 2026 04:46:46 +0200 Subject: [PATCH] Update template loading to support multiple Ableton versions (v10) --- src/lib/exporters/ableton/utils.ts | 33 +++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/lib/exporters/ableton/utils.ts b/src/lib/exporters/ableton/utils.ts index f0b69f1..70148fe 100644 --- a/src/lib/exporters/ableton/utils.ts +++ b/src/lib/exporters/ableton/utils.ts @@ -53,19 +53,42 @@ const templateMap: Record Promise> = { effectCompressor: () => import('./templates/effectCompressor.xml?raw'), }; -export async function loadTemplate(templateName: string): Promise { - if (templateCache[templateName]) { - return templateCache[templateName]; +const live10TemplateMap: Record Promise> = { + midiClip: () => import('./templates/live10/midiClip.xml?raw'), + midiTrack: () => import('./templates/live10/midiTrack.xml?raw'), + project: () => import('./templates/live10/project.xml?raw'), + simpler: () => import('./templates/live10/simpler.xml?raw'), + scene: () => import('./templates/live10/scene.xml?raw'), + groupTrack: () => import('./templates/live10/groupTrack.xml?raw'), + drumRack: () => import('./templates/live10/drumRack.xml?raw'), + drumBranch: () => import('./templates/live10/drumBranch.xml?raw'), + returnTrack: () => import('./templates/live10/returnTrack.xml?raw'), + trackSendHolder: () => import('./templates/live10/trackSendHolder.xml?raw'), + effectReverb: () => import('./templates/live10/effectReverb.xml?raw'), + effectDelay: () => import('./templates/live10/effectDelay.xml?raw'), + effectChorus: () => import('./templates/live10/effectChorus.xml?raw'), + effectDistortion: () => import('./templates/live10/effectDistortion.xml?raw'), + effectFilter: () => import('./templates/live10/effectFilter.xml?raw'), + effectCompressor: () => import('./templates/live10/effectCompressor.xml?raw'), +}; + +export async function loadTemplate( + templateName: string, + abletonVersion: '10' | '11' = '11', +): Promise { + const cacheKey = `${abletonVersion}:${templateName}`; + if (templateCache[cacheKey]) { + return templateCache[cacheKey]; } - const importFn = templateMap[templateName]; + const importFn = abletonVersion === '10' ? live10TemplateMap[templateName] : templateMap[templateName]; if (!importFn) { throw new Error(`Unknown template: ${templateName}`); } const templateModule = await importFn(); const parsed = create(templateModule.default).toObject(); - templateCache[templateName] = parsed; + templateCache[cacheKey] = parsed; return parsed as T; }