Improve ableton export logic and update documentation

This commit is contained in:
2026-07-14 08:05:24 +02:00
parent b70208f83c
commit 883a214c31
3 changed files with 24 additions and 1 deletions

View File

@@ -6,9 +6,11 @@ import {
FaderParam,
Group,
GroupFaderParam,
MidiPatternEvent,
Note,
Pad,
PadCode,
PatternEventKind,
ProjectRawData,
} from '../src/types/types';
@@ -222,6 +224,26 @@ test('classifies a pad from its distinct pitches across every exported scene', (
assert.ok(result.tracks.some((track) => track.padCode === 'a1' && !track.drumRack));
});
test('keeps pad-specific MIDI expression on an individual track', () => {
const data = project();
const rawData = new Uint8Array([0, 0, PatternEventKind.Midi, 0xd0, 100, 0, 0, 0]);
const event: MidiPatternEvent = {
type: 'midi',
kind: PatternEventKind.Midi,
position: 0,
source: 0,
flags: 0,
rawData,
data: rawData.slice(3, 7),
};
data.scenes[0].patternEvents.a?.events.push(event);
const result = abletonTransformer(data, { includeArchivedSamples: true });
const a0 = result.tracks.find((track) => track.padCode === 'a0' && !track.drumRack);
assert.ok(a0);
assert.equal(a0.lane?.clips[0].midiEvents.length, 1);
});
test('does not create selector-note racks when samples are excluded', () => {
const result = abletonTransformer(project(), {
includeArchivedSamples: false,