예제 #1
0
 public void AudioOutputMethod(Signal input)
 {
     if (audioFileWriter != null && waveEncoder != null)
     {
         waveEncoder.Encode(input);
     }
 }
예제 #2
0
        private void source_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // Read current frame...
            Signal s = eventArgs.Signal;

            // encode frame to file
            _audioSaver.Encode(s);
        }
예제 #3
0
 public static void SalvarSinal(Signal signal)
 {
     File.Delete(@"C:\a\teste.wav");
     using (var fs = new FileStream(@"C:\a\teste.wav", FileMode.CreateNew))
     {
         var audioEncoder = new WaveEncoder(fs);
         audioEncoder.Encode(signal);
     }
 }
예제 #4
0
파일: MainForm.cs 프로젝트: haf/Accord.Net
        /// <summary>
        ///   This method will be called whenever there is a new input audio frame
        ///   to be processed. This would be the case for samples arriving at the
        ///   computer's microphone
        /// </summary>
        ///
        private void source_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // Save current frame
            eventArgs.Signal.CopyTo(current);

            // Update waveform
            updateWaveform(current, eventArgs.Signal.Length);

            // Save to memory
            encoder.Encode(eventArgs.Signal);

            // Update counters
            duration += eventArgs.Signal.Duration;
            samples  += eventArgs.Signal.Samples;
            frames   += eventArgs.Signal.Length;
        }
예제 #5
0
        public void AudioOutputMethod(Signal input)
        {
            if (audioOutputDeviceOwnerHandle == null)
            {
                return;
            }

            if (audioOutputDevice == null)
            {
                InitAudioOutputDevice(input);
            }

            encoder.Encode(input);
            float[] samples = new float[input.Samples];

            input.CopyTo(samples);

            audioOutputDevice.Play();
        }
        private void AudioSource_NewFrame(object sender, Accord.Audio.NewFrameEventArgs e)
        {
            if (isRecording)
            {
                System.TimeSpan diff1 = DateTime.Now.Subtract(sartRecordingTime);
                if (diff1.Seconds >= 0.0)
                {
                    //writer.WriteAudioFrame(e.Signal.RawData);
                    e.Signal.CopyTo(current);

                    encoder.Encode(e.Signal);


                    duration += e.Signal.Duration;

                    samples += e.Signal.Samples;
                    frames  += e.Signal.Length;
                }
            }
        }
예제 #7
0
파일: MainForm.cs 프로젝트: haf/Accord.Net
        private void adjustVolume(float value)
        {
            // First, we rewind the stream
            stream.Seek(0, SeekOrigin.Begin);

            // Then we create a decoder for it
            decoder = new WaveDecoder(stream);

            var signal = decoder.Decode();

            // We apply the volume filter
            var volume = new VolumeFilter(value);

            volume.ApplyInPlace(signal);

            // Then we store it again
            stream.Seek(0, SeekOrigin.Begin);
            encoder = new WaveEncoder(stream);
            encoder.Encode(signal);
        }
예제 #8
0
        public void WaveEncoderConstructorTest()
        {
            // Load a file in PCM 16bpp format
            // Number of samples: 352.800
            // Number of frames:  176.400
            // Sample rate:        44.100 Hz
            // Block align:         4
            // Channels:            2
            // Duration:            4.0   s
            // Bytes:             705.644
            // Bitrate:           1411kbps

            // sizeof(float) = 4
            // sizeof(int)   = 4
            // sizeof(short) = 2

            UnmanagedMemoryStream sourceStream      = Properties.Resources.Grand_Piano___Fazioli___major_A_middle;
            MemoryStream          destinationStream = new MemoryStream();

            // Create a decoder for the source stream
            WaveDecoder sourceDecoder = new WaveDecoder(sourceStream);

            Assert.AreEqual(2, sourceDecoder.Channels);
            Assert.AreEqual(352800, sourceDecoder.Samples);
            Assert.AreEqual(176400, sourceDecoder.Frames);
            Assert.AreEqual(4000, sourceDecoder.Duration);
            Assert.AreEqual(44100, sourceDecoder.SampleRate);
            Assert.AreEqual(16, sourceDecoder.BitsPerSample);
            Assert.AreEqual(1411200, sourceDecoder.AverageBitsPerSecond);

            // Decode the signal in the source stream
            Signal sourceSignal = sourceDecoder.Decode();

            Assert.AreEqual(352800, sourceSignal.Samples);
            Assert.AreEqual(176400, sourceSignal.Length);
            Assert.AreEqual(4000, sourceSignal.Duration);
            Assert.AreEqual(2, sourceSignal.Channels);
            Assert.AreEqual(44100, sourceSignal.SampleRate);
            Assert.AreEqual(sizeof(float) * 352800, sourceSignal.RawData.Length);
            Assert.AreEqual(sizeof(short) * 352800, sourceDecoder.Bytes);


            // Create a encoder for the destination stream
            WaveEncoder encoder = new WaveEncoder(destinationStream);

            // Encode the signal to the destination stream
            encoder.Encode(sourceSignal);

            Assert.AreEqual(2, encoder.Channels);
            Assert.AreEqual(352800, encoder.Samples);
            Assert.AreEqual(176400, encoder.Frames);
            Assert.AreEqual(4000, encoder.Duration);
            Assert.AreEqual(44100, encoder.SampleRate);
            Assert.AreEqual(32, encoder.BitsPerSample);
            Assert.AreEqual(sizeof(float) * 352800, encoder.Bytes);


            // Rewind both streams, them attempt to read the destination
            sourceStream.Seek(0, SeekOrigin.Begin);
            destinationStream.Seek(0, SeekOrigin.Begin);

            // Create a decoder to read the destination stream
            WaveDecoder destDecoder = new WaveDecoder(destinationStream);

            Assert.AreEqual(2, destDecoder.Channels);
            Assert.AreEqual(176400, destDecoder.Frames);
            Assert.AreEqual(352800, destDecoder.Samples);
            Assert.AreEqual(4000, destDecoder.Duration);
            Assert.AreEqual(44100, destDecoder.SampleRate);
            Assert.AreEqual(32, destDecoder.BitsPerSample);
            Assert.AreEqual(1411200, sourceDecoder.AverageBitsPerSecond);


            // Decode the destination stream
            Signal destSignal = destDecoder.Decode();

            // Assert that the signal which has been saved to the destination
            // stream and the signal which has just been read from this same
            // stream are identical
            Assert.AreEqual(sourceSignal.Length, destSignal.Length);
            Assert.AreEqual(sourceSignal.SampleFormat, destSignal.SampleFormat);
            Assert.AreEqual(sourceSignal.SampleRate, destSignal.SampleRate);
            Assert.AreEqual(sourceSignal.Samples, destSignal.Samples);
            Assert.AreEqual(sourceSignal.Duration, destSignal.Duration);


            for (int i = 0; i < sourceSignal.RawData.Length; i++)
            {
                byte actual   = sourceSignal.RawData[i];
                byte expected = destSignal.RawData[i];
                Assert.AreEqual(expected, actual);
            }
        }
예제 #9
0
 private void NewAudioFrame(object sender, Accord.Audio.NewFrameEventArgs eventArgs)
 {
     _waveEncoder.Encode(eventArgs.Signal);
 }
예제 #10
0
        public void WaveEncoderConstructorTest()
        {
            string basePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources");

            #region doc_properties
            // Let's say we would like to decode a wave file:
            string fileName = Path.Combine(basePath, "a.wav");

            // File is in PCM 16bpp format:
            // Number of samples: 352.800
            // Number of frames:  176.400
            // Sample rate:        44.100 Hz
            // Block align:         4
            // Channels:            2
            // Duration:            4.0   s
            // Bytes:             705.644
            // Bitrate:           1411kbps

            // First, create a decoder for the file stream:
            var sourceDecoder = new WaveDecoder(fileName);

            // Now we can use it to check some of the the stream properties:
            int numberOfChannels     = sourceDecoder.NumberOfChannels; // 2
            int numberOfSamples      = sourceDecoder.NumberOfSamples;  // 352800
            int numberOfFrames       = sourceDecoder.NumberOfFrames;   // 176400
            int durationMilliseconds = sourceDecoder.Duration;         // 4000
            int sampleRate           = sourceDecoder.SampleRate;       // 44100
            int bitsPerSample        = sourceDecoder.BitsPerSample;    // 16
            int bps = sourceDecoder.AverageBitsPerSecond;              // 141200

            // Decode the signal in the source stream:
            Signal sourceSignal = sourceDecoder.Decode();

            // As we can see, all properties are kept in the signal:
            int      signalChannels   = sourceSignal.NumberOfChannels; // 2
            int      signalSamples    = sourceSignal.NumberOfSamples;  // 352800
            int      signalFrames     = sourceSignal.NumberOfFrames;   // 176400
            TimeSpan signalDuration   = sourceSignal.Duration;         // {00:00:04}
            int      signalLength     = sourceSignal.Length;           // 176400
            int      signalSampleRate = sourceSignal.SampleRate;       // 44100
            int      signalBytes      = sourceSignal.NumberOfBytes;    // 1411200

            // And this is the total number of bytes that have been read:
            int numberOfBytes = sourceDecoder.NumberOfBytesRead; // 705600
            #endregion


            Assert.AreEqual(2, numberOfChannels);
            Assert.AreEqual(352800, numberOfSamples);
            Assert.AreEqual(176400, numberOfFrames);
            Assert.AreEqual(4000, durationMilliseconds);
            Assert.AreEqual(44100, sampleRate);
            Assert.AreEqual(16, bitsPerSample);
            Assert.AreEqual(1411200, bps);
            Assert.AreEqual(sizeof(short) * 352800, numberOfBytes);

            Assert.AreEqual(352800, signalSamples);
            Assert.AreEqual(176400, signalLength);
            Assert.AreEqual(4000, signalDuration.TotalMilliseconds);
            Assert.AreEqual(2, signalChannels);
            Assert.AreEqual(44100, signalSampleRate);
            Assert.AreEqual(sizeof(float) * 352800, signalBytes);

            MemoryStream destinationStream = new MemoryStream();

            // Create a encoder for the destination stream
            WaveEncoder encoder = new WaveEncoder(destinationStream);

            // Encode the signal to the destination stream
            encoder.Encode(sourceSignal);

            Assert.AreEqual(2, encoder.Channels);
            Assert.AreEqual(352800, encoder.Samples);
            Assert.AreEqual(176400, encoder.Frames);
            Assert.AreEqual(4000, encoder.Duration);
            Assert.AreEqual(44100, encoder.SampleRate);
            Assert.AreEqual(32, encoder.BitsPerSample);
            Assert.AreEqual(sizeof(float) * 352800, encoder.Bytes);


            // Rewind both streams, them attempt to read the destination
            destinationStream.Seek(0, SeekOrigin.Begin);

            // Create a decoder to read the destination stream
            WaveDecoder destDecoder = new WaveDecoder(destinationStream);
            Assert.AreEqual(2, destDecoder.Channels);
            Assert.AreEqual(176400, destDecoder.Frames);
            Assert.AreEqual(352800, destDecoder.Samples);
            Assert.AreEqual(4000, destDecoder.Duration);
            Assert.AreEqual(44100, destDecoder.SampleRate);
            Assert.AreEqual(32, destDecoder.BitsPerSample);
            Assert.AreEqual(1411200, sourceDecoder.AverageBitsPerSecond);


            // Decode the destination stream
            Signal destSignal = destDecoder.Decode();

            // Assert that the signal which has been saved to the destination
            // stream and the signal which has just been read from this same
            // stream are identical
            Assert.AreEqual(sourceSignal.Length, destSignal.Length);
            Assert.AreEqual(sourceSignal.SampleFormat, destSignal.SampleFormat);
            Assert.AreEqual(sourceSignal.SampleRate, destSignal.SampleRate);
            Assert.AreEqual(sourceSignal.Samples, destSignal.Samples);
            Assert.AreEqual(sourceSignal.Duration, destSignal.Duration);

            byte[] actual   = sourceSignal.ToByte();
            byte[] expected = destSignal.ToByte();
            Assert.AreEqual(expected, actual);
        }
예제 #11
0
 private void Audio_NewFrame(object sender, Accord.Audio.NewFrameEventArgs e)
 {
     audioEncoder.Encode(e.Signal);
 }