Я пытаюсь создать программу, используя Qt (c ++), которая может отображать амплитудный сигнал (график, похожий на отвагу, но динамический сигнал), когда я воспроизводю аудиофайл (.wav, .mp3), используя QAudiooutput
а также QIODevice
,
Что я сделал:
с QAudioouput
Я могу воспроизвести любой аудиофайл, с помощью qwtplot я могу построить любой сигнал в 2D, в этом случае ось X будет временем, а ось Y будет амплитудой.
Теперь моя проблема в том, как получить амплитуду для каждой секунды (времени)?
Любая помощь будет оценена.
Нормальное несжатое представление звука — это просто его амплитуда как функция времени. .wav
файлы, как правило, несжатые, поэтому моно .WAV
Файл действительно самый простой из аудиофайлов: просто заголовок, за которым следует ряд амплитуд.
Обратите внимание, что цифровое аудио имеет частоту дискретизации. Например. частота дискретизации 32 кГц означает, что ваш WAV-файл имеет 32000 амплитуд в секунду. Если бы он был только один, вы бы не услышали его! (<20 Гц). Вы можете увидеть это в Audacity; Вы можете немного увеличить масштаб сигнала.