Files
ep-133-project-export/src/lib/exporters/ableton/padSound.ts

63 lines
1.4 KiB
TypeScript

import type { AblTrack } from '../../transformers/ableton';
import { koEnvRangeToSeconds } from './utils';
export type PadSoundState = {
amp: number;
pitch: number;
playMode: AblTrack['playMode'];
pan: number;
trimStart: number;
trimEnd: number;
envelope: {
attack: number;
release: number;
};
time: {
mode: AblTrack['timeStretch'];
bpm: number;
bars: number;
};
rootNote: number;
soundLength: number;
};
export type PadEnvelopeState = {
classicAttackMs: number;
classicReleaseMs: number;
oneShotFadeInMs: number;
oneShotFadeOutMs: number;
};
export function getPadSoundState(track: AblTrack): PadSoundState {
return {
amp: track.volume,
pitch: track.pitch,
playMode: track.playMode,
pan: track.pan,
trimStart: track.trimLeft,
trimEnd: track.trimRight,
envelope: {
attack: track.attack,
release: track.release,
},
time: {
mode: track.timeStretch,
bpm: track.timeStretchBpm,
bars: track.timeStretchBars,
},
rootNote: track.rootNote,
soundLength: track.soundLength,
};
}
export function getPadEnvelopeState(sound: PadSoundState): PadEnvelopeState {
return {
classicAttackMs:
koEnvRangeToSeconds(sound.envelope.attack, sound.soundLength) * 1000,
classicReleaseMs:
koEnvRangeToSeconds(sound.envelope.release, sound.soundLength) * 1000,
oneShotFadeInMs: 0,
oneShotFadeOutMs: 5,
};
}