![]() |
|
|
#1
|
|||
|
|||
|
От нефиг делать Пишу фсякую ерундень. Вот решил написать звуковаой редактор типа NeroWaveEditor. Т.е. чтобы был функционален, прост в обращении и быстр. Начал писать. Пока только для wav. Кто хочет принять участие? Условие одно. Всё должно быть строго OpenSource, просто не льблю скрывать что-то от других.
![]() |
|
#2
|
|||
|
|||
|
Итак, приступлю.
Определим сначала с чем мы будем иметь дело: Исходный файл: wav(потом что-нить другое добавлю) Цель: Загрузить файл в прогу. Код:
//Тип, описывающий формат:
type TWaveHeader = record//будет заголовок нашего файла
ChunkRiff: array [0..3] of char;//'RIFF'
RiffLen: longint;
ChunkWave: array [0..3] of char;//'WAVE'
ChunkFmt: array [0..3] of char; //'fmt '
InfoLen: longint;
WaveType: smallint;//(1=pcm) метод сжатия
Ch: smallint;
Freq: longint;
BytesPerSec: longint;
align: smallint;
Bits: smallint;
end;
type TWaveHeaderData = record
ChunkData: array[0..3] of char;//'data'
DataLen: longint;
end;
тут такое дело. Можно было бы поместить всё в одном типе, но заголовки wav файлов различны. Поэтому желательно разделить эти части на две. Далее будет понятно, почему.
var main: TMain;
WavFile,WavMemory:TStream;
Hdr:TWaveHeader;
hdrd:TWaveHeaderData;
Procedure OpenWavFile(FileName:String);
var n: integer;
begin
WavFile:=TFileStream.Create(filename,fmOpenRead,fmShareDenyNone);
WavMemory:=TMemoryStream.Create;
WavMemory.CopyFrom(WavFile,WavFile.Size);
WavFile.Free;
WavMemory.Position:=0;
WavMemory.Read(Hdr,sizeof(hdr)); // читаем заголовок
WavMemory.Position:=0;
wavmemory.Read(hdrd,sizeof(hdrd));
n:=wavmemory.Position;
while hdrd.idData<>'data' do begin
n:=n+1;
wavmemory.Position:=n-4;
wavmemory.Read(hdrd,sizeof(hdrd));
if wavmemory.Position>1024 then begin //вот тут заминочка, пока не решил...
ShowMessage('Неподдерживаемый формат файла!');
WavMemory.Free;
exit;
end
end;
end;
procedure Tmain.openfileClick(Sender: TObject);
begin
if opendialog1.Execute then
openWavFile(opendialog1.FileName);
end;Код:
Фсё! Данные файла успешно заносятся в поток! Люди, не спите, подключайтесь!!! ![]() Последний раз редактировалось Admin, 07.02.2010 в 14:20. |
|
#3
|
|||
|
|||
|
Чё, никто не заинтересован?
|