Update sample inclusion details for Ableton export and add test case for pad classification
This commit is contained in:
@@ -23,7 +23,7 @@ function sanitizeFileName(value: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const NOTES: Record<ExportFormatId, string> = {
|
const NOTES: Record<ExportFormatId, string> = {
|
||||||
ableton: `Pads used at one consistent pitch are automatically organized into Drum Racks, while chromatic pads remain on separate MIDI tracks. Recorded fader automation is exported for LVL, PTC, LPF, HPF, FX, ATK, REL, PAN, TUNE, VEL and MOD. Choke groups work between pads in the same Drum Rack. TIM automation, the EP effects and stretching algorithms remain approximations.`,
|
ableton: `When samples are included, pads used at one consistent pitch are automatically organized into Drum Racks, while chromatic pads remain on separate MIDI tracks. Recorded fader automation is exported for LVL, PTC, LPF, HPF, FX, ATK, REL, PAN, TUNE, VEL and MOD. Choke groups work between pads in the same Drum Rack. TIM automation, the EP effects and stretching algorithms remain approximations.`,
|
||||||
dawproject: `Unfortunately, the DAWproject format does not currently support the "Sampler" instrument, so you will need to manually assign the samples in your DAW.`,
|
dawproject: `Unfortunately, the DAWproject format does not currently support the "Sampler" instrument, so you will need to manually assign the samples in your DAW.`,
|
||||||
midi: `The simplest format supported by any DAW. But you have to assign the samples manually.`,
|
midi: `The simplest format supported by any DAW. But you have to assign the samples manually.`,
|
||||||
reaper: `Only basic sampler features are supported`,
|
reaper: `Only basic sampler features are supported`,
|
||||||
|
|||||||
@@ -208,6 +208,20 @@ test('uses one hybrid classification for Arrangement and Session exports', () =>
|
|||||||
assert.deepEqual(trackShape(arrangement.tracks), trackShape(session.tracks));
|
assert.deepEqual(trackShape(arrangement.tracks), trackShape(session.tracks));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('classifies a pad from its distinct pitches across every exported scene', () => {
|
||||||
|
const data = project();
|
||||||
|
data.scenes[0].patterns[1].notes = [note(60, 0)];
|
||||||
|
data.scenes[1].patterns[1].notes = [note(61, 0)];
|
||||||
|
const result = abletonTransformer(data, { includeArchivedSamples: true });
|
||||||
|
const rack = result.tracks.find((track) => track.drumRack);
|
||||||
|
|
||||||
|
assert.deepEqual(
|
||||||
|
rack?.tracks.map((track) => track.padCode),
|
||||||
|
['a0'],
|
||||||
|
);
|
||||||
|
assert.ok(result.tracks.some((track) => track.padCode === 'a1' && !track.drumRack));
|
||||||
|
});
|
||||||
|
|
||||||
test('does not create selector-note racks when samples are excluded', () => {
|
test('does not create selector-note racks when samples are excluded', () => {
|
||||||
const result = abletonTransformer(project(), {
|
const result = abletonTransformer(project(), {
|
||||||
includeArchivedSamples: false,
|
includeArchivedSamples: false,
|
||||||
|
|||||||
Reference in New Issue
Block a user