Как оптимизировать сборку мусора в веб-аудио приложениях, чтобы избежать щелчков?
У меня есть веб-аудио приложение для генерирования музыки - http://christopheralcock.github.io/falling3rds/ - которое создает множество узлов аудиоконтекста для создания постоянно развивающейся, довольно расслабляющей музыкальной текстуры.
Однако примерно через 100 секунд слишком много узлов и сборщиков мусора начинают работать и создают ужасные, неумолимые звуки щелчков и все портят.
Я мог бы переписать программное обеспечение так, чтобы оно создавало меньше узлов, но не хочу, если мне это не нужно, не в последнюю очередь потому, что я думаю, что фактический эффект в конечном итоге будет другим.
Я хочу уничтожить каждый (осциллятор и т. Д.) Узел примерно через 30 секунд после его создания, чтобы количество узлов не попало в сотни.
Код здесь, fwiw: https://github.com/christopheralcock/falling3rds/tree/gh-pages
Спасибо
0 ответов
Только что наткнулся на это снова и подумал, что могу также ответить тем, что я сделал в конце, чтобы исправить это в рамках парадигмы, изложенной в вопросе:
Я использовал
AudioNode.disconnect()
метод: https://developer.mozilla.org/en-US/docs/Web/API/AudioNode/disconnect
я использовал
setTimeout
и произвольный период времени, когда узлы были созданы и подключены. Затем, по прошествии определенного периода времени, они будут отключены. Затем, когда происходит сборка мусора, это просто очищает отключенные узлы, что не создает шума.