Название: DSP Спекта Звукового сигнала Отправлено: horror812 от Март 29, 2011, 00:55 Всем привет, кто-нибудь
работал со звуком (не обязательно с QT) Нужно отрисовать спектральную форму сигнала. С теорией немного разобрался, буду рад помощи. Встречал Аудисити, там есть то что нужно, но исходник для меня трудноват. Есть ли что-нибудь попроще? Спасибо. Название: Re: DSP Спекта Звукового сигнала Отправлено: ilyagoo от Март 29, 2011, 10:57 делаешь спектр и рисуешь. в чем вопрос?
Название: Re: DSP Спекта Звукового сигнала Отправлено: Denjs от Март 29, 2011, 11:25 Самый простой источник? вы можете получить значения вашего сигнала в каждый момент времени?
Преобразование Фурье помните? вот берите снимок вашего сигнала за период, делайте преобразование фурье, и полученные коэффициенты членов ряда - это и есть "спектр". Потом его надо обработать, растянуть, масштабировать и т.п. ))) Тема Фурье преобразования хорошо расписана, есть множество алгоритмов, бытрое-фурье-преобразоание, дискретное фурье преобразование и прочее... ;) вперед? :) Название: Re: DSP Спекта Звукового сигнала Отправлено: Denjs от Март 29, 2011, 14:05 Внимание! (барабанная дробь)
QtAssistant: Home >> Examples >> Spectrum Analyzer (Qt 4.7.2) Но найти пример почему-то получается только через поиск по индексам. И более того - пример судя по скриншоту для мобильного девайса. Но думаю суть и ключевые классы и на десктопе будут прекрасно работать.. иначе Qt станет уж и не совсем Qt-шным)))) Цитировать The Spectrum Analyzer demo shows how the QtMultimedia Module can be used in Qt applications to capture and then play back an audio stream. Ссылка на FFTReal вот: http://ldesoras.free.fr/prod.html... Spectrum analysis is performed by calculating the Fast Fourier Transform (FFT) of a segment of audio data. An open-source library, FFTReal, against which the application is dynamically linked, is used to compute the transform. ;D Удачи) Название: Re: DSP Спекта Звукового сигнала Отправлено: horror812 от Март 29, 2011, 20:13 Цитата: ilyagoo делаешь спектр и рисуешь. в чем вопрос? )) хороший ответ.... мог бы ничего не писать....Цитата: Denjs Самый простой источник? вы можете получить значения вашего сигнала в каждый момент времени? Да, разобрался с чтением wav файла, и основными понятиями (типа частоты дискретизации и тп)Преобразование Фурье помните? вот берите снимок вашего сигнала за период, делайте преобразование фурье, и полученные коэффициенты членов ряда - это и есть "спектр". Потом его надо обработать, растянуть, масштабировать и т.п. ))) и дискретным преобразование Фурье Цитата: Denjs QtAssistant: Home >> Examples >> Spectrum Analyzer Угу, у меня тоже из демонстрации не запускался ( (Qt 4.7.2) Но найти пример почему-то получается только через поиск по индексам. И более того - пример судя по скриншоту для мобильного девайса. Но думаю суть и ключевые классы и на десктопе будут прекрасно работать.. иначе Qt станет уж и не совсем Qt-шным)))) Я посмотрел код. Там для fft используется библиотека fftw3, я пока использую простой пример из вики, для преобразование фуре хватит. С волновой и амплитудной формой я разобрался. Теперь хочу вот такой как в Аудисити (http://savepic.net/894318.jpg) Немного разбирался с исходниками, там используются оконные функции Хамминга или Хана. В общем такую спектрограмму хочу отразить и у себя. Алгоритм я представляю, берем кусочек, применяем к нему весовую функции и отображаем этот кусочек и тп Буду рад помощи) Название: Re: DSP Спекта Звукового сигнала Отправлено: xokc от Март 30, 2011, 18:21 Алгоритм я представляю, берем кусочек, применяем к нему весовую функции и отображаем этот кусочек и тп Ну так вроде разобрался же уже - какой еще помощи надо? Делаешь изображение размером Nx1 пиксель (N - размерность области значений весовой функции), рисуешь в нём с помощью QLinearGradient нужную тебе палитру, получаешь указатель на 1-й пиксель (quint32 *ptr = (quint32 *)imgPalette.scanLine(0)), вычисляешь весовую функцию Буду рад помощи) Код для каждого из элементов спектра, заменяешь её значение на ptr[y] и выводишь в соответствующий пиксель результирующего QImage. Название: Re: DSP Спекта Звукового сигнала Отправлено: horror812 от Март 30, 2011, 22:59 xokc Привет.
С выводом и получением спектры разобрался. Хотя я местами сомневаюсь)) Приведу код в нормальный вид. И что-нибудь еще задам) А про цвет, пока нормализовал значения и вывожу серым. А там посмотрим ;D ты этим тоже занимаешься\занимался?) Что посоветуешь полистать из этой темы? желательно по коду, а не математику. может статьи есть или еще что-нибудь ;) Единственную книжку которую я пока нашел "Обработка звука на РС" Секунов... Спасибо Название: Re: DSP Спекта Звукового сигнала Отправлено: xokc от Апрель 01, 2011, 18:22 ты этим тоже занимаешься\занимался?) Я занимаюсь больше архитектурой системы и её GUI, спектр для меня считают другие люди.Что посоветуешь полистать из этой темы? Ну я просто не понимаю, что именно тебе не понятно. Задай конкретные вопросы - получишь конкретные ответы.Название: Re: DSP Спекта Звукового сигнала Отправлено: horror812 от Апрель 02, 2011, 17:35 привет,
С этим вроде разобрался. А почитать, думал посоветуешь, если знаешь непосредственно про методы реализации, я математики много нашел, хотел чего-нибудь по коду, что бы быть уверенным, что делаю правильно ;D Название: Re: DSP Спекта Звукового сигнала Отправлено: Admin от Апрель 05, 2011, 13:09 Народ, есть замечательная либа по математике GSL
http://www.gnu.org/software/gsl/ там не только Фурье, а многое другое уже давно пользуюсь и вам рекомендую. Название: Re: DSP Спекта Звукового сигнала Отправлено: once_again_abc от Сентябрь 04, 2011, 03:19 Народ, есть замечательная либа по математике GSL http://www.gnu.org/software/gsl/ там не только Фурье, а многое другое уже давно пользуюсь и вам рекомендую. спасибо за ссылку! и еще глупый вопрос =) сканлайн это r1g1b1 r2g2b2 r3g3b3 ... rNgNbN по горизонтали? где rgb endian-specific. Название: Re: DSP Спекта Звукового сигнала Отправлено: xokc от Сентябрь 12, 2011, 20:09 и еще глупый вопрос =) Зависит от типа QImage. Может еще быть rgba или argb для QImage с альфа-каналом.сканлайн это r1g1b1 r2g2b2 r3g3b3 ... rNgNbN по горизонтали? где rgb endian-specific. |