На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Звук и БПФ (ДПФ) , Амплитуда звука после БПФ
    Здравствуйте!
    Для разложение амплитуд колебаний звука на частоты используется БПФ (ДПФ).
    На вход БПФ подаются комплексные числе, действительная часть которых содержит амплитуды, а мнимая равна 0.
    На выходе БПФ получается другая последовательность комплексных чисел, какой физический смысл несут его действительная и мнимая часть?
      ...мнимая часть — амплитуда синусной (квадратурной) компоненты исходного сигнала, действительная - амплитуда косинусной. Физический смысл имеет рассмотрение двух квадратур сразу, где корень квадратный сумм квадратов амплитуд квадратур дает амплитуду (модуль) i-й гармоники, а отношение дает фазу (сдвиг фазы исходного сигнала).
      Сообщение отредактировано: raxp -
        Хорошо, видимо речь идет о user posted image и user posted image.
        А как тогда достать частотные составляющие?
        Сообщение отредактировано: ExkaliBur -
          Так вот как раз амплитуда i-й гармоники (соответствующий отсчет в дискретном ПФ) и говорит о вкладе определенной частотной составляющей в исходный сигнал. Например, для чистой синусоиды будет один большой пик на её частоте (в реальных условиях пик будет уширен и с некоторыми боковыми сателлитами из-за ограниченности диапазона)
            Цитата MBo @
            и говорит о вкладе определенной частотной составляющей в исходный сигнал

            А как определить фактическое значение этой частоты?
              Цитата ExkaliBur @
              На выходе БПФ получается другая последовательность комплексных чисел, какой физический смысл несут его действительная и мнимая часть?

              Никакой. Просто мы можем сделать такое преобразование исходя из математики, а не физики.

              Любой вектор, к примеру вектор скорости, можно представить суммой двух других. Вот какой в них физический смысл? Никакого!

              Цитата ExkaliBur @
              А как тогда достать частотные составляющие?

              По определению. Это и есть коэффициенты преобразования Фурье.

              Добавлено
              Цитата ExkaliBur @
              Цитата MBo @
              и говорит о вкладе определенной частотной составляющей в исходный сигнал

              А как определить фактическое значение этой частоты?

              Не определить, а измерить. Как измерить? Это зависит от методики. Можно построить аппроксимацию по 3 точкам и найти пик параболы, он будет смещён.
                Т.е. если я на вход ПФ подаю последовательность амплитуд из 4-х элементов {x1,x2,x3,x4}.
                То на выходе получу последовательность комплексных чисел {X1,X2,X3,X4}, где X1 = Re1+Im1, X2=Re2+Im2, X3=Re3+Im3, X4=Re4+Im4;
                и амплитуда первой частоты будет равна А1 = корень квадратный из (Re1*Re1 + Im1*Im1), а чему будет равна сама первая частота ν = ?
                  F[i] = i*f/N [исправил, 2Pi лишнее было]
                  где f - частота дискретизации исходного сигнала (например, 44100 Гц), N - размер буфера для Фурье (например, 1024)

                  Для данного примера нулевой отсчет - постоянная составляющая, первый - 43 Гц, последний (512-й) - 22050 Гц
                  Сообщение отредактировано: MBo -
                    Цитата ExkaliBur @
                    и амплитуда первой частоты будет равна А1 = корень квадратный из (Re1*Re1 + Im1*Im1), а чему будет равна сама первая частота ν = ?

                    Зависит от того, как вы храните коэффициенты и от того как у вас организовано преобразование Фурье.
                    Обычно вначале хранят коэффициенты при положительных частотах, потом отрицательных частотах Фурье f [единицы].
                    +0, +1, +2, .. , +(N/2-1), -(N/2), -(N/2-1), -(N/2-2), ... , -1
                    -(N/2) равен +(N/2)

                    Встречаются варианты с поменянными левой и правой половиной. А также с одной положительной

                    Частоты Фурье в зависимости от частоты дискретизации.
                    f:=f*(fd/N); [Гц]
                    Где fd- частота дискретизации к примеру 8000 Гц.
                    Сообщение отредактировано: Pavia -
                      Pavia, я предпочитаю думать что выбор той или иной расстановки элементов проблема программиста, который реализует ПФ, а не использует. Хотя с другой стороны данное замечание может быть критично, спасибо.

                      Итого, заключение
                      Имеется звуковой WAV (PCM) файл с одним каналом и частотой дискретизации 44100 глубиной 16 бит.
                      Окно для преобразования фурье 1024.
                      Считываем из файла 1024 элемента int16 по 16 бит и преобразовываем их в дробные для последующей записи в действительную часть комплексного числа.
                      На вход ПФ подается набор 1024 комплексных чисел.
                      На выходе получается набор X из 1024 комплексных чисел, в котором первый элемент:
                      - X1 = Re1 + i*Im1
                      - v1 = 2 * Pi * 1 * 44100 / 1024 = 270,59 Гц //
                      Цитата MBo @
                      F[i] = 2*Pi*i*f/N

                      - A1 = sqrt( sqr(Re1) + sqr(Im1) ) // амплитуда для частоты 270,59 Гц
                      аналогично для остальных 1023 элементов.

                      Все правильно?
                      Сообщение отредактировано: ExkaliBur -
                        >Все правильно?
                        Видимо, ты успел прочитать мой пост до исправления.
                        См. исправление и дополнение.

                        >аналогично для остальных 1023 элементов.
                        В результате значимы 512 отсчетов, остальные - зеркальное отражение (т.к. исходный сигнал чисто реальный)
                          Цитата MBo @
                          >аналогично для остальных 1023 элементов.
                          В результате значимы 512 отсчетов, остальные - зеркальное отражение (т.к. исходный сигнал чисто реальный)


                          Т.е. значимые первые 512 элементов, с индексами от 0 до 511. Так?
                            Да
                              Вообще-то значимы 513 элементов. Просто в 0-м и 512-м значима только половина, поскольку они оба вещественны.
                                Pavia, я предпочитаю думать что выбор той или иной расстановки элементов проблема программиста, который реализует ПФ, а не использует. Хотя с другой стороны данное замечание может быть критично, спасибо.

                                Итого, заключение
                                Имеется звуковой WAV (PCM) файл с одним каналом и частотой дискретизации 44100 глубиной 16 бит.
                                Окно для преобразования фурье 1024.
                                Считываем из файла 1024 элемента int16 по 16 бит и преобразовываем их в дробные для последующей записи в действительную часть комплексного числа.
                                На вход ПФ подается набор 1024 комплексных чисел.
                                На выходе получается набор X из 1024 комплексных чисел, в котором первый элемент:
                                - X1 = Re1 + i*Im1
                                - v1 = 1 * 44100 / 1024 = 43 Гц
                                - A1 = sqrt( sqr(Re1) + sqr(Im1) ) // амплитуда для частоты 43 Гц
                                аналогично для следующих 511 элементов.

                                Все правильно?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0448 ]   [ 16 queries used ]   [ Generated: 19.03.24, 07:22 GMT ]