INT 21h

Домашняя страница самого страшного прерывания

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

№ 748 В разделе "Программирование" от May 20th, 2008,

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


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

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;

Этот пример подходит только для 8-ми битных моно файлов. Для более большого охвата форматов читайте спецификацию для wave-файлов.

Ниже пример отрисовки осциллограммы для любого PCM файла, но я вам его просто так не дам ;) Предложите мне за него что-нибудь стоящее. Могу рассмотреть заказ на создание более комплексного решения или темы рядом стоящей. А еще могу дать платные консультации по формату PCM и способах работы. Как связаться со мной вы можете увидеть через панель навигации.

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

Оставьте ваш комментарий »

Форма отправки комментария

*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?