IKHSAN
ENID Baca dalam Bahasa Indonesia

snapme

Public
Branch
master
Latest commit
130fdb828 October 2026

clipRecorder.ts

Open raw
/* SH-01: rencana perekaman klip Strip Hidup. Fungsi murni, tanpa DOM: 10
   bingkai selebar 480 px pada 1,5 detik terakhir hitung mundur, diambil dari
   mesin keadaan yang sama (ARCHITECTURE §5). Sampling berhenti di 2850 ms,
   jadi momen jepret di 3000 ms tidak pernah tersentuh perekaman. */

import { COUNTDOWN_FROM, COUNTDOWN_STEP_MS } from "./machine"

export const CLIP_FRAME_COUNT = 10
export const CLIP_FRAME_WIDTH = 480
export const CLIP_WINDOW_MS = 1500
export const CLIP_SAMPLE_INTERVAL_MS = CLIP_WINDOW_MS / CLIP_FRAME_COUNT

interface ClipPlan {
  /** Jeda tiap bingkai dari awal fase hitung mundur, dalam milidetik. */
  sampleOffsetsMs: number[]
}

export function planClipRecording(
  countdownFrom: number = COUNTDOWN_FROM,
  stepMs: number = COUNTDOWN_STEP_MS
): ClipPlan {
  const durationMs = countdownFrom * stepMs
  const start = durationMs - CLIP_WINDOW_MS
  return {
    sampleOffsetsMs: Array.from(
      { length: CLIP_FRAME_COUNT },
      (_, index) => start + index * CLIP_SAMPLE_INTERVAL_MS
    ),
  }
}
bytes
1,037
lines
31
Type
ts
Latest commit
28 October 2026