// 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 encaixa from './encaixa.mp3'; import bloco from './bloco.mp3'; import queda from './queda.mp3'; import whoosh from './whoosh.mp3'; import gira from './gira.mp3'; import estala from './estala.mp3'; import desmonta from './desmonta.mp3'; import assinatura from './assinatura.mp3'; import trilha from '../trilha/calma-com-punch-108bpm.mp3'; export const SONS = {'encaixa': encaixa, 'bloco': bloco, 'queda': queda, 'whoosh': whoosh, 'gira': gira, 'estala': estala, 'desmonta': desmonta, 'assinatura': assinatura} as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha const VOLUME: Record = {'encaixa': 1.0, 'bloco': 0.85, 'queda': 0.8, 'whoosh': 0.85, 'gira': 0.75, 'estala': 0.7, 'desmonta': 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.5, saida = 20}) => { const {durationInFrames} = useVideoConfig(); return