// Som: os efeitos e a trilha do kit. Efeitos sintetizados (MotionCraft `sfx make`), trilha de `music make`. // Ver assets/ASSETS.md. Regra: um som por movimento que importa, 1 a 2 quadros ANTES do visual. import React from 'react'; import {Audio, Sequence, interpolate, useVideoConfig} from 'remotion'; import whoosh from './whoosh.mp3'; import passa from './passa.mp3'; import impacto from './impacto.mp3'; import tick from './tick.mp3'; import varre from './varre.mp3'; import subida from './subida.mp3'; import clique from './clique.mp3'; import assinatura from './assinatura.mp3'; import trilha from '../trilha/tech-128bpm.mp3'; export const SONS = {'whoosh': whoosh, 'passa': passa, 'impacto': impacto, 'tick': tick, 'varre': varre, 'subida': subida, 'clique': clique, 'assinatura': assinatura} as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha const VOLUME: Record = {'whoosh': 0.9, 'passa': 0.85, 'impacto': 0.85, 'tick': 0.7, 'varre': 0.7, 'subida': 0.6, 'clique': 0.8, 'assinatura': 0.9}; export type EfeitoProps = {som: NomeSom; em: number; volume?: number}; /** um efeito no quadro `em` (absoluto, ou relativo à Cena se estiver dentro de uma) */ export const Efeito: React.FC = ({som, em, volume}) => ; export type TrilhaProps = {volume?: number; /** quadros de fade no fim */ saida?: number}; /** a trilha do kit, do quadro 0 ao fim, com fade de saída */ export const Trilha: React.FC = ({volume = 0.55, saida = 20}) => { const {durationInFrames} = useVideoConfig(); return