49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
getSimplerPlaybackState,
|
|
hasOneShotOverride,
|
|
} from '../src/lib/exporters/ableton/playback';
|
|
import { PadCode } from '../src/types/types';
|
|
|
|
const project7Overrides = ['b0', 'c1', 'c8', 'c9', 'd3'] as PadCode[];
|
|
|
|
test('applies the selective Project 7 One-Shot overrides', () => {
|
|
for (const padCode of project7Overrides) {
|
|
assert.equal(hasOneShotOverride(padCode, project7Overrides), true);
|
|
}
|
|
|
|
assert.equal(hasOneShotOverride('b3', project7Overrides), false);
|
|
assert.equal(hasOneShotOverride('b7', project7Overrides), false);
|
|
});
|
|
|
|
test('preserves project playback modes when no override is selected', () => {
|
|
assert.equal(hasOneShotOverride('b0'), false);
|
|
});
|
|
|
|
test('changes only the active playback mode for forced KEY and LEGATO pads', () => {
|
|
assert.deepEqual(getSimplerPlaybackState('key', true), {
|
|
playbackMode: 1,
|
|
monophonic: false,
|
|
useOneShotEnvelope: false,
|
|
});
|
|
assert.deepEqual(getSimplerPlaybackState('legato', true), {
|
|
playbackMode: 1,
|
|
monophonic: true,
|
|
useOneShotEnvelope: false,
|
|
});
|
|
});
|
|
|
|
test('uses One-Shot envelopes only for native EP ONE pads', () => {
|
|
assert.deepEqual(getSimplerPlaybackState('oneshot', false), {
|
|
playbackMode: 1,
|
|
monophonic: false,
|
|
useOneShotEnvelope: true,
|
|
});
|
|
assert.deepEqual(getSimplerPlaybackState('legato', false), {
|
|
playbackMode: 0,
|
|
monophonic: true,
|
|
useOneShotEnvelope: false,
|
|
});
|
|
});
|