/** * Duration conversion utilities for music notation. */ /** * Convert note duration to seconds based on tempo. * * @param duration - Note duration type (whole, half, quarter, eighth, 16th, 32nd) * @param tempo - Tempo in BPM * @param dotted - Whether the note is dotted (increases duration by 50%) * @returns Duration in seconds */ export function durationToSeconds( duration: string, tempo: number, dotted: boolean = false ): number { // Quarter note duration at given tempo const quarterNoteDuration = 60 / tempo; // Map durations to quarter note multipliers const durationMap: Record = { 'whole': 4, 'half': 2, 'quarter': 1, 'eighth': 0.5, '16th': 0.25, '32nd': 0.125, }; const baseDuration = durationMap[duration] || 1; const multiplier = dotted ? 1.5 : 1; return quarterNoteDuration * baseDuration * multiplier; }