Интернет магазин музыки, mp3 почтой, заказать mp3 диски

баннер интернет-магазина ножей nifovka.ru

RSS - RSS,
Карта сайта

Rambler's Top100

Написать на e-mail © 2007-2012 г.

качественный плазменный раскрой металла прайс лист



Теги страницы:

Массивы элементов с плавающей точкой создаются при создании объекта. Также обратите внимание, что код использует возможность создания массива частот rn FreqOufput. Так как этот массив остается постоянным, это лучшее время для вычисления его составляющих. Загрузка значений. Когда клиентский код хочет обновить анализатор спектра, он начинает с загрузки нового набора величин в CDiscrctdaMineiTransform. Эти значения - это часть wave файла, начинающаяся с выборки, звучащей в динамиках, и имеющая размер BUFFER- SIZE выборок (целочисленная постоянная равная 512). Перед тем как производить расче, класс CDiscreteFourierTransform должен преобразовать массив выборок в диапазоне 0-255 (0-65535 для 16-битных выборок) в величины с плавающей точкой в диапазоне -1,0 до 1,0. Как можно увидеть, здесь используются некоторые фокусы с указателями. Код рассматривает входящую переменную data или как массив 8-битных значений, или как массив коротких целых (short rnt — 16-битные значения), в зависимости от величины in__t.5itsPer'Sample. Обратите внимание, что используется что при стереозвуке используется только первый канал.

Расчет ДПф. И вот, тот момент, которого все ждали. После того как массивы настроены, массив rn Input заполнен величинами с плавающей точкой, клиентский код вызывает метод PerformSlowFourier Trans form, чтобы рассчитать ДПФ и выдать на выход массив rn AmpOutput. К этому моменту для вас не должно быть ничего нового в этом коде. Он основан на теории, которую вы изучали в начале главы. Визуализация графика. И вот мы подошли к коду, который использует массив in .AmpOutput класса CDiscreteFourierTransform, чтобы визуализировать анализатор спектра. Это в чистом виде код Win32 API GDI, так что он требует некоторых знаний, но в целом он не делает ничего сложного. Он просто проходит окно для рисования слева направо, вычисляя высоту каждого полоски и рисуя два прямоугольника: один серый (низ планки) и один черный (верх планки). Таким образом, мы немного понижаем мерцание, возникающее из-за того, что мы не очищаем прямоугольник, а просто рисуем поверх него. Если вам так не нравится, то я советую вам изменить пнешнин вид программы в лучшую с горопу. Обычно полоски закрашивают градиентом от красного к зеленому, делая анализатор спектра более красочным.

Быстрые преобразования Фурье (Fast Fourier Transform). С тем кодом, который я представил в примере программы этой главы, существует одна большая проблема: он очень медленный! Я пытался сделать код как можно более доступным для понимания, но это потребовало от меня отказа от всевозможных оптимизаций, что сделало код пригодным только для обучения. Даже небольшое значение равное 1024 загрузит работой все компьютеры кроме самых новых! Чтобы получить какую-либо выгоду от ДИФ, необходимо его ускорить. К счастью, в 1965 году Кули и Турки (Cooley and Turkey) изобрели поразительный алгоритм, которые увеличивает скорость на несколько порядков. Этот алгоритм называется быстрым преобразованием Фурье, или БПФ. БПФ делает то же, что и дискретное преобразование Фурье, только во много, много раз быстрее. Совет. Если вы увидели популярную экранную заставку экрана SE'Na Sionic вы могли заметить что она тратит много времени на вычисление БПФ (FFT). На самом деле, эти БПФ заставка использует, чтобы намучить амтитуды частот из входного сигнала источника. Я не буду тратить место и рассказывать вам о нем здесь, но я поместил несколько ссылок на ваш CD, они помогут вам найти разъяснение работы и различные реализации БПФ. Вашим заданием, если у вас есть желание, будет добавление метода БПФ в класс CDiscreteFour'ierTransform, что сделает его пригодным для использования в приложениях в реальном времени.

Заключение. Для меня поразительно, что все, что мы слышим - от оперы до взрывов и человеческих голосов - мы слышим из-за того, что волны различной частоты заставляют резонировать различные части нашей улитки. Дискретное преобразование Фурье — это много больше, чем я расскашл. Фактически, ДПФ — это одна из тех вещей, которые могут быть объяснены с различных точек зрения, некоторые из которых включают в себя высшую математику. Если вы из тех, кто любит общение с мнимыми числами и интегралами, я посоветую вам изучить математическую сторону ДПФ и БПФ. начала могу предложить вам ссылки на CD.