Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Вниз

Wave chunk   Найти похожие ветки 

 
DenKop   (2002-09-01 22:42) [0]

Состряпал простенький код чтения чанка вав файла, но в результате получаю файл след. содержания:
4
4
4
4
4
4
и так 44100 раз

А вот сам код:
procedure TForm1.Button3Click(Sender: TObject);
var
buf:integer;
FileStream1:TFileStream;
f:TextFile;
i:longint;
begin
AssignFile(f,"WaveChunk.txt");ReWrite(f);
FileStream1:=TFileStream.Create("1.wav",fmOpenRead);
try
FileStream1.Seek(SizeOf(TWaveHeader),soFromBeginning);
for i:=1 to 44100 do
begin
buf:=FileStream1.Read(Buf,SizeOf(integer));
WriteLn(f,inttostr(buf));
Application.ProcessMessages;
end;
Label1.Caption:="Complete";
finally
FileStream1.Free;
CloseFile(f);
end;
end;

Уважаемые мастера подскажите пожалуйста, что я делаю не правильно.


 
DenKop   (2002-09-01 22:44) [1]

И ещё, забыл уточнить пар-ры вав:
PCM 44100KHz 16bit stereo


 
Anatoly Podgoretsky   (2002-09-01 23:09) [2]

Вот это лишнее buf:=


 
MJH   (2002-09-02 03:31) [3]

гы...а с какого перепуг WriteLn
?
может ты ноборот сделаешь?
в файл звука записывай методом tfilestream.write()
и не забудь про хедер вавы....
вобщем почитай доку по ваве, сразу поймешь что к чему


 
DenKop   (2002-09-02 22:33) [4]


> Вот это лишнее buf:=

Протупил, согласен (Read возвр. кол-во прочит. байт). Всё понял, вопрос снят.


> гы...а с какого перепуг WriteLn
> ?
> может ты ноборот сделаешь?

Вот эти умничества действительно лишние, но ежели MJH ещё неизвестно, то напомню, что WriteLn пишет в файл переданное значение с переводом каретки, а иначе я в этом txt ниччо не разберу.


> в файл звука записывай методом tfilestream.write()

Пока вопрос стоит о чтении, а не о записи.



> и не забудь про хедер вавы....

Вот про это я действительно забыл, точнее помнил только о TWaveHeader.

Благодарю за помощь.


 
MJH   (2002-09-03 04:34) [5]

Вот эти умничества действительно лишние, но ежели MJH ещё неизвестно
понтования тоже ни к чему....
во-первых - я прочитал (наверное спросони) "записать"
во-вторых - данные хранятся в PCM формате следующим образом:
L,R,L,R,L,R и т.д., где L и R - SmallInt (или Short)
ты считываешь оба канала сразу, но так можно
далее

FileStream1.Read(Buf,4);
^^^^здесь была твоя ошибка, ты присваеваешь буфу размер и поэтому и получаешь 4
L:=LOWORD(buf);
R:=HIWORD(buf);
WriteLn(f,L);WriteLn(f,R);
как видишь, WriteLn() и Write() не нуждаются в переводе записываемой переменной в стринг


 
DenKop   (2002-09-04 17:41) [6]


> во-первых - я прочитал (наверное спросони) "записать"

У каждого свои трудности.

> как видишь, WriteLn() и Write() не нуждаются в переводе
> записываемой переменной в стринг

Это мелочи. Пишется автоматически, но ведь не в этом суть.

> понтования тоже ни к чему....

Согласен, но иногда это бывает полезным.


 
DenKop   (2002-09-04 17:43) [7]


> во-первых - я прочитал (наверное спросони) "записать"

У каждого свои трудности.

> как видишь, WriteLn() и Write() не нуждаются в переводе
> записываемой переменной в стринг

Это мелочи. Пишется автоматически, но ведь не в этом суть.

> понтования тоже ни к чему....

Согласен, но иногда это бывает полезным.



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-61448
Step[B.M.]
2002-11-29 21:56
2002.12.19
... устал формулировать вопрос ...


4-61889
People
2002-11-05 22:26
2002.12.19
Как в IE программно нажать клавишу F5?


3-61473
nick-from
2002-12-02 00:59
2002.12.19
Exception


3-61422
Юра
2002-11-28 20:23
2002.12.19
масштабируемость DB-Grida


3-61449
basile
2002-11-30 15:56
2002.12.19
Aggragete





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский