// Som: os efeitos e a trilha do kit. Efeitos sintetizados (MotionCraft `sfx make`, pacote digital-soft: secos e digitais); trilha de 9 s, 110 bpm, noturna e batida. // 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 trilha from '../trilha/noite-110bpm.mp3'; export const SONS = { 'whoosh-entra': whooshEntra, 'whoosh-sai': whooshSai, swoosh, 'pop-palavra': popPalavra, 'pop-cartao': popCartao, clique, impacto, subida, assinatura, } as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha a 0.55 const VOLUME: Record = { 'whoosh-entra': 0.9, 'whoosh-sai': 0.8, swoosh: 1, 'pop-palavra': 1, 'pop-cartao': 0.9, clique: 0.8, impacto: 0.9, subida: 0.7, 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