63 lines
1.4 KiB
TypeScript
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,
|
|
};
|
|
}
|