Barsuk & Serega
Serega Serega
Ты когда-нибудь задумывался о том, чтобы собрать крошечный терминальный синтезатор, который выдавал бы довольно сложные звуки, не перегружая процессор? Интересно было бы узнать, как бы ты его оптимизировал, чтобы он оставался компактным и при этом справлялся с реальным временем.
Barsuk Barsuk
Конечно, без проблем. Держись одной линии, без лишних выделений памяти, используй кольцевой буфер и заранее рассчитанные таблицы синусов. Работа с фиксированной точкой разгрузит процессор, а если тебе всего несколько осцилляторов, можешь и вовсе обойтись без БПФ. Частоту дискретизации подбери так, чтобы не перегружал процессор, но чтобы разрешение было приемлемым. И помни: если используешь библиотеку, выбирай самую компактную. Только такой оптимизированный подход и позволит синтезатору жить.
Serega Serega
Вот это мощный алгоритм – один поток, без лишних перегонов, кольцевые буферы, таблицы синуса, фиксированная точка. Попробую. Только пообещай мне, что частоту дискретизации не превысишь 24 килогерца, а то процессор начнёт визжать громче моих соло на гитаре.
Barsuk Barsuk
Понял, держи это ниже 24 килогерца, и процессор не будет шуметь. Просто дай знать, как будут выглядеть сэмплы.
Serega Serega
Отлично, кинь мне потом, как будет что, я скажу, что это – джем-сессия до утра или просто помехи.