// Som: os efeitos e a trilha do kit. Efeitos sintetizados (MotionCraft `sfx make`, pacote organic-wood); trilha de 8.6 s // (MotionCraft `music make`, preset lofi-desk, 100 bpm, tom Bb). 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 whooshEntra from './whoosh-entra.mp3'; import whooshSai from './whoosh-sai.mp3'; import swoosh from './swoosh.mp3'; import popPalavra from './pop-palavra.mp3'; import popCartao from './pop-cartao.mp3'; import clique from './clique.mp3'; import impacto from './impacto.mp3'; import subida from './subida.mp3'; import assinatura from './assinatura.mp3'; import traco from './traco.mp3'; import quique from './quique.mp3'; import trilha from '../trilha/rota-100bpm.mp3'; export const SONS = { 'whoosh-entra': whooshEntra, 'whoosh-sai': whooshSai, swoosh, 'pop-palavra': popPalavra, 'pop-cartao': popCartao, clique, impacto, subida, assinatura, traco, quique, } as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha a 0.45 const VOLUME: Record = { 'whoosh-entra': 0.8, 'whoosh-sai': 0.65, swoosh: 0.85, 'pop-palavra': 0.9, 'pop-cartao': 0.95, clique: 0.85, impacto: 0.8, subida: 0.65, assinatura: 0.85, traco: 0.55, quique: 0.8, }; export type EfeitoProps = {som: NomeSom; em: number; volume?: number}; /** um efeito no quadro `em` (relativo à Cena se estiver dentro de uma, absoluto no resto) */ 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.45, saida = 20}) => { const {durationInFrames} = useVideoConfig(); return