// 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 brilho from './brilho.mp3'; import sino from './sino.mp3'; import onda from './onda.mp3'; import subida from './subida.mp3'; import toque from './toque.mp3'; import meteoro from './meteoro.mp3'; import sopro from './sopro.mp3'; import assinatura from './assinatura.mp3'; import trilha from '../trilha/suave-88bpm.mp3'; export const SONS = {'brilho': brilho, 'sino': sino, 'onda': onda, 'subida': subida, 'toque': toque, 'meteoro': meteoro, 'sopro': sopro, 'assinatura': assinatura} as const; export type NomeSom = keyof typeof SONS; // volume de cada efeito (0..1) já calibrado contra a trilha const VOLUME: Record = {'brilho': 0.7, 'sino': 0.65, 'onda': 0.7, 'subida': 0.55, 'toque': 0.65, 'meteoro': 0.55, 'sopro': 0.6, 'assinatura': 0.85}; 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