Цитата
не знаю, не знаю... она заметна
Плохо накодили.
Цитата
нигде не встречал требований к "правльному" спектроанализатору
Ваш имеет дырки между полосами. Т.е. зоны нечувствительности. Точнее, видимо, из-за ошибок в математике, какой-то мусор пролезает, но не более.
В идеальном случае, если Вы подадите на вход синусоидальный (для простоты) сигнал с любой частотой, проссумировав мощности во всех полосах, Вы должны получить число, зависящее только от мощности входного сигнала, но не от частоты (в пределах рабочей полосы, у Вас от 32Гц до 16кГц).
Цитата
опять же, где эти нормы прописаны? на счет добротности фильтров эквалайзера? и насколько эти нормы таковыми являются?
Нигде. Однако есть здравый смысл, опирающийся на опыт. Вы когда-нибудь слушали сигнал, в котором поднята одна очень узкая полоса? А такое будет при регулировке тембра очень узкими полосами.
Цитата(GDI @ Mar 16 2009, 15:22)

И с аргументом синусов и косинусов что то не то... Надо сделать как то так:
Да все то. Просто по привычке допустил пару тривиальных упрощений. Зачем делить на N каждый раз, если можно разделить 1 раз, и freq и phase. Да и цикл не интересует. Поэтому сделано накопление фазы.
Умножение фазы на 2pi подразумевает, что аргумент phase имеет значение 0...1. Отнюдь не реальное умножение. В реальной жизни phase суть байт, 0...255, следовательно функция задается таблицей со значениями table_sin[index]=sin(index*pi/128).