Как вытащить массив частот из системы для отображения в виде графика в консоли?
Как вытащить массив частот из системы? Моя задача - нарисовать синусоидную живую гистограмму звука на С++ в консоли(может и не в консоли). Теоретически надо перетащить вот эту штукенцию из настроек(вложена картинка).
Звук вашей системе(например, при прослушивании музыки) взаимодействует и хранится в числовой последовательности. Эти числа и есть те частоты, с помощью который выводится звук. Как их получить=)?
Ответы (1 шт):
То, что изображено на картинке, вовсе не частота. Эта полоска из параметров звукового устройства в Windows 10 показывает среднюю или пиковую амплитуду звука за короткий период времени. Именно это значение характеризует ощущаемую громкость. Программно пиковую амплитуду в Windows можно получить с использованием так называемых Peak meters (интерфейс IAudioMeterInformation в WASAPI).
Звук вашей системе(например, при прослушивании музыки) взаимодействует и хранится в числовой последовательности. Эти числа и есть те частоты, с помощью который выводится звук. Как их получить=)?
Это не совсем так. Последовательность чисел в PCM Audio - это не частоты, это мгновенные значения смещения колеблющейся частицы гипотетического тела, источника звука, от положения равновесия. Для получения данных воспроизводимого звука используется механизм Loopback Recording. Пример есть здесь: https://ru.stackoverflow.com/a/794133/240512
Частота же, в случае сложного звука, беспорядочно изменяется в каждый момент времени и массив частот как таковой не имеет смысла. Обычно говорят о спектре частот, то есть таблице, в которой показано, какая доля энергии звука приходится на определенную частоту. Диаграмма при этом выглядит не полоской, а графиком кривой линии с пиками на месте гармоник, вид которой меняется во времени. Для получения спектров на основе данных PCM Audio (это называется преобразованием Фурье) есть разные библиотеки, например FFTW.