Поискал по поиску инфу на эту тему,из более менее понятного нашел это:
http://www.kansoftware.ru/?tid=4832
Вроде бы работает нормально,но я не смог разобраться в принципе работы
Там вообщем то вся суть заключена в этом(про структуру wav прочитал):
Код:
Channeles := Ch;
SamplesPerSec := Freq;
BitsPerSample := Bits;
и т.д.
Но откуда берутся эти данные(Ch,Freq,Bits....) непонятно,их можно и по другому назвать и будет работать,то есть не в названии дело.Но как определяется откуда именно этим переменным взять данные? Подумал что просто по порядку считывается,решил проверить:
В примере было так:
Код:
TWaveHeader = record
idRiff: array[0..3] of char;
RiffLen: longint;
idWave: array[0..3] of char;
idFmt: array[0..3] of char;
InfoLen: longint;
WaveType: smallint;
Ch: smallint;
Freq: longint;
BytesPerSec: longint;
align: smallint;
Bits: smallint;
end;
TDataHeader = record
idData: array[0..3] of char;
DataLen: longint;
end;
Я решил что разбиение на заголовки просто для удобства работы, для проверки поменял так:
Код:
TWaveHeader = record
idRiff: array[0..3] of char;
RiffLen: longint;
idWave: array[0..3] of char;
idFmt: array[0..3] of char;
InfoLen: longint;
WaveType: smallint;
Ch: smallint;
Freq: longint;
BytesPerSec: longint;
align: smallint;
Bits: smallint;
idData: array[0..3] of char;
DataLen: longint;
end;
Но работать стало неверно,значит названия все таки влияют и информация не просто сплошняком идет.
Тогда непонятно по какому принципу считывается информация,поясните пожалуйста.
И как мне в таком случае считать только звуковую информацию или как считывать с определенного байта(прочитал что заголовки 44 байта занимают)?