// Som: os efeitos e a trilha do kit. Efeitos sintetizados (MotionCraft `sfx make`, pacote soft-pop); trilha de 8.6 s // (MotionCraft `music make`, preset warm-major, 112 bpm, tom D (energia alta)). 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 confete from './confete.mp3'; import trilha from '../trilha/festa-112bpm.mp3'; export const SONS = { 'whoosh-entra': whooshEntra, 'whoosh-sai': whooshSai, swoosh, 'pop-palavra': popPalavra, 'pop-cartao': popCartao, clique, impacto, subida, assinatura, confete, } as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha a 0.5 const VOLUME: Record = { 'whoosh-entra': 0.85, 'whoosh-sai': 0.7, swoosh: 0.9, 'pop-palavra': 0.9, 'pop-cartao': 0.9, clique: 0.8, impacto: 0.9, subida: 0.7, assinatura: 0.85, confete: 0.7, }; 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.5, saida = 20}) => { const {durationInFrames} = useVideoConfig(); return