naudio / NAudio

Audio and MIDI library for .NET
MIT License
5.37k stars 1.09k forks source link

I am trying to make i program to play live microphone audio over the live audio out channel but i am having issues #1126

Open WolfJack24 opened 4 months ago

WolfJack24 commented 4 months ago
using NAudio.Wave;

class Program
{
    static void Main(string[] args)
    {
        for (int i = -1; i < WaveInEvent.DeviceCount; i++)
        {
            var caps = WaveInEvent.GetCapabilities(i);
            Console.WriteLine($"{i}: {caps.ProductName}");
        }

        Console.WriteLine("Enter the device number of the microphone you want to use:");
        int deviceNumber = Convert.ToInt32(Console.ReadLine());

        var waveIn = new WaveInEvent() { DeviceNumber =  deviceNumber };
        waveIn.WaveFormat = new WaveFormat(44100, 1);

        var bufferedWaveProvider = new BufferedWaveProvider(waveIn.WaveFormat);

        var mixingWaveProvider = new MixingWaveProvider32();
        mixingWaveProvider.AddInputStream(bufferedWaveProvider); // error is here

        var waveOut = new WaveOutEvent();
        waveOut.Init(mixingWaveProvider);

        waveIn.DataAvailable += (s, a) =>
        {
            bufferedWaveProvider.AddSamples(a.Buffer, 0, a.BytesRecorded);
        };
        waveIn.StartRecording();

        waveOut.Play();

        Console.WriteLine("Press any key to stop program");
        Console.ReadKey();

        waveIn.StopRecording();
        waveIn.Dispose();
        waveOut.Stop();
        waveOut.Dispose();
    }
}

Here is my console app code and i get the error :

  System.ArgumentException
  HResult=0x80070057
  Message=Must be IEEE floating point Arg_ParamName_Name
  Source=NAudio.Core
  StackTrace:
  at NAudio.Wave.MixingWaveProvider32.AddInputStream(IWaveProvider waveProvider)
  at Program.Main(String[] args) in G:\VSC\Visual Studio (C#)\Audio Layer\Program.cs:line 22

any help is accepted