INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Delphi: Отрисовка графика wave-файла

№ 748 В разделе "Programming" от May 20th, 2008,
В подшивках:

Долгое время я делал различные велосипеды пока не понял, что можно было все сделать проще.

В этом нам поможет компонент TChart. Лепим его на форму, настраиваем как нравится. Далее открываем wav файл и тупо читаем с него данные в data чанке, делая вывод прямо в Chart1. Данный пример читает первые 2 килобайта и выводит эти данные в график, но подходит только для 8-ми битных моно файлов.

const
  data_chunk_position= smallint(58);
  ...
  ...
procedure Tgraph_form.FormShow(Sender: TObject);
var
  memstr:TMemoryStream;
  buf:array [1..2048] of byte;
  i:integer;
  readed:integer;
begin
  memstr:=TMemoryStream.Create;
  memstr.LoadFromFile('wave\'+reabilit.id+'.wav');
  memstr.Seek(data_chunk_position, soFromBeginning);
  //очищаем график
  Chart1.Series[0].Clear;
  //читаем датачанк блоком по 2048
  readed:=memstr.Read(buf,sizeof(buf));
  //добавляем точки в график
  i:=1;
  repeat
    Chart1.Series[0].Add(buf[i]);
    inc(i)
  until i>readed;
end;

Ниже пример отрисовки осциллограммы для любого PCM файла https://git.blindage.org/21h/draw-wave

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Яндекс.Метрика

Fortune cookie: "Heresy is only another word for freedom of thought." [Graham Greene, 1981]