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

188
Vistas
Muestra de liberación/detención de Tone.js

EDITAR: Actualizar en otros intentos. La parte clave de la siguiente pregunta es la línea sampler.triggerRelease(["A1"], 'now') que no funciona. Otras cosas que he probado incluyen:

  • sampler.releaseAll(Tone.now())
  • sampler.releaseAll()
  • sampler.triggerRelease(["A1"], Tone.now())

La parte relevante de los documentos de Tone.js está aquí .

Lo que no funcionará es sampler.dispose() , porque esencialmente desconecta el instrumento sampler de la salida. Pero necesito seguir usando el muestreador para volver a disparar la misma nota poco después de apagarlo.


Estoy tratando de presionar un botón para detener la reproducción de una nota 'Sampler' mientras se está reproduciendo actualmente. Pensé que activar la fase de lanzamiento haría esto (como en mi código a continuación), pero esto no parece tener ningún efecto. He probado muchos métodos. Esta pregunta no responde a la mía, en parte porque es para el 'Polysynth', no para el 'Sampler'. ¡Gracias por adelantado!

 const readyOverlay = document.querySelector('#readyOverlay') readyOverlay.addEventListener('click', async () => { readyOverlay.style.display = 'none' await Tone.start() const sampler = new Tone.Sampler({ urls: { A1: "A1.mp3" }, baseUrl: "https://tonejs.github.io/audio/casio/", onload: () => { sampler.triggerAttackRelease(["A1"], 5); } }).toDestination(); sampler.release = 0 document.querySelector('#stop').addEventListener('click', () => { sampler.triggerRelease(["A1"], 'now') }) })
 #readyOverlay { position: absolute; z-index: 9; width: 100%; height: 100%; background: white; text-align: center; display: flex; flex-direction: column; justify-content: center; }
 <script src="https://unpkg.com/tone@14.7.77/build/Tone.js"></script> <div id="readyOverlay">Press anywhere to start!</div> <button id="stop" >stop</button>

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Reemplazar triggerAttackRelease con solo triggerAttack funciona:

 const readyOverlay = document.querySelector('#readyOverlay') readyOverlay.addEventListener('click', async () => { readyOverlay.style.display = 'none' await Tone.start() const sampler = new Tone.Sampler({ urls: { A1: "A1.mp3" }, baseUrl: "https://tonejs.github.io/audio/casio/", onload: () => { sampler.triggerAttack(["A1"]); } }).toDestination(); sampler.release = 0; document.querySelector('#stop').addEventListener('click', () => { sampler.triggerRelease(["A1"]); }) })
 #readyOverlay { position: absolute; z-index: 9; width: 100%; height: 100%; background: white; text-align: center; display: flex; flex-direction: column; justify-content: center; }
 <script src="https://unpkg.com/tone@14.7.77/build/Tone.js"></script> <div id="readyOverlay">Press anywhere to start!</div> <button id="stop" >stop</button>

triggerAttackRelease es solo una secuencia de llamadas triggerAttack y triggerRelease . Significa que ya ha programado un lanzamiento de nota en la onload de llamada de carga en su ejemplo inicial.

Tone.js ignora la segunda llamada de liberación porque la sampler ya ha marcado "A1" como liberada ( esta declaración if asegura que la nota se libera solo una vez después del ataque ).

about 4 years ago · Juan Pablo Isaza Denunciar
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