summaryrefslogtreecommitdiff
path: root/apps/web/src/timeline/audio-state.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/timeline/audio-state.ts')
-rw-r--r--apps/web/src/timeline/audio-state.ts21
1 files changed, 19 insertions, 2 deletions
diff --git a/apps/web/src/timeline/audio-state.ts b/apps/web/src/timeline/audio-state.ts
index 44df5aaf..6c8f3044 100644
--- a/apps/web/src/timeline/audio-state.ts
+++ b/apps/web/src/timeline/audio-state.ts
@@ -21,6 +21,23 @@ export function dBToLinear(db: number): number {
return 10 ** (clampDb(db) / 20);
}
+export function getElementVolume({
+ element,
+}: {
+ element: AudioCapableElement;
+}): number {
+ const value = element.params.volume;
+ return typeof value === "number" ? value : 0;
+}
+
+export function isElementMuted({
+ element,
+}: {
+ element: AudioCapableElement;
+}): boolean {
+ return element.params.muted === true;
+}
+
export function hasAnimatedVolume({
element,
}: {
@@ -43,12 +60,12 @@ export function resolveEffectiveAudioGain({
trackMuted?: boolean;
localTime: number;
}): number {
- if (trackMuted || element.muted === true) {
+ if (trackMuted || isElementMuted({ element })) {
return 0;
}
const resolvedDb = resolveNumberAtTime({
- baseValue: element.volume ?? 0,
+ baseValue: getElementVolume({ element }),
animations: element.animations,
propertyPath: "volume",
localTime: Math.round(localTime * TICKS_PER_SECOND),