Осциллограмма звукового файла

Калькулятор отображает форму сигнала из входного wav-файла.

Этот калькулятор можно использовать для просмотра осциллограммы аудио сигнала. Осциллограмма это форма аудио сигнала, как функция от времени. Калькулятор принимает на вход wav файлы в формате PCM (линейный или закодированный А или Мю правилу) в результате выдается график с осциллограммой. Калькулятор может отображать осциллограммы для многоканальных аудио-файлов (стерео, квадро и т.д.)

PLANETCALC, Осциллограмма аудио файла

Осциллограмма аудио файла

Звуковой файл
  • Перетащите сюда файлы
Знаков после запятой: 3
Формат файла
 
Осциллограмма
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Алгоритм отображения осциллограммы

PCM данные хранятся в виде значений амплитуды сигнала, зафиксированного с равными промежутками времени (частота дискретизации). Одна секунда низкокачественного аудио с частотой дискретизации 8кГц содержит 8 тысяч отсчетов амплитуды. Чтобы отобразить осциллограмму этого фрагмента без преобразований потребуется экран шириной 8 тыс. пикселей, но кажется, что такое разрешение в 2020 году еще не столь популярно. Следовательно требуется некий алгоритм для упаковки формы сигнала.
Наш калькулятор использует среднеквадратическое значение для отображения нескольких отсчетов в виде одной линии на графике осциллограммы. Краткое описание алгоритма отрисовки:

  • По разрешению экрана определить число точек P (в калькуляторе этот параметр задается в настройках)
  • Вычислить число отсчетов в одной точке S=T/P, where T - количество отсчетов амплитуды во всем фрагменте
  • Для каждой точки вычислить среднеквадратичное значение по формуле:
    R=\sqrt{\sum_{n=1}^{S} s(n)^2}
    где s(n) - n-ый отсчет амплитуды в заданной точке графика
  • Для каждой точки графика нарисовать вертикальную линию от -R до R

Некоторые особенности форматов PCM аудио

PCM аудио данные могут хранитья либо в виде чисел с плавающей точкой, либо в виде целых чисел различной разрядности. Для отрисовки в едином стиле калькулятор преобразовывает амплитуды в виде целых чисел в значения с плавающей точкой в диапазоне от -1 до 1. Как оказалось существует два способа хранения амплитуды в виде целых чисел. Если разрядность отсчета 8 бит или меньше, то значение амплитуды хранится как беззнаковое целое, в противном случае (разрядность более 8 бит) значение хранится со знаком в дополнительном коде. Калькулятор преобразует 8-битные значения амплитуды в число с плавающей точкой по формуле: (s(n)-128)/128. Более длинные целые разрядностью 16, 24 или 32 бита преобразуются в число с плавающей точкой так: s(n)/|int_min|. |int_min| равняется 32768; 8388608 и 2147483648 для целого длинной 16, 24 и 32 бит соответственно.

Ссылка скопирована в буфер обмена
PLANETCALC, Осциллограмма звукового файла

Комментарии