Files
KGStudio/src/util/audioTempoDetection.ts
T

38 lines
1.2 KiB
TypeScript

import type { KGProject } from '../core/KGProject';
import type { KGAudioRegion } from '../core/region/KGAudioRegion';
import { beatRangeToSeconds, getAudioRegionDisplayLengthBeats } from './globalTrackUtil';
export {
DEFAULT_AUDIO_TEMPO_DETECTION_OPTIONS,
detectTempoFromAudio,
normalizeAudioTempoDetectionOptions,
type AudioTempoAnalysisSpan,
type AudioTempoDetectionOptions,
type DetectedAudioTempo,
} from './audioTempoDetectionCore';
import type { AudioTempoAnalysisSpan } from './audioTempoDetectionCore';
const MIN_ANALYSIS_DURATION_SECONDS = 0.05;
export function buildAudioTempoAnalysisSpanForRegion(
project: KGProject,
audioRegion: KGAudioRegion,
): AudioTempoAnalysisSpan | null {
const visibleLengthBeats = getAudioRegionDisplayLengthBeats(project, audioRegion);
if (visibleLengthBeats <= 0) {
return null;
}
const regionStartBeat = audioRegion.getStartFromBeat();
const durationSeconds = beatRangeToSeconds(project, regionStartBeat, regionStartBeat + visibleLengthBeats);
if (durationSeconds < MIN_ANALYSIS_DURATION_SECONDS) {
return null;
}
return {
offsetSeconds: audioRegion.getClipStartOffsetSeconds(),
durationSeconds,
};
}