mmpSearch/assets/js/creations/audio.js

39 lines
1.3 KiB
JavaScript

// js/audio.js
import * as Tone from "https://esm.sh/tone";
// O contexto de áudio agora será gerenciado principalmente pelo Tone.js.
// Esta função garante que ele seja iniciado por uma interação do usuário.
export function initializeAudioContext() {
if (Tone.context.state !== 'running') {
Tone.start();
console.log("AudioContext iniciado com Tone.js");
}
}
// ✅ DEPOIS: devolve o *raw* AudioContext (nativo do Web Audio)
export function getAudioContext() {
// compatível com versões novas/antigas do Tone
const ctx = typeof Tone.getContext === 'function' ? Tone.getContext() : Tone.context;
return ctx.rawContext || ctx; // rawContext quando existir
}
export function getMainGainNode() {
return Tone.Destination;
}
// Funções para controlar o volume e pan master
export function updateMasterVolume(volume) {
// Tone.Destination.volume.value é em decibéis. Convertemos de linear (0-1.5) para dB.
if (volume === 0) {
Tone.Destination.volume.value = -Infinity;
} else {
Tone.Destination.volume.value = Tone.gainToDb(volume);
}
}
export function updateMasterPan(pan) {
// A panorimização master em Tone.js geralmente requer um nó Panner dedicado.
// Por enquanto, esta função servirá como um placeholder para futuras implementações.
console.log("Master Pan ainda não implementado com Tone.js");
}