Осциллограмма звукового файла
Калькулятор отображает форму сигнала из входного wav-файла.
Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/8627/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).
Этот калькулятор можно использовать для просмотра осциллограммы аудио сигнала. Осциллограмма это форма аудио сигнала, как функция от времени. Калькулятор принимает на вход wav файлы в формате PCM (линейный или закодированный А или Мю правилу) в результате выдается график с осциллограммой. Калькулятор может отображать осциллограммы для многоканальных аудио-файлов (стерео, квадро и т.д.)
Алгоритм отображения осциллограммы
PCM данные хранятся в виде значений амплитуды сигнала, зафиксированного с равными промежутками времени (частота дискретизации). Одна секунда низкокачественного аудио с частотой дискретизации 8кГц содержит 8 тысяч отсчетов амплитуды. Чтобы отобразить осциллограмму этого фрагмента без преобразований потребуется экран шириной 8 тыс. пикселей, но кажется, что такое разрешение в 2020 году еще не столь популярно. Следовательно требуется некий алгоритм для упаковки формы сигнала.
Наш калькулятор использует среднеквадратическое значение для отображения нескольких отсчетов в виде одной линии на графике осциллограммы. Краткое описание алгоритма отрисовки:
- По разрешению экрана определить число точек P (в калькуляторе этот параметр задается в настройках)
- Вычислить число отсчетов в одной точке S=T/P, where T - количество отсчетов амплитуды во всем фрагменте
- Для каждой точки вычислить среднеквадратичное значение по формуле:
где 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 бит соответственно.
Комментарии