Амплитуда аудио треков - PullRequest
1 голос
/ 24 июля 2010

Я хочу разработать аудио редактор с использованием Qt.Для этого мне нужно построить график формы музыкального трека, который, как мне кажется, должен представлять собой график пиковой амплитуды звука в зависимости от времени (пожалуйста, исправьте меня, если я ошибаюсь).

В настоящее время я использую PhononОбъект класса :: AudioOutput в качестве приемника аудио и связал его с моим объектом класса Phonon :: MediaObject для воспроизведения аудиофайла.

Теперь, чтобы нарисовать сигнал, мне нужно знать амплитуду звуковой дорожки в каждую секунду.(или около того) из этого объекта AudioOutput, чтобы я мог нарисовать линию (используя QPainter) длины, пропорциональной частоте звука в разное время, и, следовательно, получить мою форму волны.

Итак, пожалуйста, помогите мне, какполучить амплитуду аудиодорожек в разное время.

Во-вторых, я использую правильный способ построения графиков осциллограмм аудиодорожек - построение графиков амплитуд звука и времени путем нанесения линий на объект QPainter на виджете в разное время.

Спасибо.

1 Ответ

2 голосов
/ 12 августа 2010

В примере Spectrum Analyzer , который поставляется вместе с Qt (в каталоге demos / spectrum), есть код, который выполняет обе ваши задачи (вычисление пиковой амплитуды и отображение звуковых сигналов).1003 *

Снимок экрана демонстрации Spectrum Analyzer, работающей на Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

Эта демонстрация также рассчитывает и отображает частотный спектр.Как указывает другой комментатор, это отличается от графика формы сигнала: спектр представляет собой график зависимости амплитуды от частоты, тогда как форма сигнала отображает амплитуду в зависимости от времени.

Демонстрация использует QtMultimedia вместо Phonon для захвата и рендеринга аудио,Если вы заинтересованы только в воспроизведении аудио и вам не нужно записывать его, Phonon может быть достаточно, но имейте в виду, что поддержка потоковой передачи (например, Phonon::MediaSource(QIODevice *)) доступна не на всех платформах.QAudioInput и QAudioOutput, с другой стороны, хорошо поддерживаются, по крайней мере для аудиоданных PCM, на всех основных платформах, на которые нацелен Qt.

...