Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        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;
        }