diff --git a/src/util.ts b/src/util.ts
index d292a5e2470c9e2370c21a46cc88fba844668b68..44d9279d10fbdce187d6b9b52a37ec65d869fa73 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -142,3 +142,18 @@ export function secondsToDurationString(seconds: number): string {
   const s = Math.round(seconds % 60)
   return `${h ? h + 'h ' : ''}${m ? m + 'min ' : ''}${s ? s + 's' : ''}`
 }
+
+export function clamp(value: number, min: number, max: number): number {
+  return Math.min(Math.max(value, min), max)
+}
+
+export function mapToDomain(
+  value: number,
+  inputDomain: [number, number],
+  outputDomain: [number, number],
+) {
+  const [x1, y1] = inputDomain
+  const [x2, y2] = outputDomain
+  value = clamp(value, x1, y1)
+  return ((value - x1) * (y2 - x2)) / (y1 - x1) + x2
+}