Является ли необработанный звук в 16-битном или 32-битном формате?Какова частота дискретизации (44100 Гц) и какова длительность?
В любом случае, предполагая 44,1 кГц при длительности 10 секунд ... поскольку вы не можете нарисовать 44 тысячи выборок с шириной пикселя, выберите окончательный размер экрана (например: ширина = 800 пикселей и высота = 600 пикселей) и выполните математические вычисления:
//# is (samplerate / duration) / width...
(44100 / 10) / 800 = 551;
После прочтения первых двух значений вы будете прыгать вперед на 551 байт и повторять до общего количества (.
Итак, в ваших необработанных данных, начиная с pos = 0;
...
1) Проверьте эту и следующую выборку, затем умножьте их значения вместе (sample[pos] x sample[pos+1]
).
2) Возьмите этот результат и разделите на 65335 (максимальное значение 16 бит или 2 байта).
Это конечное значение вашей первой выборки или точки.
3) Нарисуйте линию, соответствующую размеру изображения ( например: 600px), поэтому если sample = 0.83
, то:
line_height = (600 x 0.83); //# gives 498 as line height
line_count += 1; //# add plus 1 to line count (stop when it reaches 800)
4) Пропустить вперед с позиции [pos]
на + 551 байтов и повторять шаг (1) до line_count == 800;