Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!