// Som: os efeitos e a trilha do kit. Efeitos sintetizados (MotionCraft `sfx make`, pacote paper); trilha de 8.6 s // (MotionCraft `music make`, preset dark-minimal, 90 bpm, tom C). 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 toque from './toque.mp3'; import trilha from '../trilha/vazio-90bpm.mp3'; export const SONS = { 'whoosh-entra': whooshEntra, 'whoosh-sai': whooshSai, swoosh, 'pop-palavra': popPalavra, 'pop-cartao': popCartao, clique, impacto, subida, assinatura, toque, } as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha a 0.4 const VOLUME: Record = { 'whoosh-entra': 0.5, 'whoosh-sai': 0.4, swoosh: 0.55, 'pop-palavra': 0.7, 'pop-cartao': 0.7, clique: 0.6, impacto: 0.6, subida: 0.5, assinatura: 0.7, toque: 0.6, }; 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.4, saida = 20}) => { const {durationInFrames} = useVideoConfig(); return