|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#31  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#32  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
  | 
| 
			 
			#33  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#34  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
   Можно конечно, но сложно. Ведь те данные оформлены для чтения человеком. А обычно чем лучше что-то читается человеком, тем хуже это получается у программ. И наоборот. | 
| 
			 
			#35  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#36  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Ну а если хочешь чтобы твоя программа не зависела от сторонних утилит, то тебе нужно изучать алгоритмы шифрования, а вовсе не структуру wav-файла. Если же хочешь изобрести свой алгоритм шифрования, то готовься к тому, что он скорее всего окажется не такой стойкий к взлому как общепринятые алгоритмы. | 
| 
			 
			#37  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#38  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| 
			 
			#39  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#40  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Код: procedure WriteWav();
type
  TChunkID = packed array [0..3] of Char;
  THeader = packed record
    ChunkID       : TChunkID;
    ChunkSize     : Longword;
    Format        : TChunkID;
    Subchunk1ID   : TChunkID;
    Subchunk1Size : Longword;
    AudioFormat   : Word;
    NumChannels   : Word;
    SampleRate    : Longword;
    ByteRate      : Longword;
    BlockAlign    : Word;
    BitsPerSample : Word;
    Subchunk2ID   : TChunkID;
    Subchunk2Size : Longword;
  end;
var
  Header: THeader;
  NumSamples, BytsPerSample, Sample, I, J: Longword;
  fs: TFileStream;
begin
  NumSamples := ;// Здесь записываешь количество сэмплов у твоего звука
  BytsPerSample := 2; // Размер сэмплов в байтах твоего звука. Обычно 1 или 2, но можно и 3 и 4.
  Header.ChunkID       := 'RIFF';
  Header.Format        := 'WAVE';
  Header.Subchunk1ID   := 'fmt ';
  Header.Subchunk1Size := 16;
  Header.AudioFormat   := $0001; // Только PCM
  Header.NumChannels   := ;// Здесь записываешь число каналов своего звука. 1 - моно, 2 - стерео и т.д.
  Header.SampleRate    := ;// Здесь записываешь частоту дискретизации своего звука. Типа 8000, 44100 и т.п.
  Header.BitsPerSample := BytsPerSample * 8;
  Header.BlockAlign    := Header.NumChannels * BytsPerSample;
  Header.ByteRate      := Header.SampleRate * Header.BlockAlign;
  Header.Subchunk2ID   := 'data';
  Header.Subchunk2Size := NumSamples * Header.BlockAlign;
  Header.ChunkSize     := Header.Subchunk2Size + SizeOf(Header) - 8;
  fs := TFileStream.Create(Имя файла в который выводить, fmCreate);
  try
    fs.WriteBuffer(Header, SizeOf(Header));
      
    for I := 1 to NumSamples do
    begin
      for J := 1 to Header.NumChannels do
      begin
        Sample := ;{ Здесь читаешь очередной сэмпл оттуда, куда их записывал
                     твой конвертор "из относительного в абсолютное частотное звучание"}
        fs.WriteBuffer(Sample, BytsPerSample);
      end;
    end;
  finally
    fs.Free;
  end;
end; | 
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
|  
Dmitry_DM (12.08.2012)
 | ||
| 
			 
			#41  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Код: procedure TForm1.Button4Click(Sender: TObject);
procedure WriteWav();
type
  TChunkID = packed array [0..3] of Char;
  THeader = packed record
    ChunkID       : TChunkID;
    ChunkSize     : Longword;
    Format        : TChunkID;
    Subchunk1ID   : TChunkID;
    Subchunk1Size : Longword;
    AudioFormat   : Word;
    NumChannels   : Word;
    SampleRate    : Longword;
    ByteRate      : Longword;
    BlockAlign    : Word;
    BitsPerSample : Word;
    Subchunk2ID   : TChunkID;
    Subchunk2Size : Longword;
  end;
var
  Header: THeader;
  NumSamples, BytsPerSample, Sample, I, J: Longword;
  fs: TFileStream;
begin
  NumSamples := 22050;// Здесь записываешь количество сэмплов у твоего звука
  BytsPerSample := 2; // Размер сэмплов в байтах твоего звука. Обычно 1 или 2, но можно и 3 и 4.
  Header.ChunkID       := 'RIFF';
  Header.Format        := 'WAVE';
  Header.Subchunk1ID   := 'fmt ';
  Header.Subchunk1Size := 16;
  Header.AudioFormat   := $0001; // Только PCM
  Header.NumChannels   := 1;// Здесь записываешь число каналов своего звука. 1 - моно, 2 - стерео и т.д.
  Header.SampleRate    := 44100;// Здесь записываешь частоту дискретизации своего звука. Типа 8000, 44100 и т.п.
  Header.BitsPerSample := BytsPerSample * 8;
  Header.BlockAlign    := Header.NumChannels * BytsPerSample;
  Header.ByteRate      := Header.SampleRate * Header.BlockAlign;
  Header.Subchunk2ID   := 'data';
  Header.Subchunk2Size := NumSamples * Header.BlockAlign;
  Header.ChunkSize     := Header.Subchunk2Size + SizeOf(Header) - 8;
 //fs := TFileStream.Create('Writen.wav', fmCreate);
  try
    fs.WriteBuffer(Header, SizeOf(Header));
    for I := 1 to NumSamples do
    begin
      for J := 1 to Header.NumChannels do
      begin
        Sample := что сюда записать, чтобы для начала и для моего понимания, в файл шли теперешние сэмплы (не измененные)?    ;{ Здесь читаешь очередной сэмпл оттуда, куда их записывал
        твой конвертор "из относительного в абсолютное частотное звучание"}
       fs.WriteBuffer(Sample, BytsPerSample);
if SaveDialog2.Execute then
Form1.fs.SaveToFile(Form1.SaveDialog2.FileName + '.wav');
   fs.Free;
  end;
  end;
  finally
  end;
  end;
end. | 
| 
			 
			#42  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
     Цитата: 
 Код: Sample := Massiv[I, J]; Цитата: 
 Код: procedure TForm1.Button4Click(Sender: TObject);
begin
  if SaveDialog2.Execute then
  begin
    WriteWav(SaveDialog2.FileName);
  end;
end; | 
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
|  
Dmitry_DM (12.08.2012)
 | ||
| 
			 
			#43  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#44  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
  | 
| 
			 
			#45  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 |