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, }; }