Статьи:

Профиль:

Синтэдит — оптимизация использования ресурсов процессора


Каждый плагин, обрабатывая или синтезируя звук, потребляет определённое колличество ресурсов процессора. Хорошие плагины должны производить минимум операций для достижения максимальной функциональности. Что влияет на то в какой степени плагин поглощает ресурсы процессора ? На сколько это важно ?

Да, лично мне встречались такие плагины, что только от их прожорливости умноженной на сомнительную функциональность хотелось их закрыть и больше не открывать.

Наибольшие затраты ресурсов процессора производят модули, которые генерируют или обрабатывают аудио данные. При этом чем Выше частота дискретизации и битность — тем больше требуется обработать информации (частота дискретизации = 44100 Гц  - это ровно 44100 выборок в секунду, каждая из которых имеет определённое значение амплитуды ).

Что касается других процессов, таких как данные автоматизации, миди сигналы между модулями — то затраты ресурсов процессора достаточно незначительны.

Давайте на практике рассмотрим то как можно улучшить структуру плагина с точки зрения затраты ресурсов процессора.

Синтэдит
Руководство пользователя
Описание модулей
Описание модулей 2
Создание синтезатора 1
Создание синтезатора 2
Создание синтезатора 3
Единицы измерения
Оптимизация
синтез методом фазовых искажений
FM синтез
Создание Модулей
Создание фильтра
Создание дилея
Создание ревербератора
Создание флангера и хоруса
Создание эквалайзера
Создание компрессора
Создание вокодера

У нас есть синтезатор, в котором мы имеем модуль VCA, огибающую и осцилятор, конечно же выход.

Untitled-112

Мы хотим добавить контроллер громкости синтезатора. Один из неэффективных вариантов изображён ниже:

Untitled-212

С двумя VCA модулями мы имеем на 44100 вычислений больше каждую секунду. Это много и это плохое решение. Данную проблему лучше решить не дублируя данный модуль, а используя другой — level adjust.

Untitled-35

Теперь мы контролируем уровень генератора огибающей, которая в свою очередь контролирует уровень VCA модуля.

Мы также можем сделать ещё одно дополнение. Модуль огибающей имеет свой собственный инструмент, с помощью которого можно задать уровень — это коннектор «Overall level». Подсоединяя к нему регулятор, мы можем удалить ещё один уже лишний модуль.

Untitled-45

При создании синтезатора, стремитесь к минимализму, потому что каждая линия связи, через которую передаётся аудио сигнал, требует около 100 выборок в буфере, что в свою очередь равно примено 400 байтам. Так что финальная версия не просто делает на 44 100 математических операций меньше, она также сохраняет на 88 200 копий выборок меньше, за счёт меньшего колличество линий связи.

Что же касается временно неактивных модулей и линий связи — то за них не стоит беспокоиться. В программе синтэдит есть так называемый «спячий режим», в который, например, автоматически помещаются генераторы после того как пользователь отпустил клавишу.

Untitled-55

Вы должны быть залогинены для комментирования.