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