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

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

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

Rambler's Top100

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

уникальные запчасти по номеру машины



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

Да, я знаю, о чем вы думаете: что глава про визуализацию делает в книге по программированию игрового аудио? Как никак, визуализация звука - будь это просто волна, анализатор спектра или декоративные, управляемые музыкой, эффекты, популярные в нынешних МРЗ проигрывателях, - это не то, что обычно ассоциируется с играми или игровым программированием. Тем не менее, визуализация звука включает в себя множество фундаментальных понятий игрового аудио. Методики, лежащие в основе визуализации звука, также лежат в основе некоторых продвинутых методик обработки, включая сжатие звука, фильтрацию звука и т. д. Правильное понимание визуализации звука, и особенно дискретного преобразования Фурье (Discrete Fourier Transform), жизненно важно для того, чтобы стать гуру в вопросах игрового аудио. Кроме того, это захватывающее путешествие через биологию, математику, битье посуды и поиски внеземного интеллекта. Когда вы осознаете, насколько мало вещей подходит под это описание, вы поймете, почему я не мог закончить книгу, не истратив немного времени на это. В этой главе вы узнаете, как наткать анализатор спектра. По существу, анализатор спектра - это гистограмма, которая показывает вам, какие частоты включает в себя звук и насколько громкими являются эти частоты. Вероятнее всего, вы видели подобную «частотную гистограмму» в вашем любимом МРЗ проигрывателе.

Дискретное преобразование Фурье. Основа анализатора спектра проста. У вас имеется последовательность чисел, представляющих собой ваши звуковые выборки (или, что более точно, представляющих собой амплитуду звука в различные моменты времени). Вы хотите получить другую последовательность чисел, которая представляет собой амплитуды раз-
личных частот, содержащихся в первоначальной выборке. После того как эти амплитуды получены, вы можете отобразить их любым желаемым способом. Вы можете нарисовать гистограмму, где каждый столбец соответствует определенной частоте, а высота этого столбца соответствует амплитуде частоты (как и делают большинство популярных МРЗ проигрывателей). Или вы можете нарисовать двухмерный график, откладывая частоту по вертикальной оси и время по горизонтальной и используя цвет для обозначения амплитуды. Повторю еще раз: после того как вы массив амплитуд частот, вы вольны делать, что угодно - это лишь вопрос программирования GUI. Одним из способов получения массива амплитуд частот является дискретное преобразование Фурье или ДПФ (ИМ). Значительная часть этой главы будет посвящена разбору теории ДПФ. Совет. Говоря математическими терминами, когда вы пишете анализатор спектра, вы на самом деле преобразуете вашу выборку из временной области в частотную область. Другими словами, вы меняете ось х вашего графика. Вместо того чтобы откладывать по о<л время, вы откладываете частоту.

Резонанс. Я уверен, что вы знаете, что такое резонанс: оперный певец может разбить винный бокал, если будет петь на его резонансной частоте. По сути, колебания, вызванные голосом оперного певца, заставляют винный бокал колебаться все сильнее и сильнее, пока, в конце концов, сила колебаний не превысит прочность стекла и оно не разобьется. Вы можете не понимать, как сила наросла до такой степени, что стекло разбилось. Чтобы понять это, представьте себе большой, тяжелый серебряный шар, привязанный к потолку крепкой веревкой. Интуитивно, вы понимаете, что небольшая сила, прилагаемая точно вовремя, может раскачивать шар все выше и выше. Неважно сколько весит шар, zze. что вам нужно сделать, это чуть-чуть подталкивать его тогда, когда ему это нужно, и, в конце концов, вы его раскачаете. Теперь, представьте, что вместо шара постоянно подталкивают молекулу, внутри винного бокала, и подталкивают не парой человеческих рук, а волнами сжатого воздуха, также известными как звуковые волны, идущими сквозь воздух. Если каждая звуковая волна будет прибывать точно в нужное время, то они смогут «раскачивать» молекулу все дальше и дальше относительно ее первоначального расположения. К тому же все эти звуковые волны будут раскачивать множество молекул в стекле, заставляя их колебаться в разных направлениях, пока, в конце концов, стекло не разобьется.

Как Вы слышите. Именно это свойство резонанса дает вам возможность слышать. Ваше ухо выступает в качестве биологического анализатора спектра. Внутри вашего уха есть орган, который называется улитка, формой напоминающий раковину. Внутри улитки есть мембрана, которая называется основной. Основание основной мембраны тонкое и жесткое, что позволяет ему резонировать с высокочастотными звуками. Другой конец мембраны, верхушка, широкий и эластичный, что делает его резонансную частоту низкой. Между двумя концами различные части мембраны имеют различные резонансные частоты. Мембрана покрыта нервными окончаниями, и когда определенная частота заставляет резонировать определенный участок мембраны, эти колебания заставляют нерв послать импульс мозгу, и вы «слышите» эту частоту.

Математическое задание резонанса. Синусоидальные волны интересны тем, что сумма их полупериодов всегда ноль — другими словами, волны проводят столько же времени, находясь ниже нуля, сколько и выше нуля. Это значит, что в целом, если вы посмотрите значения амплитуды синусоидальной волны через определенные периоды времени, а потом сложите все эти значения вместе, то вы получите ответ, близкий к нулю. Положительные и отрицательные значения в целом скомпенсируют друг друга. Тем не менее, все меняется, если мы начинаем смотреть значения амплитуды с частотой равной частоте волны. Не важно, что вы выберете в качестве начальной точки, все равно в итоге вы получите ответ, отличающийся от нуля. Если вы выберете начальную точку чтобы волна была больше нуля, то тогда каждая следующая амплитуда, на которую вы посмотрите, будет в точности равняться амплитуде в начальной точке, что вызовет все больший и больший рост вашей суммы со временем. Аналогично, если вы выберите точку, лежащую ниже нуля, с каждой новой амплитудой ваша сумма будет становиться все меньше и меньше. Это тот же резонанс, но уже математически.

Это значит, что если вы хотите выяснить, содержит ли данная волна волну с определенной частотой, все, что вам нужно сделать, - это умножить все точки одной волны на все точки другой и просуммировать результаты перемножений. Это может быть записано таким кодом. Это фиктивный код, вы не найдете его в примере программы. Мы считаем, что numsamples содержит полное число выборок исходной волны' и что sample - это массив чисел с плавающей точкой, лежащих между -1 и Код проходит по всему массиву выборок, умножая каждую выборку на sin(x) и прибавляя полученный результат к sinAmp. Когда проход завершен, sinAmp содержит амплитуду волны (частоты freq), содержащейся в источнике. Чтобы вычислить х, подаваемый на вход функции sin, код умножает исследуемую частоту (freq) на 2л (удвоенное число «пи», или приближенно 6,28). Функция sin ожидает на вход угол в радианах (это определенная величина для измерения при этом нулевой угол равен 0 радиан, а полный 2л радиан, вместо 0 и 360° соответственно). И в конце, код умножает полученную величину на k (наш счетчик цикла) и делит на общее число выборок (numsamples). Это тот множитель, которые позволяет нам получить значения в разных точках волны, когда мы проходим по циклу когда k равно иу:но, х равен нулю. Когда k равняется numsamples, их отношении равно единице и х становится равен 2тт.. умноженным на freq. Именно этот механизм позволяет нам получить точки, воображаемой волны частоты freq, которые вы потом умножаете на соответствующую точку исходной волны. После того как вы перемножили соответствующие точки исходной волны и воображаемой волны частоты freq и сложили их все вместе, вы (каким-то магическим способом) получаете амплитуды волны частотой freq, содержащейся в исходной волне. По сути, вы математически смоделировали резонанс!


Классические итальянские кухни как залог вкусного ужина семьи!