summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/timeline/audio-state.ts
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-15 15:45:50 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-15 15:45:50 +0200
commitc46d28891fee62ca2d3132da876af6411a41d9da (patch)
treef856f71d04c69628f26b904088d675dd298a5080 /apps/web/src/lib/timeline/audio-state.ts
parent66e4367bc4727f1d0bcf8f869529c7518812277e (diff)
downloadopencut-c46d28891fee62ca2d3132da876af6411a41d9da.tar.gz
feat: text / custom masks, fix preview pan, refactor selection
Diffstat (limited to 'apps/web/src/lib/timeline/audio-state.ts')
-rw-r--r--apps/web/src/lib/timeline/audio-state.ts14
1 files changed, 14 insertions, 0 deletions
diff --git a/apps/web/src/lib/timeline/audio-state.ts b/apps/web/src/lib/timeline/audio-state.ts
index 9625c482..165ece94 100644
--- a/apps/web/src/lib/timeline/audio-state.ts
+++ b/apps/web/src/lib/timeline/audio-state.ts
@@ -57,6 +57,20 @@ export function resolveEffectiveAudioGain({
return dBToLinear(resolvedDb);
}
+export function buildWaveformGainSamples({
+ element,
+ count,
+}: {
+ element: AudioCapableElement;
+ count: number;
+}): number[] {
+ const durationSeconds = element.duration / TICKS_PER_SECOND;
+ return Array.from({ length: count }, (_, i) => {
+ const localTime = ((i + 0.5) / count) * durationSeconds;
+ return resolveEffectiveAudioGain({ element, localTime });
+ });
+}
+
export function buildAudioGainAutomation({
element,
trackMuted = false,