Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

230
Vistas
¿Cómo hacer que el volumen del oscilador coincida con el volumen de una muestra?

Quiero que se reproduzca un tono de un oscilador debajo de un clip de audio de una canción. ¿Cómo hago para que el volumen de los tonos coincida con el volumen de la muestra? Quiero que el tono sea más bajo cuando la canción sea más baja y que el tono sea más fuerte en las partes más fuertes. He usado createAnalyzer para detectar el volumen de la muestra, pero el código no funciona.

 const audioContext = new AudioContext(); const audiodiv = document.querySelector('.audiodiv') const buffer = audioContext.createBuffer( 1, audioContext.sampleRate * 1, audioContext.sampleRate ); const channelData = buffer.getChannelData(0) for (let i = 0; i < buffer.length; i++){ channelData[i] = Math.random() * 2 - 1; } const primaryGainControl = audioContext.createGain() primaryGainControl.gain.setValueAtTime(0.005, 0); primaryGainControl.connect(audioContext.destination); const samplebutton = document.createElement('button') samplebutton.innerText = 'sample' samplebutton.addEventListener('click', async () => { let volume = 0 const response = await fetch('testsong.wav') const soundBuffer = await response.arrayBuffer() const sampleBuffer = await audioContext.decodeAudioData(soundBuffer) const analyzer = audioContext.createAnalyser() volume = analyzer.frequencyBinCount const sampleSource = audioContext.createBufferSource() sampleSource.buffer = sampleBuffer sampleSource.playbackRate.setValueAtTime(1, 0) sampleSource.connect(primaryGainControl) sampleSource.start() }) audiodiv.appendChild(samplebutton) const toneButton = document.createElement('button') toneButton.innerText = "tone" toneButton.addEventListener("click", () => { const toneOscillator = audioContext.createOscillator(); toneOscillator.frequency.setValueAtTime(150, 0) toneOscillator.type = "sine" toneOscillator.connect(oscGain); toneOscillator.start() toneOscillator.stop(audioContext.currentTime + 5) const oscGain = audioContext.createGain() oscGain.gain.value = volume oscGain.connect(primaryGainControl) }) audiodiv.appendChild(toneButton)
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda