Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi, wav

Ответить
Настройки темы
Delphi - Delphi, wav

Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


Мне нужно загрузить файл с таким расширением и взять из него для начала амплитуды сигнала в единицу времени и на его основе строить графики и по полученным данным проводить расчеты... вообще то я понятия не имею даже с чего начать...

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 15:06, 04-12-2002

 

Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


Roman Go
Конечно нет. Зато есть в книгах по Паскалю :-)
Объявляешь в нужном месте переменную типа "file". Из таких файлов чтение производится поблочно, открывать его нужно с дополнительным параметром - длина блока.
Пишешь "assign(F, '<путь к твоему файлу>')". Здесь F - твоя файловая переменная. Если путь к файлу заранее неизвестен, то лучше писать относительный путь, то есть путь относительно директории, в которой была запущена программа :-)
Далее чтение блока производится командой BlockRead(F, Buf, Count), F - файловая переменная, Buf - переменная, куда будет записана прочитанная информация, Count - количество блоков для считывания.

Примечание 1: Буферная переменная должна быть соответствующего размера, чтобы ничего не переполнилось.
Примечание 2: Существуют некоторые ограничения на размер блока и на количество считываемых блоков. (это посмотри в хелпе - я не помню :-) )



Добавлено:

Да, совсем забыл...
Чтобы открыть файл на чтение нужно выполнить команду
reset(F, 1)
Здесь 1 - длина блока. Кстати с блоками длины 1 работать удобнее, т.к. из них можно составить блок любой длины. :-)

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)


Отправлено: 08:20, 09-12-2002 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
var
 *Form1: TForm1;
 *i, i1:integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var f:file;
 * *buf:char;

begin
 * *//i:=0;
 * *assignfile(f,'1.wav');
 * *reset(f, 1);
 * *seek(f, i);
 * *BlockRead(f, buf, 1);
 * *memo1.Lines.Add(buf);
 * *closefile(f);
 * *i:=i+1;
end;

procedure TForm1.Button2Click(Sender: TObject);
var f:file;
 * *buf:integer;
 * *p:^integer;
begin
 * *//i:=0;
 * *assignfile(f,'1.wav');
 * *reset(f, 1);
 * *seek(f, i1);
 * *BlockRead(f, buf, 1);
 * *p:=@buf;
 * *memo2.Lines.Add(inttostr(p^));
 * *closefile(f);
 * *i1:=i1+1;
end;
Данные то я прочитал, только вот проблема то в том, что я явно не то читаю, что мне нужно, когда читаю по символьно, то выводит непонятно что, а когда предпологаю чтение чисел у меня всегда идут, какие-то цифры, даже там где по идее должны быть буквы... то что там указатели есть, так это я подумал может там храняться указатели на нужные мне значения пытался их достать, глупость конечно... но раз уж набрал так пусть остается


возможно я не с того конца начал, для начала я не пойму что это за формат, http://*http://graphics.cs.msu.su/co...elp/wavfmt.htm мне ничего не понятно кроме общих слов, "от начала на столько то" а вот на сколько, и как это сколько отступить не понимаю... неполучается... Что это ch, ah, h и как с ними работать...

[s]Исправлено: Roman Go, 6:37 10-12-2002[/s]

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 05:35, 10-12-2002 | #12


Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
  while not eof(f) do
   begin
    blockread(f,buf,sizeof(buf));
    setLength(data, length(data)+1);
    data[i]:=buf;
    inc(i);
   end;

  closefile(f);
Вот этот кусочек кода читает данные, чтение начинается сразу после индификатора data (+4 байта отведенных под размер области данных).
Читает, то он читает и даже рисунок похожий получается, но данные я читаю не те, дело в том что у меня есть программка читающая wav файлы и если я открываю один и тот же файл своей программкой и ей я получаю разные результаты.
Число каналов - 1, Число байт для представления одного отсчета - 2, разрядность - 16. Это параметры файла на котором я эксперементирую, дело в том что не один из них я не учитываю, ибо не знаю как это сделать.
Цитата:
Число байт для представления одного отсчета - 2
А я читаю по четыре байта, а если читаю по 2 то получаю абсолютно неправильный результат. К тому же мой код дает ровно половину от тех значений, которые записанны в файле
как учесть при чтение разрядность, число байт для чтения, число каналов...


Добавлено:

Что такое полное слово? Как прочитать старший и младший байт, и вообще имеет ли это какое-либо отношение к тому что я пытаюсь сделать?

Добавлено:

Цитата:
Формат звуковых данных с дискретностью 16 бит выглядит аналогично. Для монофонического сигнала данные хранятся в массиве 16-битовых слов.
Один байт - 8 бит, а я таки читаю по четыре байта.
Цитата:
Для стерео-фонического используется массив двойных слов, причем младшему слову соот-ветствует левый канал, а старшему - правый.

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 06:23, 17-02-2003 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi, wav

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
так возможно? wav--> mp3--> wav(качество mp3) --> mp3(качество как у mp3 предыдущего) ALEXEY_DFD Видео и аудио: обработка и кодирование 4 19-12-2009 21:57
Мультимедиа - [addon] LameDropXPd (программа для конвертации wav/mp3/wav) Fraerok Наборы обновлений для Windows XP/2003/Windows 7 7 27-08-2009 20:00
Из Midi в Wav Murder7 Хочу все знать 2 13-06-2006 19:59
WAV to MP3 Trialist Хочу все знать 15 04-05-2006 20:28
Конвертор из Midi в Wav KEugeNik Хочу все знать 3 27-10-2003 09:26




 
Переход