Análise de áudio
Leia dados de amplitude e frequência em tempo real do áudio a ser reproduzido na sua scene para alimentar visuais reativos.
Exemplo mínimo
import {
engine,
Transform,
MeshRenderer,
AudioSource,
AudioAnalysis,
AudioAnalysisView,
} from "@dcl/sdk/ecs";
import { Vector3 } from "@dcl/sdk/math";
export function main() {
// Reproduzir um som numa entity
const audioEntity = engine.addEntity();
Transform.create(audioEntity);
AudioSource.create(audioEntity, {
audioClipUrl: "sounds/music.mp3",
playing: true,
loop: true,
});
// Anexar AudioAnalysis à mesma entity para começar a receber dados de análise
AudioAnalysis.createAudioAnalysis(audioEntity);
// Um objeto de view reutilizável no qual o componente vai escrever a cada frame
const analysis: AudioAnalysisView = {
amplitude: 0,
bands: new Array<number>(8),
};
// Um cubo que pulsa com a amplitude do áudio
const cube = engine.addEntity();
MeshRenderer.setBox(cube);
Transform.create(cube, { position: Vector3.create(8, 1, 8) });
// A cada frame, ler os valores de análise mais recentes e escalar o cubo
engine.addSystem(() => {
AudioAnalysis.readIntoView(audioEntity, analysis);
const s = 1 + analysis.amplitude * 10;
Transform.getMutable(cube).scale = Vector3.create(s, s, s);
});
}Ler os dados a cada frame
Reagir a bandas de frequência específicas
Modes
Ajustando o modo logarithmic
Substituir um componente existente
Referência do componente
AudioAnalysis.createAudioAnalysis(entity, mode?, amplitudeGain?, bandsGain?)
AudioAnalysis.createAudioAnalysis(entity, mode?, amplitudeGain?, bandsGain?)AudioAnalysis.createOrReplaceAudioAnalysis(entity, mode?, amplitudeGain?, bandsGain?)
AudioAnalysis.createOrReplaceAudioAnalysis(entity, mode?, amplitudeGain?, bandsGain?)AudioAnalysis.readIntoView(entity, out)
AudioAnalysis.readIntoView(entity, out)AudioAnalysis.tryReadIntoView(entity, out): boolean
AudioAnalysis.tryReadIntoView(entity, out): booleanAudioAnalysisView
AudioAnalysisViewNotas e limitações
Atualizado