private void WriteDataChunk(AudioSignalProperties audioProperties, long count, FileStream fs) { BinaryWriter writer = new BinaryWriter(fs); writer.Write(new char[] { 'd', 'a', 't', 'a' }); writer.Write(audioProperties.CalculateSubchunk2Size(count)); return; }
public void WriteAudioSignalPropertiesToFile(AudioSignalProperties audioProperties, long count, string filePath) { using (FileStream fs = File.Open(filePath, FileMode.Create)) { WriteRIFFChunk(audioProperties, fs); WriteFmtChunk(audioProperties, fs); WriteDataChunk(audioProperties, count, fs); } }
private void WriteRIFFChunk(AudioSignalProperties audioProperties, FileStream fs) { BinaryWriter writer = new BinaryWriter(fs); writer.Write(new char[] { 'R', 'I', 'F', 'F' }); writer.Write(audioProperties.CalculateHeaderSize()); writer.Write(new char[] { 'W', 'A', 'V', 'E' }); return; }
public AudioSignal ReadAudioSignalFromFile(string filePath) { AudioSignal signal; AudioSignalProperties audioProperties = ReadAudioSignalProperties(filePath); double[] data = ReadAudioDataFromFile(filePath, audioProperties.CalculateHeaderSize(), audioProperties.BitsPerSample); signal = new AudioSignal(audioProperties, data); return(signal); }
/// <summary> /// Чтение заголовка набора банных из файла /// </summary> /// <param name="filePath"></param> /// <returns></returns> public AudioSignalProperties ReadAudioSignalProperties(string filePath) { AudioSignalProperties audioProperties; using (FileStream fs = File.Open(filePath, FileMode.Open)) { var riffChunck = ReadRIFFChunk(fs); var fmtChunk = ReadFmtChunk(fs); var dataChank = ReadDataChunk(fs); audioProperties = new AudioSignalProperties( fmtChunk.audioFormat, fmtChunk.numChannels, fmtChunk.sampleRate, fmtChunk.bitsPerSample, fmtChunk.extraParams ); } return(audioProperties); }
private void WriteFmtChunk(AudioSignalProperties audioProperties, FileStream fs) { BinaryWriter writer = new BinaryWriter(fs); writer.Write(new char[] { 'f', 'm', 't', ' ' }); writer.Write(audioProperties.CalculateSubchunk1Size()); writer.Write(audioProperties.AudioFormat); writer.Write(audioProperties.NumChannels); writer.Write(audioProperties.SampleRate); writer.Write(audioProperties.GetByteRate()); writer.Write(audioProperties.GetBlockAlign()); writer.Write(audioProperties.BitsPerSample); if (audioProperties.ExtraParams != null) { writer.Write((short)audioProperties.ExtraParams.Length); writer.Write(audioProperties.ExtraParams); } return; }