![]() |
Мне нужно загрузить файл с таким расширением и взять из него для начала амплитуды сигнала в единицу времени и на его основе строить графики и по полученным данным проводить расчеты... вообще то я понятия не имею даже с чего начать...
|
Roman Go
Начинайте всегда в таких случаях с msdn.microsoft.com (если под WIN, естественно) |
Цитата:
|
Roman Go
Начать тебе следует с того, чтобы найти файл с описанием формата WAV. |
noname00.pas
http://www.625-net.ru/archive/z1099/9.htm http://graphics.cs.msu.su/courses/cg...elp/wavfmt.htm и что дальше... я не знаю как с этим работать...:( |
Roman Go
Отлично. Первая ссылка никуда не годится, а вот вторая хороша :-) Теперь самое время понять, что же именно представляет из себя нужная тебе величина. Что есть "амплитуды сигнала в еденицу времени"? Добавлено: Зацените фишку: вторая ссылка ссылается прямо на сайт нашего факультета :-)) |
noname00.pas
Значение(я) сигнала(ов) в момент времени, т.е. время это ось Х, а значение Y... Мне дали задание проанализировать звук из файла, вот я и пытаюсь что-то делать...:( |
|
Roman Go
Ну а какие тогда проблемы? :-) Частота дискретизации в заголовке есть. Моно/стерео тоже есть. Даже разрядность есть. Значит сопоставить масштаб вертикальной и горизонтальной оси ты уже можешь :-) А дальше собственно значения - они в блоке данных. Я проблемы не вижу... [s]Исправлено: noname00.pas, 20:23 7-12-2002[/s] |
А какой тип у этого wav, как его связать с переменной, как считывать данные из него я ничего не могу сделать... только сильно не пинайте, в книгах, которые у меня есть такого нету, помочь, так тоже никого на кафедре, программирующего не Delphi нет, вся информация через интернет...
|
Roman Go
Конечно нет. Зато есть в книгах по Паскалю :-) Объявляешь в нужном месте переменную типа "file". Из таких файлов чтение производится поблочно, открывать его нужно с дополнительным параметром - длина блока. Пишешь "assign(F, '<путь к твоему файлу>')". Здесь F - твоя файловая переменная. Если путь к файлу заранее неизвестен, то лучше писать относительный путь, то есть путь относительно директории, в которой была запущена программа :-) Далее чтение блока производится командой BlockRead(F, Buf, Count), F - файловая переменная, Buf - переменная, куда будет записана прочитанная информация, Count - количество блоков для считывания. Примечание 1: Буферная переменная должна быть соответствующего размера, чтобы ничего не переполнилось. Примечание 2: Существуют некоторые ограничения на размер блока и на количество считываемых блоков. (это посмотри в хелпе - я не помню :-) ) Добавлено: Да, совсем забыл... Чтобы открыть файл на чтение нужно выполнить команду reset(F, 1) Здесь 1 - длина блока. Кстати с блоками длины 1 работать удобнее, т.к. из них можно составить блок любой длины. :-) |
Код:
var возможно я не с того конца начал, для начала я не пойму что это за формат, http://*http://graphics.cs.msu.su/co...elp/wavfmt.htm мне ничего не понятно кроме общих слов, "от начала на столько то" а вот на сколько, и как это сколько отступить не понимаю... неполучается... Что это ch, ah, h и как с ними работать... [s]Исправлено: Roman Go, 6:37 10-12-2002[/s] |
Код:
while not eof(f) do Читает, то он читает и даже рисунок похожий получается, но данные я читаю не те, дело в том что у меня есть программка читающая wav файлы и если я открываю один и тот же файл своей программкой и ей я получаю разные результаты. Число каналов - 1, Число байт для представления одного отсчета - 2, разрядность - 16. Это параметры файла на котором я эксперементирую, дело в том что не один из них я не учитываю, ибо не знаю как это сделать. Цитата:
:help: как учесть при чтение разрядность, число байт для чтения, число каналов... Добавлено: Что такое полное слово? Как прочитать старший и младший байт, и вообще имеет ли это какое-либо отношение к тому что я пытаюсь сделать? Добавлено: Цитата:
Цитата:
|
Время: 15:33. |
Время: 15:33.
© OSzone.net 2001-