0

I am trying to record audio while collecting data from the Kinect. I call StartAudioRecording() and StopAudioRecording() before and I after I run the Kinect data collection. An audio file is made, but it is out of order (the end of a song plays first, then there is a short pause, then the beginning of the song plays).

public class AudioRecorder
    {
        public WaveIn waveSource = null;
        public WaveFileWriter waveFile = null;

        public void StartAudioRecording()
        {
            waveSource = new WaveIn();
            waveSource.DeviceNumber = 0;
            waveSource.BufferMilliseconds = 3000;
            waveSource.WaveFormat = new WaveFormat(48000, 32, WaveIn.GetCapabilities(0).Channels);

            waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
            waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);

            waveFile = new WaveFileWriter(@"C:\\Users\\oaghnh\\source\\repos\\BodyTracking-main\\TestResults\\audio.wav", waveSource.WaveFormat);

            waveSource.StartRecording();
        }

        public void StopAudioRecording()
        {
            waveSource.StopRecording();
        }

        void waveSource_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (waveFile != null)
            {
                waveFile.Write(e.Buffer, 0, e.BytesRecorded);
                waveFile.Flush();
            }
        }

        void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
        {
            if (waveSource != null)
            {
                waveSource.Dispose();
                waveSource = null;
            }

            if (waveFile != null)
            {
                waveFile.Dispose();
                waveFile = null;
            }
        }
    }

I got the original code from this question. https://stackoverflow.com/questions/17982468/naudio-record-sound-from-microphone-then-save

account
  • 3
  • 7

0 Answers0