Графическое изображение формы сигнала .wav файла

Я хотел вывести форму сигнала на печать .wav файла для определенной ширины графического изображения.

Какой метод я должен использовать для отображения корректного графика формы сигнала?

Любые Предложения, учебное руководство, ссылки одобрены....

9
задан Ashish 14 January 2010 в 17:50
поделиться

2 ответа

Базовый алгоритм:

  1. Найти номер образцов, чтобы вписаться в бессоветую
  2. . Определите, сколько образцов должно быть представлено каждым пикселем
  3. , рассчитайте значение RMS (или пика) для каждый пиксель из образца блока. Усреднение не работает для аудиосигналов.
  4. Нарисуйте значения.

Давайте предположим, что n (количество образцов) = 44100, w (ширина) = 100 пикселей:

, затем каждый пиксель должен представлять 44100/100 == 441 образцы (блокируют)

for (x = 0; x < w; x++)
    draw_pixel(x_offset + x,
               y_baseline - rms(&mono_samples[x * blocksize], blocksize));

вещи, чтобы попробовать для разных визуальных Появляются:

  • RMS VS MAX Value из блока
  • Перекрывающиеся блоки (блокирует х, но аванс х / 2 для каждого пикселя и т. Д.)

Передача не будет работать, как вы потеряете информацию.

16
ответ дан 4 December 2019 в 10:04
поделиться

Практически любой вид заговоров специфичен для платформы. Тем не менее, .wav-файлы наиболее часто используются под Windows, так что, наверное, вполне справедливо предположить, что вас интересует в первую очередь (или исключительно) код и для Windows. В данном случае, это в основном зависит от ваших требований к скорости. Если вам нужен достаточно статический дисплей, вы можете просто рисовать с помощью MoveTo и (в основном) LineTo. Если это недостаточно быстро, вы можете получить маленькую скорость, используя что-то вроде PolyLine.

Если вы хотите, чтобы она была значительно быстрее, скорее всего, лучше всего использовать что-то вроде OpenGL или DirectX-графики. Любой из них делает большую часть реальной работы на видеокарте. Учитывая то, что вы говорите о рисовании графика звуковых волн, даже низкокачественная видеокарта, практически не работающая над оптимизацией рисунка, наверняка будет достаточно легко справляться практически со всем, что вы, скорее всего, бросите на нее.

Правка: Что касается чтения самого файла .wav, то формат довольно прост. Большинство .wav-файлов являются несжатыми PCM-образцами, поэтому их отрисовка представляет собой простое чтение заголовков, чтобы выяснить размер образца и количество каналов, а затем масштабировать данные, чтобы они поместились в вашем окне.

Edit2: У вас есть пара вариантов обработки левого и правого каналов. Один из них заключается в том, чтобы нарисовать их на двух отдельных графиках, обычно один над другим. Другой - наложить их друг на друга, но разными цветами. Что является более подходящим, зависит от того, чего вы пытаетесь достичь - если это в основном для того, чтобы выглядеть круто, наложенный, многоцветный график, вероятно, будет работать хорошо. Если вы хотите позволить пользователю действительно детально рассмотреть то, что там есть, вам, вероятно, понадобятся два отдельных графика.

2
ответ дан 4 December 2019 в 10:04
поделиться