//Ecris dans un fichier depuis un WAV public static void WriteFile(string path, DataHeader Header, byte[] Buffer) { FileStream fileStream = new FileStream(path, FileMode.Create); BinaryWriter writer = new BinaryWriter(fileStream); //Ecrire le chunk de base writer.Write(Header.FileTypeID); writer.Write(Header.FileLenght); writer.Write(Header.MediaTypedID); //Ecrire le chunck du format writer.Write(Header.ChunkIDFormat); writer.Write(Header.ChunkSizeFormat); writer.Write(Header.FormatTag); writer.Write(Header.Channels); writer.Write(Header.Frequency); writer.Write(Header.AverageBytesPerSec); writer.Write(Header.BlockAlign); writer.Write(Header.BitsPerSample); //Ecrire le chunck de données writer.Write(Header.ChunkIDData); writer.Write(Header.ChunkSizeData); foreach(byte dataPoint in Buffer) { writer.Write(dataPoint); } //Fermeture des streams writer.Close(); fileStream.Close(); }
private DataHeader CreateHeader(short formatAudio, short channels, int frequency, short bitspersample) { DataHeader tmp = new DataHeader(); tmp.FileTypeID = "RIFF".ToCharArray(); tmp.MediaTypedID ="WAVE".ToCharArray(); tmp.ChunkIDFormat = "fmt ".ToCharArray(); tmp.ChunkIDData = "data".ToCharArray(); tmp.ChunkSizeFormat = 16; tmp.FormatTag = formatAudio; tmp.Channels = channels; tmp.Frequency = frequency; tmp.BitsPerSample = bitspersample; tmp.BlockAlign = (short) (tmp.Channels * (tmp.BitsPerSample / 8)); tmp.AverageBytesPerSec = tmp.Frequency * tmp.BlockAlign; return tmp; }
private DataHeader CreateHeader(short formatAudio, short channels, int frequency, short bitspersample) { DataHeader tmp = new DataHeader(); tmp.FileTypeID = "RIFF".ToCharArray(); tmp.MediaTypedID = "WAVE".ToCharArray(); tmp.ChunkIDFormat = "fmt ".ToCharArray(); tmp.ChunkIDData = "data".ToCharArray(); tmp.ChunkSizeFormat = 16; tmp.FormatTag = formatAudio; tmp.Channels = channels; tmp.Frequency = frequency; tmp.BitsPerSample = bitspersample; tmp.BlockAlign = (short)(tmp.Channels * (tmp.BitsPerSample / 8)); tmp.AverageBytesPerSec = tmp.Frequency * tmp.BlockAlign; return(tmp); }
public WAV(string name, Stream wavFile) { //Constructeur Name = name; StreamWAV = wavFile; Header = new DataHeader(); Log = ReadBuffer(); if (Passed) { Samples = new float[Buffer.Length]; for (int i = 0; i < Buffer.Length - 1; i++) { Samples[i] = BitConverter.ToInt16(Buffer, i); } } Player = new WAVPlay(name); }
//Mets à jour les infos du WAV private void updateInfos(ref DataHeader header) { if (!wav.Passed) { MessageBox.Show(wav.Log + ".\nVeuillez sélectionné un autre fichier.", "Format du fichier", MessageBoxButton.OK, MessageBoxImage.Warning); return; } lblFileName.Content = Filename.Substring(Filename.LastIndexOf('\\') + 1); lblFormat.Content = new string(header.MediaTypedID, 0, 4); lblSize.Content = Constants.SizeSuffix(header.FileLenght); lblAudioFormat.Content = "PCM"; if (header.Channels > 1) lblChannels.Content = "Stéréo"; else lblChannels.Content = "Mono"; lblBitrate.Content = Constants.SizeSuffix(header.AverageBytesPerSec) + "/s"; lblSamplingRate.Content = header.BitsPerSample; txtBlockLog.Text = wav.Log; DrawSignal(); }