Как оптимизировать сборку мусора в веб-аудио приложениях, чтобы избежать щелчков?

У меня есть веб-аудио приложение для генерирования музыки - 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и произвольный период времени, когда узлы были созданы и подключены. Затем, по прошествии определенного периода времени, они будут отключены. Затем, когда происходит сборка мусора, это просто очищает отключенные узлы, что не создает шума.

Другие вопросы по тегам