// 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"); }